10.07.2015 Views

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

Manual - Grupo de Geomorfología, Hidrogeología y Medio Ambiente

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

http://www.ant.org.ar/cursos/curso_intro/book1.html1 <strong>de</strong> 3 07/09/2005 8:09Curso <strong>de</strong> Introducción a GNU/LinuxHistoria, Filosofía, Instalación y Conceptos BásicosSebastián D. CriadoAsociación Argentina <strong>de</strong> Nuevas Tecnologíasinfo@ant.org.arEmiliano GavilánAsociación Argentina <strong>de</strong> Nuevas Tecnologíasinfo@ant.org.arAviso LegalDedicadoPara todos aquellos que hicieron que el Software Libre sea una realidadTabla <strong>de</strong> contenidosGNU/Linux, ese pequeño giganteIntroducciónConvencionesAlgunas cuestiones legalesIntroducción a los Sistemas OperativosInformación General¿Qué es un sistema operativo?Unix como base <strong>de</strong> sistemas operativosProcesosArchivos, directorios y diferenciasEl sistema operativo en capasIntroducción a GNU/LinuxHistoria <strong>de</strong> GNU/Linux y el copyrightLas bases <strong>de</strong> GNU/LinuxLas distintas distribucionesPor que usar GNU/Linux y que nos ofreceLa documentación en GNU/LinuxInstalaciónRequisitos <strong>de</strong> hardwareProceso pre-instalaciónInstalación general y pequeñas diferenciasProceso post-instalación y resolución <strong>de</strong> problemasEmpezando con GNU/LinuxConceptos básicos <strong>de</strong> Un*xEntrando al sistema y creación <strong>de</strong> cuentasConsolasConceptos básicos <strong>de</strong> entorno shell


http://www.ant.org.ar/cursos/curso_intro/book1.html2 <strong>de</strong> 3 07/09/2005 8:09Sistema <strong>de</strong> archivosTutorial <strong>de</strong>l ShellHablando con GNU/Linux a través <strong>de</strong>l shellCaracterísticasPATHVariables <strong>de</strong> entornoExpresiones regulares y uso <strong>de</strong> metacaracteresInterpretación <strong>de</strong> comandosFuncionesCaracterísticas adicionalesDepuración <strong>de</strong> ScriptCreación <strong>de</strong> directorios múltiplesComo en UNIX también en GNU/LinuxPlomería en GNU/LinuxEntrada y salida estándarCanalización y redirecciónPermisos <strong>de</strong> archivos, sus dueños y gruposConceptosComo se interpretan los permisosDepen<strong>de</strong>nciasCambiando permisosCambiando grupos y usuariosPuntos adicionalesEnlaces <strong>de</strong> archivosEnlaces duros o hard linksEnlaces simbólicos o symbolic linksTareas y procesosPrimer y segundo planoComo parar y relanzar tareasProgramas <strong>de</strong> seguimiento (ps y top)Escritura <strong>de</strong> scripts <strong>de</strong> shellProgramas <strong>de</strong> edición <strong>de</strong> consolaEdición <strong>de</strong> textos en modo interactivo¿Porque es importante el uso <strong>de</strong> editores <strong>de</strong> consola?El editor ViEl editor emacsConceptos <strong>de</strong> editores fuera <strong>de</strong> líneaSedAwkAdministración básica <strong>de</strong>l sistemaLa cuenta root y sus implicacionesGestión <strong>de</strong> usuariosBorrando usuarios<strong>Grupo</strong>sPoniendo reglas al sistemaIniciando el sistemaUtilizando un disquete <strong>de</strong> arranqueUtilizando LILOUtilizando LOADLINAcerca <strong>de</strong> impresoras:Lo primero a tener en cuentaLos directorios fundamentales./etc/printcapImpresión remota e impresión local


http://www.ant.org.ar/cursos/curso_intro/book1.html3 <strong>de</strong> 3 07/09/2005 8:09Actualización <strong>de</strong>l sistemaActualizando el núcleoActualizando las bibliotecasActualizando gccEl sistema X-WindowOrígenes <strong>de</strong> XX - Puntos básicosRequisitos <strong>de</strong> HardwareConfiguración <strong>de</strong> Xfree86Configuración mediante xf86cfgEntornos gráficos <strong>de</strong> escritorioEl entorno KDEEl entorno GnomeDetalle <strong>de</strong> comandosDetalle <strong>de</strong> ComandosGNU Free Document LicenseSiguienteGNU/Linux, ese pequeño gigante


http://www.ant.org.ar/cursos/curso_intro/archivos.html<strong>de</strong> 2 07/09/2005 7:51Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteArchivos, directorios y diferenciasUn archivo no es más que un conjunto <strong>de</strong> bytes relacionados que están en disco u otro medio, a los que seles asigna un nombre que se utilizara para referirse a este archivo. Un directorio no es más que un archivocomún a los que se les a impuesto una estructura particular.Esto tal vez llame la atención. En GNU/Linux y UNIX todo es archivo. Sí, todo es archivo. El teclado, elmonitor, el disco rígido y hasta la memoria. El SO trata a los dispositivos como archivos y <strong>de</strong> esa manerautiliza los mismos métodos <strong>de</strong> apertura, escritura, lectura y cierre para todos ellos. La clase <strong>de</strong> archivos <strong>de</strong>los que estamos hablando se <strong>de</strong>nomina archivo <strong>de</strong> dispositivo y es solo una <strong>de</strong> las clases <strong>de</strong> archivos queexisten en GNU/Linux.En DOS se acostumbraba a que solamente aquellos archivos con extensión .EXE .COM o .BAT se podíanejecutar. En GNU/Linux cualquier archivo pue<strong>de</strong> llegar a ser ejecutable sin importar que extensión tenga.Los archivos ejecutables pue<strong>de</strong> ser <strong>de</strong> dos clases: aquellos con formato binario ejecutable directamentepor el kernel, y aquellos que tienen lo que se <strong>de</strong>nomina un magic cookie, el cual <strong>de</strong>termina la manera enque el sistema ejecutará dicho archivo (script). Un ejemplo <strong>de</strong> este tipo <strong>de</strong> ejecutable son los scripts <strong>de</strong>shell, que recuerdan a losarchivos .bat <strong>de</strong>l DOS, pero que son mucho más po<strong>de</strong>rosos.Otro tipo <strong>de</strong> archivo es el <strong>de</strong> canalización. Esta clase <strong>de</strong> archivo sirve <strong>de</strong> canal don<strong>de</strong> los datos entran porun extremo y salen por el otro. Son creados por los procesos y <strong>de</strong>saparecen al morir el proceso, peromientras tanto están ocupando un lugar físico en el disco. Cuando se trate el tema <strong>de</strong> pipes y canalizaciónse entrará más en <strong>de</strong>talle.La forma en que se pue<strong>de</strong> nombrar un archivo no esta limitada como en DOS a 8 letras seguido <strong>de</strong> 3caracteres <strong>de</strong> extensión. Los nombres pue<strong>de</strong>n ser <strong>de</strong> 255 caracteres <strong>de</strong> longitud y pue<strong>de</strong>n tener puntos,guiones y <strong>de</strong>más símbolos como separadores. Los únicos nombres que no están permitidos son los quecontienen la / en su nombre <strong>de</strong>bido a que este caracter se utiliza para indicar la ruta a directorios.nota.txtnota.textualnota.para.julionota.julio.hoySi trabajáramos en un sistema DOS solamente el primer archivo seria un archivo reconocido como texto,en cambio en GNU/Linux cualquier archivo <strong>de</strong> estos podrá contener texto.Los archivos que llevan un punto inicial, .nota.textual son <strong>de</strong>nominados archivos <strong>de</strong> punto y el SO lospondrá <strong>de</strong> manera pre<strong>de</strong>terminada como ocultos.Organizar los archivos en directorios es la forma más útil <strong>de</strong> trabajar con ellos. Aunque pareciera que losdirectorios contienen a los archivos, esto no es verdad. En realidad los archivos están asociados a esedirectorio, y solo son mostrados como si estuviesen <strong>de</strong>ntro <strong>de</strong> él.La forma <strong>de</strong> referenciar un archivo es ir poniendo los nombres <strong>de</strong> los subdirectorios seguido por una /, porejemplo /home/shrek/cartas/carta_fiona.A esto se le <strong>de</strong>nomina ruta <strong>de</strong>l archivo y establece una ruta única para <strong>de</strong>terminado archivo ya que podríaexistir otro archivo con el mismo nombre pero con una ruta diferente, por ejemplo


http://www.ant.org.ar/cursos/curso_intro/archivos.html<strong>de</strong> 2 07/09/2005 7:51/home/fiona/carta_fiona, pero no seria el mismo, sino otro. A lo sumo podría ser un enlace a la carta<strong>de</strong>l directorio /home/shrek/cartas, pero eso lo veremos luego.Uno pue<strong>de</strong> moverse <strong>de</strong> arriba abajo en un árbol <strong>de</strong> directorio por medio <strong>de</strong>l comando cd (cambio <strong>de</strong>directorio) que forma parte <strong>de</strong>l shell. El SO llevará cuenta <strong>de</strong>l directorio en que estamos paradosactualmente, <strong>de</strong>nominado directorio <strong>de</strong> trabajo, cuando uno cambia <strong>de</strong> directorio, el SO verifica estaparte <strong>de</strong> memoria y si es posible efectúa el cambio actualizándola con el directorio <strong>de</strong> trabajo actual. Noimporta si nos movemos arriba o abajo <strong>de</strong>l directorio <strong>de</strong> trabajo, solamente esta información es la quecambia para que tengamos la ilusión <strong>de</strong> que nos estamos moviendo a través <strong>de</strong>l árbol <strong>de</strong> directorios.Los directorios tienen información que apunta hacia la ubicación <strong>de</strong> los archivos reales. Esta información,tanto en los archivos y directorios y junto con el nombre <strong>de</strong>l creador, tamaño permisos, etc, es guardadaen lo que se <strong>de</strong>nomina TABLA DE INODOS. Esta tabla se crea cuando se crea el sistema <strong>de</strong> archivos enGNU/Linux, comparable al formateo <strong>de</strong> una partición DOS. Se crea esta tabla que contendrá la mayoría<strong>de</strong> la información <strong>de</strong> los archivos. Enten<strong>de</strong>r lo que habíamos dicho en un principio <strong>de</strong> que todo es archivoen GNU/Linux pue<strong>de</strong> resultar algo traumático, pero si vemos que esto resulta en un mejoramiento <strong>de</strong>cómo el sistema acce<strong>de</strong> a sus recursos, vamos entendiendo que se establece una mayor sencillez. Alingresar al sistema se abrirán 3 archivos. La entrada estándar (stdin) la salida estándar (stdout) y el errorestándar (st<strong>de</strong>rr). Cuando ingresamos datos por el teclado, estamos escribiendo en el archivo stdin y alverlos por la pantalla sé esta escribiendo el archivo stdout. Si en algún punto existiera un error saldría porla pantalla, pero se estaría escribiendo el archivo st<strong>de</strong>rr.Anterior Inicio SiguienteProcesos Subir El sistema operativo en capas


Procesoshttp://www.ant.org.ar/cursos/curso_intro/procesos.html1 <strong>de</strong> 3 07/09/2005 7:51Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteProcesosPara po<strong>de</strong>r enten<strong>de</strong>r bien el concepto <strong>de</strong> Proceso <strong>de</strong>beremos diferenciarlo en el lugar don<strong>de</strong> se encuentra.Un programa será un archivo cuando se encuentre en el disco rígido y será un proceso al encontrarse enmemoria; <strong>de</strong> esta forma se compren<strong>de</strong>rá mejor que es un Proceso. Pero también es cierto que un procesoes mucho mas que un programa en memoria y sobre todo en la clase <strong>de</strong> SO que nos compete, con susfunciones <strong>de</strong> multiusuario y multitarea como lo son los SO Un*x.Cada programa cuenta con un conjunto <strong>de</strong> datos que usa para hacer su trabajo y en la mayoría <strong>de</strong> loscasos estos datos no forman parte <strong>de</strong>l programa. Como ejemplo tomemos un programa <strong>de</strong> edición <strong>de</strong>textos. Los datos <strong>de</strong>l archivos que el programa esta editando no forma parte <strong>de</strong>l programa, pero si <strong>de</strong>lproceso en memoria. Si alguna otra persona utilizara al mismo tiempo el mismo procesador <strong>de</strong> texto quese encuentra en ese sistema, los dos estarían utilizando el mismo programa, pero no el mismo proceso.Ambas tendrían una copia para cada uno <strong>de</strong>l proceso <strong>de</strong>l editor <strong>de</strong> texto. Es así que los programas podránser únicos para todos los usuarios, pero los procesos pertenecerán a cada usuario.En Un*x varios usuarios podrán estar utilizando el sistema al mismo tiempo. Esto se traduce a que elsistema tendrá múltiples procesos cargados en la memoria, y cada uno <strong>de</strong> ellos requerirá <strong>de</strong> la atención <strong>de</strong>la CPU en algún momento. El sistema llevará un control <strong>de</strong> los procesos que están funcionando en esemomento, en que terminal y a que usuario pertenece a<strong>de</strong>más <strong>de</strong> otros datos. Todo ello estará apuntado enuna tabla <strong>de</strong> procesos, en la cual el SO asignará el tiempo que tardará la CPU para aten<strong>de</strong>r cada proceso.Cuando uno entra a un sistema Un*x, generalmente obtiene accesos a lo que se <strong>de</strong>nomina intérprete <strong>de</strong>comandos. La gente que haya utilizado DOS sabrá que esto, ya que el C:> es el indicador <strong>de</strong> shell <strong>de</strong> suinterprete <strong>de</strong> comando, el COMMAND.COM. En cambio, aquí el indicador será algo como $, # o %. Esteshell es un proceso que esta corriendo y pertenece al usuario que esta corriéndolo en ese momento. Enrealidad es una copia <strong>de</strong>l intérprete <strong>de</strong> comandos que esta corriendo en memoria.Al cargarse un programa <strong>de</strong>s<strong>de</strong> el intérprete <strong>de</strong> comando (shell), este no es reemplazado por dichoproceso, sino que queda a la espera <strong>de</strong> algún otro mandato. Mientras tanto, para correr el programa, secrea un nuevo proceso, el <strong>de</strong>l programa, que será hijo <strong>de</strong>l proceso <strong>de</strong>l shell. Un proceso tiene un solopadre pero pue<strong>de</strong> tener múltiples hijos.


Procesoshttp://www.ant.org.ar/cursos/curso_intro/procesos.html2 <strong>de</strong> 3 07/09/2005 7:51Al iniciar una sesión en GNU/Linux el usuario será propietario <strong>de</strong> un único proceso, por ejemplo/bin/bash que es el intérprete <strong>de</strong> comandos mas usados y el que usaremos nosotros. Luego cada procesoque ejecute a partir <strong>de</strong>l bash, se acomodará en el árbol <strong>de</strong> procesos como hijo <strong>de</strong>l bash.El bash permanecerá atento a que se le <strong>de</strong> un nuevo mandato, mientras tanto se dice que esta durmiendo.Como habíamos dicho antes, múltiples procesos podrán estar ejecutándose al mismo tiempo. Por ello setendrá que asignar un tiempo a cada proceso para recibir la atención exclusiva la CPU. Es común quecada proceso tenga por 1/100 segundos la atención total <strong>de</strong> la CPU. Esto dará la ilusión al usuario <strong>de</strong> quees el único que tiene la atención <strong>de</strong>l sistema, pero que ocurriría si el proceso se colgase. En un sistemamonousuario como el Windows (no el NT) esto seguramente ocasionaría el cuelgue <strong>de</strong>l sistema ya que elkernel no podría recuperarse dado que el proceso tiene control absoluto <strong>de</strong> la CPU. Esto no ocurre enGNU/Linux dado que todos los procesos respon<strong>de</strong>n al kernel y es el kernel quien les da permiso <strong>de</strong> usar laCPU en el momento necesario.Supongamos que queremos guardar nuestro trabajo <strong>de</strong>l editor <strong>de</strong> textos. Entonces, y con la combinación<strong>de</strong> teclas correctas, le damos la or<strong>de</strong>n al proceso <strong>de</strong>l editor <strong>de</strong> textos para que guar<strong>de</strong> el trabajo. Esto, paranosotros, se hace instantáneamente pero es solo otra ilusión. El proceso <strong>de</strong>l editor <strong>de</strong> textos emite unapetición al kernel para escritura <strong>de</strong>l disco, el kernel entonces escribirá el disco en bloques, <strong>de</strong>pendiendo<strong>de</strong> cuan libre este, mientras tanto guardara los datos en un espacio secundario <strong>de</strong> almacenamiento<strong>de</strong>nominado "cache". Esto es beneficioso por varias razones. En caso <strong>de</strong> que los datos que estemosescribiendo en ese momento sean requeridos un momento <strong>de</strong>spués, estos estarían disponibles en el cachey se ahorraría un viaje al disco. También seria beneficioso por el lado <strong>de</strong> la eficiencia <strong>de</strong>l sistema, ya queescribirá al disco solo cuando el procesador este ocioso, no ocasionando con el proceso <strong>de</strong> escritura que elsistema funcionara más lentamente. Suponiendo que alguna otra persona necesitara en ese momento undato <strong>de</strong>l disco, el proceso <strong>de</strong> lectura tendría que esperar su turno, entonces es puesto a dormir. El procesotendrá que esperar a que se termine el tiempo asignado al proceso <strong>de</strong> escritura y luego se le <strong>de</strong>spertara ypodrá tomar su lugar para acce<strong>de</strong>r al disco.Existe también otro tipo <strong>de</strong> eventos en los que la CPU repara para po<strong>de</strong>r <strong>de</strong>tener a un proceso en curso,estos son las interrupciones. Se ocasionan cuándo un dispositivo, léase mouse o teclado, requiere laatención <strong>de</strong> la CPU, es asi que se genera una interrupción que la CPU aten<strong>de</strong>rá, mandando a dormir alproceso en curso. Por supuesto hay mas complicaciones que las expuestas aquí, entre ellas las priorida<strong>de</strong>s<strong>de</strong> los procesos que se verán cuando tomemos la parte <strong>de</strong> 6.7 <strong>de</strong> Tareas y Procesos. El tema <strong>de</strong> priorida<strong>de</strong>slo maneja el kernel <strong>de</strong> acuerdo a varios aspectos, como el dueño <strong>de</strong>l proceso, si es <strong>de</strong> sistema o no, etc.Los procesos <strong>de</strong> sistemas son utilizados para la administración <strong>de</strong> memoria y la calendarización <strong>de</strong> turnospara la CPU, etc. Estos procesos se los conoce como daemon (DEMONIOS) o programas servidores.Funcionan sin la intervención <strong>de</strong>l usuario y sin que este los vea y hacen su trabajo esperando su turno


Procesoshttp://www.ant.org.ar/cursos/curso_intro/procesos.html3 <strong>de</strong> 3 07/09/2005 7:51cuando les llega para actuar.Anterior Inicio SiguienteUnix como base <strong>de</strong> sistemasSubirArchivos, directorios y diferenciasoperativos


Unix como base <strong>de</strong> sistemas operativoshttp://www.ant.org.ar/cursos/curso_intro/unix.html1 <strong>de</strong> 1 07/09/2005 7:50Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteUnix como base <strong>de</strong> sistemas operativosComo dijimos antes, en 1969, algo maravilloso sucedió en el mundo <strong>de</strong> la informática: nació UNIX. Enprincipio como un trabajo solitario <strong>de</strong> Ken Thompson, <strong>de</strong> Bell Labs, y luego en conjunto con DennisRitchie (quien junto a Brian Kerningan <strong>de</strong>sarrollaron el lenguaje <strong>de</strong> programación C) y otros miembros<strong>de</strong>l Bell Labs que se fueron incorporando. Ritchie ya tenia experiencia dado que había trabajado en otroproyecto llamado MULTICS, el cual fue <strong>de</strong> gran influencia sobre el nuevo SO, como por ejemplo en laorganización básica <strong>de</strong>l sistema <strong>de</strong> archivos, la i<strong>de</strong>a <strong>de</strong> un intérprete <strong>de</strong> comando (el shell) como unproceso <strong>de</strong> usuario, etc.La primera versión <strong>de</strong> UNIX estaba hecha íntegramente en ensamblador. Esto se cambió con la versiónposterior, que fue escrita en lenguaje C lo que lo hizo sumamente portable; así mismo también se leagrego una característica por <strong>de</strong>más <strong>de</strong> importante, la multiprogramación. Esto y la entrega <strong>de</strong> licenciasgratuitas con fines educativos extendieron su uso, <strong>de</strong>sarrollo y la investigación en las universida<strong>de</strong>s. Eluso <strong>de</strong> UNIX se fue ampliando a medida que se le fueron adicionando herramientas <strong>de</strong> software yentornos <strong>de</strong> programación, apoyo a protocolos <strong>de</strong> red Internet (TCP/IP), mejoras en el editor <strong>de</strong> texto(Vi), compiladores <strong>de</strong> C, PASCAL y LISP, mejora en el control <strong>de</strong> congestionamiento <strong>de</strong> re<strong>de</strong>s y elrendimiento <strong>de</strong> TCP/IP. Al crecer la popularidad <strong>de</strong> UNIX, se a transportado a distintas plataformas <strong>de</strong>hardware (PC, MAC, ALPHA) y se han creado una gran cantidad <strong>de</strong> SO's UNIX y parecidos a UNIX(XENIX <strong>de</strong> Microsoft, AIX <strong>de</strong> IBM, SOLARIS <strong>de</strong> SunSoft).Las características principales <strong>de</strong> este SO es que se diseñó como un sistema <strong>de</strong> tiempo compartido. Estoquiere <strong>de</strong>cir que varios usuarios estarán usando el sistema al mismo tiempo, sin notar la presencia <strong>de</strong> los<strong>de</strong>más en su ámbito <strong>de</strong> trabajo, lo que logra el SO asignándole un tiempo <strong>de</strong> atención para el CPU a cadausuario.La interfaz estándar con el usuario (el shell) pue<strong>de</strong> ser cambiada si se quiere. La mayoría <strong>de</strong>l códigofuente original está disponible por lo que los usuarios podrán ajustar el SO a sus requerimientosespecíficos. Es multitarea, es <strong>de</strong>cir que permite que se puedan ejecutar varios procesos al mismo tiempocompartiendo el uso <strong>de</strong> la CPU.Soporta el procesamiento en tiempo real (ejecución <strong>de</strong> procesos en intervalos <strong>de</strong> tiempo especificados sinretardo), el cual se utiliza en aplicaciones <strong>de</strong> robótica y base <strong>de</strong> datos.Los sistemas UNIX son esenciales para la Internet.Los sistemas <strong>de</strong> archivos con árboles multiniveles permiten que el SO trate tanto a directorios y archivoscomo simples secuencias <strong>de</strong> bytes.Posee distintos niveles <strong>de</strong> seguridad: password's <strong>de</strong> ingreso y permisos <strong>de</strong> archivos y directorios.Un proceso pue<strong>de</strong> fácilmente generar otro, también es posible el manejo <strong>de</strong> procesos en <strong>de</strong>terminadotiempo. Pue<strong>de</strong> planearse la utilización <strong>de</strong> la CPU.El kernel y biblioteca <strong>de</strong>l SO están preparados para que el SO pueda exten<strong>de</strong>rse y crecer, lo que permitióa UNIX mantenerse siempre a la cabeza <strong>de</strong> los SO's estando permanentemente actualizado.Anterior Inicio Siguiente¿Qué es un sistema operativo? Subir Procesos


¿Qué es un sistema operativo?http://www.ant.org.ar/cursos/curso_intro/sistop.html1 <strong>de</strong> 2 07/09/2005 7:50Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos Siguiente¿Qué es un sistema operativo?Las clases <strong>de</strong> sistemas operativos en la que nos basaremos serán los <strong>de</strong>nominados multiusuarios y <strong>de</strong>multiprogramación; es <strong>de</strong>cir que varios usuarios podrán correr concurrentemente múltiples programas.Un SO es una parte importante <strong>de</strong> casi cualquier sistema informático. Para enten<strong>de</strong>r mejor esto veremosque un sistema informático pue<strong>de</strong> separar en cuatro partes:El hardwareEl SOLos programas <strong>de</strong> aplicaciónLos usuariosEstas partes hacen <strong>de</strong> capas, cada una <strong>de</strong> las cuales acerca más al usuario a utilizar los recursos <strong>de</strong>lhardware. El hardware (CPU, memoria y dispositivos) proporciona los recursos <strong>de</strong> computación básicossobre los que se agregaran estas capas sucesivas. Los programas <strong>de</strong> aplicación como los compiladores,juegos, aplicaciones <strong>de</strong> negocios, etc. <strong>de</strong>finen la forma en que estos recursos se emplearán para solucionarlos problemas <strong>de</strong>l usuario.Pue<strong>de</strong> haber varias clases <strong>de</strong> usuarios usando el sistema, como ser personas, programas y otrascomputadoras, tratando <strong>de</strong> resolver diversos problemas. El SO controla y coordina el uso <strong>de</strong>l hardwareentre los diversos programas <strong>de</strong> aplicación y los distintos usuarios, administrando todos los recursos comodisco, memoria, impresoras, monitor, etc. El SO <strong>de</strong>termina los tiempos en que un <strong>de</strong>terminado programautilizará un recurso dado.Al comienzo <strong>de</strong> la era informática, los sistemas no utilizaban SO's. Estas computadoras <strong>de</strong> hace 40 añosejecutaban un programa a la vez que era cargado por un programador. Este cargaba el programa y loejecutaba. Si existía algún error que hiciera que el programa se <strong>de</strong>tuviera antes <strong>de</strong> lo esperado, se teníaque comenzar <strong>de</strong> nuevo con todo el proceso. Recor<strong>de</strong>mos que en esa época no había muchascomputadoras en funcionamiento, así que el programador tenía que esperar <strong>de</strong> varios días hasta tenernuevamente su turno enfrente <strong>de</strong> la computadora. Los SO's existen porque son una solución razonable alproblema <strong>de</strong> crear un sistema informático útil. El objetivo fundamental <strong>de</strong> los sistemas informáticos esejecutar los programas <strong>de</strong> los usuarios y facilitar la resolución <strong>de</strong> sus problemas. Todo esto se hacía através <strong>de</strong> tarjetas perforadas que una persona encargada cargaba en la computadora y luego <strong>de</strong> algunashoras <strong>de</strong>volvía la salida impresa al programador.


¿Qué es un sistema operativo?http://www.ant.org.ar/cursos/curso_intro/sistop.html2 <strong>de</strong> 2 07/09/2005 7:50Al avanzar la tecnología informática, muchos <strong>de</strong> estos programas se cargaban en una sola cinta, otroprograma resi<strong>de</strong>nte en la memoria <strong>de</strong> la computadora, cargaba y manipulaba los programas <strong>de</strong> esa cinta.Este es el ancestro <strong>de</strong> los SO's <strong>de</strong> hoy en día. En la década <strong>de</strong>l 60 la tecnología <strong>de</strong> SO's avanzo mucho yse podían tener múltiples programas al mismo tiempo en la memoria. Así surgió el concepto <strong>de</strong>multiprogramación. Si un programa necesitaba esperas a que ocurriera algún evento externo, como queuna cinta se rebobinara, otro podría tener acceso a la CPU para así po<strong>de</strong>r utilizar el 100% <strong>de</strong>l po<strong>de</strong>r <strong>de</strong>procesamiento con que contaba la computadora. Esto ahorraba mucho dinero ya que en aquel entoncestodo en lo referente a cómputo (memoria, espacio en disco, etc) costaba cientos <strong>de</strong> miles <strong>de</strong> dólares. Afinales <strong>de</strong> los 60's, en 1969, nació UNIX, SO que trataremos más a<strong>de</strong>lante, y es la base <strong>de</strong> muchos <strong>de</strong> losSO's <strong>de</strong> hoy en día, aunque muchos no lo admitan.Definir que forma parte <strong>de</strong> un SO y que no sería difícil, dada la gran variedad existente, pero una<strong>de</strong>finición para los SO que nos compete en estos momentos seria que el SO es el programa que ejecutatodo el tiempo en la computadora (conocido usualmente como kernel o núcleo), siendo los programas <strong>de</strong>aplicación todo lo <strong>de</strong>más. En general un SO intenta incrementar la productividad <strong>de</strong> un recurso <strong>de</strong> procesotal como el hardware <strong>de</strong> la computadora, o <strong>de</strong> los usuarios <strong>de</strong> los sistemas informáticos. Ahora bien, en loreferente a la utilización eficiente <strong>de</strong> un sistema informático no siempre se pue<strong>de</strong> lograr que un SO lologre. Casi siempre resulta contradictorio la comodidad y la eficiencia.Anterior Inicio SiguienteIntroducción a los SistemasSubirUnix como base <strong>de</strong> sistemasOperativosoperativos


Introducción a los Sistemas Operativoshttp://www.ant.org.ar/cursos/curso_intro/c63.html1 <strong>de</strong> 1 07/09/2005 7:49Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteIntroducción a los Sistemas OperativosInformación GeneralUn Sistema Operativo (SO) es una colección organizada <strong>de</strong> rutinas o extensiones <strong>de</strong> software <strong>de</strong>lhardware. Consiste en rutinas <strong>de</strong> control que hacen funcionar una computadora y proporcionan un entornopara la ejecución <strong>de</strong> los programas. Existen otros programas que se apoyan en el SO para po<strong>de</strong>r acce<strong>de</strong>r alos recursos que necesitan. Esto se lleva a cabo a través <strong>de</strong> llamadas sistema operativo. También el SO<strong>de</strong>be brindar una forma <strong>de</strong> que el usuario se pueda comunicar con él a través <strong>de</strong> una interfaz que le brin<strong>de</strong>una vía <strong>de</strong> comunicación con el hardware <strong>de</strong>l sistema informático.El objetivo principal <strong>de</strong>l SO es lograr que el sistema informático es el lograr que el hardware <strong>de</strong> lacomputadora se emplee <strong>de</strong> modo eficiente, y el objetivo secundario se use <strong>de</strong> manera cómoda.El SO <strong>de</strong>be asegurar el correcto funcionamiento <strong>de</strong>l sistema informático. Para lograr esto el hardware<strong>de</strong>be brindar algún mecanismo apropiado que impida que los usuarios intervengan en el funcionamiento<strong>de</strong>l sistema y así mismo el SO <strong>de</strong>be po<strong>de</strong>r utilizar este recurso <strong>de</strong> hardware <strong>de</strong> modo que esto se cumpla.El SO <strong>de</strong>be ofrecer servicios a los programas y sus usuarios para facilitar la tarea <strong>de</strong> programación.Anterior Inicio SiguienteAlgunas cuestiones legales ¿Qué es un sistema operativo?


Algunas cuestiones legaleshttp://www.ant.org.ar/cursos/curso_intro/x59.html1 <strong>de</strong> 1 07/09/2005 7:49Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior GNU/Linux, ese pequeño gigante SiguienteAlgunas cuestiones legalesHemos tratado <strong>de</strong> mantener la información volcada en este documento lo más fi<strong>de</strong>digna posible, lo cualno significa que pueda contener errores. Por lo tanto no nos haremos responsables <strong>de</strong> cualquier pérdida <strong>de</strong>datos y/o daños <strong>de</strong> hardware que puedan ocurrir al seguir los procedimientos o recomendaciones <strong>de</strong> estemanual. El usuario corre con todos los riesgos implícitos por el sólo hecho <strong>de</strong> leer este documento.Se reconocen todas las marcas comerciales nombradas en este documento como pertenecientes a susrepectivos dueños.Anterior Inicio SiguienteConvenciones Subir Introducción a los SistemasOperativos


Convencioneshttp://www.ant.org.ar/cursos/curso_intro/x46.html1 <strong>de</strong> 1 07/09/2005 7:48Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior GNU/Linux, ese pequeño gigante SiguienteConvencionesA lo largo <strong>de</strong> este curso utilizaremos las siguientes convencionesCuando se muestre el contenido <strong>de</strong> la pantalla y/o el contenido <strong>de</strong> archivos, el mismo se mostraraen caracteres <strong>de</strong> ancho fijoeste es el contenido <strong>de</strong>l archivoCuando se muestre la entrada que hace el usuario, se mostrará <strong>de</strong> la siguiente maneraprompt:$ entrada <strong>de</strong> usuarioUNIX representa al sistema operativo cuyo nombre está registrado. Cuando se hable <strong>de</strong> sistemastipo-UNIX se escribirá Un*x.Anterior Inicio SiguienteGNU/Linux, ese pequeño gigante Subir Algunas cuestiones legales


GNU/Linux, ese pequeño gigantehttp://www.ant.org.ar/cursos/curso_intro/f26.html1 <strong>de</strong> 2 07/09/2005 7:47Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteGNU/Linux, ese pequeño giganteLa verdad os hará libres.IntroducciónTenemos ante nosotros uno <strong>de</strong> los gran<strong>de</strong>s paradigmas <strong>de</strong> nuestros tiempos: El sistema operativoGNU/Linux.El mismo plantea una contradicción a lo que es el mo<strong>de</strong>lo tradicional <strong>de</strong> negocios en la industria <strong>de</strong>lsoftware. Antes <strong>de</strong> la aparición <strong>de</strong> GNU/Linux se pensaba que la única forma viable <strong>de</strong> hacer software <strong>de</strong>calidad -y que el mismo sea económicamente viable- era licenciando el uso <strong>de</strong>l programa y manteniendoel código fuente <strong>de</strong>l mismo en estricto secreto. Era impensable el hecho <strong>de</strong> publicar dicho código fuente:según el criterio impuesto, si los <strong>de</strong>más tenían acceso a él, el negocio se arruinaría.Pues bien, el software libre en general, y GNU/Linux en particular, han <strong>de</strong>mostrado que la formatradicional <strong>de</strong> hacer negocios -y, por extensión, <strong>de</strong> <strong>de</strong>sarrollar software- no es la única posible. Hoy existeun mo<strong>de</strong>lo que podríamos llamar colaborativo, según el cual varias personas (pue<strong>de</strong>n ser una, cinco omiles) colaboran en el <strong>de</strong>sarrollo <strong>de</strong> cierta pieza <strong>de</strong> software. Dicha colaboración no está limitada a laprogramación <strong>de</strong>l mismo. También se inscribe <strong>de</strong>ntro <strong>de</strong> esta i<strong>de</strong>a <strong>de</strong> <strong>de</strong>sarrollo colectivo el uso <strong>de</strong> dichosoftware, informando a los programadores sobre fallas que el mismo pueda tener, i<strong>de</strong>as y sugerenciassobre posibles mejoras y un sinfín <strong>de</strong> datos útiles para ir construyendo en torno a dicho programa unacomunidad <strong>de</strong> usuarios, los cuales obtienen mutuo beneficio <strong>de</strong> esta colaboración activa.También hay que tener en cuenta un dato adicional a lo expuesto hasta aquí: solamente pue<strong>de</strong> tenerse unacomunidad activa en torno a un <strong>de</strong>terminado programa o software si este resuelve las necesida<strong>de</strong>s <strong>de</strong> sususuarios. Esto, aunque parezca una verdad <strong>de</strong> perogrullo, es la verda<strong>de</strong>ra fuerza motriz que impulsa esteproceso. A<strong>de</strong>más, es también la fuerza que guiará la evolución <strong>de</strong>l mismo hacia don<strong>de</strong> la necesidad <strong>de</strong> lamayoría apunte.Aunque este mo<strong>de</strong>lo, en primera instancia, pueda parecer <strong>de</strong> rentabilidad escasa o nula a los<strong>de</strong>sarrolladores y profesionales <strong>de</strong>l área informática, veremos que esto es solamente una impresióncausada por el contraste con la práctica común <strong>de</strong> trabajo.Pongamos un sencillo ejemplo. Supongamos que somos <strong>de</strong>sarrolladores que vivimos <strong>de</strong> ven<strong>de</strong>r sistemas amedida a nuestros clientes. Esta es sin lugar a dudas la situación <strong>de</strong> la mayoría <strong>de</strong> los profesionales, yaque solamente un porcentaje muy bajo <strong>de</strong> ellos serán propietarios <strong>de</strong> una compañía que factura variosmiles <strong>de</strong> millones al año. Notemos un <strong>de</strong>talle en cuanto a nuestro mo<strong>de</strong>lo <strong>de</strong> negocios: lo que le ven<strong>de</strong>mosa nuestro cliente no es en realidad el software que hemos <strong>de</strong>sarrollado, sino la solución a un problema<strong>de</strong>terminado. Con esto en mente, po<strong>de</strong>mos optar por dos caminos. Uno es <strong>de</strong>sarrollar nuestro propioconjunto <strong>de</strong> herramientas, las cuales mantendremos bajo estricto control para que no se hagan copias"ilegales" <strong>de</strong> ellas. La otra es buscar una herramienta ya <strong>de</strong>sarrollada, la cual, dado que las necesida<strong>de</strong>s <strong>de</strong>mi cliente son únicas, sin duda tendré que modificar para ajustarla a sus requisitos. Si miramoscuidadosamente a estas opciones, veremos que no solamente la segunda es el camino más directo hacia laimplementación <strong>de</strong> nuestro sistema, sino que a<strong>de</strong>más es más flexible. Con la primera opción mi clientequeda atado a mí para futuras mejoras y corecciones, pero yo quedaré atado a mi conjunto <strong>de</strong>herramientas, las cuales tendré que mantener, exten<strong>de</strong>r y corregir a pedido <strong>de</strong>l cliente, haciendo que luego


GNU/Linux, ese pequeño gigantehttp://www.ant.org.ar/cursos/curso_intro/f26.html2 <strong>de</strong> 2 07/09/2005 7:47sea muy difícil <strong>de</strong> readaptar a otras necesida<strong>de</strong>s si consigo un nuevo cliente. Con la segunda opción, unconjunto <strong>de</strong> personas mantiene un núcleo <strong>de</strong> funcionalida<strong>de</strong>s, y cada uno hace las extensiones particularespara sus clientes. Dicho núcleo cuenta con la ventaja <strong>de</strong> estar permanentemente auditado por los ojos <strong>de</strong>varios profesionales, lo que hace más fácil la <strong>de</strong>tección y corección <strong>de</strong> errores. También existe unaventaja adicional para el cliente, el cual pocos tienen en cuenta, y es que si yo <strong>de</strong>bo <strong>de</strong>jar <strong>de</strong> mantener susistema, otro profesional podrá hacerse cargo <strong>de</strong> él. Esto, que parece una <strong>de</strong>sventaja, pue<strong>de</strong> ser unargumento <strong>de</strong> peso a la hora <strong>de</strong> ven<strong>de</strong>r un sistema informático. Después <strong>de</strong> todo, estaremos cobrando pornuestro servicio, no por el sistema que hemos implementado.Con el ejemplo prece<strong>de</strong>nte he querido ejemplificar la i<strong>de</strong>a que se escon<strong>de</strong> <strong>de</strong>trás <strong>de</strong>l <strong>de</strong>sarrollo <strong>de</strong>lsoftware libre <strong>de</strong>s<strong>de</strong> un punto <strong>de</strong> vista técnico-práctico. Pero este no es el único perfil que muestra elsoftware libre. Existe también el lado filosófico, y es éste el que más polariza las opiniones en pro y encontra <strong>de</strong>l software libre. El mismo plantea que los usuarios tienen -o <strong>de</strong>berían tener- liberta<strong>de</strong>s almomento <strong>de</strong> usar su software, y que nada ni nadie pue<strong>de</strong> ponerle límites a su libertad. Existen varias"corrientes" en cuanto a la filosofía <strong>de</strong>l software libre, unas con ten<strong>de</strong>ncias más técnicas, otras másradicales. De todas maneras, todas ellas coinci<strong>de</strong>n en tres puntos fundamentales:El usuario es libre <strong>de</strong> copiar, redistribuir y usar el programa, sin restricciones, para el propósito quecrea conveniente.El usuario es libre <strong>de</strong> estudiar como funciona el programa.El usuario es libre <strong>de</strong> modificar el programa para adaptarlo a sus necesida<strong>de</strong>s, y <strong>de</strong> distribuir lasmodificaciones.Anterior Inicio SiguienteCurso <strong>de</strong> Introducción aConvencionesGNU/Linux


El sistema operativo en capashttp://www.ant.org.ar/cursos/curso_intro/capas.html1 <strong>de</strong> 1 07/09/2005 7:52Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteEl sistema operativo en capasPo<strong>de</strong>mos imaginar a Linux como una cebolla don<strong>de</strong> cada capa se comunica con la capa inferior. En laparte <strong>de</strong>l centro se encuentra la capa <strong>de</strong> comunicación con el hardware. El SO la utiliza para po<strong>de</strong>rcontrolar los diversos aspectos <strong>de</strong>l hardware. Sobre ella se encuentra la capa <strong>de</strong> dispositivos. Es unconjunto <strong>de</strong> funciones <strong>de</strong>nominadas controladores <strong>de</strong> dispositivo que se encuentra <strong>de</strong>ntro <strong>de</strong>l kernel <strong>de</strong>lSO. Ellas acce<strong>de</strong>n directamente al hardware y hacen el trabajo <strong>de</strong> lectura, escritura, etc. Es un punto muysensible <strong>de</strong>l sistema en don<strong>de</strong> cuando un error surge poco pue<strong>de</strong> hacerse para <strong>de</strong>tener el proceso. Sobre lacapa <strong>de</strong> dispositivos se encuentra la capa <strong>de</strong> administración, esta es un conjunto <strong>de</strong> funciones a las que sehace referencia como sistema operativo tomando la <strong>de</strong>cisión <strong>de</strong> que se ejecuta y cuando. Son lasfunciones que administran también los procesos, dándoles los turnos pertinentes y mandándolos a dormircuando no es su turno.La capa que sigue es la <strong>de</strong> los procesos mismos, por ejemplo el shell <strong>de</strong>l SO. Estos procesos reciben laor<strong>de</strong>nes directamente <strong>de</strong>l usuariou otros procesos y los traducen al lenguaje <strong>de</strong> maquina pasándoselos alSO para su ejecución. A partir <strong>de</strong>l shell se podrán arrancar otrosprocesos, como programas, que forman lacapa superior <strong>de</strong> la cebolla.Estos se comunicaran con el shell para que el SO interprete sus ór<strong>de</strong>nesAnterior Inicio SiguienteArchivos, directorios y diferencias Subir Introducción a GNU/Linux


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html1 <strong>de</strong> 12 07/09/2005 8:07Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteDetalle <strong>de</strong> comandosDetalle <strong>de</strong> ComandosDetallaremos los comandos básicos que son <strong>de</strong> mayor utilidad en GNU/Linux, tratando <strong>de</strong> <strong>de</strong>tallar encada uno <strong>de</strong> ellos las opciones más utilizadas y las que necesitaremos más frecuentemente para un mejorfuncionamiento <strong>de</strong> nuestro sistema. Muchos <strong>de</strong> estos comando se encontraran complicados a esta parte<strong>de</strong>l curso, pero más a<strong>de</strong>lante se enten<strong>de</strong>rá su utilización. Por el momento tendrán que ser tomados solocomo referencia y luego, al darse el tema especifico que los utiliza, se podrá consultar esta <strong>de</strong>scripciónpara po<strong>de</strong>r utilizarlo. Las opciones en su amplia mayoría se le dan al comando luego <strong>de</strong> un signo "-", porejemplo ls -F. A<strong>de</strong>más <strong>de</strong> las opciones con una sola letra, en muchas oportunida<strong>de</strong>s nos encontraremoscon opciones indicadas con palabras completas. Estas se expondrán seguidas <strong>de</strong> un doble signo "-", <strong>de</strong> laforma cat --number que es equivalente a cat -n. Los archivos que irán como argumento <strong>de</strong>l comando sereferenciaran <strong>de</strong> la forma . Para mayor información respectoa cada uno <strong>de</strong> estos comandos, se cuenta con las páginas <strong>de</strong> manual que nos mostraran todas lasposibilida<strong>de</strong>s. La sintaxis para leer las páginas <strong>de</strong> manual es la común[shrek@pantano:~]$ man alias: Este comando nos mostrará la lista <strong>de</strong> alias que existe en nuestro sistema. Los alias son nombrescreados por los usuarios para ejecutar un comando o una serie <strong>de</strong> comando <strong>de</strong> manera más rápida. Estosestán <strong>de</strong>finidos en /etc/bashrc y tienen permiso <strong>de</strong> escritura por el usuario root. Un ejemplo <strong>de</strong> la salida<strong>de</strong>l comando es el siguientealias fd='mount /<strong>de</strong>v/fd0 /mnt/floppy; cd /mnt/floppy && ls'alias l='ls -laF --color=tty'alias ldir='mount /mnt/floppy && ls /mnt/floppy && umount /mnt/floppy'alias ls='ls --color=tty'alias m='minicom -s -con -L'alias minicom='minicom -s -con -L'alias tm='tail -f /var/log/messages'alias tmm='tail -f /var/log/maillog'alias tms='tail -f /var/log/secure'alias ufd='cd /mnt && umount /floppy && ls'alias which='type -path'awk: Es un lenguaje <strong>de</strong> programación que nos sirve para realizar búsquedas <strong>de</strong> patrones en archivos <strong>de</strong>textos. Entraremos en mayor <strong>de</strong>talle en el capítulo (reemplazar).cal: Este comando, sin argumentos, nos mostrará el calendario <strong>de</strong>l mes actual en el corriente año. Alguno<strong>de</strong> sus argumentos más usados son los que le indican el mes y el año que se quiere visualizar. Para ellosolo hace falta invocarlo seguido por el número <strong>de</strong>l mes y el año en cuatro dígitos.[shrek@pantano:~]$ cal 8 2004agosto <strong>de</strong> 2004do lu ma mi ju vi sá1 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 21


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html2 <strong>de</strong> 12 07/09/2005 8:0722 23 24 25 26 27 2829 30 31[shrek@pantano:~]$cat: Concatena e imprime archivos en la salida estándar. Con "cat" podremos tanto visualizar por pantallacomo redireccionar hacia otro archivo, un archivo <strong>de</strong> texto común. También podríamos concatenar variosarchivos para que sean visualizados todos juntos.[shrek@pantano:~]$ cat archivo[1] archivo[2] archivo[3] ... archivo[n]Opciones:-b, --number-nonblankNumera todas las líneas que contengan algún texto comenzando por 1.-eEs equivalente a -vE.-n, --numberNumera todas las líneas <strong>de</strong> salida comenzando por 1.-s, --squeeze-blankRemplaza múltiples líneas en blanco con una sola línea en blanco.-tEs equivalente a -vT.-uSolo utilizado para compatibilidad con UNIX; es ignorado.-v, --show-nonprintingMuestra los caracteres <strong>de</strong> control.-A, --show-allEquivalente a -vET.-E, --show-endsMuestra un signo "$" inmediatamente <strong>de</strong>spués <strong>de</strong>l final <strong>de</strong> línea.-T, --show-tabsMuestra los caracteres <strong>de</strong> tabulación (TAB), como '^I'.--helpMuestra un mensaje <strong>de</strong> ayuda para el comando.


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html3 <strong>de</strong> 12 07/09/2005 8:07--versionMuestra la información <strong>de</strong> la versión que se esta usando <strong>de</strong>l comando.cd: (change Directory) Cambia a otro directorio. Si se invoca sin ningún argumento, nos llevara a nuestrodirectorio HOME. Esto lo hace ya que existe una variable <strong>de</strong> entorno cargada por el shell que indica cuales nuestro home. Esta variable se llama HOME y será estudiada más a<strong>de</strong>lante al ver Variables <strong>de</strong> Entornoshell.chmod: Cambia los permisos <strong>de</strong> acceso a los ficheros. La forma <strong>de</strong> los símbolos que podrá utilizar comoargumento será [ugoa...][[+- =][rwxXstugo...]...][,...]' . Muchos <strong>de</strong> estos símbolos tendrán queir separados por comas. La combinación <strong>de</strong> letras [ugoa...] especificará si el cambio al archivo se le estaespecificando a nivel <strong>de</strong>l usuario (u), grupo (g) u otros (o) o en su <strong>de</strong>fecto a todos (a). El operador "+"casa que el permiso seleccionado sea añadido, en cambio el símbolo "-" significa lo opuesto. Lossímbolos rwx significan permisos <strong>de</strong> lectura (r), escritura (w) y ejecución (x). Se especificaran los otrossímbolos más a<strong>de</strong>lante. Existe también una forma numérica <strong>de</strong> indicar los permisos <strong>de</strong> forma octal (0- 7).clear: Limpia la pantalla si es posible.date: Sin argumentos mostrara en pantalla el día, mes número <strong>de</strong> día, hora y año.[shrek@pantano:~]$ datevie jul 2 14:45:59 ART 2004[shrek@pantano:~]$Si agregamos un símbolo + <strong>de</strong>lante <strong>de</strong>l comando y un modificador, podremos obtener distintas partes <strong>de</strong>una fecha. Estos modificadores tendrán que ir antepuestos por un símbolo %.Estos son algunos modificadores <strong>de</strong> posición%ntEl literal %Una nueva líneaUn tabulador horizontalModificadores <strong>de</strong> tiempo:%H%I%k%lHora en formato 00..23Hora en formato 01..12Hora en formato 00..23


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html4 <strong>de</strong> 12 07/09/2005 8:07Hora en formato 01..12%MMinutos en formato 00..59%pAM o PM%rTiempo en formato <strong>de</strong> 12 horas (hh:mm:ss )%sSegundos a partir <strong>de</strong>l 01-01-1970 a las 00:00:00.%SSegundos (00..59)%TTiempo en formato <strong>de</strong> 24 horas.%XTiempo en formato local (%H:%M:%S)%ZZona <strong>de</strong> tiempo, o nada si no esta <strong>de</strong>terminado.Modificadores <strong>de</strong> Días%aAbreviación <strong>de</strong> días <strong>de</strong> la semana (Dom..Sab)%AMuestra el nombre completo <strong>de</strong>l día <strong>de</strong> la semana (Domingo..Sábado)%bAbreviación <strong>de</strong>l mes en curso (Ene..Dic)%BMuestra el nombre completo <strong>de</strong>l mes en curso.%cMuestra el día y la hora en el formato "jue 06 abr 2000 23:48:01 ART"%dDía <strong>de</strong>l mes (01..31)


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html5 <strong>de</strong> 12 07/09/2005 8:07%DDía en formato mm/dd/aa%h%j%m%U%w%W%x%y%YIgual que %bDía <strong>de</strong>l año (001..366)Mes <strong>de</strong>l año (01..12)Número <strong>de</strong> semana <strong>de</strong>l año don<strong>de</strong> el Domingo es el primer día (00..53)Número <strong>de</strong>l día <strong>de</strong>ntro <strong>de</strong> la semana (0..6) don<strong>de</strong> 0 correspon<strong>de</strong> al Domingo.Número <strong>de</strong> semana <strong>de</strong>l año don<strong>de</strong> el Lunes es el primer día (00..53)Día en formato dd/mm/aaMuestra los dos últimos dígitos <strong>de</strong>l año.Año en formato <strong>de</strong> 4 dígitos (1970 .. )El reloj <strong>de</strong>l sistema también pue<strong>de</strong> actualizar el reloj <strong>de</strong>l sistema a través <strong>de</strong>l modificador -d <strong>de</strong> lasiguiente forma:date -d mm/dd/yyCambia la fecha.date -d hh:mm:ssCambia la hora. La opción --help muestra un mensaje <strong>de</strong> ayuda mientras que --version Muestrainformación <strong>de</strong> la versión.find: Encuentra archivos recursivamente. Los archivos que coincidan con la una expresión lógica seránmostrados en pantalla. Find no sigue a los link simbólicos, sino que los muestra como archivos.Uso <strong>de</strong> Operadores: En esta <strong>de</strong>scripción el argumento n es usado para i<strong>de</strong>ntificar a un número <strong>de</strong>cimal


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html6 <strong>de</strong> 12 07/09/2005 8:07entero don<strong>de</strong> +n es mayor que n y -n es menor que n y n es exactamente n. -fstype Verda<strong>de</strong>ro si eltipo <strong>de</strong> archivo coinci<strong>de</strong> con "tipo". Típicamente 4.2 o nfs. -name Verda<strong>de</strong>ro si el archivo esigual a . Pue<strong>de</strong> usarse los modificadores <strong>de</strong>l shell como comodín don<strong>de</strong> "?" representa una solaletra y "*" representa toda una ca<strong>de</strong>na. -size n Verda<strong>de</strong>ro si el archivo es <strong>de</strong> n bloques <strong>de</strong> largo (512 bytespor bloque) -inum n Verda<strong>de</strong>ro si el archivo tiene el inodo igual a n. Veremos los inodos en el capítulo8.5.3. -atime n Verda<strong>de</strong>ro si el archivo fue accedido en n días. -mtime n Verda<strong>de</strong>ro si el archivo fuemodificado en n días. -ctime n Verda<strong>de</strong>ro si el archivo fue cambiado en n días. -exec command Verda<strong>de</strong>rosi la ejecución <strong>de</strong>l "command" retorna 0. -ok command Parecido a -exec solo que el "command" es escritoen la pantalla y se pregunta si es ejecutado a lo que se tendrá que respon<strong>de</strong>r "Y" o "N". -print Siempre esverda<strong>de</strong>ro, muestra el path don<strong>de</strong> esta buscando. -ls Siempre es verda<strong>de</strong>ro, imprime a<strong>de</strong>más todos losdatos <strong>de</strong> un "ls" normal y más: número <strong>de</strong> inodo, tamaño en kilobytes (1024 bytes), modo <strong>de</strong> protección ynúmero <strong>de</strong> enlace duro, usuario, grupo, tamaño en bytes y tiempo <strong>de</strong> la última modificación. Si el archivoes un link simbólico, se mostrará hacia don<strong>de</strong> apunta con "->". -cpio <strong>de</strong>vice Siempre verda<strong>de</strong>ro, escribe elarchivo en un dispositivo <strong>de</strong> cinta. -newer Verda<strong>de</strong>ro si los archivos fueron modificados másrecientemente que el tiempo <strong>de</strong> modificación que tiene -x<strong>de</strong>v Siempre verda<strong>de</strong>ro, no <strong>de</strong>scien<strong>de</strong>a directorios que posean otro tipo <strong>de</strong> filesystem's FAST-FIND: Se trata <strong>de</strong> una base <strong>de</strong> datos alojada en/usr/lib/find que es actualizada periódicamente y es don<strong>de</strong> se van guardando las búsquedas anteriores. Sepue<strong>de</strong> actualizar con el comando siendo root con el comando updatedb que se encuentra en el mismodirectorio.cp: copia el contenido <strong>de</strong>l archivo1 en el archivo2 con la sintaxis siguiente[shrek@pantano:~]$ cp ... don<strong>de</strong> archivo1, archivo2 hasta archivo[n] serán copiados a <strong>de</strong>stino. Algunas opciones:-a, --archive-b, --backup-f, --forcePreserva la posible estructura y atributos <strong>de</strong>l archivo a copiarRealiza un backup <strong>de</strong> los archivos copiados por si se renombran o son borradosBorra sin avisar el archivo <strong>de</strong> <strong>de</strong>stino si este existe-i, --interactivePregunta por pantalla la confirmación <strong>de</strong> sobrescribir un archivo <strong>de</strong>stinoOtra forma <strong>de</strong> utilizar el comando cp es haciendo una copia recursiva <strong>de</strong> directorio1 con subdirectoriosy todo a directorio2. Si directorio2 no existe, se creará. Esto se logra con la opción -c.echo: Simplemente envía a pantalla los argumentos pasados.[shrek@pantano:~]$ echo "Hola mundo"Hola Mundofinger: Por <strong>de</strong>fecto muestra en pantalla todos los usuarios logeados incluyendo nombre <strong>de</strong> login, nombrecompleto, nombre <strong>de</strong> la terminal don<strong>de</strong> esta logeado, hora en que entro al sistema, hostname a<strong>de</strong>más <strong>de</strong>otros datos personales como los números <strong>de</strong> teléfono si es que existen.


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html7 <strong>de</strong> 12 07/09/2005 8:07[shrek@pantano:~]$ fingerLogin Name Tty Idle Login Time Office Office Phoneroot root *1 22 Apr 8 18:42sebas p0 Apr 8 18:42 (192.168.1.1)Idle es un entero que muestra la cantidad <strong>de</strong> tiempo que el usuario esta logeado en el sistema. Opciones:-s-lIgual que ejecutar el finger comúnRepresenta la información en múltiples líneas[shrek@pantano:~]$ finger -lLogin: shrekName: ShrekDirectory: /home/shrekShell: /bin/bashOn since Tue Aug 10 14:41 (ART) on tty2 6 hours 35 minutes idleNo mail.No Plan.Si se quisiera saber los usuarios que están logeados en un sistema diferente al nuestro, y si el sistema elcual estamos explorando lo permite al tener habilitado el puerto 79 (finger), tendríamos que ejecutar elcomando seguido <strong>de</strong> una "@" e inmediatamente <strong>de</strong>spués el nombre <strong>de</strong>l host <strong>de</strong>l que queremos saber quienesta logeado.[shrek@pantano:~]$ finger @farfaraway.comgrep: Imprimirá las líneas que coincidan con la expresión que coloquemos inmediatamente luego <strong>de</strong>lcomando. Por ejemplo, si tiráramos por pantalla el archivo /var/log/messages tal vez tendríamos<strong>de</strong>masiadas líneas para ver, pero si solo queremos ver aquellas líneas que contengan la expresión "tty1"solo tendríamos que hacer un cat al archivo y utilizando el símbolo <strong>de</strong> canalización "|" podríamos hacerque la salida <strong>de</strong>l cat se procese con el comando grep para darnos la salida <strong>de</strong>seada.[root@pantano:/home/shrek]# cat /var/log/messages|grep tty1Jul 25 16:53:04 pantano login[433]: ROOT LOGIN ON tty1Jul 25 18:41:40 pantano login[433]: ROOT LOGIN ON tty1Jul 25 18:42:10 pantano login[457]: ROOT LOGIN ON tty1[root@pantano:/home/shrek]#Opciones:-A num-B num-c-bMuestra las num líneas siguiente a la última línea que haya coincidido con el patrón pedido.Muestra las num líneas anteriores a la primera línea que haya coincidido con el patrón pedido.Muestra por pantalla él número <strong>de</strong> líneas que coinci<strong>de</strong>n con el patrón.


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html8 <strong>de</strong> 12 07/09/2005 8:07Muestra antes que las líneas que coinci<strong>de</strong>n, la cantidad <strong>de</strong> bytes que han pasado por el comandoluego <strong>de</strong> salir cada línea.Para mayores usos y dado que la opción anterior será la que más se utilice, se recomienda la lectura <strong>de</strong> laspaginas <strong>de</strong> su manual.kill: Por <strong>de</strong>fecto envía una señal <strong>de</strong> terminación (terminate 15) al proceso que se indique por medio <strong>de</strong>lnumero <strong>de</strong> proceso (PID). Las señales que se le pue<strong>de</strong>n enviar a un proceso se listan con la opción - l.Estas son:1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.SIGHUPSIGINTSIGQUITSIGILLSIGTRAPSIGIOTSIGBUSSIGFPESIGKILLSIGUSR1SIGSEGVSIGUSR2SIGPIPESIGALRMSIGTERMSIGCHLDSIGCONTSIGSTOPSIGTSTPSIGTTINSIGTOUSIGURGSIGXCPUSIGXFSZ


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html9 <strong>de</strong> 12 07/09/2005 8:0726.SIGVTALRM27.SIGPROF28.SIGWHINCH29.30.SIGIOSIGPWRPara más información sobre las señales consultar signal(7) en las páginas <strong>de</strong> manual. De estas señalesindicaremos las más utilizadas. Estas son 9, 1 y 15. Para indicar el número <strong>de</strong> señal que queremos enviar aun proceso, se le antepone el signo "-".[root@pantano:/usr/bin]# kill -9 266Esto provocará que el proceso muera repentinamente. La diferencia entre la señal 9 y la 15 es que alenviar al proceso una señal 15 este será marcado como un proceso terminado. En cambió la señal 9 matael proceso inmediatamente. La señal 1 o SIGHUP reinicia el proceso al que se envía la señal, lo quetambién se podrá realizar con el modificador -HUP.[root@pantano:/usr/bin]# kill -HUP 266Se <strong>de</strong>berá tener en cuenta que el usuario solo podrá mandar señales a los procesos que le pertenecen. Encambio el usuario root podrá hacerlo a cualquier proceso que este corriendo en el sistema.less: es un programa similar a more que permite ir viendo una salida en pantalla que ocuparía más <strong>de</strong> una.La diferencia sustancial con el more es que nos permite <strong>de</strong>splazarnos <strong>de</strong> abajo hacia arriba y <strong>de</strong> arribahacia <strong>de</strong>bajo <strong>de</strong> la salida por pantalla. Permite a su vez que se utilicen una serie <strong>de</strong> comandos. Sumario <strong>de</strong>comandos básicos <strong>de</strong>l less.h HMuestra la ayuda.q :q Q :Q ZZSalir.e ^E j ^N CRA<strong>de</strong>lante una línea (o N líneas).y ^Y k ^K ^PAtrás una línea (o N líneas).f ^F ^V SPACEb ^B ESC-vA<strong>de</strong>lante una pantalla (o N líneas).Atrás una pantalla (o N líneas).ESC-SPACE


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html10 <strong>de</strong> 12 07/09/2005 8:07A<strong>de</strong>lante una pantalla./ patrónBusca hacia a<strong>de</strong>lante n's líneas en don<strong>de</strong> coincida el patrón.logout: Sale <strong>de</strong> la terminal.lpq: Muestra en pantalla el contenido <strong>de</strong> la cola <strong>de</strong> impresión. Si se quiere un reporte por cada usuario, elcomando <strong>de</strong>berá estar seguido <strong>de</strong>l nombre <strong>de</strong>l usuario.lpr: Genera un trabajo <strong>de</strong> impresión <strong>de</strong>l archivo seleccionado. Si no se especifica archivo, lpr leerá losdatos <strong>de</strong>s<strong>de</strong> la entrada estándar. Opciones: -Pprinter Envía la salida a la impresora printer. -#copiesProce<strong>de</strong> a crear "copies" copias <strong>de</strong>l trabajo enviado a la cola <strong>de</strong> impresión.[shrek@pantano:~]$ lpr -#3 in<strong>de</strong>x.cTambién se podría realizar leyendo el archivo con el comando cat y enviarlo al comando lpr con lacantidad <strong>de</strong> copias que se requieren.[shrek@pantano:~]$ cat in<strong>de</strong>x.c |lpr -#3Existen muchos comandos más para aplicar formatos específicos a la salida impresa, los que se podránconsultar en las páginas <strong>de</strong> manual.lprm: Remueve los trabajos <strong>de</strong> la cola <strong>de</strong> impresión. Sin argumentos, "lprm", borrara todos los trabajosactivos <strong>de</strong>l usuario que invoco el programa. Pue<strong>de</strong> ser removido un trabajo <strong>de</strong>terminado utilizando elcomando lpq para saber el número <strong>de</strong> trabajo y el comando lprm para eliminarlo indicando en laimpresora que se encuentra.[shrek@pantano:~]$ lpq -Plppantano: waiting for 192.168.1.1 to come upRank Owner Job Files Total Size1st sebas 0 passwd 636 bytes2nd sebas 1 passwd 636 bytes[shrek@pantano:~]$ lprm -Plp 1don<strong>de</strong> lp es el nombre <strong>de</strong> la impresora.ls: Lista todos los archivos <strong>de</strong>l directorio que indiquemos.-a, --allLista todos los archivos, incluidos los archivos <strong>de</strong> punto (.archivo)-d, --directory-c-fLista solo los directorios.Lista los archivos or<strong>de</strong>nados <strong>de</strong>s<strong>de</strong> la fecha más próxima a la <strong>de</strong>l momento en que se ejecuta elcomando.No or<strong>de</strong>na los archivos, los muestra según la ubicación en el disco.


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html11 <strong>de</strong> 12 07/09/2005 8:07--full-timeMuestra los archivos con todos los datos <strong>de</strong> tiempo.-i, --ino<strong>de</strong>--color=yesImprime el índice <strong>de</strong> inodos <strong>de</strong> cada archivo.Indica al comando ls que muestre los resultados en colores.Para mayor información, mirar las páginas <strong>de</strong> manual.man: Muestra las páginas <strong>de</strong> manual <strong>de</strong>l comando o programa que se le pase como argumento. mail: Esun programa sencillo para el envió <strong>de</strong> e-mails, tanto en una red como en Internet. Siendo este un comandopor <strong>de</strong>más <strong>de</strong> auto explicativo y que en su mayoría solo se utilizara para realizar rápidos mensajes <strong>de</strong>email, se recomienda la lectura <strong>de</strong> las páginas <strong>de</strong> manual para po<strong>de</strong>r ver todos los alcances que tiene.mkdir: Crea directorios nuevos. Se <strong>de</strong>berá indicar luego <strong>de</strong>l comando el directorio o los directorios acrear.[shrek@pantano:~]$ mkdir cartasSe creara el directorio cartas en el directorio sebasmore: Es un filtro que mostrara por pantalla el archivo que le enviemos o que sea redireccionado a el yparara por cada pantalla mostrada. Opciones: -c Borra la pantalla antes <strong>de</strong> <strong>de</strong>splegar la información porpantalla. -d Mostrara los mensajes <strong>de</strong> error e indicara que hacer para solucionarlo.mv: Mueve archivos y directorios. Existen tres formas para utilizar el mv y se muestran más abajo. Laprimera forma es cuando se quiere cambiar el nombre <strong>de</strong> un archivo. Supongamos que queremos cambiarel nombre <strong>de</strong>l archivo1 a archivo2. Si archivo2 existe, este será borrado y en su lugar estarán los datos <strong>de</strong>larchivo1. La opcion 2 es que lo que se quiera mover sea un directorio. Solo se podrá hacer si el nuevonombre <strong>de</strong>l directorio no existe. La tercera opción es cuando se quiere mover mas <strong>de</strong> un archivo a unaubicación particular. Existen para realizar esto las siguientes opciones:-f-iFuerza la ejecución <strong>de</strong>l comando mv aunque se trate <strong>de</strong> un proceso restringido como el borrado <strong>de</strong>un directorio.Habilita el proceso interactivo. Se podrá especificar el archivo o directorio que se quiere renombraro mover.passwd: Cambia o pone la clave <strong>de</strong> paso a un usuario. Solo el root podrá cambiar el password <strong>de</strong> otrousuario. El usuario podrá cambiar su propia clave con este comando.ps: Mostrara información por pantalla <strong>de</strong> los procesos que están corriendo en ese comento. Opciones:-a-xOpción por <strong>de</strong>fecto. Mostrará los procesos <strong>de</strong> los cuales el usuario es el dueño.


Detalle <strong>de</strong> comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html12 <strong>de</strong> 12 07/09/2005 8:07Mostrará absolutamente todos los procesos que se estén ejecutando.-fMostrará la jerarquía <strong>de</strong> los procesos mostrando los padres <strong>de</strong> cada uno y sus <strong>de</strong>scendientes.pwd: Mostrará la ruta <strong>de</strong>l directorio don<strong>de</strong> estamos parados actualmente.[shrek@pantano:~]$ cd /usr/local/bin[shrek@pantano:/usr/local/bin]$ pwd/usr/local/bin[shrek@pantano:~]$rm: Remueve archivos y directorios. Opciones:-iPregunta antes <strong>de</strong> borrar cada archivo.-fFuerza el borrado <strong>de</strong> una archivo sin mostrar los mensajes <strong>de</strong> error.-rBorrado recursivo.rmdir: Borra directorios. Las opciones anteriores también se aplican.Anterior Inicio SiguienteEntornos gráficos <strong>de</strong> escritorio GNU Free Document License


Entornos gráficos <strong>de</strong> escritoriohttp://www.ant.org.ar/cursos/curso_intro/x3359.html1 <strong>de</strong> 3 07/09/2005 8:07Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteEntornos gráficos <strong>de</strong> escritorioExisten a<strong>de</strong>más <strong>de</strong> los WM mostrados anteriormente entornos <strong>de</strong> escritorios, los cuales proveen un WM,utilida<strong>de</strong>s varias y un framework <strong>de</strong> <strong>de</strong>sarrollo que nos permitirán <strong>de</strong>sarrollar aplicaciones que se integrenal entorno perfectamente, compartiendo el look&feel <strong>de</strong>l mismo y aprovechando servicios como arrastrary soltar, servicio <strong>de</strong> impresión centralizado, un portapapeles común, etc. Algunos <strong>de</strong> estos entornos sonKDE, Gnome, GNUStep y CDE. Hablaremos solamente <strong>de</strong> los dos primeros que son, sin lugar a dudas,los más populares. El tercero es un esfuerzo por reimplementar las especificaciones OPENStep <strong>de</strong> NeXT,y parece haber quedado estancado. El último nombrado fué durante muchos años el rey en los ambientesUNIX corporativos, pero ha quedado <strong>de</strong>sfasado respecto a los dos primeros, a<strong>de</strong>más <strong>de</strong> no ser libre.El entorno KDEKDE ofrece para GNU/Linux un entorno gráfico <strong>de</strong> configuración por <strong>de</strong>más <strong>de</strong> sencilla y con unaapariencia homogénea entre las distintas aplicaciones. KDE es un proyecto <strong>de</strong> un grupo <strong>de</strong> programadoresque se formo en 1996 y que siguen trabajando en el proyecto junto con muchos otros que fueronincorporándose. Ofrece su propio administrador <strong>de</strong> ventanas llamado kwin y a<strong>de</strong>más una serie <strong>de</strong>aplicaciones para hacerlo mas cómodo como el konqueror que es un administrador <strong>de</strong> ficheros quepermite trabajar con ellos en una forma muy grafica a través <strong>de</strong> iconos.Figura 14. Aspecto que ofrece KDEConsta <strong>de</strong> gran cantidad <strong>de</strong> ayuda y esta totalmente realizada en HTML lo que facilita su lecturahaciéndola mucho mas dinámica. Aparte las aplicaciones nuevas que se vayan instalando incorporarantambién la documentación que posean a esta lista. Posee una gran variedad <strong>de</strong> aplicaciones como lo sonun programa <strong>de</strong> correos, el kmail, block <strong>de</strong> notas, calculadora, y <strong>de</strong>más aplicaciones <strong>de</strong> utilidad. Poseetambién aplicaciones para Internet como un cliente para IRC y la posibilidad <strong>de</strong> realizar la conexión pordial-up <strong>de</strong> una forma por <strong>de</strong>más <strong>de</strong> sencilla a través <strong>de</strong>l kppp.EL KDE esta basado totalmente en URL. Esto significa que todas las ramas y referencias a archivos seprocesan en un formato único por ejemplo se pue<strong>de</strong> acce<strong>de</strong>r a una pagina HTML, a un archivo local o aun sentido a través <strong>de</strong>l mismo visualizado.


Entornos gráficos <strong>de</strong> escritoriohttp://www.ant.org.ar/cursos/curso_intro/x3359.html2 <strong>de</strong> 3 07/09/2005 8:07Tiene la posibilidad <strong>de</strong> realizar Drag&Drop entre las distintas aplicaciones por ejemplo arrastrando unarchivo <strong>de</strong>s<strong>de</strong> un lado a otro o al escritorio.KDE esta <strong>de</strong>sarrollado con las bibliotecas gráficas Qt, las cuales son parecidas en funcionamiento a otrasbibliotecas muy conocidas en el mundo UNIX como lo son las Motif que facilitan la construcción <strong>de</strong>programas con base grafica, pero que son software no libre.En un tiempo las bibliotecas Qt también fueron no libres, lo que frenó la adopción <strong>de</strong> KDE por cuestiones<strong>de</strong> licencias en algunas ditribuciones. Luego, la presión <strong>de</strong> la comunidad <strong>de</strong>l software libre hicieron queestas se publicaran con una licencia dual, estando ahora bajo licencia GPL cuando se utilizan para<strong>de</strong>sarrollo <strong>de</strong> software libre. Esto sin duda terminó <strong>de</strong> popularizar este <strong>de</strong>sarrollo tecnicamente excelente.La página <strong>de</strong>l proyecto es http://www.k<strong>de</strong>.org don<strong>de</strong> pue<strong>de</strong> encontrarse mucha información <strong>de</strong>l mismo.El entorno GnomeGnome es un acrónimo <strong>de</strong> 'GNU Network Object Mo<strong>de</strong>l Environment', entorno <strong>de</strong> trabajo en redorientado a objetos, por lo que Gnome forma parte <strong>de</strong>l más amplio proyecto GNU. Gnome es un entornográfico (escritorio <strong>de</strong> trabajo) amigable que permite a los usuarios usar y configurar sus or<strong>de</strong>nadores <strong>de</strong>una forma sencilla. Gnome incluye un panel (para arrancar aplicaciones y presentar el estado <strong>de</strong>funcionamiento), un escritorio ( don<strong>de</strong> se pue<strong>de</strong>n situar los datos y las aplicaciones), un conjunto estándar<strong>de</strong> aplicaciones y herramientas <strong>de</strong> escritorio, y un conjunto <strong>de</strong> convenciones que facilitan la operación yconsistencia <strong>de</strong> las aplicaciones entre sí.Figura 15. Aspecto que ofrece GnomeLos usuarios <strong>de</strong> otros sistemas operativos y entornos se sentirán como en casa cuando usen el potenteentorno gráfico que proporciona Gnome. Gnome es en su totalidad código abierto (software libre), con elcódigo fuente disponible libremente y <strong>de</strong>sarrollado por cientos <strong>de</strong> programadores en todo el mundo.Gnome tiene una serie <strong>de</strong> ventajas para los usuarios. EL mismo facilita el uso y la configuración <strong>de</strong>aplicaciones sin usar interfaces puramente textuales (console). Es altamente configurable, permitiéndoleajustar su escritorio con el aspecto que <strong>de</strong>see.El gestor <strong>de</strong> sesiones <strong>de</strong> Gnome recuerda la configuración previa, <strong>de</strong> manera que una vez que hayaconfigurado las cosas a su gusto, las mantendrá así. Soporta muchos idiomas, y pue<strong>de</strong> añadir más sincambiar el software. Soporta incluso varios protocolos <strong>de</strong> arrastrar y soltar para una máximainteroperabilidad con aplicaciones que no sean compatibles con Gnome.


Entornos gráficos <strong>de</strong> escritoriohttp://www.ant.org.ar/cursos/curso_intro/x3359.html3 <strong>de</strong> 3 07/09/2005 8:07Gnome tiene también una serie <strong>de</strong> ventajas para los programadores que indirectamente beneficiantambién a los usuarios. Los programadores no necesitan comprar una cara licencia <strong>de</strong> software para hacercompatibles sus aplicaciones comerciales. De hecho, Gnome es in<strong>de</strong>pendiente <strong>de</strong> cualquier compañía -ningún componente <strong>de</strong>l interfaz esta controlado únicamente por una compañía o tiene restringidas lamodificación o redistribución. Las aplicaciones Gnome pue<strong>de</strong>n <strong>de</strong>sarrollarse en una gran variedad <strong>de</strong>lenguajes <strong>de</strong> programación, por lo que el programador no se ve limitado a un solo lenguaje <strong>de</strong>programación. Gnome usa la arquitectura universal <strong>de</strong> agentes <strong>de</strong> petición <strong>de</strong> objetos (CORBA) parapermitir que los componentes software interactúen 'sin costuras', in<strong>de</strong>pendientemente <strong>de</strong>l lenguaje en elque estén implementados, o incluso <strong>de</strong> la máquina en la que se estén ejecutando. Finalmente, Gnomefunciona en numerosos sistemas operativos <strong>de</strong> tipo Un*x, incluido GNU/Linux. El gestor <strong>de</strong> ventanas esla parte <strong>de</strong>l software que controla las ventanas en el 'Entorno <strong>de</strong> ventanas X'. La posición, bor<strong>de</strong>s, y estilo<strong>de</strong> cualquier ventana la maneja el gestor <strong>de</strong> ventanas. Esto es muy distinto en muchos otros sistemasoperativos, y la forma en que Gnome dialoga con los gestores <strong>de</strong> ventanas es diferente <strong>de</strong> la <strong>de</strong> otrosentornos <strong>de</strong> escritorio. Como se indicó anteriormente en esta guía, Gnome no <strong>de</strong>pen<strong>de</strong> <strong>de</strong> ningún gestor<strong>de</strong> ventanas. Esto significa que la mayor parte <strong>de</strong> su entorno <strong>de</strong> escritorio no cambiará si <strong>de</strong>ci<strong>de</strong> cambiar<strong>de</strong> gestor <strong>de</strong> ventanas. Gnome trabaja con el gestor <strong>de</strong> ventanas para proporcionarle el entorno <strong>de</strong> trabajomás amigable posible. Gnome no se preocupa <strong>de</strong> la colocación <strong>de</strong> las ventanas, sino que obtieneinformación sobre su posición <strong>de</strong>l gestor <strong>de</strong> ventanas. El paginador («Pager») sólo funcionará congestores <strong>de</strong> ventanas compatibles con Gnome, al igual que arrastrar y soltar en el escritorio.Si quiere saber más sobre el proyecto Gnome pue<strong>de</strong> visitar la página web <strong>de</strong>l mismo enhttp://www.gnome.orgAnterior Inicio SiguienteConfiguración <strong>de</strong> Xfree86 Subir Detalle <strong>de</strong> comandos


Configuración <strong>de</strong> Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html1 <strong>de</strong> 5 07/09/2005 8:06Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteConfiguración <strong>de</strong> Xfree86Por lo general, cuando instalemos GNU/Linux ya tendremos instalado el sistema XWindow yconfigurado. Sin embargo, si hemos instalado Debian o Slackware aun ten<strong>de</strong>rmos que configurarlo. Paraesto se <strong>de</strong>be <strong>de</strong> crear el archivo <strong>de</strong> configuración /etc/X11/XF86Config o /etc/X11/XF86Config-4. Estese pue<strong>de</strong> crear a mano o con alguno <strong>de</strong> los siguientes programas: xf86config o xf86cfg. Antes <strong>de</strong> correralguno <strong>de</strong> los programas <strong>de</strong> configuración <strong>de</strong> XWindow se <strong>de</strong>be tener a la mano la siguiente información:marca, mo<strong>de</strong>lo y cantidad <strong>de</strong> memoria <strong>de</strong> la tarjeta <strong>de</strong> vi<strong>de</strong>o; marca, mo<strong>de</strong>lo <strong>de</strong>l monitor y frecuenciahorizontal y vertical <strong>de</strong>l monitor; datos <strong>de</strong>l mouse (ratón) y teclado que utilizaremos.Configuración mediante xf86cfgPor supuesto que lo primero que tendrán que cerciorarse es que los archivos necesarios estén instaladosantes <strong>de</strong> correr este programa. Si no fuese así un mensaje les advertirá por pantalla <strong>de</strong> esto. Una vez quese ejecuta como root <strong>de</strong>s<strong>de</strong> la consola el programa xf86cfg[root@pantano:~]# xf86cfgun cuadro <strong>de</strong> dialogo le preguntara si se quiere utilizar el archivo <strong>de</strong> configuración existente. Este archivose instala por <strong>de</strong>fecto al instalarse los archivos <strong>de</strong> XFree, pero muy pocas veces funciona sinmodificaciones. Sirve para ejemplo y punto <strong>de</strong> partida para una configuración a medida.XF86cfg intentará arrancar el sistema gráfico en modo VESA, por lo que esto funcionará en la mayoría<strong>de</strong> las máquinas mo<strong>de</strong>rnas. Si se <strong>de</strong>tectan exitosamente todas nuestras configuraciones <strong>de</strong> hardware, sepodra ver una ventana similar a la que se muestra a continuación.Figura 6. Aspecto <strong>de</strong> la ventana <strong>de</strong> xf86cfgEn este momento estamos configurando el Layout <strong>de</strong>l servidor, es <strong>de</strong>cir la disposición física <strong>de</strong> losdiferentes dispositivos (Boton superior izquierdo, Configure Layout). Como po<strong>de</strong>mos observar, lasconfiguraciones más importantes se divi<strong>de</strong>n en cuatro secciones representados por los botones superiores,a saber mouse, teclado, tarjeta <strong>de</strong> vi<strong>de</strong>o y monitor. El hardware <strong>de</strong>tectado se muestra en la parte inferior,en el gráfico que une las "partes" <strong>de</strong> nuestra máquina. A continuación podremos efectuar lasmodificaciones que querramos, haciendo click con el botón <strong>de</strong>recho sobre el dispositivo a configurar yeligiendo la opción configure.


Configuración <strong>de</strong> Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html2 <strong>de</strong> 5 07/09/2005 8:06Si por casualidad nuestro mouse fué mal <strong>de</strong>tectado (caso común cuando disponemos <strong>de</strong> un mouse seriepero nuestra máquina posee a<strong>de</strong>más bus ps2), podremos utilizar las teclas <strong>de</strong>l teclado numérico paramover el puntero en pantalla tal como se muestra a continuación.Figura 7. Ayuda en caso <strong>de</strong> mouse mal <strong>de</strong>tectado o ausenteEn caso <strong>de</strong> que la <strong>de</strong>tección <strong>de</strong> vi<strong>de</strong>o sea mal <strong>de</strong>tectada y no pueda arrancar el modo gráfico, aun se pue<strong>de</strong>usar el programa <strong>de</strong> configuración en modo texto, con el comando xf86cfg -textmo<strong>de</strong>, el cual nos abriráel mismo programa con menúes interactivos. También po<strong>de</strong>mos usar el comando xf86config, el cual nosirá preguntando una a una las opciones para cada caso.MouseEn esta pantalla se podrá configurar el mouse que funcione en nuestro sistema, aunque ya lo hayamosrealizado en la consola. En la pantalla que vemos a continuación se muestran las opciones I<strong>de</strong>ntifier (sepue<strong>de</strong> <strong>de</strong>jar tal cual como está), y lo más importante, mouse <strong>de</strong>vice y mouse protocol.Figura 8. Menú <strong>de</strong> configuración <strong>de</strong>l mouseEl primero se refiere al puerto físico que está conectado el mouse. Si se trata <strong>de</strong> un mouse serie el mismoserá seguramente /<strong>de</strong>v/ttyS0 o /<strong>de</strong>v/ttyS1. Si se trata <strong>de</strong> un mouse ps2 será /<strong>de</strong>v/psaux. En cuanto alprotocolo, pue<strong>de</strong> <strong>de</strong>jarse en Auto la mayoría <strong>de</strong> las veces. Algunos protocolos pue<strong>de</strong>n activarcaracterísticas especiales <strong>de</strong>l mouse, por ejemplo la rueda. La opción Emulate 3 buttons permite queteniendo un mouse <strong>de</strong> dos botones, apretando los dos a la vez se comporte como un tercer botón.TecladoHay que configurar nuestro teclado <strong>de</strong> acuerdo a dos aspectos fundamentales: el idioma y el mo<strong>de</strong>lo. Acontinuación se muestra la pantalla <strong>de</strong> configuración <strong>de</strong>l teclado.


Configuración <strong>de</strong> Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html3 <strong>de</strong> 5 07/09/2005 8:06Figura 9. Menú <strong>de</strong> configuración <strong>de</strong>l tecladoLas opcion xkb rules <strong>de</strong>be ser xfree86. Los parámetros más importantes son Keyboard mo<strong>de</strong>l, el cual enlos teclados comunes con "teclas muertas" (<strong>de</strong>ad keys) que usa cierto sistema operativo será Generic105-key (Intl) PC para teclado español (104-keys para uno americano), y Keyboard layout, en nuestrocaso casi siempre Spanish.Las opciones siguientes permiten seleccionar aspectos más avanzados <strong>de</strong> nuestro teclado, como que hacercon las teclas muertas, administrar el comportamiento <strong>de</strong> las teclas CapsLock-Shift, etc.Placa <strong>de</strong> Vi<strong>de</strong>oEste punto es crucial y por <strong>de</strong>más <strong>de</strong> complicado cuando no se tiene la documentación <strong>de</strong> la placa. Lomejor que pue<strong>de</strong> uno hacer es leer los README que vienen con X para ver si existe compatibilidad connuestra placa <strong>de</strong> vi<strong>de</strong>o. Si se sabe cual es el tipo <strong>de</strong> placa y esta aparece listada, es un procedimientoinmediato, pero si no se tendrá que probar con una placa genérica que supla los requerimientos <strong>de</strong> nuestraplaca <strong>de</strong> vi<strong>de</strong>o. A continuación vemos la pantalla <strong>de</strong> configuración <strong>de</strong> la placa <strong>de</strong> vi<strong>de</strong>o.Figura 10. Menú <strong>de</strong> configuración <strong>de</strong> la placa <strong>de</strong> vi<strong>de</strong>oSi nuestra placa no está listada por lo general la placa VESA es una buena opción. Si esta no funcionatambien se dispone <strong>de</strong> el controlador vga generic, el cual <strong>de</strong>bería funcionar en casi cualquier hardware.Lo que se tiene que tener en cuenta es el chipset <strong>de</strong> nuestra placa ya que será un indicativo para hallar unasustituta. La RAM que posee también tendrá que ser especificada y se recomienda leer los archivos <strong>de</strong>README para configurar placas aceleradoras.MonitorLa configuración <strong>de</strong>l monitor se basa en saber las frecuencias verticales y horizontales <strong>de</strong> trabajo <strong>de</strong>lmismo, lo que se podrá obtener <strong>de</strong> la documentación provista o <strong>de</strong>l sitio <strong>de</strong>l fabricante.


Configuración <strong>de</strong> Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html4 <strong>de</strong> 5 07/09/2005 8:06Figura 11. Menú <strong>de</strong> configuración <strong>de</strong>l monitorEn este punto hay que tener especial cuidado dado que en los viejos monitores un error podía ocasionarque se quemara el mismo. Los monitores nuevos en general no sufren este problema, ya que tienenprotección contra estos acci<strong>de</strong>ntes. Elegiendo un monitor <strong>de</strong> la lista se seleccionaran automáticamente elHorizontal Sync y el Vertical Sync.ScreenAhora que hemos configurado nuestros dispositivos físicos pasaremos a configurar el aspecto quepresentará nuestra pantalla. Para eso, con el botón superior izquierdo en la pantalla principal <strong>de</strong> xf86cfgseleccionamos Configure Screen, y el aspecto <strong>de</strong> la misma cambiará como se muestra a continuación.Figura 12. Configuración <strong>de</strong>l aspecto <strong>de</strong> pantalla (screen)Haciendo click <strong>de</strong>recho sobre el monitor elegimos configure y podremos seleccionar la profundidad <strong>de</strong>colores y la resolución a la que querramos trabajar. Aqui vemos que se ha seleccionado 16 bits <strong>de</strong>profundidad <strong>de</strong> colores (65536 colores) y dos resoluciones, 640x480 y 800x600. Pue<strong>de</strong> alternarse entreestas dos resoluciones apretando la cambinación <strong>de</strong> teclas Ctrl-Alt-+ y Ctrl-Alt--


Configuración <strong>de</strong> Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html5 <strong>de</strong> 5 07/09/2005 8:06Figura 13. Selección <strong>de</strong> resolución y profundidad <strong>de</strong> coloresAnterior Inicio SiguienteRequisitos <strong>de</strong> Hardware Subir Entornos gráficos <strong>de</strong> escritorio


Requisitos <strong>de</strong> Hardwarehttp://www.ant.org.ar/cursos/curso_intro/x3251.html1 <strong>de</strong> 1 07/09/2005 8:06Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteRequisitos <strong>de</strong> HardwareX pue<strong>de</strong> operar con 32 MB <strong>de</strong> RAM física pero <strong>de</strong> seguro que lo que menos se podrá hacer es trabajar <strong>de</strong>manera cómoda, ya que al abrir un par <strong>de</strong> ventanas notaremos como caerá notablemente el rendimiento alcomenzar a intercambiar información con el disco rígido.Por esto, la memoria RAM es un punto clave a tener en cuenta a la hora <strong>de</strong> instalar X. 64 MB <strong>de</strong> RAMharán que se pueda trabajar cómodamente en un entorno que requiera <strong>de</strong> pocos recursos como elWindowMaker.En lo que respecta la placa <strong>de</strong> vi<strong>de</strong>o, se tendrá que buscar alguna que tenga pocos problemas <strong>de</strong>configuración. Hoy día casi todas las placas <strong>de</strong> vi<strong>de</strong>o (los chips <strong>de</strong> vi<strong>de</strong>o, para ser más específicos)soportan el modo VESA 2.0, con lo cual se las pue<strong>de</strong> hacer trabajar con el driver <strong>de</strong> esta norma a1024x768 píxeles, en 32 bits <strong>de</strong> colores, aunque <strong>de</strong> esta manera estaríamos <strong>de</strong>sperdiciando parte <strong>de</strong> lapotencia <strong>de</strong> nuestro controlador <strong>de</strong> vi<strong>de</strong>o[1]. En lo que respecta a fuerza <strong>de</strong> cómputo pura, un sistemaPentium será suficiente para un entorno poco exigente y se requerirá <strong>de</strong> un Pentium III o superior paraentornos como el KDE y el Gnome que son monstruos <strong>de</strong>voradores <strong>de</strong> recurso.Notas[1]Lo cual en algunos casos pue<strong>de</strong> ser irrelevante. Por experiencia personal, aun en este caso con unamáquina nueva puedo reproducir 4 vi<strong>de</strong>os DivX a la vez. Solo será necesario disponer <strong>de</strong> toda lapotencia <strong>de</strong> la tarjeta gráfica cuando se corran resoluciones superiores a esta o juegos con muchosrequerimientos.Anterior Inicio SiguienteX - Puntos básicos Subir Configuración <strong>de</strong> Xfree86


X - Puntos básicoshttp://www.ant.org.ar/cursos/curso_intro/x3209.html1 <strong>de</strong> 4 07/09/2005 8:05Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteX - Puntos básicosUna sesión <strong>de</strong> X esta compuesta por lo general <strong>de</strong> varias ventanas don<strong>de</strong> cada una <strong>de</strong> ellas ejecutan unprograma aislado. Al igual que los programas en cualquier otro sistema, los programas que se ejecutan enX varían en cuanto a su funcionalidad.Algunos necesitan <strong>de</strong> la interacción con el usuario y otros solo <strong>de</strong>spliegan datos en la pantalla. A laventana <strong>de</strong> fondo se la conoce como ventana raíz (root window). Las ventanas <strong>de</strong> aplicación se <strong>de</strong>splieganencima <strong>de</strong> la ventana raíz. Al igual que los procesos en Un*x estas ventanas están agrupadas orelacionadas <strong>de</strong> acuerdo a una jerarquía. Así es que la ventana raíz es el padre <strong>de</strong> todas las <strong>de</strong>másventanas. Ahora, para enten<strong>de</strong>r un poco mas este tipo <strong>de</strong> funcionamiento pasaremos a explicar en queconsiste.X esta formado <strong>de</strong> dos partes: un lado servidor y un lado cliente. La funcionalidad básica es familiar a laforma en que trabajan todos los mo<strong>de</strong>los cliente-servidor, en el sentido <strong>de</strong> que el servidor X tiene<strong>de</strong>terminados recursos que proporciona al cliente. Debido a que el servidor X esta integrado a las pilasTCP/IP las peticiones pue<strong>de</strong>n venir <strong>de</strong> cualquier cliente y pue<strong>de</strong>n ser solicitadas a cualquier servidor.A<strong>de</strong>más, <strong>de</strong>bido a que X, a<strong>de</strong>más <strong>de</strong> ser un programa específico, <strong>de</strong>fine a<strong>de</strong>más un protocolo, los clientespue<strong>de</strong>n comunicarse con servidores X en otro tipo <strong>de</strong> plataforma. El servidor actúa como una interfazentre los programas clientes y el hardware físico.Cuando se proporcionan datos, ya sea por medio <strong>de</strong>l teclado o el mouse, el servidor acepta la entrada y esresponsable <strong>de</strong> pasarla al cliente. Esta información se pasa al cliente como un evento. Una tecla apretadao el movimiento <strong>de</strong>l mouse generan un evento ante el cual reaccionará el cliente.


X - Puntos básicoshttp://www.ant.org.ar/cursos/curso_intro/x3209.html2 <strong>de</strong> 4 07/09/2005 8:05Figura 1. Aspecto <strong>de</strong> algunos clientes típicosEste evento genera una reacción en el cliente para que presente un cambio en la pantalla como podría serel <strong>de</strong>splegado <strong>de</strong> un menú. Estos se realizan <strong>de</strong> la siguiente manera: El usuario realiza un clic <strong>de</strong> mouse enel cliente. Este solicita al servidor que muestre un menú <strong>de</strong>splegable. El servidor pasa la información alhardware, que muestra el menú <strong>de</strong>splegable en la pantalla. Como resultado <strong>de</strong> esta separación <strong>de</strong>funcionalida<strong>de</strong>s, un cliente pue<strong>de</strong> <strong>de</strong>splegar información en más <strong>de</strong> un servidor. Para iniciar cualquiercliente se <strong>de</strong>berá haber iniciado el servidor X en algún lugar <strong>de</strong> la red o, como es común, en la mismamáquina que se están ejecutando los clientes.Al contrario <strong>de</strong> lo que podría suponerse, ni el servidor ni los clientes son responsables <strong>de</strong> la apariencia <strong>de</strong>las ventanas en la pantalla tal como lo enten<strong>de</strong>mos. Ester trabajo le correspon<strong>de</strong> a un "administrador <strong>de</strong>ventanas" (WM por window manager). La mayoría <strong>de</strong> las distribuciones actuales trae los varios WMdiferentes, proporcionando interfaces que difieren entre sí y pue<strong>de</strong>n configurarse y adaptarse a los gustos<strong>de</strong> los usuarios. También vienen los entornos <strong>de</strong> escritorio KDE o Gnome como estándar, los queproporcionan mayor grado <strong>de</strong> integración entre aplicaciones y trabajan <strong>de</strong> formas diferentes. El WMtambién es el encargado <strong>de</strong> controlar los íconos en la pantalla. A continuación se muestra el aspecto <strong>de</strong>algunos administradores <strong>de</strong> ventanas. Si se quiere una <strong>de</strong>scripción más <strong>de</strong>tallada acerca <strong>de</strong> los WMdisponibles consultar http://xwinman.org (en inglés)


X - Puntos básicoshttp://www.ant.org.ar/cursos/curso_intro/x3209.html3 <strong>de</strong> 4 07/09/2005 8:05Figura 2. Aspecto <strong>de</strong>l WM WindowmakerFigura 3. Aspecto <strong>de</strong>l WM BlackBoxFigura 4. Aspecto <strong>de</strong>l WM xfce


X - Puntos básicoshttp://www.ant.org.ar/cursos/curso_intro/x3209.html4 <strong>de</strong> 4 07/09/2005 8:05Figura 5. Aspecto <strong>de</strong>l WM fvwm95Anterior Inicio SiguienteEl sistema X-Window Subir Requisitos <strong>de</strong> Hardware


El sistema X-Windowhttp://www.ant.org.ar/cursos/curso_intro/c3185.html1 <strong>de</strong> 1 07/09/2005 8:05Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteEl sistema X-WindowOrígenes <strong>de</strong> XVamos a dar un concepto sencillo <strong>de</strong> X Window y luego lo ampliaremos. El sistema X Window es unmétodo grafico y distribuido para trabajar. Y ahora veremos por que. El X Window System esprácticamente el estándar <strong>de</strong> los entornos gráficos para usuarios <strong>de</strong> Unix, pero no es solo eso, es uncompleto sistema para re<strong>de</strong>s que permite ejecutar aplicaciones X <strong>de</strong>s<strong>de</strong> una computadora en la otra parte<strong>de</strong>l globo <strong>de</strong> don<strong>de</strong> se encuentra el servidor, a través <strong>de</strong> Internet.Primero lo primero. El consorcio <strong>de</strong> tecnología X requiere que se usen los siguientes nombres cuando serefiere al sistema X WindowXX Window SystemX Version 11X Window System, Version 11X11Por lo tanto cualquiera <strong>de</strong> estos nombres es sinónimo <strong>de</strong>l mismo software. X Window System TM es unamarca registrada <strong>de</strong> X Consortium, Inc.El X11 se <strong>de</strong>sarrolló gracias a la cooperación entre DEC (Digital Equipment Corporation, luego adquiridapor Compaq) y el proyecto Athena <strong>de</strong>l MIT (Massachussets Institute Of Technology). La primera versión,la X11R1, salió en septiembre <strong>de</strong> 1987. Des<strong>de</strong> la versión 6 (X11R6) la X Consortium Inc y <strong>de</strong>s<strong>de</strong> 1996The Open Group continuaron con el <strong>de</strong>sarrollo <strong>de</strong>l X Window System.Existe una implementación libre <strong>de</strong>l sistema X para sistemas Unix y se <strong>de</strong>nomina XFree86. Este se sigue<strong>de</strong>sarrollando por programadores en todo el mundo, que se unieron en 1992, formando el Xfree86-Team.De esta unión surgió en 1994 la empresa The XFree86 Proyect Inc cuyo objetivo es poner Xfree86 a ladisposición <strong>de</strong> un amplio público y contribuir con el <strong>de</strong>sarrollo e investigaciones <strong>de</strong>l sistema X Window.Es <strong>de</strong> esta manera que el sistema operativo GNU/Linux adopta esta distribución libre <strong>de</strong>l sistema X parabrindar un entorno gráfico mas amigable.Anterior Inicio SiguienteActualización <strong>de</strong>l sistema X - Puntos básicos


Actualización <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html1 <strong>de</strong> 4 07/09/2005 8:05Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Administración básica <strong>de</strong>l sistema SiguienteActualización <strong>de</strong>l sistemaUna tarea que es muy importante para el administrador es la <strong>de</strong> mantener actualizado el sistema y lainstalación <strong>de</strong> nuevo software en él. Dado que el mundo <strong>de</strong> GNU/Linux se mueve muy rápidamente setendrán que tener los recaudos necesarios para que el sistema que se esta administrando no que<strong>de</strong> prontoobsoleto. Ahora esto no hay que confundirlo con que se tenga que estar pendiente <strong>de</strong> todo lo que cambiaen nuestro sistema, ya que si así lo hiciéramos nos pasaremos mas tiempo actualizándolo que usándolo.Mucha gente siente la necesidad <strong>de</strong> actualizar el sistema cada vez que una versión nueva <strong>de</strong> ladistribución que se esta usando sale, pero esto también es una perdida <strong>de</strong> tiempo ya que no todo el sistemacambia por lo que no se justifica la compra <strong>de</strong> una nueva distribución o el bajarse los 6 discos que lacomponen. Por esto, la mejor forma <strong>de</strong> realizar una actualización <strong>de</strong>l sistema es haciéndola a mano, lo quetrataremos <strong>de</strong> ver con unos puntos clave <strong>de</strong>l sistema como lo son el kernel, las bibliotecas y el softwareesencial para el funcionamiento óptimo <strong>de</strong>l sistema.Actualizando el núcleoLa actualización <strong>de</strong>l núcleo o kernel <strong>de</strong>l sistema no es bajarse el código fuente <strong>de</strong> este y realizar unacompilación. Esto permite habilitar ciertas funciones que no vienen en los kernel pre-compilados o pue<strong>de</strong><strong>de</strong>sactivar otras que no son necesarias.Los fuentes <strong>de</strong>l kernel se pue<strong>de</strong>n obtener <strong>de</strong> numerosos sitios <strong>de</strong> ftp. El más conocido es el <strong>de</strong> kernel.orgcuya página es http://www.kernel.org y el ftp es ftp://ftp.kernel.org . Los kernel se encuentran in<strong>de</strong>xadospor el número <strong>de</strong> la versión (ej v2.4) don<strong>de</strong> se encontraran los sucesivos niveles <strong>de</strong> parche <strong>de</strong> cada versión(ej 2.4 parche 18 seria 2.4.18). El kenel vendrá comprimido en dos formas posibles, tar.gz y tar.bz2. Esteúltimo sistema <strong>de</strong> compactación es mucho más eficiente que gz.El método para <strong>de</strong>scomprimirlos es el habitual, se recomienda la lectura <strong>de</strong> las páginas <strong>de</strong> manual <strong>de</strong> cadauno <strong>de</strong> los métodos <strong>de</strong> compactación para efectuarlo. Se <strong>de</strong>berá realizar la <strong>de</strong>scompresión en el directorio/usr/src don<strong>de</strong> se creara un directorio con el nombre <strong>de</strong> la versión <strong>de</strong>l kernel y su nivel <strong>de</strong> parche.Existe un enlace que estará apuntando a los fuentes <strong>de</strong>l kernel anterior <strong>de</strong>nominado linux. Este enlace<strong>de</strong>berá cambiarse para que apunte al código <strong>de</strong>l kernel nuevo.[root#pantano:/usr/src]# ln -sf /usr/src/2.2.16 /usr/src/linuxHay que tener en cuenta que para realizar la compilación <strong>de</strong>l kernel se <strong>de</strong>berá contar con los compiladoresnecesarios. Estos son el gcc y el g++ que son los compiladores <strong>de</strong> C y C++ que <strong>de</strong>berán estar instaladosen el sistema. Mas a<strong>de</strong>lante veremos como podremos tener una versión reciente <strong>de</strong> estos.Una vez que nos sesionamos que tenemos todo lo necesario se proce<strong>de</strong>rá a ejecutar el programa <strong>de</strong>configuración <strong>de</strong>l kernel. Existen 3 formas <strong>de</strong> realizar esto: La primera y menos recomendable es elejecutar en el directorio /usr/src/linux la sentencia "make config" que correrá un script que nospreguntaran uno a uno todos los aspectos <strong>de</strong>l kernel. Esta forma es por <strong>de</strong>más <strong>de</strong> tediosa y no la veremosaquí.Otra forma es realizarlo a través <strong>de</strong> un front-end gráfico realizando un make xconfig con lo quetendremos una vista bastante cómoda para efectuar la configuración. El problema que pue<strong>de</strong> presentarseaquí es que no se cuente con los paquetes <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong>l lenguaje Tk que se utilizan para el programa


Actualización <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html2 <strong>de</strong> 4 07/09/2005 8:05en X por lo que posiblemente no funcione en algunos sistemas.Una tercer forma es la <strong>de</strong> ejecutar make menuconfig que nos levantará un programa <strong>de</strong> configuraciónpero <strong>de</strong> consola y es la forma que funciona <strong>de</strong> forma más cómoda.La sugerencia es que se tome como punto <strong>de</strong> partida la configuración <strong>de</strong>l kernel anterior. Esta pue<strong>de</strong>tomarse al haberse guardado en un archivo que podrá tener un nombre como "configuración.kernel.fecha"o el que se les ocurra. SI no lo tienen lo pue<strong>de</strong>n generar a partir <strong>de</strong>l programa <strong>de</strong> configuración <strong>de</strong>l kernelanterior solicitándole que guar<strong>de</strong> la configuración en un archivo. Opción que aparece en la parte inferior<strong>de</strong> la ventana <strong>de</strong> configuración en el menuconfig. Ahora se pue<strong>de</strong> tomar con la opción <strong>de</strong> carga <strong>de</strong>configuración <strong>de</strong>l kernel nuevo, la configuración anterior y modificarla según nuestros requerimientos.Una vez realizado los cambios <strong>de</strong> configuración necesarios se recomienda el guardar la configuración enun archivo, a<strong>de</strong>más <strong>de</strong> en el mismo kernel, para futuros cambios.Cuando se termina <strong>de</strong> configurar, se le instará al ejecutar make <strong>de</strong>p y make clean. Al hacer make <strong>de</strong>p seprepararán las <strong>de</strong>pen<strong>de</strong>ncias necesarias para efectuar la compilación. Cuando acabe, hay que hacer unmake clean. Esto elimina ficheros objetos y <strong>de</strong>más <strong>de</strong> la versión anterior. No olvidar este paso.Después <strong>de</strong> preparar <strong>de</strong>pen<strong>de</strong>ncias, pue<strong>de</strong> ejecutar make zImage o make zdisk (esta es la parte que tardamás tiempo). make zImage compilará el núcleo y lo <strong>de</strong>jará comprimido en arch/i386/boot/zImage juntoa otros ficheros. Con make zdisk el nuevo núcleo se copiará a<strong>de</strong>más en el disquete que esté puesto en ladisquetera /<strong>de</strong>v/fd0. Esto es interesante para probar núcleos; si explota (o simplemente no hace nada) sequita el disquete <strong>de</strong> la disquetera y se podrá arrancar el núcleo antiguo. A<strong>de</strong>más sirve para arrancar si seborró acci<strong>de</strong>ntalmente el núcleo <strong>de</strong>l disco duro.Otra opción es efectuar la compactación <strong>de</strong>l kernel con un método más eficiente dado que el LILO sepone nervioso con núcleos muy gran<strong>de</strong>s. Por esto se podrá efectuar un make bzImage lo que compactaraaún mas el kernel. Un núcleo comprimido se <strong>de</strong>scomprime automáticamente al ser ejecutado. Una vez quese tenga un nuevo núcleo que parezca funcionar como se <strong>de</strong>sea, será el momento <strong>de</strong> instalarlo. Casi todoel mundo utiliza LILO (LInux LOa<strong>de</strong>r) para esto. Una forma muy cómoda <strong>de</strong> llevar todo el tema <strong>de</strong>lLILO, si lo tenemos instalado, y las compilaciones, etc, es añadir lo siguiente en el /etc/lilo.conf...image=/vmlinuzlabel=ultimoroot=/<strong>de</strong>v/hd[loquesea]read-onlyappend = ""image=/vmlinuz.oldlabel=anteriorroot=/<strong>de</strong>v/hd[loquesea]read-onlyappend = ""Al compilar, si lo hacemos con la secuencia <strong>de</strong> comandos[root#pantano:/usr/src/linux]# make <strong>de</strong>p[root#pantano:/usr/src/linux]# make clean[root#pantano:/usr/src/linux]# make zlilo[root#pantano:/usr/src/linux]# make modules[root#pantano:/usr/src/linux]# make modules_installEl make zlilo renombrará la anterior imagen <strong>de</strong>l kernel a /vmlinuz.old, <strong>de</strong>jando la nueva como/vmlinuz, e instalará LILO, a continuación con lo cual lo hacemos todo automáticamente.La ór<strong>de</strong>nes make modules; make modules_install compilarán los módulos que hayamos seleccionado,


Actualización <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html3 <strong>de</strong> 4 07/09/2005 8:05y los instalarán. No hay olvidar ejecutar <strong>de</strong>pmod -a en cuanto hayamos arrancado con dicho núcleo. Encaso <strong>de</strong> que estemos compilando por segunda vez una misma versión <strong>de</strong> núcleo, y hayamos variado elnúmero <strong>de</strong> módulos a compilar, es posible que la ejecutar make <strong>de</strong>p nos encontremos con un mensaje <strong>de</strong>error; esto se <strong>de</strong>be a que los antiguos módulos que no hayamos compilado ahora no son borrados. Pue<strong>de</strong>nborrarse tranquilamente.Actualizando las bibliotecasLa mayor parte <strong>de</strong>l software <strong>de</strong> GNU/Linux esta compilado para que utilice bibliotecas compartidas, poresto muchas veces se requieren juego <strong>de</strong> bibliotecas mas recientes para un <strong>de</strong>terminado programa. Lasbibliotecas son compatibles en forma ascen<strong>de</strong>nte, es <strong>de</strong>cir que un programa compilado para una versiónantigua <strong>de</strong> bibliotecas funcionará igual con una versión mas reciente <strong>de</strong> las mismas pero lo contrario no seaplicará.Las últimas versiones <strong>de</strong> las bibliotecas <strong>de</strong> GNU/Linux pue<strong>de</strong> encontrarse en los servidores <strong>de</strong>ftp://ftp.suncite.unc.edu. Los archivos <strong>de</strong> "versión" que se encuentran allí <strong>de</strong>berán explicar el proceso <strong>de</strong>instalación. Se <strong>de</strong>ben bajar los ficheros image-versión.tar.gz y inc-versión.tar.gz don<strong>de</strong> versión esla versión <strong>de</strong> las bibliotecas a instalar, por ejemplo 4.4.1. Son ficheros tar comprimidos con gzip; elfichero image contiene las imágenes <strong>de</strong> las bibliotecas a instalar en /lib y /usr/lib. El fichero inccontiene los ficheros <strong>de</strong> inclusión a instalar en /usr/inclu<strong>de</strong>.El fichero release-versión.tar.gz <strong>de</strong>be explicar el método <strong>de</strong> instalación <strong>de</strong>talladamente (lasinstrucciones exactas varían para cada versión). En general, se necesita instalar los ficheros <strong>de</strong> bibliotecas.a y .sa en /usr/lib. Estas son las bibliotecas utilizadas en tiempo <strong>de</strong> compilación.A<strong>de</strong>más, los ficheros imagen <strong>de</strong> las bibliotecas compartidas libc.so.version se instalan en /lib. Estasson las imágenes <strong>de</strong> las bibliotecas compartidas que son cargadas en tiempo <strong>de</strong> ejecución por losprogramas que utilizan las bibliotecas. Cada biblioteca tiene un enlace simbólico utilizando el número <strong>de</strong>versión mayor <strong>de</strong> la librería en /lib.Por ejemplo, la versión 4.4.1 <strong>de</strong> la librería libc tiene un número <strong>de</strong> versión mayor <strong>de</strong> 4. El fichero quecontiene la librería es libc.so.4.4.1. Existe un enlace simbólico <strong>de</strong>l nombre libc.so.4 en /libapuntando a este fichero. Por ejemplo, cuando se actualiza <strong>de</strong> libc.so.4.4 a libc.so.4.4.1, necesitacambiar el enlace simbólico para apuntar a la nueva versión.Es muy importante que se cambie el enlace simbólico en un solo paso, como se indica más abajo. Si <strong>de</strong>alguna forma borrase el enlace simbólico libc.so.4, los programas que <strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l enlace (incluyendoutilida<strong>de</strong>s básicas como ls y cat) <strong>de</strong>jarán <strong>de</strong> funcionar. Utilice el siguiente comando para actualizar elenlace simbólico libc.so.4 para que apunte al fichero libc.so.4.4.1[root#pantano:~]# ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4Se necesita también cambiar el enlace simbólico libm.so.version <strong>de</strong> la misma forma. Si se estáactualizando a una versión diferente <strong>de</strong> las bibliotecas, sustituya lo anterior con los nombres a<strong>de</strong>cuados.La nota <strong>de</strong> la versión <strong>de</strong> la librería <strong>de</strong>be explicar los <strong>de</strong>talles. (Ver sección sobre enlaces simbólicos paramás información).Actualizando gccEl compilador <strong>de</strong> C y C++ gcc se utiliza para compilar software en su sistema, siendo el más importanteel núcleo. La versión más reciente <strong>de</strong> gcc se encuentra en los servidores FTP <strong>de</strong> Linux. En sunsite.unc.eduse encuentra en el directorio /pub/Linux/GCC (junto con las bibliotecas). Debe existir un fichero releasepara la distribución gcc <strong>de</strong>tallando qué ficheros se necesitan obtener y como instalarlos.


Actualización <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html4 <strong>de</strong> 4 07/09/2005 8:05Anterior Inicio SiguienteAcerca <strong>de</strong> impresoras: Subir El sistema X-Window


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html1 <strong>de</strong> 7 07/09/2005 8:04Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Administración básica <strong>de</strong>l sistema SiguienteAcerca <strong>de</strong> impresoras:Extraído <strong>de</strong>l Printer HowTo <strong>de</strong> Grant Taylor y Brian McCauleyTodo sistema que se precie es capaz <strong>de</strong> gestionar una o varias impresoras, con uno o varios usuarios, queles envían distintas clases <strong>de</strong> documentos, más o menos dignamente. Un*x resuelve estos problemasmediante un conjunto <strong>de</strong> programas, los servidores <strong>de</strong> impresión, que gestionan los trabajos pendientes, ylos encauzan a las impresoras a<strong>de</strong>cuadas, todo <strong>de</strong> manera completamente transparente al usuario. Elcamino más corto en Un*x (y GNU/Linux), es enviar los datos a imprimir directamente al dispositivoa<strong>de</strong>cuado. El siguiente comando envía un listado <strong>de</strong>l directorio a la impresora en puerto paralelo(hablando en DOS, LPT1:)[root#pantano:~]# ls > /<strong>de</strong>v/lp1El problema <strong>de</strong> este método es que no aprovecha las capacida<strong>de</strong>s <strong>de</strong> multitarea <strong>de</strong> Linux, <strong>de</strong>bido a que eltiempo que tarda el comando en completarse será el mismo que emplee la impresora en <strong>de</strong>spachar eltrabajo. En una impresora lenta, o en una apagada o sin papel, pue<strong>de</strong> prolongarse un poco. Podríamosejecutar el comando simplemente en segundo plano, pero no a<strong>de</strong>lantaríamos mucho. A<strong>de</strong>más, <strong>de</strong>berátener privilegios <strong>de</strong> root. Un remedio mejor es crear un área <strong>de</strong> spool, es <strong>de</strong>cir, guardar los datos aimprimir en un fichero temporal, y arrancar un proceso en segundo plano que envíe los datos a laimpresora, y gestione las inci<strong>de</strong>ncias que se presenten. Esencialmente, así funciona el sistema <strong>de</strong>impresión en Linux. Para cada impresora, se <strong>de</strong>fine un área spool, don<strong>de</strong> cada trabajo pendiente sealmacena en un fichero. Un proceso en segundo plano (llamado el <strong>de</strong>monio <strong>de</strong> impresión) analizametódica y constantemente los ficheros spool, buscando nuevos datos a imprimir. Cuando aparece alguno,son enviados a la impresora apropiada; cuando más <strong>de</strong> un fichero está a la espera, se colocan en una cola(el primero que entra es el primero que se procesa), por lo que se habla propiamente <strong>de</strong> la "cola <strong>de</strong>impresión".En el caso <strong>de</strong> impresión remota, los trabajos se gestionan localmente, como cualquier otro, pero el<strong>de</strong>monio <strong>de</strong> impresión lo envía a través <strong>de</strong> la red hacia el or<strong>de</strong>nador o impresora <strong>de</strong>stino. La informaciónque el <strong>de</strong>monio <strong>de</strong> impresión necesita para su trabajo (el dispositivo físico, el spool <strong>de</strong> datos, la máquina eimpresora remota, etc.) se almacenan en un fichero llamado /etc/printcap, que <strong>de</strong>scribiremos mástar<strong>de</strong>.En lo sucesivo, el término "impresora" se referirá a una máquina lógica <strong>de</strong>finida en /etc/printcap. Elconcepto "impresora física", <strong>de</strong>fine la cosa que mancha papel. Es perfectamente posible <strong>de</strong>scribirmúltiples entradas en /etc/printcap que se refieren a una sola impresora física, pero por caminostortuosos. No nos preocupemos, lo aclararemos al <strong>de</strong>scribir printcap.Lo primero a tener en cuentaEl sistema <strong>de</strong> impresión <strong>de</strong> Linux se sustenta en cinco programas, que <strong>de</strong>berían estar don<strong>de</strong> aparecen en elsiguiente listado, propiedad <strong>de</strong> root, y grupo lp (o daemon, según el sistema en concreto)-rwxr-xr-x root lp-rwxr-xr-x root lp-rwxr-xr-x root lp/bin/lpr/bin/lpq/bin/lpc


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html2 <strong>de</strong> 7 07/09/2005 8:04-rwxr-xr-x root lp-rwxr-x--- root lp/bin/lprm/sbin/lpdLos cuatro primeros tienen por fin enviar, cancelar y examinar los trabajos <strong>de</strong> impresión. /sbin/lpd es el<strong>de</strong>monio <strong>de</strong> impresión. Hay páginas <strong>de</strong> manual que explican con <strong>de</strong>talle todas estas ór<strong>de</strong>nes y que <strong>de</strong>beríaconsultar para ampliar información.Los directorios, permisos y propiedad <strong>de</strong> los ficheros pue<strong>de</strong>n diferir a los <strong>de</strong> su sistema, aunque no<strong>de</strong>berían ser MUY distintos.Es importante saber que, por <strong>de</strong>fecto, lpr, lprm, lpc y lpq trabajan con una impresora llamada "lp". Si<strong>de</strong>fine la variable <strong>de</strong> entorno PRINTER con el nombre <strong>de</strong> una impresora, pasará a ocupar el valor por<strong>de</strong>fecto. Se pue<strong>de</strong> indicar sobre la marcha una impresora distinta con la opción -P impresora en la línea <strong>de</strong>ór<strong>de</strong>nes.Los directorios fundamentales.Realmente, sólo hay un directorio importante: el área <strong>de</strong> spool don<strong>de</strong> se almacenan los datos a la espera<strong>de</strong> que lpd <strong>de</strong>cida qué hacer con ellos. Sin embargo, un sistema típico <strong>de</strong>bería configurarse en variosdirectorios, uno para cada impresora, lo que facilita notablemente el mantenimiento. En la mayoría <strong>de</strong> lasinstalaciones, /var/spool/lpd es el directorio spool principal, y cada impresora tiene un subdirectorioparticular, con el mismo nombre que la impresora. Así, si tiene una impresora llamada PJL-16 que admitePostScript y HPGL, <strong>de</strong>bería crear dos directorios, por ejemplo /var/spool/lpd/PJL-16-ps y/var/spool/lpd/PJL-16-hpgl.Los directorios temporales <strong>de</strong>berían pertenecer a root, grupo lp; user y group <strong>de</strong>ben po<strong>de</strong>r leer y escribir,y el resto, leer (permiso 0775). Para cada directorio <strong>de</strong> impresora, la or<strong>de</strong>n a<strong>de</strong>cuada es[root#pantano:~]# chmod ug=rwx,o=rx PJL-16-ps[root#pantano:~]# chgrp lp PJL-16-psO, en otra notación[root#pantano:~]# chmod 775 PJL-16-ps[root#pantano:~]# chown .lp PJL-16-psLos <strong>de</strong>stinos, permisos y propietarios aquí indicados <strong>de</strong>ben consi<strong>de</strong>rarse como indicativos, pues pue<strong>de</strong>nvariar entre distintos sistemas e instalaciones.A<strong>de</strong>más <strong>de</strong> los programas ya tratados, cada directorio temporal <strong>de</strong>be contener como mínimo cuatroficheros, .seq , errs , lock y status, y <strong>de</strong>berán tener permisos 0664. El fichero .seq contiene lasecuencia <strong>de</strong> trabajos enviados. status contiene el mensaje que <strong>de</strong>vuelve "lpc stat". El fichero lockimpi<strong>de</strong> al lpd imprimir al tiempo dos trabajos en la misma impresora, y errs guarda un registro <strong>de</strong> losfallos <strong>de</strong> la impresora. El fichero errs es actualmente potestativo, y ahora pue<strong>de</strong> llamarse como leapetezca. Su nombre se especificará en /etc/printcap. Debe, sin embargo, existir un fichero que permitaa lpd registrar los mensajes <strong>de</strong> error./etc/printcap/etc/printcap es un fichero texto, modificable con su editor favorito. Su propietario <strong>de</strong>be ser root y


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html3 <strong>de</strong> 7 07/09/2005 8:04<strong>de</strong>be tener permisos 0644.Aunque a golpe <strong>de</strong> vista parezca tan comprensible como la piedra Rosetta, su estructura es muy sencilla yasequible. Parte <strong>de</strong> la mala fama se <strong>de</strong>be a que algunas distribuciones no incluyen página <strong>de</strong> manual paraprintcap, y el hecho <strong>de</strong> que muchos printcap están generados por programas, o por gente cuya manera <strong>de</strong><strong>de</strong>spreciar al género humano es omitir comentarios que ayu<strong>de</strong>n a su comprensión. Des<strong>de</strong> aquí hacemos unllamamiento para que su fichero printcap sea tan legible como sea posible.Cada entrada <strong>de</strong> printcap <strong>de</strong>scribe una impresora. Mejor aún, cada entrada <strong>de</strong> printcap provee una<strong>de</strong>nominación lógica para un dispositivo físico, y <strong>de</strong>scribe cómo <strong>de</strong>ben los datos ser enviados ymanejados por él.Por ejemplo, una entrada <strong>de</strong> printcap <strong>de</strong>finirá qué puerto vamos a usar, qué directorio spool, qué proceso<strong>de</strong>ben soportar los datos, qué clase <strong>de</strong> errores <strong>de</strong>bemos notificar, qué volumen <strong>de</strong> datos se permiten enviarcomo máximo, o limitar el acceso <strong>de</strong> ciertos dispositivos.A<strong>de</strong>más, po<strong>de</strong>mos <strong>de</strong>finir distintos modos <strong>de</strong> procesar datos para una misma impresora. Por ejemplo, unamisma impresora <strong>de</strong> HP pue<strong>de</strong> manejar datos en formatos PostScript, HPGL y PCL, <strong>de</strong>pendiendo <strong>de</strong> lasecuencia <strong>de</strong> ór<strong>de</strong>nes que le enviamos al comienzo <strong>de</strong> cada trabajo. Tendría sentido <strong>de</strong>finir los tres modos<strong>de</strong> trabajo como sendas impresoras, cada una <strong>de</strong> las cuales procesará los datos <strong>de</strong>pendiendo <strong>de</strong>l modo <strong>de</strong>trabajo. Los programas que generan datos ps se enviarán a la impresora PS, los dibujos HPGL a laimpresora HPGL, y así sucesivamente. Llamaremos "filtros" a los programas que procesan los datos aimprimir. Un filtro pue<strong>de</strong> incluso no enviar ningún dato al puerto.Un ejemplo típico <strong>de</strong> entrada en /etc/printcap podría ser# Ejemplo <strong>de</strong> printcap con dos alias impresoraHP|HP850C:\# lp es el dispositivo <strong>de</strong> impresión, en este caso,# la primera impresora:lp=/<strong>de</strong>v/lp1:\# sd indica el directorio spool:sd=/var/spool/lpd/HP850C:Como vemos, cada entrada <strong>de</strong> /etc/printcap se estructura en una serie <strong>de</strong> campos, encabezados por unaetiqueta, y limitados por dos puntos, a excepción <strong>de</strong>l primer campo, que <strong>de</strong>scribe la impresora. Loscampos pue<strong>de</strong>n tener tres tipos <strong>de</strong> valores: texto, lógico y numérico, en los que nos exten<strong>de</strong>remos mása<strong>de</strong>lante. La primera línea <strong>de</strong> la entrada <strong>de</strong>termina el nombre y alias <strong>de</strong> la impresora. La impresora por<strong>de</strong>fecto <strong>de</strong>bería llamarse "lp"; por ejemplo, si la impresora <strong>de</strong>l ejemplo anterior es la única que tenemos,la primera línea sería# Ejemplo para la impresora por <strong>de</strong>fectolp|HP850C:\Sólo po<strong>de</strong>mos tener una impresora llamada "lp".Po<strong>de</strong>mos usar el nombre que nos apetezca como "La Picadora <strong>de</strong> papel <strong>de</strong>l <strong>de</strong>spacho <strong>de</strong> Gertrudis",aunque no parezca quizá muy práctico. Los siguientes campos son los más comunes, y los másimportantes:Tabla 1. Campos en /etc/printcap


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html4 <strong>de</strong> 7 07/09/2005 8:04Campo Tipo Descripciónlp Texto Dispositivo <strong>de</strong> impresión (ej. /<strong>de</strong>v/lp1)sd Texto Nombre <strong>de</strong>l directorio tampon <strong>de</strong> esta impresoralf Texto Fichero que almacena el registro <strong>de</strong> erroresif Texto Nombre <strong>de</strong>l filtro <strong>de</strong> entradarm Texto Nombre <strong>de</strong>l host <strong>de</strong> impresion remotarp Texto Nombre <strong>de</strong> la impresora remotash Lógico Suprime las páginas que separan los trabajossf Lógico Suprime las paginas en blanco al final <strong>de</strong>l trabajomx Numérico Tamaño máximo <strong>de</strong>l trabajo <strong>de</strong> impresión (enbloques)Veamos ahora estos campos con un poco más <strong>de</strong> <strong>de</strong>talle.lplfifrm y rpApunta al puerto/dispositivo <strong>de</strong> impresión. Si especificamos /<strong>de</strong>v/null como dispositivo, el resto <strong>de</strong>los procesos se ejecutan normalmente, pero los datos <strong>de</strong> salida van a parar al inodoro. No se utilizaa excepción <strong>de</strong> las pruebas <strong>de</strong> configuración <strong>de</strong>l dispositivo. Cuando configure una impresoraremota con los campos rm y rp , <strong>de</strong>bería poner ":lp=:" en /etc/printcap, indicando que no estáasignada a ningún dispositivo local.. No <strong>de</strong>je este campo en blanco a menos que use una impresoraremota, o el <strong>de</strong>monio <strong>de</strong> impresión se quejará amargamente, si no especifica un dispositivo <strong>de</strong>impresión.Guarda un registro <strong>de</strong> los errores <strong>de</strong> impresión. Cualquier fichero que especifique <strong>de</strong>berá existirantes <strong>de</strong> su uso, o no se registrarán las inci<strong>de</strong>ncias.Indica el nombre <strong>de</strong>l filtro <strong>de</strong> impresión a ejecutar. Los filtros son programas que reciben datos porla entrada estándar, y los <strong>de</strong>vuelven procesados por la salida estándar. Un empleo típico es <strong>de</strong>tectartexto llano y convertirlo en PostScript para imprimirlo en ese tipo <strong>de</strong> trastos. Son muy útiles, porejemplo, para eliminar el efecto escalera, o cambiar la página <strong>de</strong> códigos sin necesidad <strong>de</strong> cambiarla configuración <strong>de</strong> la impresora cada vez que la usemos entre UNIX y DOS. Cuando se especificaun filtro <strong>de</strong> entrada, el <strong>de</strong>monio <strong>de</strong> impresión no envía los datos pendientes al dispositivoespecificado. En su lugar, arranca el filtro y asigna el fichero temporal a la entrada estándar, y eldispositivo <strong>de</strong> impresión como salida estándar.Controlan el <strong>de</strong>stino <strong>de</strong> la impresión remota. Enviar el documento a imprimir a una impresoraremota es tan fácil como indicar el anfitrión en rm, la impresora correspondiente en rp, y asegurarseque lp está vacío. Fíjese en que los datos se tamponan localmente antes <strong>de</strong> ser enviados, y que leejecutará cualquier filtro que especifique. Una entrada típica <strong>de</strong> /etc/printcap en la máquina local(pera.huerta.net) para trabajar sobre la impresora picapapel, en la estación rábano.huerta.net(remota), sería:picapapel::lp=::rm=rábano.huerta.net::rp=picapapel:\


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html5 <strong>de</strong> 7 07/09/2005 8:04:sd=/var/spool/lpd/picapapel:sh y sfmxEn la máquina remota necesitará que /etc/hosts.equiv o /etc/hosts.lpd contenga la líneapera.huerta.net; Tenga cuidado con los permisos <strong>de</strong> acceso.Portadillas y separadores. Salvo que haya mucha gente distinta usando su impresora,probablemente no estará interesado en las páginas separadoras <strong>de</strong> trabajos. Las páginas <strong>de</strong> fin <strong>de</strong>trabajo son particularmente molestas cuando se trabaja con procesadores <strong>de</strong> texto, que componenpáginas completas, por lo que si especificamos sf, tendremos al final <strong>de</strong> cada trabajo una página enblanco. sf es muy útil, sin embargo, si usamos la impresora para listar directorios, ficheros en crudo..., asegurándonos que el trabajo sale completo <strong>de</strong> la impresión. Se pue<strong>de</strong> presentar un problema sitenemos una impresora PostScript, al quedar resi<strong>de</strong>nte el último tipo <strong>de</strong> letra utilizado. Con elcampo :tr: lo evitaremos. Es preferible en estos casos <strong>de</strong>jar :sh:, y que sean los filtros quienes seencarguen <strong>de</strong> generar las portadillas.Limita el tamaño <strong>de</strong>l spool <strong>de</strong> datos, señalando una cantidad en bloques <strong>de</strong> 1 K ( 1024 bits ). Simx=0, el límite viene dado por el espacio disponible en disco. Recuer<strong>de</strong> que lo que limitamos es eltamaño <strong>de</strong>l spool, no la cantidad <strong>de</strong> datos impresos. Si intentamos sobrepasar el límite, el ficherosimplemente se trunca, y el usuario recibe el mensajelpr: fichero: copy file is too large.mx es útil si tiene programas que acci<strong>de</strong>ntalmente pue<strong>de</strong>n generar un volumen <strong>de</strong>sproporcionado <strong>de</strong>datos a imprimir (imágenes, por ejemplo); para impresoras ps, no suele tener mucho interés, puesun volumen pequeño <strong>de</strong> datos en formato ps pue<strong>de</strong>n generar una notable cantidad <strong>de</strong> papel impreso.Po<strong>de</strong>mos sustituir el límite <strong>de</strong> mx escribiendo en cada directorio spool un fichero llamado minfreeque contiene el espacio mínimo disponible que permita aceptar trabajos, en forma <strong>de</strong> fichero textocon el número <strong>de</strong> bloques mínimos disponibles. Normalmente, suele ser un enlace con el originalen /var/spool/lpd, ya que es inusual que cada impresora <strong>de</strong>ba tener un mínimo diferente.Probemos ahora /etc/printcap con un ejemplo. El siguiente guión <strong>de</strong> shell es un filtro <strong>de</strong> entrada muysimple. Sólo enca<strong>de</strong>na su entrada al final <strong>de</strong> un fichero en /tmp, tras una pancarta a<strong>de</strong>cuada. Usaremoseste filtro en el campo if, y enviaremos los datos a /<strong>de</strong>v/null, ahorrándonos las quejas <strong>de</strong>l <strong>de</strong>monioespecificando un dispositivo <strong>de</strong> impresión.#!/bin/sh# Este filtro <strong>de</strong>bera colocarse en el directorio tampon,# con el nombre filtro_entrada, propiedad <strong>de</strong> root,# grupo lp y permisos 0755#echo -------------------------------------->/tmp/testlp.outdate >> /tmp/testlp.outecho -------------------------------------->>/tmp/testlp.outcatY aquí tenemos nuestra flamante entrada en /etc/printcap. Vea que el formato es razonablementeinteligible, usando caracteres <strong>de</strong> continuación <strong>de</strong> línea "\" al final <strong>de</strong> cada una, excepto la última (<strong>de</strong>hecho, cada entrada en /etc/printcap es una sola línea)impre|PLJ-H1998:\


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html6 <strong>de</strong> 7 07/09/2005 8:04:lp=/<strong>de</strong>v/null:\:sd=/var/spool/lpd/PLJ-H1998:\:lf=/var/spool/lpd/PLJ-H1998/errores:\:if=/var/spool/lpd/PLJ-H1998/filtro_entrada:\:mx#0:\:sh:\:sf:No <strong>de</strong>je espacios en blanco, o no funcionará (le aparecerán impresoras sin nombre, no lograrávolcar los trabajos, y se acumularán en cola generosamente)Ahora, hagamos que esto trabaje1.2.3.DEBE SER EL SUPERUSUARIO (root), tanto si le gusta como si no.Compruebe los permisos y situaciones <strong>de</strong> lpr, lprm, lpc, lpq y lpd.Cree el directorio spool <strong>de</strong> su impresora: (recuer<strong>de</strong> que el propietario <strong>de</strong>be ser root, el grupo lp, ylos permisos 0775 con las ór<strong>de</strong>nesmkdir /var/spool/lpd /var/spool/lpd/imprechown root.lp /var/spool/lpd /var/spool/lpd/imprechmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/impre4.En el directorio spool cree los ficheros necesarios, con los <strong>de</strong>bidos permisos y propietarioscd /var/spool/lpd/impretouch .seq errores status lockchown root.lp .seq errs status lockchmod ug=rw,o=r .seq errs status lock5.6.7.8.Cree el script filtro <strong>de</strong> entrada en el directorio spool. Use por ahora el filtro <strong>de</strong> prueba anterior.Asegúrese que el fichero pertenece a root.lp, y es ejecutable para todos.Cree el fichero /etc/printcap tal y como lo hemos <strong>de</strong>scrito en el punto anterior. Su propietarioserá root y sus permisos 0644.Compruebe que rc.local (normalmente en /etc/rc.d/) contiene la línea /sbin/lpd, y añádala sino está. Esto hace que arranque el <strong>de</strong>monio <strong>de</strong> impresión al arrancar. De todos modos pue<strong>de</strong>arrancarlo a mano con la or<strong>de</strong>n lpd.Haga una prueba: cruce los <strong>de</strong>dos y tecleels -l | lpr -Pimpre9.10.Busque en /tmp un fichero llamado testlp.out. Debería contener un listado <strong>de</strong>l directorio, con unencabezado.Si ha funcionado (y no dudamos que habrá sido así), edite /etc/printcap, y copie la entrada <strong>de</strong>prueba en el mismo fichero. En la primera entrada, cambie el nombre <strong>de</strong> la impresora a testlp, o elque usted prefiera, pero que no use como nombre real <strong>de</strong> impresora. En la segunda entrada (queahora será la <strong>de</strong> su impresora real), cambie el contenido <strong>de</strong> lp=/<strong>de</strong>v/null al <strong>de</strong>l puerto <strong>de</strong>


Acerca <strong>de</strong> impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html7 <strong>de</strong> 7 07/09/2005 8:04impresora (normalmente será /<strong>de</strong>v/lp1) <strong>de</strong> su or<strong>de</strong>nador, salvo que vaya a utilizar una impresoraremota, en cuyo caso <strong>de</strong>berá <strong>de</strong>finir rm y rp. Cambie el nombre <strong>de</strong>l filtro if si tiene ya unoprevisto, o suprímalo si no va a utilizar ninguno.11.Reinicie el sistema, o mate el <strong>de</strong>monio <strong>de</strong> impresión y arránquelo, ya que lpd sólo lee/etc/printcap al comenzar su trabajo.12.Haga una prueba, y aprecie lo bien que funciona su impresora.Para añadir nuevas impresoras, sólo tendrá que repetir la entrada <strong>de</strong> printcap, con las modificacionespertinentes a cada dispositivo.Impresión remota e impresión localLa impresión remota nos permite enviar trabajos <strong>de</strong> impresión <strong>de</strong>s<strong>de</strong> una máquina, hacia otra(computadora/impresora) conectada a una red; por ejemplo, nuestro equipo funciona <strong>de</strong> servidor en unared, o si una impresora asignada a nuestra máquina <strong>de</strong>be ser accesible por otros or<strong>de</strong>nadores.Imprimimos localmente cuando usuarios <strong>de</strong> nuestra máquina envían trabajos a una impresora conectadadirectamente a la misma.Como primer paso, cualquier máquina que intente imprimir en su sistema, <strong>de</strong>be estar registrada encualquiera <strong>de</strong> los ficheros /etc/hosts.equiv o /etc/hosts.lpd, que son simples ficheros <strong>de</strong> texto, conun nombre <strong>de</strong> maquina por línea. Es preferible el segundo, reservando el primero para proporcionarmayores permisos <strong>de</strong> acceso, lo que <strong>de</strong>bería ser evitado en lo posible.Pue<strong>de</strong> restringirse el uso tanto por nombre como por grupos. Especifique los grupos autorizados con unoo varios campos :rg: en /etc/printcap. :rg=admin: sólo autorizará el acceso a la impresora a losusuarios asignados al grupo admin. Pue<strong>de</strong> también limitar el acceso a aquellos usuarios con cuenta en susistema utilizando el campo lógico :rs:.La configuración en el sistema cliente sería la siguientelp|Remote printer entry:\:lp=/<strong>de</strong>v/null\:rm=192.168.1.1:# Aquí pue<strong>de</strong> ir también el nombre <strong>de</strong>l#servidor <strong>de</strong> impresión.:rp=lp:\:sd=/var/spool/lpd/remote:\:mx#0:\:sh:Anterior Inicio SiguienteIniciando el sistema Subir Actualización <strong>de</strong>l sistema


Iniciando el sistemahttp://www.ant.org.ar/cursos/curso_intro/booting.html1 <strong>de</strong> 3 07/09/2005 8:04Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Administración básica <strong>de</strong>l sistema SiguienteIniciando el sistemaNuestro sistema GNU/Linux tiene varias formas <strong>de</strong> ser iniciado bien sea <strong>de</strong>s<strong>de</strong> floppy disk o <strong>de</strong>s<strong>de</strong> eldisco rígido. A continuación veremos las tres formas que son indudablemante las más populares.Utilizando un disquete <strong>de</strong> arranqueMucha gente arranca Linux utilizando un floppy disk <strong>de</strong> arranque que contiene una copia <strong>de</strong>l núcleo <strong>de</strong>Linux. A este núcleo se le indica la partición raíz <strong>de</strong> Linux para que sepa don<strong>de</strong> buscar en el disco rígidoel sistema <strong>de</strong> ficheros raíz. El comando r<strong>de</strong>v pue<strong>de</strong> ser utilizado para poner la partición raíz en la imagen<strong>de</strong>l núcleo. Por ejemplo, este es el tipo <strong>de</strong> floppy creado por Slackware durante la instalación. [1] Paracrear su propio disquete <strong>de</strong> arranque, localicemos en primer lugar la imagen <strong>de</strong>l núcleo en su disco duro.Debe estar en el directorio /boot o /. Algunas distribuciones utilizan el fichero /vmlinux para el núcleo.En su lugar, pue<strong>de</strong> que tenga un núcleo comprimido. Un núcleo comprimido se <strong>de</strong>scomprime a sí mismoen memoria en tiempo <strong>de</strong> arranque, y utiliza mucho menos espacio en el disco duro. Si se tiene un núcleocomprimido, pue<strong>de</strong> encontrarse en el fichero /boot/zImage o /zImage. Algunas distribuciones utilizan elfichero /vmlinuz para el núcleo comprimido.Una vez que se sabe don<strong>de</strong> está el núcleo, po<strong>de</strong>mos usar el comando mkbootdisk con el que podremoshacer un disco <strong>de</strong> arranque[root#pantano:~]# mkbootdisk --<strong>de</strong>vice /<strong>de</strong>v/fd0 2.4.26don<strong>de</strong> 2.4.26 es el nombre <strong>de</strong>l núcleo que actualmente esta corriendo. De esta forma se creará un sistema<strong>de</strong> archivos en el floppy que contendrá la imagen <strong>de</strong>l kernel y los módulos necesarios para funcionar. Coneste floppy arrancaremos ahora Linux.Utilizando LILOOtro método <strong>de</strong> arranque es utilizar LILO, un programa que resi<strong>de</strong> en el sector <strong>de</strong> arranque <strong>de</strong>l discoduro. Este programa se ejecuta cuando el sistema se inicia <strong>de</strong>s<strong>de</strong> el disco duro, y pue<strong>de</strong> arrancarautomáticamente Linux <strong>de</strong>s<strong>de</strong> una imagen <strong>de</strong> núcleo almacenada en el propio disco duro.LILO pue<strong>de</strong> utilizarse también como una primera etapa <strong>de</strong> carga <strong>de</strong> varios sistemas operativos,permitiendo seleccionar en tiempo <strong>de</strong> arranque qué sistema operativo (como GNU/Linux o MS-DOS)arrancar. Cuando se arranca utilizando LILO, se inicia el sistema operativo por <strong>de</strong>fecto, a menos quepulse TAB durante la secuencia <strong>de</strong> arranque. Si se pulsa esta tecla, se le presentará un indicador <strong>de</strong>arranque, don<strong>de</strong> <strong>de</strong>be teclear el nombre <strong>de</strong>l sistema operativo a arrancar (como pue<strong>de</strong> ser "linux" o"msdos").La forma más simple <strong>de</strong> instalar LILO es editar el fichero <strong>de</strong> configuración, /etc/lilo.conf, y ejecutarel comando[root@pantano:~]# /sbin/lilo


Iniciando el sistemahttp://www.ant.org.ar/cursos/curso_intro/booting.html2 <strong>de</strong> 3 07/09/2005 8:04El fichero <strong>de</strong> configuración <strong>de</strong> LILO contiene una "estrofa" para cada sistema operativo que se puedaquerer arrancar. La mejor forma <strong>de</strong> mostrarlo es con un ejemplo <strong>de</strong> un fichero <strong>de</strong> configuración LILO. Elejemplo siguiente es para un sistema que tiene una partición raíz Linux en /<strong>de</strong>v/hda2 y una particiónWindows en /<strong>de</strong>v/hda1.# Le indicamos a LILO que modifique el registro <strong>de</strong> arranque <strong>de</strong># /<strong>de</strong>v/hda (el primer disco duro no-SCSI).# Si se quiere arrancar <strong>de</strong>s<strong>de</strong> una unidad distinta <strong>de</strong> /<strong>de</strong>v/hda,# se <strong>de</strong>be cambiar la siguiente lineaboot = /<strong>de</strong>v/hda<strong>de</strong>fault=linux# Nombre <strong>de</strong>l cargador <strong>de</strong> arranque. No hay razon para cambiarlo,# a menos que se esté haciendo una modificacion seria <strong>de</strong>l LILO.install = /boot/boot.b# Estrofa para la partición raíz <strong>de</strong> Linux en /<strong>de</strong>v/hda2.image = /boot/2.4.26 # Ubicación <strong>de</strong>l kernellabel = linux # Nombre <strong>de</strong>l SO (para el menu <strong>de</strong> arranque)root = /<strong>de</strong>v/hda2 # Ubicación <strong>de</strong> la partición raízvga = ask# Indicar que pregunte por modos SVGA# en tiempo <strong>de</strong> arranque# Estrofa para la partición Windows en /<strong>de</strong>v/hda1.other = /<strong>de</strong>v/hda1 # Ubicación <strong>de</strong> la particióntable = /<strong>de</strong>v/hda # Ubicación <strong>de</strong> la tabla <strong>de</strong> partición para# /<strong>de</strong>v/hda2label = W$# Nombre <strong>de</strong>l SO (para el menu)La línea <strong>de</strong>fault indica la etiqueta <strong>de</strong>l sistema operativo que arrancará LILO por <strong>de</strong>fecto. Se pue<strong>de</strong>seleccionar otro sistema operativo en el indicador <strong>de</strong> arranque <strong>de</strong> LILO, tal y como se indicóanteriormente. Recuer<strong>de</strong> que cada vez que actualice la imagen <strong>de</strong>l núcleo en disco, se <strong>de</strong>be reejecutar/sbin/lilo para que los cambios que<strong>de</strong>n reflejados en el sector <strong>de</strong> arranque <strong>de</strong> su unidad.Utilizando LOADLINAnteriormente dijimos que el sistema <strong>de</strong> arranque que utilizaba al LILO tenia un problema. Este era queel kernel no podía estar mas allá <strong>de</strong>l cilindro 1024 dado que no se cargaría. A partir <strong>de</strong> las nuevasversiones <strong>de</strong> LILO esto se está solucionando. De esta forma la única manera que nos quedaba para iniciarGNU/Linux era a través <strong>de</strong> un disquete con la subsiguiente lentitud que esto tenía. Por esto se <strong>de</strong>sarrollouna aplicación que permitía que arrancáramos el núcleo <strong>de</strong>l sistema <strong>de</strong>s<strong>de</strong> una partición DOS. Estaaplicación se <strong>de</strong>nomina LOADLIN y lo que hace es sencillo. En un directorio <strong>de</strong> la partición DOS seguarda el kernel y a partir <strong>de</strong>l comando loadlin se le indica el kernel que se quiere cargar y la particióndon<strong>de</strong> se encuentra GNU/Linux instalado.C:\> loadlin c:\vmlinuz root=/<strong>de</strong>v/hda2 roDe esta forma se saldrá <strong>de</strong> DOS y se cargara el kernel en memoria.Notas[1]Las últimas versiones <strong>de</strong> Slackware utilizan un método diferente para arrancar <strong>de</strong>s<strong>de</strong> floppy,utilizando el programa SysLinux


Iniciando el sistemahttp://www.ant.org.ar/cursos/curso_intro/booting.html3 <strong>de</strong> 3 07/09/2005 8:04Anterior Inicio SiguienteAdministración básica <strong>de</strong>l sistema Subir Acerca <strong>de</strong> impresoras:


Administración básica <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html1 <strong>de</strong> 5 07/09/2005 8:03Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteAdministración básica <strong>de</strong>l sistemaEn este capítulo trataremos <strong>de</strong> ver los aspectos generales sobre la administración <strong>de</strong> nuestro sistemacontemplando algunas configuraciones que se tendrán que hacer, tomando como base un sistema pequeñocomo el <strong>de</strong> nuestro hogar o <strong>de</strong> una empresa con pocas máquinas interconectadas.Empezaremos reforzando el concepto <strong>de</strong> la cuenta root para compren<strong>de</strong>r su alcance y que restricciones yliberta<strong>de</strong>s podremos dar a los <strong>de</strong>más usuarios.Luego veremos varias maneras para po<strong>de</strong>r arrancar nuestro sistema ejemplificando tres métodos: lautilización <strong>de</strong> un diskette, el uso <strong>de</strong>l LILO o <strong>de</strong>s<strong>de</strong> la aplicación para DOS LOADLIN.Nuestro sistema tendrá que tener la posibilidad <strong>de</strong> imprimir y es por ello que ejemplificaremos dosmétodos para imprimir. Uno en la máquina local y otro en una máquina remota.Como todo sistema requerirá en algún punto que se instale un kernel nuevo o se actualice parte <strong>de</strong>lmismo, veremos aspectos generales sobre las actualizaciones necesarias para nuestro sistema.La cuenta root y sus implicacionesSi no eres root no eres nadieEn este punto sabemos que la cuenta raíz, que tiene el nombre <strong>de</strong> usuario root, es el más importante <strong>de</strong>lsistema y a<strong>de</strong>más es quien tiene los privilegios más altos para interactuar con él. También sabemos, y estoa fuerza <strong>de</strong> malas experiencias en muchas ocasiones, que el ser root requiere responsabilida<strong>de</strong>s y el estarconciente <strong>de</strong> lo que se hace con este tipo <strong>de</strong> cuentas ya que muchas veces un error cometido seráirreparable.Los usuarios <strong>de</strong>l sistema están bastante restringidos en lo que pue<strong>de</strong>n realizar, ya sea con los archivos <strong>de</strong>otros usuario o archivos <strong>de</strong> sistema, ya que no tienen los permisos necesarios para po<strong>de</strong>r modificarlos oborrarlos e incluso en muchos casos leerlos. Todas estas limitaciones se terminan con la cuenta root yaque posee acceso a cada área <strong>de</strong>l sistema pudiendo borrar, crear, modificar archivos <strong>de</strong> cualquier parte <strong>de</strong>lsistema así como cambiar permisos y dueños <strong>de</strong> estos. Pue<strong>de</strong> ejecutar cualquier programa y hasta inclusosi se le ocurriese podría literalmente matar al sistema por completo. Esto es así ya que es necesario queexista por lo menos una persona que pueda intervenir al sistema si es necesario y que tenga los privilegiosa<strong>de</strong>cuados para po<strong>de</strong>r forzar al sistema a realizar algo. La i<strong>de</strong>a es que esta cuenta se utilice sobriamente,únicamente cuando es necesario y no en cualquier momento. Para ejemplificar un hecho que seriapeligroso si e fuerce root, si un usuario normal <strong>de</strong> le ocurriese borrar los archivos que se encuentran en eldirectorio /boot el sistema no lo <strong>de</strong>jaría, en cambio si es el root quien lo pi<strong>de</strong>, lo que este en /boot<strong>de</strong>saparecerá muchas veces, <strong>de</strong> acuerdo a la configuración <strong>de</strong> GNU/Linux que se posea, cargándose alkernel completo con ellos.Para evitar cualquier acci<strong>de</strong>nte al utilizar la cuenta root es recomendable los siguientes pasos a seguir1.Pensarlo dos veces antes <strong>de</strong> apretar la tecla Enter en un comando que pueda causar algún daño. Porejemplo si se esta borrando algún archivo <strong>de</strong> configuración releer la línea <strong>de</strong>l comando completo.


Administración básica <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html2 <strong>de</strong> 5 07/09/2005 8:032.No acostumbrarse a usar root. Cuando más confortable se encuentre uno trabajando con el usuarioroot, más seguro que se confundirán los privilegios con los <strong>de</strong> un usuario normal.3.Usar siempre un marcador distinto para un usuario normal y el root. Esto ya viene por <strong>de</strong>fecto en lamayoría <strong>de</strong> las distribuciones pero siempre esta bien repetirlo. Un signo $ o % representara alusuario normal y un # representara al root.4.Conectarse como usuario root solo cuando sea absolutamente necesario. Y <strong>de</strong>sconectarse tan prontocomo se haya terminado el trabajo. Cuando menos se use la cuenta root, menos posibilida<strong>de</strong>s <strong>de</strong>cometer un error habrá.Existen personas que son verda<strong>de</strong>ros hackers <strong>de</strong> Un*x que utilizan la cuenta root para todo, pero hay querecordar dos cosas con respecto a esto. Lo primero que no estamos a esa altura <strong>de</strong> conocimiento sobreUn*x y segundo que estas personas en algún momento han hecho algo que les a hecho per<strong>de</strong>r suinformación.La cuenta root es po<strong>de</strong>rosa en el sistema, y ese po<strong>de</strong>r es peligroso muchas veces para el resto <strong>de</strong> losusuarios <strong>de</strong>l sistema. La ten<strong>de</strong>ncia a la <strong>de</strong>strucción <strong>de</strong> un usuario con el po<strong>de</strong>r <strong>de</strong> root es perjudicial parael resto <strong>de</strong>l sistema ya que en sucesivas oportunida<strong>de</strong>s se a sabido <strong>de</strong> casos en los que los administradores<strong>de</strong>l sistema leen correo <strong>de</strong> otro usuarios o borran archivos sin avisar a nadie jugando con el sistemainformático como si fuesen niños y no como verda<strong>de</strong>ros administradores. Por ello se requiere cierto grado<strong>de</strong> madurez y responsabilidad a<strong>de</strong>más <strong>de</strong>l conocimiento necesario para po<strong>de</strong>r llegar a ser administrador <strong>de</strong>un sistema y es en nuestros sistemas que tendremos en el hogar o en la oficina con GNU/Linux don<strong>de</strong>tendremos que apren<strong>de</strong>r a serlo.Gestión <strong>de</strong> usuariosEl sistema mantiene una cierta cantidad <strong>de</strong> información acerca <strong>de</strong> cada usuario. Dicha información seresume a continuación.nombre <strong>de</strong> usuarioclaveuser IDgroup IDEl nombre <strong>de</strong> usuario es el i<strong>de</strong>ntificador único dado a cada usuario <strong>de</strong>l sistema. Ejemplos <strong>de</strong>nombres <strong>de</strong> usuario son: shrek, burro y fiona. Se pue<strong>de</strong>n utilizar letras y dígitos junto a loscaracteres "_" (subrayado) y el punto. Los nombres <strong>de</strong> usuario se limitan normalmente a 8caracteres <strong>de</strong> longitud.El sistema también almacena la clave encriptada <strong>de</strong>l usuario. El comando passwd se utiliza paraponer y cambiar las claves <strong>de</strong> los usuarios.El user ID, o UID, es un número único dado a cada usuario <strong>de</strong>l sistema. El sistema normalmentemantiene la pista <strong>de</strong> la información por UID, no por nombre <strong>de</strong> usuario.El group ID, o GID, es la i<strong>de</strong>ntificación <strong>de</strong>l grupo <strong>de</strong>l usuario por <strong>de</strong>fecto.nombre completoEl nombre real o nombre completo <strong>de</strong>l usuario se almacena junto con el nombre <strong>de</strong> usuario. Porejemplo, el usuario burro pue<strong>de</strong> tener el nombre "Platero Equino" en la vida real.


Administración básica <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html3 <strong>de</strong> 5 07/09/2005 8:03directorio inicialEl directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo <strong>de</strong>conexión. Cada usuario <strong>de</strong>be tener su propio directorio inicial, normalmente situado bajo /home.intérprete <strong>de</strong> comandoEl intérprete <strong>de</strong> comando <strong>de</strong>l usuario es el intérprete <strong>de</strong> comandos que es arrancado para el usuarioen tiempo <strong>de</strong> conexión. Ejemplos pue<strong>de</strong>n ser /bin/bash y /bin/tcsh.El archivo /etc/passwd contiene la información anterior acerca <strong>de</strong> losusuarios. Cada línea <strong>de</strong>l ficherocontiene información acerca <strong>de</strong> un único usuario. El formato <strong>de</strong> cada línea esnombre:clave_encriptada:UID:GID:nombre completo:dir_inicio:intérpreteUn ejemplo pue<strong>de</strong> sershrek:Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bashEl primer campo , "shrek", es el nombre <strong>de</strong> usuario. El siguiente campo, "Xv8Q981g71oKK", es la claveencriptada. Las claves no se almacenan en el sistema en ningún formato legible por el hombre. Las clavesse encriptan utilizándose a sí mismas como clave secreta. En otras palabras, sólo si se conoce la clave,ésta pue<strong>de</strong> ser <strong>de</strong>sencriptada. Esta forma <strong>de</strong> encriptación es bastante segura.Algunos sistemas utilizan "claves en sombra" (shadow) en la que la información <strong>de</strong> las claves se relega alfichero /etc/shadow. Puesto que /etc/passwd es legible por todo el mundo, /etc/shadow suministra ungrado extra <strong>de</strong> seguridad, puesto que éste no lo es. Las claves en sombra suministran algunas otrasfunciones como pue<strong>de</strong> ser la expiración <strong>de</strong> claves; no entraremos a <strong>de</strong>tallar estas funciones aquí.El tercer campo, "102", es el UID. Este <strong>de</strong>be ser único para cada usuario. El cuarto campo,"100", es elGID. Este usuario pertenece al grupo numerado 100. La información <strong>de</strong> grupos, como la información <strong>de</strong>usuarios, se almacena en el fichero /etc/group. El quinto campo es el nombre completo <strong>de</strong>l usuario,"Shrek Ogre". Los dos últimos campos son el directorio inicial <strong>de</strong>l usuario, /home/shrek y el intérprete<strong>de</strong> conexión /bin/bash, respectivamente. No es necesario que el directorio inicial <strong>de</strong> un usuario tenga elmismo nombre que el <strong>de</strong>l nombre <strong>de</strong> usuario. Sin embargo, ayuda a i<strong>de</strong>ntificar el directorio.Borrando usuariosAnteriormente vimos como po<strong>de</strong>mos crear un usuario para empezar a utilizar el sistema, y este métodopue<strong>de</strong> emplearse para la creación <strong>de</strong> cualquier otro usuario. De forma parecida, borrar usuarios pue<strong>de</strong>hacerse con los comandos user<strong>de</strong>l o <strong>de</strong>luser <strong>de</strong>pendiendo <strong>de</strong>l software instalado en el sistema.Si se <strong>de</strong>sea "<strong>de</strong>shabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar lacuenta <strong>de</strong>l usuario), se pue<strong>de</strong> prefijar con un asterisco ("*") el campo <strong>de</strong> la clave en /etc/passwd.Porejemplo, cambiando la línea ashrek:*Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bashevitará que shrek se conecte.Después <strong>de</strong> que haya creado un usuario, pue<strong>de</strong> necesitar cambiar algún atributo <strong>de</strong> dicho usuario, como


Administración básica <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html4 <strong>de</strong> 5 07/09/2005 8:03pue<strong>de</strong> ser el directorio inicial o la clave. La forma más simple <strong>de</strong> hacer esto es cambiar los valoresdirectamente en /etc/passwd. Para poner clave a un usuario, utilice el comando passwd. Por ejemplo[root@pantano:~]# passwd burrocambiará la clave <strong>de</strong> burro. Sólo root pue<strong>de</strong> cambiar la clave <strong>de</strong> otro usuario <strong>de</strong> ésta forma. Los usuariospue<strong>de</strong>n cambiar su propia clave con passwd también.En algunos sistemas, los comandos chfn y chsh están disponibles, permitiendo a los usuarios el cambiarsus atributos <strong>de</strong> nombre completo e intérprete <strong>de</strong> conexión. Si no, <strong>de</strong>ben pedir al administrador <strong>de</strong>sistemas que los cambie por ellos.<strong>Grupo</strong>sComo hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia real<strong>de</strong> las relaciones <strong>de</strong> grupo es la perteneciente a los permisos <strong>de</strong> ficheros, como dijimos anteriormente cadafichero tiene un "grupo propietario" y un conjunto <strong>de</strong> permisos <strong>de</strong> grupo que <strong>de</strong>fine <strong>de</strong> qué forma pue<strong>de</strong>nacce<strong>de</strong>r al fichero los usuarios <strong>de</strong>l grupo. Hay varios grupos <strong>de</strong>finidos en el sistema, como pue<strong>de</strong>n ser bin,mail, y sys. Los usuarios no <strong>de</strong>ben pertenecer a ninguno <strong>de</strong> estos grupos; se utilizan para permisos <strong>de</strong>ficheros <strong>de</strong>l sistema. En su lugar, los usuarios <strong>de</strong>ben pertenecer a un grupo individual, como users. Si sequiere ser <strong>de</strong>tallista, se pue<strong>de</strong>n mantener varios grupos <strong>de</strong> usuarios como por ejemplo estudiantes, soportey facultad.El fichero /etc/group contiene información acerca <strong>de</strong> los grupos. El formato <strong>de</strong> cada línea esnombre <strong>de</strong> grupo:clave:GID:otros miembrosAlgunos ejemplos <strong>de</strong> grupos pue<strong>de</strong>n ser:root:*:0:users:*:100:fiona,burro,shrekinvitados:*:200:otros:*:250:shrekEl primer grupo, root, es un grupo especial <strong>de</strong>l sistema reservado para la cuenta root. El siguiente grupo,users, es para usuarios normales. Tiene un GID <strong>de</strong> 100. Los usuarios fiona y pedro tienen acceso a estegrupo. Recuér<strong>de</strong>se que en /etc/passwd cada usuario tiene un GID por <strong>de</strong>fecto. Sin embargo, los usuariospue<strong>de</strong>n pertenecer a mas <strong>de</strong> un grupo, añadiendo sus nombres <strong>de</strong> usuario a otras líneas <strong>de</strong> grupo en/etc/group. El comando groups lista a qué grupos se tiene acceso.El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. El usuario shrektiene acceso a éste grupo.Como se pue<strong>de</strong> ver, el campo "clave" <strong>de</strong> /etc/group raramente se utiliza. A veces se utiliza para dar unaclave para acce<strong>de</strong>r a un grupo. Esto es raras veces necesario. Para evitar el que los usuarios cambien agrupos privilegiados (con el comando newgroup), se pone el campo <strong>de</strong> la clave a "*".Se pue<strong>de</strong>n usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente esmás sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan más configuraciones paraañadir un grupo. Para borrar un grupo, sólo hay que borrar su entrada <strong>de</strong> /etc/group.


Administración básica <strong>de</strong>l sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html5 <strong>de</strong> 5 07/09/2005 8:03Poniendo reglas al sistemaEl SO Un*x no fue diseñado <strong>de</strong>s<strong>de</strong> sus principios pensando en la seguridad entre los usarios <strong>de</strong>l sistema.El pensar que usarios académicos irrumpieran en áreas que no les pertenecían no se tomaba en como algoposible para los primeros tiempos en que UNIX estaba <strong>de</strong>sarrollándose. El tener una actitud mano duracon los usarios no ayudará a que estos traten <strong>de</strong> saltarse las limitaciones que le podamos haber impuesto.Pue<strong>de</strong> ser que en un ambiente militar esto funcione pero no será igual en un sistema universitario o en unaempresa. Lo que si tiene sentido es el escribir una serie sencillas <strong>de</strong> reglas que el usuario pueda seguir yque tienen que ir <strong>de</strong> acuerdo a las políticas <strong>de</strong>l área don<strong>de</strong> se esta implementando el sistema informativo.Pue<strong>de</strong> darse el caso <strong>de</strong> que existan reglas que estén en contra <strong>de</strong> las políticas o que no estén bienexplicadas por lo que será difícil <strong>de</strong> cumplir.También esta el caso <strong>de</strong> que si las reglas son por <strong>de</strong>más <strong>de</strong> restrictivas con el usuario éste tratará <strong>de</strong>saltarlas. Otro caso son los usarios que por <strong>de</strong>sconocimiento <strong>de</strong> estas reglas realizan acciones prohibidas.Por ejemplo, envían mails <strong>de</strong> 20 MB por la red saturando la conexión dado que no se especificaclaramente que no pue<strong>de</strong>n mandarse mails con adjuntos tan gran<strong>de</strong>s. Si nadie se lo informa al usuario nopo<strong>de</strong>mos pedirle que obe<strong>de</strong>zca. Los motivos por los cuales las reglas se implementan <strong>de</strong>berán estar claros,ya que los usuarios se sentirán tentados a hacer cosas que están prohibidas por naturaleza, sin ningunaotra explicación.Anterior Inicio SiguienteConceptos <strong>de</strong> editores fuera <strong>de</strong>Iniciando el sistemalínea


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html1 <strong>de</strong> 7 07/09/2005 8:03Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Programas <strong>de</strong> edición <strong>de</strong> consola SiguienteConceptos <strong>de</strong> editores fuera <strong>de</strong> líneaExisten ocasiones en las que el uso <strong>de</strong> un editor <strong>de</strong> textos como el vi o emacs pue<strong>de</strong> ser <strong>de</strong>masiado o nocumplen con lo que queremos realizar. Tal vez se tengan que hacer cambios repetitivos a archivos o tenerque procesar datos <strong>de</strong> una fuente y enviarlos a otro archivo en un or<strong>de</strong>n correcto o tal vez solo queremosuna forma simple <strong>de</strong> hacer el trabajo <strong>de</strong>s<strong>de</strong> un script o la línea <strong>de</strong> comandos. Es aquí don<strong>de</strong> entran atrabajar los editores fuera <strong>de</strong> línea y para nombrar solo 2 veremos el editor <strong>de</strong> flujo Sed y el lenguaje <strong>de</strong>programación Awk (por Alfred Aho,Peter Weinberg y Brian Kernighan). Lo especial <strong>de</strong> Awk es que es unlenguaje con todas las letras y muy po<strong>de</strong>roso, pero en ocasiones nos facilitará tareas tediosas <strong>de</strong>procesamiento <strong>de</strong> información y por esto lo ponemos en el rango <strong>de</strong> un editor fuera <strong>de</strong> línea. Aunque estono quiere <strong>de</strong>cir que es lo único que pue<strong>de</strong> hacer. Para mayor información sobre Sed y Awk les sugierolean "Sed & AWK" <strong>de</strong> Dale Dougherty que trata el tema con una mayor profundidad.SedSed No es preciso <strong>de</strong>tallar en <strong>de</strong>masía el uso <strong>de</strong> este editor fuera <strong>de</strong> línea dada que posee mucha similitu<strong>de</strong>n su uso al editor <strong>de</strong> textos vi pero si es bueno mostrar algunas <strong>de</strong> sus funciones y usos tanto en elprocesamiento <strong>de</strong>s<strong>de</strong> un script o en la línea <strong>de</strong> comandos. Existen 3 casos específicos en los que se podráusar Sed.1.2.3.Para editar archivos muy largos para editar interactivamente.Para editar archivos <strong>de</strong> cualquier tamaño cuando la secuencia <strong>de</strong> comandos <strong>de</strong> edición es muycomplicada para hacer el tipeado confortable en ambiente interactivo.Para usar múltiples funciones globales <strong>de</strong> edición eficientemente en un solo paso.Existen diferentes formas <strong>de</strong> realizar una edición con el Sed. Pue<strong>de</strong> hacerse <strong>de</strong>s<strong>de</strong> la línea <strong>de</strong> comando osimplemente guardándolos en un archivo para po<strong>de</strong>r ser usado luego. Sed lee la entrada línea a línea yrealiza los cambios a estas <strong>de</strong> acuerdo a lo que se le especifique. Luego <strong>de</strong> hacer estos cambios dirige susalida hacia stdout, la cual pue<strong>de</strong> ser redireccionada. Sed actúa en forma similar a filtros como el grep ysort pero con la diferencia que con Sed se podrán crear programas mas complicados y con una mayorcantidad <strong>de</strong> funciones.Para <strong>de</strong>finir una estructura <strong>de</strong> uso <strong>de</strong>l Sed veremos 2 formas distintas. La primera es la utilizada en lalínea <strong>de</strong> comandos a través <strong>de</strong> una canalización y que tendrá esta estructura:primer_comando | sed A continuación veremos la segunda opción para su uso a partir <strong>de</strong> la línea <strong>de</strong> comandos:sed -f script_<strong>de</strong>_edición Con la opción "-f" le <strong>de</strong>cimos a sed que a continuación le pasaremos un archivo don<strong>de</strong> encontrara lasreglas a aplicar en . Sed tiene mucho que ver con el editor vi en el área <strong>de</strong> búsqueda yreemplazo don<strong>de</strong> la estructura es la siguiente:[direccion1 [,direccion2]] <strong>de</strong>scripción_<strong>de</strong>_la_edición [argumentos]


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html2 <strong>de</strong> 7 07/09/2005 8:03Las direcciones serán reglas que el sed tendrá que encontrar en el texto, si se omitieran estas sed realizaraen caso <strong>de</strong> ser posible los cambios en forma global. La <strong>de</strong>scripción_<strong>de</strong>_la_edición indica a sed loscambios que tiene que hacer. Para esto, tema que veremos a continuación, pue<strong>de</strong>n usarce variosargumentos. Es posible hacer varios cambios a una línea, sed los realiza <strong>de</strong> a uno y cuando ya no hayamas cambios a realizar en una línea dada, sed enviara el resultado a la salida estándar. Sed posee uncontador interno <strong>de</strong> líneas que se va incrementando <strong>de</strong> acuerdo al número total <strong>de</strong> líneas leídas y no a laslíneas <strong>de</strong>l archivo. Por esto si se editan dos archivos juntos <strong>de</strong> 50 líneas cada uno, la línea número 60 <strong>de</strong>sed seria la línea 10 <strong>de</strong>l segundo archivo. Esto es bueno para tener en cuenta a la hora <strong>de</strong> realizarediciones a múltiples archivos. Como dijimos antes cada comando <strong>de</strong> sed pue<strong>de</strong> tener 0, 1, ó 2 direccionesy en caso <strong>de</strong> tener 0, se aplicara a todas las líneas <strong>de</strong> ser posible:/shrek/ s/entrada/salida/El comando "s" indica a sed que <strong>de</strong>be hacer una sustitución <strong>de</strong> los argumentos que son pasados. Estesimple comando, que pue<strong>de</strong> estar en un archivo guardado para ser pasado al sed, sustituye la primeraaparición <strong>de</strong> "entrada" por "salida" en las líneas que contengan "shrek". Cuando se ingresan dosdirecciones, el cambio se comenzara a efectuar en la línea que concuer<strong>de</strong> la primer dirección y se iraaplicando a todas las siguientes hasta que concuer<strong>de</strong> con la segunda dirección. Las dos direcciones seseparan con coma. Por ejemplo10,30 s/entrada/salida/hará una sustitución <strong>de</strong> "salida" por "entrada" a partir <strong>de</strong> la línea nº 10 hasta la línea nº 30. Obsérvese queno tiene que existir ningún espacio entre el comando "s" y la segunda dirección. Si las direcciones tiene alfinal un signo "!" (negado) el comando solo se aplicar a aquellas líneas que no concuer<strong>de</strong>n con ladirección dada. Por ejemplo10,30! s/entrada/salida/Este comando se aplicará a todas la líneas, menos a las que estén entre la número 10 y la 30 inclusive.Como antes dijimos podremos modificar la salida <strong>de</strong>l sed. Por ejemplo si quisiéramos mostrar por lasalida estándar las líneas <strong>de</strong> una archivo que están entre la 20 y la 40, podremos dar a sed los argumentosnecesarios:[shrek@pantano:~]$ cat archivo | sed -n '20,40p'El -n indica a sed que imprima solo las líneas que concuer<strong>de</strong>n con los argumentos pasados, dado que evitaque se impriman todos los <strong>de</strong>más. El comando "p" es para imprimir el patrón que encuentra sed. Yaestamos en condiciones <strong>de</strong> hacer un script rudimentario para imprimir líneas <strong>de</strong> archivos[shrek@pantano:~]$ find /home/sebas/cartas/ "*" -print | while read FILE>do echo $FILE>cat $FILE | sed -n '5,15p'>doneA continuación se mostrara por la salida estándar <strong>de</strong>s<strong>de</strong> la línea 5 hasta la 15 inclusive <strong>de</strong> todos losarchivos <strong>de</strong>l directorio /home/shrek/cartas. Existen veces que queremos tener partes <strong>de</strong> archivos queconcuer<strong>de</strong>n con un patrón <strong>de</strong>terminado, por ejemplo, si quisiéramos mandar todos los comentarios <strong>de</strong> unarchivo <strong>de</strong> shell_script a otro y sabemos que las líneas que lo son comienzan con "#" po<strong>de</strong>mos usar uncomando en sed que haga el trabajo por nosotros <strong>de</strong> forma muy simple[shrek@pantano:~]$ cat archivo | sed -n '/^#/w archivo2'Debe existir un espacio exacto entre la "w" y el "archivo2" Con el -n indicamos a sed que solo procese laslíneas que concuerdan con la dirección que le pasaremos. Con el símbolo "^" le <strong>de</strong>cimos a sed que tieneque encontrar la dirección al principio <strong>de</strong> la línea. Y con la w le indicamos que escriba la salida alarchivo2. A continuación pondremos una tabla <strong>de</strong> los comando que se usan en sed. Se recomiendan que


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html3 <strong>de</strong> 7 07/09/2005 8:03practiquen con ellos y que observen los resultados obtenidos.Tabla 4. Comandos <strong>de</strong>l editor SedCaracterabcdilnprswAwkAcciónaña<strong>de</strong> texto al espacio patrónramifica a un rotulo, se emplea <strong>de</strong> forma similar a ungotoaña<strong>de</strong> textoborra textoinserta textolista el contenido <strong>de</strong>l espacio patrónaña<strong>de</strong> una nueva línea al espacio patrónimprime el espacio patrónlee un archivosustituye patronesescribe a un archivoEL awk es un po<strong>de</strong>roso lenguaje <strong>de</strong> programación que en muchas ocasiones nos sacara <strong>de</strong> apuros a la hora<strong>de</strong> tener que hacer script complejos <strong>de</strong> tratamiento <strong>de</strong> texto. El awk al igual que el sed lee las líneascompletas para realizar sus modificaciones. Uno <strong>de</strong> los aspectos mas útiles en relación al awk es que adiferencia <strong>de</strong>l "sed", awk pue<strong>de</strong> dividir las líneas en campos a través <strong>de</strong> un separador <strong>de</strong> campo indicadoen el script o en la línea <strong>de</strong> comandos. Si no se indica ninguno se tomara como separador <strong>de</strong> campo unespacio o tabulador. Usando la opción -F <strong>de</strong> la línea <strong>de</strong> comandos o la variable FS <strong>de</strong>s<strong>de</strong> un programahecho en awk se pue<strong>de</strong> especificar un nuevo separador <strong>de</strong> campo. Por ejemplo si lo que quisiéramos esver los nombres verda<strong>de</strong>ros que aparecen en el archivo /etc/passwd primero tendríamos que saber comoseparar los campos. En el archivo /etc/passwd se separan por un ":". Ahora tendríamos que saber en quecampo se encuentra el nombre. Es en el campo numero 5, comenzando a contar como el primero <strong>de</strong> loscampos. El 0 es la línea completa y ya veremos por que[shrek@pantano:~]$ cat /etc/passwd | awk -F : '{print $5}'rootbindaemonadmlpsyncshutdownhaltmailnewsuucpoperatorgamesgopherFTPUserNobodyX Font ServerNamed


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html4 <strong>de</strong> 7 07/09/2005 8:03PostgreSQL ServerShrek OgreFiona Ogre[shrek@pantano:~]$Como vemos lo primero que hicimos fue indicarle al awk cual seria el separador <strong>de</strong> campo "-F :", luegoentre comillas le indicamos que imprima a la salida estándar el campo nº 5, '{print $5}'. De esta formavemos los nombres contenidos en el archivo /etc/passwd. Podríamos imprimir mas <strong>de</strong> un campo a la vez,por ejemplo si queremos mostrar también el directorio home <strong>de</strong> cada uno <strong>de</strong> los usuarios podríamos hacerlo siguiente:[shrek@pantano:~]$ cat /etc/passwd | awk -F : '{print $5,$6}'root /rootbin /bindaemon /sbinadm /var/admlp /var/spool/lpd. . .PostgreSQL Server /var/lib/pgsqlShrek Ogre /home/shrekFiona Ogre /home/fiona[shrek@pantano:~]$De esta simple manera podremos ir completando la línea a los requerimientos <strong>de</strong>l campo que queramosver ya que tenemos la posibilidad <strong>de</strong> hacer comparaciones a un campo <strong>de</strong> la misma manera que laharíamos a una variable en cualquier otro lenguaje. Por ejemplo si quisiéramos ver las líneas <strong>de</strong>l/etc/passwd <strong>de</strong> todos aquellos usuarios que pertenecen al grupo user, representado por el nº 100 en elarchivo passwd, podríamos hacer que el awk comprara el número <strong>de</strong>l campo en el que esta el númeroGUID que nosotros buscamos. En el caso particular que cada usuario tuviese su grupo, podrimos hacerque se compararan todas las líneas que posean un número mayor o igual al número <strong>de</strong> grupo <strong>de</strong> usuariosmas bajo, por ejemplo 500 es el número que por <strong>de</strong>fecto pone Red Hat a al grupo <strong>de</strong>l primer usuario y vaincrementándose a medida que incorporamos usuarios. Tendríamos que mostrar todas las líneas que encampo don<strong>de</strong> esta el GUID, el número 4, <strong>de</strong>l usuario y que sea mayor o igual a 500. Por ejemplo:[shrek@pantano:~]$ cat /etc/passwd | awk -F :\'$4>=500 {print $0}'shrek:x:500:500:Shrek Ogre:/home/shrek:/bin/bashfiona:x:501:501:Fiona Ogre:/home/fiona:/bin/bash[shrek@pantano:~]$Como verán se indico que mostrara solo aquellas líneas que tuviesen en el campo nº 4 un valor mayor oigual a 500, $4>=500.También se ve que mostramos la línea entera al poner como campo a imprimir el$0. Una acotación que tendríamos que notar. Lo que comparamos en esta oportunidad es un número yesto lo hace tremendamente po<strong>de</strong>roso al awk como lenguaje <strong>de</strong> programación. Si se quisieran comparaca<strong>de</strong>nas, se tendrían que encerrar ente "". Como ejemplo, si hubiésemos encerrado entre "" al 500 lo queawk interpretaría es que queremos mostrar todas las líneas que en la posición 4 tengan un valoralfabéticamente mayor o igual a 500.[shrek@pantano:~]$ cat /etc/passwd | awk -F :\'$4>="500" {print $0}'lp:x:4:7:lp:/var/spool/lpd:nobody:x:99:99:Nobody:/:shrek:x:500:500:Shrek Ogre:/home/shrek:/bin/bashfiona:x:501:501:Fiona Ogre:/home/fiona:/bin/bash[shrek@pantano:~]$Como verán si se or<strong>de</strong>na alfabéticamente la posición 4 el 7 y el 99 son mayores que 500. Los operadores


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html5 <strong>de</strong> 7 07/09/2005 8:03que awk pue<strong>de</strong> manejar son los siguientes:Tabla 5. Operadores <strong>de</strong> AwkOperadorSignificado< menor que= mayor que o igual que> mayor queOtra posibilidad es el usar expresiones regulares para efectuar la búsqueda. Pero cuidado ya que es tienenque ser ingresadas <strong>de</strong> acuerdo a sí es mayúscula o minúscula.[shrek@pantano:~]$ cat /etc/passwd | awk -F :\'/Shrek/ {print $0}'shrek:x:500:500:Shrek Ogre:/home/shrek:/bin/bash[shrek@pantano:~]$Lo único que tendremos que hacer es encerrarlo entre "/" para que se tomen como expresión regular.Ahora bien, las expresiones podrán ser tan complejas como queramos. Por ejemplo si quisiéramos mostrartodas las líneas que tuviesen la ca<strong>de</strong>na "se" pero que no tengan antes la letra "U" y no les siga un espaciola or<strong>de</strong>n es[shrek@pantano:~]$ cat /etc/passwd | awk -F :\'/[^U]se[^ ]/ {print $0}'shrek:x:500:500:Shrek Ogre:/home/shrek:/bin/bash[shrek@pantano:~]$Como ven las ca<strong>de</strong>nas que tenemos que ignorar se prece<strong>de</strong>n antes y <strong>de</strong>spués <strong>de</strong> la ca<strong>de</strong>na buscadaingresando un símbolo ^ encerrado entre []. De esta manera se podrá ir usando las distintas expresionesregulares. En todos estos casos se utilizaron una única forma para imprimir en pantalla los resultados,pero es bueno saber que contamos con otra forma en la que podremos formatear el texto antes <strong>de</strong> su salidapor pantalla. Para la salida formateada se utiliza el "printf". Por ejemplo si quisiéramos podrimosimprimir los datos en una forma más cómoda:[shrek@pantano:~]$ cat /etc/passwd | awk -F :\'$4>=500 {printf"%20s %5s\n",$5,$1}'Shrek Ogre shrek Fiona Ogre fiona[shrek@pantano:~]$Como se pue<strong>de</strong> ver, pedimos que nos mostrara el nombre completo <strong>de</strong> l usuario y el nombre <strong>de</strong> usuario.Como sabemos la extensión aproximada que tendrá cada campo le damos 20 posiciones para le primercampo a mostrar, el $5, y 5 posiciones para el segundo campo a mostrar, el $1. Si lo que quisiéramosmostrar fuesen número en lugar <strong>de</strong> la "%s" (string) iría una "%d" o "%i" (<strong>de</strong>cimal).Para mas informaciónsobre el printf buscar en las páginas <strong>de</strong> manual <strong>de</strong>l awk. Existen diferentes variables integradas, a parte<strong>de</strong>l FS, que permiten llevar cuentas <strong>de</strong> distintos aspectos. Por ejemplo existe la variable NR que llevara lacuenta <strong>de</strong> los registros que mostremos. Por ejemplo supongamos que necesitamos obtener un listado largo<strong>de</strong> un directorio, pero solo queremos ver los permisos, el nombre <strong>de</strong>l archivo y el número <strong>de</strong> registro quea pasado por el awk.


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html6 <strong>de</strong> 7 07/09/2005 8:03[shrek@pantano]$ ls -l | awk '{ print NR" "$1" "$9}'1 total2 -rw-rw-r-- 1467683 -rw-rw-r-- Bienvenidos4 -rw-rw-r-- Bienv5 -rw-rw-r-- authkey.file6 drwxr-xr-x Desktop7 -rw-rw-r-- LUGRo8 drwxrwxr-x Linux9 -rw-rw-r-- Listado10 -rw-rw-r-- Lo11 drwx------ Mail. . .49 -rw-rw-r-- pgaccess-report.ps50 -rw-rw-r-- sed51 -rw-rw-r-- sed.zip52 -rw-rw-r-- smtptel.htm53 -rw-rw-r-- vickyComo verán, en esta ocasión la variable NR fue llevando la cuenta <strong>de</strong> los registros que fueron pasandopor el awk. De esta forma se podrá <strong>de</strong>cirle al awk que me muestre <strong>de</strong> los registros 5 al 10 solamente. scrExisten muchas más variables en el awk que son <strong>de</strong> extrema utilidad. Por ejemplo, en el caso anteriorsabíamos que el ultimo campo estaba en la posición número 9, pero ¿que ocurre si no sabemos la posición<strong>de</strong>l último campo o esta varia? Para esto esta la variable NF que lleva la cuenta <strong>de</strong> la cantidad <strong>de</strong> campos<strong>de</strong> cada registro. Por ello en lugar <strong>de</strong> la anterior forma podrimos poner:[shrek@pantano:~]$ ls -l | awk '{ print NR" "$1" "$NF}'y obtendríamos idénticos resultados. Pero un momento, aquí hay algo raro. La variable NR no tiene elsigno $, en cambio la variable NF si lo tiene. Esto esta dado así para que no se reemplazado por el awk.Por ejemplo si hubiésemos puesto la variable NF sin signo $ el resultado seria.[shrek@pantano:~]$ ls -l | awk '{ print NR" "$1" "NF}'1 total 22 -rw-rw-r-- 93 -rw-rw-r-- 114 -rw-rw-r-- 115 -rw-rw-r-- 116 drwxr-xr-x 9. . .Lo que nos esta mostrando no es el último campo, sino la cantidad <strong>de</strong> campos que ese registro tiene. Alagregarle el signo $ se reemplazara con el número <strong>de</strong>l último campo y ese campo el que será mostrado.Esto es así para todas las variables integradas. El awk pue<strong>de</strong> ser usado no-solo en una línea. Podrimosusarlo también como cualquier otro lenguaje para realizar múltiples tareas en una línea o realizar algoantes <strong>de</strong> comenzar la lectura y otra <strong>de</strong>spués. Para <strong>de</strong>marcar el código se utiliza los pares BEGIN-END.Todo lo que aparece <strong>de</strong>spués <strong>de</strong> la palabra BEGIN, pero en el mismo renglón, se realiza antes <strong>de</strong> quecomience el ciclo. Cualquier cosa que este <strong>de</strong>spués <strong>de</strong> END se realiza <strong>de</strong>spués <strong>de</strong> que se haya leído laúltima línea y cerrado el ciclo. Estas líneas tendrán que estar en un archivo que será utilizado por el awkpara procesar en este ejemplo al archivo /etc/passwd. Un ejemplo seria el siguiente:BEGIN { FS=":"}{ printf"Nombre Completo: %s\n",$5 }{ printf"Nombre <strong>de</strong> Usuario: %s\n",$1}{ printf"UID: %i,GUID: %i\n\n",$3,$4 }END { printf "\n\nTotal <strong>de</strong> usuarios: %d \n\n", NR}Este pequeño programa realizado con el vi será guardado en el archivo awk.src, el nombre se lo damosnosotros, y nos servirá para mostrar algunos datos <strong>de</strong>l /etc/passwd mas <strong>de</strong>talladamente. La forma <strong>de</strong>ejecutarlo es a través <strong>de</strong>l modificado "-f" don<strong>de</strong> le <strong>de</strong>cimos al awk que a continuación le pasaremos unarchivo con el programa que tiene que usar para procesar el /etc/passwd.


Conceptos <strong>de</strong> editores fuera <strong>de</strong> líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html7 <strong>de</strong> 7 07/09/2005 8:03[shrek@pantano:~]$ awk -f awk.src /etc/passwdNombre Completo: root Nombre <strong>de</strong> Usuario: root UID: 0,GUID: 0Nombre Completo: bin Nombre <strong>de</strong> Usuario: bin UID: 1,GUID: 1Nombre Completo: daemon Nombre <strong>de</strong> Usuario: daemon UID: 2,GUID: 2Nombre Completo: adm Nombre <strong>de</strong> Usuario: adm UID: 3,GUID: 4. . .Nombre Completo: PostgreSQL Server Nombre <strong>de</strong> Usuario: postgres UID: 26,GUID: 26Nombre Completo: Shrek Ogre Nombre <strong>de</strong> Usuario: shrek UID: 500,GUID: 500Nombre Completo: Fiona Ogre Nombre <strong>de</strong> Usuario: fiona UID: 501,GUID: 501Total <strong>de</strong> usuarios: 22Para finalizar diremos que también se podrán hacer operaciones con estas variables, es <strong>de</strong>cir, sumarlasrestarlas, multiplicarlas y dividirlas. Por ejemplo si quisiéramos saber en cuantos bloques <strong>de</strong> 4 líneaspodríamos formar con un archivo <strong>de</strong> texto dado podríamos hacer el siguiente programa:BEGIN {FS=":"}{ print $0 }FNR%4==0 { printf"\n" }END { printf "El archivo %s pue<strong>de</strong> entrar en %i bloques enteros\<strong>de</strong> 4 lineas\n",FILENAME,NR/4}Existen un par <strong>de</strong> cosas nueva en el. Por ejemplo la variable "FNR" que cuenta el número <strong>de</strong> líneas. Enesta ocasión le estamos diciendo que si el modulo <strong>de</strong> FNR es igual a 4 "FNR%4" imprima un salto <strong>de</strong>linea "{ printf"\n" }". Y al finalizar el ciclo se mostrara el mensaje que nos informara cuantos bloques <strong>de</strong>4 líneas podremos tener. Para obtener el resultado se efectúa una división <strong>de</strong>l numero total <strong>de</strong> registros"NR" por el número <strong>de</strong> líneas que queremos armar el bloque, "4". La variable FILENAME indica cual esel archivo sobre el cual se realizo el proceso y es tomada cuando se la pasamos al awk como argumento.El resultado es[shrek@pantano]$ awk -f awk2.src /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:daemon:x:2:2:daemon:/sbin:adm:x:3:4:adm:/var/adm:lp:x:4:7:lp:/var/spool/lpd:sync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:news:x:9:13:news:/var/spool/news:uucp:x:10:14:uucp:/var/spool/uucp:operator:x:11:0:operator:/root:games:x:12:100:games:/usr/games:gopher:x:13:30:gopher:/usr/lib/gopher-data:ftp:x:14:50:FTP User:/home/ftp:nobody:x:99:99:Nobody:/:xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/falsenamed:x:25:25:Named:/var/named:/bin/falsegdm:x:42:42::/home/gdm:/bin/bashpostgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bashshrek:x:500:500:Shrek Ogre:/home/shrek:/bin/bashfiona:x:501:501:Fiona Ogre :/home/fiona:/bin/bashEl archivo /etc/passwd pue<strong>de</strong> entrar en 5 bloques enteros <strong>de</strong> 4 lineasAnterior Inicio SiguienteProgramas <strong>de</strong> edición <strong>de</strong> consola Subir Administración básica <strong>de</strong>l sistema


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html1 <strong>de</strong> 11 07/09/2005 8:02Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteProgramas <strong>de</strong> edición <strong>de</strong> consolaPor más que queramos convencernos <strong>de</strong> que el usar el comando cat y redirigirlo a un archivo nos va a sersuficiente para po<strong>de</strong>r trabajar con texto no podremos seguir engañándonos por mucho tiempo. Si existe algo quesé a apreciado mucho en lo referente a la informática tanto en el hogar como en la oficina, es la manera mássencilla que se tiene <strong>de</strong> editar textos y trabajar con ellos <strong>de</strong> una forma eficiente, produciendo así también unaretroalimentación para que estos entornos vayan mejorando. Existen conjuntos <strong>de</strong> aplicaciones como elOpenOffice.org auspiciado por <strong>de</strong> Sun o Abiword que nos permiten hacer el trabajo <strong>de</strong> edición <strong>de</strong> texto masfácilmente. Pero también existe toda una gama <strong>de</strong> editores <strong>de</strong> textos, en línea y fuera <strong>de</strong> línea, que permitenhacer el trabajo en ocasiones cuando no se cuenta con ningún otro editor. En este capítulo trataremos <strong>de</strong>proporcionar una guía sobre las principales herramientas para manipular archivos <strong>de</strong> texto. El cómo los usemosy cual <strong>de</strong> ellos adoptemos <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong> las circunstancias y los gustos <strong>de</strong>l usuario. Los dos primeros editoresson el Vi "Visual Editor" y el Emacs con los cuales podremos interactuar para hacer la edición <strong>de</strong>l contenido <strong>de</strong>un archivo. Luego veremos a un editor <strong>de</strong> texto fuera <strong>de</strong> línea y también llamado editor <strong>de</strong> flujo, el Sed. Porúltimo trataremos <strong>de</strong> ver las características <strong>de</strong> un lenguaje <strong>de</strong> programación que hace mucho mas que editartexto, el Awk.Edición <strong>de</strong> textos en modo interactivo¿Porque es importante el uso <strong>de</strong> editores <strong>de</strong> consola?Muy bien, se cuenta ya con po<strong>de</strong>rosos programas <strong>de</strong> edición como los mencionados anteriormente y uno sesiente tan cómodo como cuando trabajaba en otro tipo <strong>de</strong> entorno <strong>de</strong> ventanas, pero ¿Que ocurre cuandoqueremos hacer funcionar ese monstruo consumidor <strong>de</strong> recursos en un 486 DX2 con 8 MB?. No pue<strong>de</strong>funcionar <strong>de</strong> ninguna manera, ni siquiera el entorno XWindow podría hacerlo <strong>de</strong> un modo que nos facilite lastareas. Otro ejemplo, salimos <strong>de</strong> nuestra maquina perfectamente equipada y vamos a configurar otra máquina notan bien equipada, no po<strong>de</strong>mos <strong>de</strong>jar <strong>de</strong> hacer el trabajo porque no tiene interfaz gráfica o no tiene elOpenOffice. Por esto es importante el saber usar este tipo <strong>de</strong> editores, ya que estarán en cualquier sistemaGNU/Linux, por lo menos el Vi, y que necesitan <strong>de</strong> muy pocos recursos o muchos menos que X para funcionar.El enten<strong>de</strong>r este tipo <strong>de</strong> programas nos abren las puertas para po<strong>de</strong>r configurar y trabajar con cualquiercomputadora que posea un sistema tipo Un*x ya que han sido portados a tanto Vi como Emacs a la mayoría <strong>de</strong>las plataformas dada su funcionalidad. Si se les presenta caso que alguna vez se tenga que editar algún archivo através Internet en una máquina remota agra<strong>de</strong>cerán por mucho la capacidad <strong>de</strong>l editor Vi y su velocidad, dadoque es poco el contenido que tendrá que pasarse por la conexión y por en<strong>de</strong> se tendrá mucha más soltura a lahora <strong>de</strong> trabajar con un archivo, amen <strong>de</strong> los bajos tiempos <strong>de</strong> respuesta que el editor tendrá. Por supuesto quese tendrá que tener en cuenta el gusto personal por cada uno <strong>de</strong> los editores que pasaremos a explicar, pero <strong>de</strong>seguro se contará con la suficiente información para po<strong>de</strong>r hacer una elección <strong>de</strong> acuerdo a las conveniencias <strong>de</strong>cada usuario.Para po<strong>de</strong>r ejemplificar algunos <strong>de</strong> los puntos fuertes <strong>de</strong> cada uno <strong>de</strong> estos editores, podríamos <strong>de</strong>cir que Vi esel editor <strong>de</strong> textos garantizado en todos los equipos con GNU/Linux y Un*x. Aunque no es él más fácil <strong>de</strong> usar,a esta altura se tendrá la experiencia suficiente para armarse <strong>de</strong> paciencia y obtener el máximo beneficio <strong>de</strong> él.El editor <strong>de</strong> textos Emacs es pesado pero muy po<strong>de</strong>roso. Posee hasta un dialecto <strong>de</strong>l lenguaje <strong>de</strong> programaciónLISP a<strong>de</strong>más <strong>de</strong> diversas extensiones avanzadas como el Eliza, que es un programa para tareas <strong>de</strong> InteligenciaArtificial.El editor Vi


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html2 <strong>de</strong> 11 07/09/2005 8:02Al verlo por primera vez la gente tiene recuerdos <strong>de</strong> los primeros editores <strong>de</strong> textos <strong>de</strong> DOS, toscos y faltos <strong>de</strong>muchas características, pero una vez que se a aprendido a usarlo se encuentra uno ubicado en el sector <strong>de</strong> lagente que piensa que en verdad es un programa mágico.No es un programa muy difícil <strong>de</strong> usar, aunque parezca lo contrario en principio, es solo que el aprendizajeinicial suele costar mucho dado que no se contaran con menues <strong>de</strong>scolgables o clic <strong>de</strong> mouse para ejecutar unafunción <strong>de</strong>l programa y ni siquiera esta en colores en muchos casos. Para ir viendo algunas características que elVi posee y a modo <strong>de</strong> que vayan entrando en el sector <strong>de</strong> gentes antes mencionado, veremos características eneste editor que lo ponen como uno <strong>de</strong> los más completos. Pero tendremos que ver algunos conceptosfundamentales antes <strong>de</strong> po<strong>de</strong>r hacer esto. Mientras se este usando el editor se estará en uno <strong>de</strong> tres posiblesmodos <strong>de</strong> operación. Estos modos son:1.Modo Comando2.3.Modo <strong>de</strong> InserciónModo <strong>de</strong> Ultima LíneaVi pue<strong>de</strong> ser iniciado tanto llamándolo sin argumentos, con lo que se tendrá que establecer un nombre a la hora<strong>de</strong> salir <strong>de</strong>l programa, o con un nombre <strong>de</strong> archivo, con lo cual si el archivo existe lo abrirá y si no existe locreará. La sintaxis es la siguiente[shrek@pantano:~]$ vi Don<strong>de</strong> es el nombre <strong>de</strong>l archivo a editar o crear. En caso que no se ponga ningún archivo, sepreguntara el nombre <strong>de</strong> este cuando queramos guardar o cuando salgamos <strong>de</strong>l programa. Al iniciarse, lo haráen modo comando por lo que no se podrá ingresar texto directamente. Para pasar al modo <strong>de</strong> inserción, secuenta con un comando "i" (INSERT) o "a" (ADD). En ese momento nos encontraremos con la posibilidad <strong>de</strong>escribir el contenido <strong>de</strong>l archivo a crear o a editar. Para volver al modo <strong>de</strong> comandos vasta solo con oprimir latecla ESC.El modo última línea sirve para proporcionar al Vi ciertos comandos extendidos que aparecerán en la últimalínea <strong>de</strong> la pantalla, <strong>de</strong> aquí su nombre. Por ejemplo, supongamos que quisiéramos salir <strong>de</strong>l archivo que estamoseditando sin tener que grabar, para ello presionando dos puntos (:) y luego "q!" el Vi saldrá sin guardar ningúncambio. Por supuesto que en el modo última línea se tiene que presionar la tecla Enter <strong>de</strong>spués <strong>de</strong>l comando.Para enten<strong>de</strong>r un poco estos conceptos trataremos <strong>de</strong> ejemplificar un poco el proceso <strong>de</strong> edición, mostrandocomo se editaría un archivo nuevo. Para esto crearemos un archivo llamado prueba:[shrek@pantano:~]$ vi pruebaDado que el archivo no existe, este se creará, lo que se nos indica al final <strong>de</strong> la pantalla con la línea como se vea continuación


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html3 <strong>de</strong> 11 07/09/2005 8:02Lo que mostrara el editor Vi al comenzar es una pantalla don<strong>de</strong> en la primera columna se verán repetidossímbolos <strong>de</strong> til<strong>de</strong> (~). Esto indica que don<strong>de</strong> está el primero <strong>de</strong> estos til<strong>de</strong>s finaliza el archivo y que luego nohay nada más.En estos momentos estamos en modo <strong>de</strong> comandos. Para comenzar a trabajar necesitaremos ingresar al modo <strong>de</strong>inserción para así comenzar a escribir. Esto lo realizamos con el comando i (insert). A la hora <strong>de</strong> tener queagregar contenido podrá también pasar al modo <strong>de</strong> inserción a través <strong>de</strong>l comando a (add). La diferencia con elcomando i es que con el comando a se comenzará a escribir <strong>de</strong>spués <strong>de</strong>l cursor mientras que con el comando iesto se hará antes <strong>de</strong>l cursor. Como en otro editores <strong>de</strong> textos se podrá seguir escribiendo líneas sucesivas solocon oprimir la tecla Enter la que generara un EOL (End of line). Si existiese un error lo podremos corregirprimero borrando el carácter con error (tecla x sobre el carácter a borrar en modo comando) y luego insertandoel correcto (i). Pero podremos por ejemplo reemplazar directamente el carácter con error directamente con elcomando (r) (replace).Pero que pasa si existiesen varios caracteres seguidos que quisiéramos corregir. Pondremos entonces elcomando R (replace all) lo que nos permitirá seguir reemplazando caracteres hasta presionar la tecla Esc paravolver al modo comando.


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html4 <strong>de</strong> 11 07/09/2005 8:02Para moverse por el texto pue<strong>de</strong> hacerse directamente con las teclas <strong>de</strong> cursor que nos llevará al lugar don<strong>de</strong>está el problema.Para reemplazar esta palabra lo que hicimos fue posicionarnos con el cursor encima <strong>de</strong> la letra "á" y en modocomando presionar la tecla i, y así insertamos la letra "í". Si lo que quisiéramos es comenzar a escribir unanueva línea en blanco, lo lograremos presionando la tecla o en modo comando.Ya dijimos que para borrar algún carácter en especial tendremos que posicionar el cursor encima <strong>de</strong> este y, enmodo comando, presionar la tecla x. Pero si lo quisiéramos es borrar una palabra <strong>de</strong> 5 letras, lo que haremos espresionar x 5 veces. Esto no es <strong>de</strong>l todo practico. Si queremos borrar una palabra completa bastará conposicionarnos con el cursor en ella y presionar dw (<strong>de</strong>lete word) en modo comando con lo que la palabra seráborrada. Si lo que queremos es borrar una línea completa tendremos que presionar dd en modo comando encima<strong>de</strong> la línea a borrar.


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html5 <strong>de</strong> 11 07/09/2005 8:02Las modificaciones que le po<strong>de</strong>mos hacer al texto las vimos anteriormente con el comando R y r, pero tambiénpodremos hacer otro tipo <strong>de</strong> modificación como el cambiar el texto a mayúscula. Para esto contamos con elcomando ~[1], el cual alterna entre mayúsculas y minúsculas.Para po<strong>de</strong>r mover el cursor <strong>de</strong> un lado a otro también se cuenta con 4 teclas que pue<strong>de</strong>n resultar un poco máscómodas al este en modo comando. Estas son h, j, k y l que nos permitirán mover el cursor a la izquierda, abajo,arriba y a la <strong>de</strong>recha. Con la tecla w el cursor se moverá al comienzo <strong>de</strong> cada palabra y con la tecla b se irá alcomienzo <strong>de</strong> la palabra anterior.


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html6 <strong>de</strong> 11 07/09/2005 8:02Con la or<strong>de</strong>n 0 nos podremos mover al comienzo <strong>de</strong> la línea actual y con el $ al final <strong>de</strong> la línea actual.En ocasiones el texto que tenemos que editar es por <strong>de</strong>más <strong>de</strong> extenso y por ello tendremos que encontrar unmétodo mejor para ir moviéndonos a través <strong>de</strong> este. Dado que no contamos con una barra <strong>de</strong> <strong>de</strong>splazamientoque nos permita po<strong>de</strong>r movernos por el documento tendremos que usar los métodos convencionales <strong>de</strong> conjunto<strong>de</strong> comandos. Para ello tenemos que pulsando Ctrl-F se avanzara el cursor una pantalla hacia <strong>de</strong>lante y conCtrl-B lo llevaremos una pantalla hacia atrás. Si lo que queremos es llegar al final <strong>de</strong>l documento tenemos elcomando G y si lo que en realidad se necesitaba es el llegar a una línea <strong>de</strong>terminada tendremos que anteponer alcomando G el número <strong>de</strong> la línea a la que queremos ir. Por ejemplo si quisiéramos llegar a la línea 25 <strong>de</strong>ldocumento teclearíamos, por supuesto en modo comando, 25G y el cursor parpa<strong>de</strong>ara <strong>de</strong>bajo <strong>de</strong> la primer letra<strong>de</strong> esa línea.Muy bien, el trabajo esta hecho y se necesita ahora guardarlo. Para esto tendremos que darle una or<strong>de</strong>n <strong>de</strong>s<strong>de</strong> elmodo última línea. Para ello primero ingresaremos ":" los dos puntos, que nos llevara al modo última línea yseguido esto teclearemos la letra w (write) y presionaremos Enter (:w), con esto el documento será guardado, yen caso <strong>de</strong> que no hallásemos dado un nombre todavía, es <strong>de</strong>cir que hayamos arrancado el vi sin ningún nombrecomo parámetro, se guardara en un archivo temporal el cual nos indicara. Para darle un nombre, lo tendremosque indicar inmediatamente <strong>de</strong>spués <strong>de</strong> haber puesto los dos puntos y la letra w. (:w archivo), <strong>de</strong> esta formaahora cada vez que se ingrese el comando "w" <strong>de</strong>s<strong>de</strong> el modo última línea, se guardara el documento en elnombre <strong>de</strong> archivo que indicamos. Si lo que quisiéramos es guardar y salir la forma <strong>de</strong> indicárselo es a través<strong>de</strong>l comando "qw" (:qw) que guardara el archivo y saldrá <strong>de</strong>l programa. Claro esta que si no indicamos unnombre se tendrá que proce<strong>de</strong>r <strong>de</strong> igual forma que el caso anterior. Podremos hacer lo mismo <strong>de</strong>s<strong>de</strong> el modocomando presionando dos veces la tecla Z. Para salir sin guardar existen dos formas <strong>de</strong> acuerdo a lo que se hayahecho. Si no se modifico el documento, bastara que <strong>de</strong>s<strong>de</strong> el modo ultimo línea se presione la tecla q seguido <strong>de</strong>Enter.(:q) Si se modifico el documento, entonces <strong>de</strong>beremos forzar la salida con ayuda <strong>de</strong>l símbolo ! <strong>de</strong> estaforma (:q!). Lo formidable que tiene este editor <strong>de</strong> texto en modo consola que otros no tienen, es la posibilidad<strong>de</strong> editar ficheros múltiples. Esto permite que podamos editar algún otro archivo con solo indicárselo. De estaforma será más rápido que salir <strong>de</strong>l "vi" y arrancarlo con otro nombre <strong>de</strong> archivo como parámetro. Para estobastara solo con ingresar :e seguido <strong>de</strong>l nombre <strong>de</strong>l archivo a editar.Si el archivo que actualmente estamos editando no a sido guardado nos lo indicara para que no perdamos loscambios. Si queremos en realidad incluir el contenido <strong>de</strong> otro archivo, tenemos la or<strong>de</strong>n :r. La forma <strong>de</strong>emplearlo es (:r archivo) y <strong>de</strong> esta forma todo el contenido <strong>de</strong> ese archivo será incluido en el documento queestamos editando actualmente.Existe una utilidad muy interesante <strong>de</strong>l vi que nos permite ejecutar comandos <strong>de</strong>l bash directamente y que losresultados se incorporen al texto que estamos editando. Con la misma or<strong>de</strong>n :r! y seguido el comando que


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html7 <strong>de</strong> 11 07/09/2005 8:02queremos ejecutar, el comando será ejecutado y el resultado será incluido en el documento.Claro esta que se pue<strong>de</strong> salir <strong>de</strong>l interprete <strong>de</strong> comandos y ejecutar la or<strong>de</strong>n directamente y una vez finalizadavolver al editor vi. Esto se logra con el símbolo "!". Por ejemplo: :! ls -l . También podremos salirtemporalmente <strong>de</strong>l vi regresar al interprete <strong>de</strong> comandos. Para esto <strong>de</strong>beremos indicárselo con el comando:shell. Luego una vez que terminemos <strong>de</strong> usar el interprete <strong>de</strong> comandos, podremos poner exit yregresaremos al vi.Una utilidad interesante es la <strong>de</strong> repetir el último comando que se ejecutó. Para esto tenemos el comando punto"." que <strong>de</strong>s<strong>de</strong> el modo comando nos permitirá repetir cualquier comando que hayamos ejecutado anteriormente.Por ejemplo si lo que hicimos antes fue el borrar una palabra con el comando "dw", si presionamos el punto "."será igual que hubiésemos tecleado "dw" otra vez. Esto funciona con la mayoría <strong>de</strong> los comando que podamosejecutar <strong>de</strong>s<strong>de</strong> el modo comando.Si quisiéramos buscar una palabra en especial <strong>de</strong>ntro <strong>de</strong>l texto, bastara solo con presionar la el comando "/" loque nos ubicará en la última línea para que ingresemos la ca<strong>de</strong>na <strong>de</strong> texto a encontrar. Vi comenzara a buscar<strong>de</strong>s<strong>de</strong> el punto don<strong>de</strong> se encuentre el cursor hasta el final <strong>de</strong>l texto y cada vez que encuentra una coinci<strong>de</strong>ncianos lo indicara poniendo el cursor <strong>de</strong>bajo <strong>de</strong> esta. Si queremos seguir buscando, bastara con presionar la tecla n(next) para que encuentre la próxima coinci<strong>de</strong>ncia.Muchas veces tendremos que reemplazar sucesivamente una palabra en el texto y tendremos que buscarlo unapor una y reemplazarlo a mano. Vi cuenta con un método que pue<strong>de</strong> ser útil usando la diagonal "/" y luego laca<strong>de</strong>na que estamos buscado. Una vez que la encontramos solo tendremos que presionar "cw" lo que nospermitirá corregir la ca<strong>de</strong>na, reemplazamos la ca<strong>de</strong>na que encontramos con la que queremos y luego repetimosla búsqueda presionando (ESC) que nos pondrá en modo comando y presionando la tecla "n" que nos llevara ala próxima coinci<strong>de</strong>ncia. En este punto en lugar <strong>de</strong> repetir lo anterior solo bastara con presionar el comando "."que repetirá el reemplazo efectuado anteriormente y así presionando "n" y "." sucesivamente podremosreemplazar todas las coinci<strong>de</strong>ncias.Claro esta que no es esto muy útil si se quiere reemplazar 100 coinci<strong>de</strong>ncias por lo que podremos hacerlo <strong>de</strong> unasola vez indicando en cuantas líneas se podrá encontrar esta ca<strong>de</strong>na. Para ello se ingresan los ":" dos puntosseguido <strong>de</strong> la primera <strong>de</strong> las líneas en la que tenemos la palabra a cambiar, seguido una coma y luego la ultimalínea a cambiar. Luego pondremos el comando a usar "s" para sustituir, una diagonal, la palabra a buscar otradiagonal y la palabra con la que será reemplazada.:200s/shrek/SHREK


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html8 <strong>de</strong> 11 07/09/2005 8:02Claro que esto solo cambiara la primer aparición en la línea, si existiera otra en la misma línea seria ignorada.Para que el alcance sea total se <strong>de</strong>berá agregar el comando g (global) al final <strong>de</strong>l comando.:1,200s/shrek/SHREK/gAhora bien si se quiere que vi nos pregunte antes <strong>de</strong> cambiar se <strong>de</strong>berá agregar el comando "c" al final, que nospregunte si se quiere realizar el cambio antes <strong>de</strong> cada una <strong>de</strong> las coinci<strong>de</strong>ncias:1,200s/shrek/SHREK/gcPara todo esto <strong>de</strong>beremos saber cuantas líneas tiene el documento, lo que po<strong>de</strong>mos hacer es indicarle que lohaga <strong>de</strong>s<strong>de</strong> don<strong>de</strong> nosotros queramos hasta el final <strong>de</strong>l documento con la ayuda <strong>de</strong>l símbolo "$".:1,$s/sebas/SEBAS/gcSi se quiere realizar en todo el documento, podremos directamente indicarlo con el símbolo "%" que es igual a"1,$".:%s/shrek/SHREK/gcPor supuesto que los patrones <strong>de</strong> búsqueda que usamos podrán ser expresiones regulares, que facilitaran muchoel trabajo. Si quisiéramos que se reemplace no importa si esta escrito en mayúscula o minúscula se podrá poneralgo como esto:%s/[Ss][Hh][Rr][Ee][Kk]/fiona/gcEste uso <strong>de</strong> las expresiones regulares también pue<strong>de</strong> incluir el uso <strong>de</strong> metacaracteres como el "*" para indicarcualquier cantidad <strong>de</strong> caracteres anterior o "." para cualquier carácter individual:%s/*[Rr].[Ss]/fiona/gcPero si se a hecho algo mal, no preocuparse ya que Vi cuenta con un comando <strong>de</strong> "undo" el cual por supuesto seactiva con el comando "u". Existen muchísimos temas que se han <strong>de</strong>jado <strong>de</strong> ver aquí, por lo que se invita allector a buscar en la documentación <strong>de</strong>l vi que lo guiara a toda la magia que este editor tiene para brindar.El editor emacsEn cuanto a po<strong>de</strong>r se refiere, Emacs gana por varios cuerpos a sus competidores. Este <strong>de</strong>sarrollo totalmenteGNU ha sabido cubrir el terreno <strong>de</strong> la edición <strong>de</strong> textos <strong>de</strong> alto nivel en los sistemas UNIX por muchos años, ysigue siendo un ejemplo <strong>de</strong>l po<strong>de</strong>r real que se pue<strong>de</strong> obtener <strong>de</strong> este tipo <strong>de</strong> sistemas. Por supuesto, es un editormás po<strong>de</strong>roso que el pequeño "vi" y por en<strong>de</strong> la curva <strong>de</strong> aprendizaje es mucho mayor. Pero si lo que se quierees tener mas que un simple editor <strong>de</strong> textos y acercarse a lo que una suite <strong>de</strong> aplicaciones pue<strong>de</strong> dar, Emacs es ellugar don<strong>de</strong> se tiene que buscar. Y es así <strong>de</strong> simple, no solo nos encontraremos con un fabuloso editor <strong>de</strong> textos,sino que tendremos una completa suite <strong>de</strong> aplicaciones <strong>de</strong> uso común, tales como edición, recepción y envió <strong>de</strong>mails, programación en C, edición <strong>de</strong> HTML y SGML, programación en <strong>de</strong> macros en lenguaje LISP,corrección ortográfica en varios idiomas y muchas características más. Existe una diferencia en la forma <strong>de</strong>trabajar con respecto a vi, en lugar <strong>de</strong> tener que cambiar <strong>de</strong> modo para po<strong>de</strong>r trabajar con una u otra función,modo comando, modo última línea y <strong>de</strong>más, emacs respon<strong>de</strong> <strong>de</strong> acuerdo a la función que la combinación <strong>de</strong>teclas presionada tenga. Este es el mismo comportamiento que poseen otros editores <strong>de</strong> textos como elOpenOffice o el Word y por lo tanto se tendrán que saber las combinaciones posibles para po<strong>de</strong>r trabajar


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html9 <strong>de</strong> 11 07/09/2005 8:02cómodamente.Al arrancar emacs pue<strong>de</strong> hacerlo <strong>de</strong> dos formas distintas <strong>de</strong>pendiendo en el ambiente don<strong>de</strong> se este trabajando.Si se esta trabajando en modo texto, emacs arrancara con lo que se <strong>de</strong>nomina entorno <strong>de</strong> pantalla completa, es<strong>de</strong>cir se llena toda la pantalla.Si se ejecuta emacs en el entorno X, este lo enten<strong>de</strong>rá y arrancará la versión <strong>de</strong> Xen lugar <strong>de</strong> la <strong>de</strong> texto.Versión X <strong>de</strong> Emacs: Por supuesto que si se quiere ejecutar la versión <strong>de</strong> texto en un entorno como X uno pue<strong>de</strong>hacerlo, para ello basta con ejecutar emacs con los modificadores -nw (NO WINDOWS).[shrek@pantano:~]$ emacs -nwAhora bien, si lo ejecutamos con un nombre <strong>de</strong> archivo como argumento resultara <strong>de</strong> la misma forma que con eleditor vi, si el archivo existe se abrirá para ser editado, si no se creará uno nuevo. En el entorno gráfico se podrácontar con una serie <strong>de</strong> menús <strong>de</strong>splegables al igual que otros programas <strong>de</strong> X y así será más fácil llegar a lasopciones, y por ello solo trataremos <strong>de</strong> ver las opciones que se tienen, no todas, para ser usadas en un entorno <strong>de</strong>texto y luego podrán ser empleadas ya conociendo su funcionamiento en cualquiera <strong>de</strong> los dos entornos.Para po<strong>de</strong>r usar los menú en modo texto, si presionamos la tecla F10 tendremos bajo la pantalla <strong>de</strong> edición losnombres <strong>de</strong> cada uno <strong>de</strong> los menús y al elegirlos y presionar Enter entraremos en su contenido y en las diversasor<strong>de</strong>nes que tienen. Con F1 entraremos al modo <strong>de</strong> ayuda don<strong>de</strong> tendremos una reseña <strong>de</strong> los comandos <strong>de</strong>Emcas Ventana <strong>de</strong> ayuda Para salir <strong>de</strong> este cuadro bastara con presionar 3 veces la tecla Esc.Al comenzar, emacs esta en lo que se <strong>de</strong>nomina modo "fundamental" que es uno <strong>de</strong> los modos en los que pue<strong>de</strong>encontrarse <strong>de</strong>pendiendo <strong>de</strong>l tipo <strong>de</strong> trabajo que se esta haciendo, <strong>de</strong>terminando esto el comportamiento básico<strong>de</strong>l programa. Los otros modos sirven para efectuar las distintas tareas antes mencionadas como el leer correo,la edición <strong>de</strong> HTML y compilación <strong>de</strong> lenguaje C. La forma <strong>de</strong> saber en que modo se encuentra, es leyendo lalínea <strong>de</strong> estado.Para movernos <strong>de</strong>ntro <strong>de</strong>l documento tenemos as facilida<strong>de</strong>s <strong>de</strong> las teclas <strong>de</strong> cursor o bien diciéndole haciadon<strong>de</strong> tiene que ir el curso mediante un comando. Por ejemplo si quisiera ir hacia a<strong>de</strong>lante palabra a palabrateclearíamos Esc-f (f <strong>de</strong> forward) y nos iremos moviendo <strong>de</strong> esa manera. A modo inverso teclearemos Esc-bpara ir hacia atrás. Para moverse hacia arriba y hacia abajo podremos hacerlo por medio <strong>de</strong> Ctrl-v para ir unapantalla a<strong>de</strong>lante y Esc-v para ir una pantalla hacia atrás. Solo se tendrá que recordar que para ingresar uncomando que comienza con la tecla Shift, antes <strong>de</strong>beremos presionar la tecla Esc. A continuación mostraremosuna tabla básica <strong>de</strong> movimientos para emacs.Tabla 1. Reseña <strong>de</strong> teclas en emacs para movimientoCaracterCtrl-bCtrl-fEsc-bEsc-fCtrl-pCtrl-nCtrl-aCtrl-eCtrl-vEsc-vAcciónSe mueve atrás un caracterSe mueve a<strong>de</strong>lante un caracterSe mueve atrás una palabraSe mueve a<strong>de</strong>lante una palabraSe mueve a la línea anteriorSe mueve a la línea siguienteSe mueve al inicio <strong>de</strong> la líneaSe mueve al final <strong>de</strong> la líneaSe mueve hacia a<strong>de</strong>lante una pantallaSe mueve hacia atrás una pantalla


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html10 <strong>de</strong> 11 07/09/2005 8:02CaracterEsc->Esc-


Programas <strong>de</strong> edición <strong>de</strong> consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html11 <strong>de</strong> 11 07/09/2005 8:02CaracterCtrl-sCtrl-rEsc-oEspacio-oCtrl-gDelEsc-%Shift-xAcciónBusca hacia a<strong>de</strong>lante en forma incrementalBusca hacia atrás en forma incrementalTermina la búsquedaReemplaza la ca<strong>de</strong>na preguntando antes <strong>de</strong> hacerloCancela la búsqueda y regresa al inicioPara borrar un caracter incorrecto en la ca<strong>de</strong>na <strong>de</strong>búsquedaSe ingresa la ca<strong>de</strong>na a buscar y el reemplazoCambia todas la ocurrencias <strong>de</strong>l documentoExiste muchas funciones más y queda para el lector si es <strong>de</strong> su interés el estudio <strong>de</strong>l lenguaje incorporado LISPpar la generación <strong>de</strong> funciones y macros que serán <strong>de</strong> mucha ayuda para usar este editor.Notas[1]En los teclados españoles, el símbolo <strong>de</strong> til<strong>de</strong> (~) suele obtenerse presionando AltGr-4Anterior Inicio SiguienteEscritura <strong>de</strong> scripts <strong>de</strong> shell Conceptos <strong>de</strong> editores fuera <strong>de</strong> línea


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html1 <strong>de</strong> 6 07/09/2005 8:02Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEscritura <strong>de</strong> scripts <strong>de</strong> shellHemos llegado a un punto don<strong>de</strong> po<strong>de</strong>mos realizar tareas más complejas a partir <strong>de</strong> los comandosaprendidos y es aquí don<strong>de</strong> radica el po<strong>de</strong>r <strong>de</strong>l intérprete <strong>de</strong> comandos bash. Como veremos acontinuación, el intérprete <strong>de</strong> comandos es un po<strong>de</strong>roso lenguaje para realizar script que permitan unirvarios comandos para realizar una tarea un poco más compleja (y es el este el po<strong>de</strong>r principal <strong>de</strong> todoUn*x). El único requisito es tener nociones básicas <strong>de</strong> programación para po<strong>de</strong>r sacar todo el provechoposible <strong>de</strong> esta característica <strong>de</strong>l intérprete <strong>de</strong> comandos. En todo caso, con un poco <strong>de</strong> práctica y un buensentido <strong>de</strong> la lógica se podrán hacer también script po<strong>de</strong>rosos para <strong>de</strong>sarrollar las tareas que requerimos.Deberemos saber también que con la ayuda solamente <strong>de</strong> la conjunción <strong>de</strong> comandos no podremos hacerscript verda<strong>de</strong>ramente interesantes. Por esto se incorporan las construcciones <strong>de</strong> shell. Estas son lasconstrucciones while, for-in, if-then-fi y case-esac. Existen muchas más pero estas serán las másútiles para nosotros en estos momentos. Para mayor información sobre otro tipo <strong>de</strong> construcciones seriamejor revisar las páginas <strong>de</strong> manual <strong>de</strong>l intérprete <strong>de</strong> comandos bash (man bash).Empezaremos viendo un uso sencillo <strong>de</strong> la construcción for-in que tiene la siguiente sintaxisfor var in word1 word2docommandosdonePara po<strong>de</strong>r usar esto, podríamos realizar una lista <strong>de</strong> directorios que querramos nosotros <strong>de</strong> una sola vezfor dir in /bin /etc /libdols -R $dirdoneEsto hará un listado recursivo 3 veces. La primera vez que pase por el ciclo, la variable $dir tomará elvalor /bin, la segunda será /etc y la tercera /lib.Podríamos prescindir <strong>de</strong>l par do-done con el uso <strong>de</strong> llaves ({})for dir in /bin /etc /lib{ls -R $dir}Ya hemos visto anteriormente la i<strong>de</strong>a <strong>de</strong> argumentos en la utilización <strong>de</strong> comandos y programas; pero<strong>de</strong>beremos ver como se realiza la codificación <strong>de</strong> un script para tomar estos argumentos. Como antesdijimos, los argumentos eran pasados a los programas para que estos lo utilizaran. En la construcción <strong>de</strong>script veremos lo que se llaman variables posicionales cuyo valor correspon<strong>de</strong> a la posición <strong>de</strong>largumento luego <strong>de</strong>l nombre <strong>de</strong>l script. Supongamos que tenemos un script que toma 3 argumentos. Elprimero será el nombre <strong>de</strong> un directorio, el segundo el nombre <strong>de</strong> un archivo y el tercero es una palabra abuscar. Este script buscará en todos los archivos <strong>de</strong>l directorio, cuyo nombre incluya el nombre <strong>de</strong>archivo que le pasamos como argumento, la palabra que también le estamos pasando. El script se llamara


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html2 <strong>de</strong> 6 07/09/2005 8:02miscript y estará compuesto <strong>de</strong>l siguiente códigols $1 | grep $2 | while read ARCHIVOdogrep $3 ${1}/${ARCHIVO}doneLa sintaxis serámiscript [directorio] [nombre_archivo] [palabra]Aquí tenemos varias cosas para ver. Primero que nada, el uso <strong>de</strong> las variables posicionales. Como sepodrá apreciar el número <strong>de</strong> la variable, que esta precedido por un signo $, indica la posición <strong>de</strong>largumento cuando el script es llamado. Solamente se podrán usar 9 variables <strong>de</strong> este tipo sin tener queemplear un pequeño truco <strong>de</strong> corrimiento que veremos luego, dado que el 0 representa al nombre <strong>de</strong>lscript mismo. Es <strong>de</strong>cir que en este caso la variable posicional $0 valdrá "miscript". Como se pue<strong>de</strong> ver sehan utilizado canalizaciones para poner más <strong>de</strong> un comando junto. Al final <strong>de</strong> la construcción se estausando una construcción while. Esta se usa para repetir un ciclo mientras una expresión sea cierta.while ($VARIABLE=valor)docommandosdoneEn este caso esta siendo usada al final <strong>de</strong> una canalización con la instrucción read ARCHIVO. Es <strong>de</strong>cir,mientras pueda leer el contenido <strong>de</strong> la variable $ARCHIVO, continuar. Esta variable $ARCHIVO contiene elresultado <strong>de</strong> lo que arrojo la canalización <strong>de</strong>l listado con la salvedad <strong>de</strong> que tenia que contener la palabraque le enviamos como argumento, es así que solo se imprimirán las líneas en las que coincida la palabra abuscar <strong>de</strong> los archivos que cumplan con los requisitos.Otra cosa a tener en cuenta es una nueva construcción en este script, ${1}/${ARCHIVO}. Al encerrar unnombre <strong>de</strong> variable <strong>de</strong>ntro <strong>de</strong> llaves po<strong>de</strong>mos combinarlas. En este caso forman el nombre <strong>de</strong>l directorio(${1}) y añadimos una / como separador <strong>de</strong>l directorio, y seguido e nombre <strong>de</strong>l archivo don<strong>de</strong> se aplicarael comando grep con la palabra a buscar $3.Podríamos hacer que este script sea un poco más documentado. Para esto podríamos asignar las variablesposicionales a otras variables para que se pueda enten<strong>de</strong>r mejor su uso.DIRECTORIO=$1ARCHIVO_BUS=$2PALABRA=$3ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep $PALABRA ${DIRECTRIO}/${ARCHIVO}doneEl número <strong>de</strong> las variables posicionales que pue<strong>de</strong>n usarse en un script, como antes dijimos, se encuentrarestringido a 10. ¿Qué pasaría si tenemos más <strong>de</strong> 9 argumentos? Es aquí don<strong>de</strong> tenemos que usar lainstrucción shift. Esta instrucción mueve los argumentos hacia abajo en la lista <strong>de</strong> parámetrosposicionales. De esta manera podríamos tener una construcción con esta distribución <strong>de</strong> variables


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html3 <strong>de</strong> 6 07/09/2005 8:02DIRECTORIO=$1shiftARCHIVO_BUS=$1De esta manera podríamos asignar el valor <strong>de</strong> la primer variable posicional a la variable DIRECTORIO yluego el siguiente argumento que habíamos dado se tomara otra vez con el nombre <strong>de</strong> $1. Esto solo tienesentido si asignamos las variables posicionales a otra variable. Si tuviéramos 10 argumentos, el décimo noestaría disponible. Sin embargo, una vez que hacemos el que las variables se corran <strong>de</strong> posición este seconvertirá en el noveno y se acce<strong>de</strong>rá por la variable posicional $9. Existe una forma también <strong>de</strong> pasarcomo argumento a la instrucción shift el número <strong>de</strong> posiciones que queremos correr. Por lo cual po<strong>de</strong>mosusarshift 9y así se lograra que el décimo argumento sea el parámetro posicional 1.Lo que ocurre con los anteriores 9 argumentos es que <strong>de</strong>saparecen si no se los asigno a una variableanteriormente. Podremos cambiar usar un nuevo parámetro que podrá contener mas <strong>de</strong> un parámetropasado al script. Este se <strong>de</strong>nomina $* y contendrá el resto <strong>de</strong> los argumentos que se pasen al script luego<strong>de</strong> que se haya realizado un corrimiento <strong>de</strong>terminado. Por ejemplo, si quisiera buscar una frase en lugar<strong>de</strong> una única palabra el script podría serDIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneLo que aquí cambio es que luego <strong>de</strong> haber asignado a variables los parámetros posicionales 1 y 2 lasvariables fueron <strong>de</strong>splazadas dos veces, eliminando los dos primeros argumentos. Luego asignamos losargumentos restantes a la variable PALABRAS. Para que sea tomado como una ca<strong>de</strong>na, se lo encerró entrecomillas para ser pasado al comando grep, si no lo hiciéramos el bash vería nuestra entrada comoargumentos individuales para pasar al grep.Otro parámetro que es <strong>de</strong> utilidad es el $# que lleva la cuenta <strong>de</strong> la cantidad <strong>de</strong> argumentos pasados alscript. De esta forma podríamos realizar un script que i<strong>de</strong>ntificara si se le están pasando la cantidad <strong>de</strong>parámetros que realmente necesita y anunciar el error si faltaran estos. Para ello utilizaremos laconstrucción if-then-fi que es muy parecida a la while-do-done, en don<strong>de</strong> el par if-fi marca el final<strong>de</strong> un bloque. La diferencia entre estas construcciones es que el if solo evaluara una vez la condición. Lasintaxis es la siguienteif [ condición ]thenhacer_algofiLas condiciones que pue<strong>de</strong> usarse se encuentran en las man page test (man test). Nosotros usaremos unasimple condición para contar argumentos, pero pue<strong>de</strong>n ser usadas distintas condiciones como nombres <strong>de</strong>archivos, permisos, si son o no directorios, etc. Para saber si la cantidad <strong>de</strong> argumentos que se nos a


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html4 <strong>de</strong> 6 07/09/2005 8:02pasado en el script es correcta, utilizaremos una opción aritmética que compare la cantidad <strong>de</strong> argumentospasados ($#) con un número que nosotros estipularemos, en este caso 3. Pue<strong>de</strong>n usarse diferentesopciones con el formato arg1 OP arg2, don<strong>de</strong> OP será alguno <strong>de</strong> los siguientes-eq-ne-lt-le-gt-gees igualno es igualmenor quemenor que o igualmayor quemayor que o igualSe usará en este caso el -ge (mayor o igual que) dado que si la cantidad <strong>de</strong> argumentos que siguen alsegundo es mayor la tomaremos como una frase a buscar y si es igual como una palabra. Lo único queharemos en caso <strong>de</strong> que la cantidad <strong>de</strong> argumentos sea menor, será informar <strong>de</strong> esto y <strong>de</strong> la forma <strong>de</strong> usarel script.DIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*if [ $# -ge 3 ]thenls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneelseecho "Número <strong>de</strong> argumentos insuficientes"echo "Use: $0 "fiOtra utilidad para <strong>de</strong>l if, es la posibilidad <strong>de</strong> realizar lo que se <strong>de</strong>nomina if anidados. De esta formapodríamos tener varias capas <strong>de</strong> if-then-else-fi. Como ejemplo podría ser esta una construcción válidaif [ $condicion1 = "true" ]thenif [ $condicion2 = "true" ]thenif [ $condicion3 = "true" ]thenecho "las condiciones 1, 2 y 3 son ciertas"elseecho "solo son ciertas las condiciones 1 y 2"fielseecho "condición 1 es cierta, pero no la 2"fielseecho "la condición 1 no es cierta"fiPodríamos también hacer que una sola variable tome diferente valores e interactuar con ella para ver si secumple la condición buscada. De esta forma podríamos por ejemplo hacer un menú <strong>de</strong> usuario condistintas alternativas. Pero esta forma es útil solo para pocas condiciones. ¿Que pasaría si tuviéramosmuchas condiciones mas que agregar? Se nos haría por <strong>de</strong>más <strong>de</strong> complicado seguir el esquema armado ysería <strong>de</strong>masiado código para lo que se trata <strong>de</strong> realizar. Es aquí es don<strong>de</strong> se necesita la estructuracase-esac. Como se podrá ver, al igual que en el if-fi aquí el inverso <strong>de</strong> case (esac) cierra laconstrucción. Veamos un ejemplo <strong>de</strong> una construcción con case


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html5 <strong>de</strong> 6 07/09/2005 8:02read ELECCIONcase $ELECCION ina) programa1;;b) programa2;;c) programa3;;*) echo "No eligió ninguna opción valida";;esacHay que tener en cuenta algunas cosas respecto a este tipo <strong>de</strong> construcción. Por ejemplo el mandato que ledamos al principio read indica al bash que tiene que leer lo que se ingrese a continuación y lo guar<strong>de</strong> enuna variable que se llamara ELECCION. Esto también será útil para el uso <strong>de</strong> otras construcciones ya que elread no es propiedad exclusiva <strong>de</strong> la construcción esac, sino que pertenece al mismo bash. Como se ve,se le indica que si el valor que la variable contiene es igual a alguna <strong>de</strong> las mostradas <strong>de</strong>bajo se ejecute<strong>de</strong>terminado programa. (case $ELECCION in). La elección se <strong>de</strong>be terminar con un paréntesis ")" paraque se cierre las posibilida<strong>de</strong>s. Podríamos poner más posibilida<strong>de</strong>s para cada elección; lo único que hayque recordar es cerrar con un paréntesis. El punto y coma nos marca el final <strong>de</strong> un bloque, por lo quepodríamos agregar otro comando y se cerrara con punto y coma doble al último. El asterisco <strong>de</strong>l final nosindica que se hará en caso <strong>de</strong> que no coincida lo ingresado con ninguna <strong>de</strong> las posibilida<strong>de</strong>s. Un ejemplo,sería que nuestra construcción reconozca mayúsculas y minúsculas y a<strong>de</strong>más ejecute más <strong>de</strong> un comandopor bloque.read ELECCIONcase $ELECCION ina|A)programa1programa2programa3;;b|B)programa4programa5;;c|C)programa3;;*)echo "No eligió ninguna opción valida";;esacTambién se podría haber incluído un rango <strong>de</strong> posibilida<strong>de</strong>secho "Ingrese un caracter: "read ELECCIONcase $ELECCION in[1-9]) echo "Usted ingreso un número";;[a-z]) echo "Usted ingreso una letra minúscula";;[A-Z]) echo "Usted ingreso una letra mayúscula";;esacHay que recordar que todos estos script podrán estar en un archivo, pero para que se ejecuten se le <strong>de</strong>beráprimero dar los permisos pertinentes. Un par <strong>de</strong> cosas a tener en cuenta para la construcción <strong>de</strong> script sonla forma en que se quiere que ejecute éste y la captura <strong>de</strong> teclas. Al ejecutarse un script <strong>de</strong> shell, se estarácreando un bash hijo que lo ejecutará. Dado que las variables y funciones pertenecen al intérprete <strong>de</strong>comandos que las creó, al finalizar el script el proceso hijo <strong>de</strong>l bash morirá y con el todos los seteos <strong>de</strong>variables y funciones. Por esto, si se quisiera que los cambios <strong>de</strong> las variables y las funciones que se<strong>de</strong>finieron permanezcan para ser utilizables una vez que el script haya terminado, se <strong>de</strong>berá comenzar aejecutar el script con un punto "." seguido por un espacio antes <strong>de</strong>l nombre <strong>de</strong> éste. De esta forma elproceso <strong>de</strong>l intérprete <strong>de</strong> comando actual sera quien ejecute el script con lo que se conservaran todas lasvariables y funciones.


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html6 <strong>de</strong> 6 07/09/2005 8:02[shrek@pantano:~]$ . miscriptUn script pue<strong>de</strong> <strong>de</strong>jar cosas sueltas antes <strong>de</strong> terminar si éste es finalizado bruscamente enviándole unaseñal <strong>de</strong> finalización [1] ya sea con la combinación <strong>de</strong> teclas Ctrl-C o con un kill -15. Para esto se<strong>de</strong>berán capturar estas señales para po<strong>de</strong>r hacer una limpieza, ya se <strong>de</strong> variables o archivos, antes <strong>de</strong>finalizar. La forma <strong>de</strong> hacerlo es con el uso <strong>de</strong>l comando trap; <strong>de</strong> esta forma se capturará la señal que sele envíe al script y se podrá ya sea ignorar la misma o ejecutar otro comando <strong>de</strong> limpieza. Para <strong>de</strong>mostraresto haremos un pequeño script que servirá <strong>de</strong> menú. La llamada al script <strong>de</strong>l menú podría estar en elarchivo .profile <strong>de</strong>l usuario o en el .bash_profile. Si lo que no queremos es que el usuario salga <strong>de</strong>lscript con usando la combinación <strong>de</strong> teclas Ctrl-C, lo que haremos es capturar la señal y hacer que seejecute nuevamente el script que se llamará simplemente menu.trap './menu' 2while :doecho 'a) Listado <strong>de</strong> archivos'echo 'b) Día y hora actual'echo 'c) Mes actual'echo 'Seleccione: 'read ELECCIONcase $ELECCION ina|A) ls;;b|B) date;;c|C) cal;;*) echo "No eligió ninguna opción valida";;esacdoneComo se ve al principio <strong>de</strong>l script se utiliza el comando trap que al captura la señal 2 (SIGINT) queproduce el Ctrl-C relanza el script. Al final <strong>de</strong>l script se ve que se llama nuevamente dado que alejecutarse el comando <strong>de</strong> cada elección se quiere que el menú siga funcionando. Practicar con estasconstrucciones será <strong>de</strong> gran ayuda para enten<strong>de</strong>r el proceso <strong>de</strong> construcción <strong>de</strong> script y los preparara parascript más complejos usando otros interpretes como el sed, awk y el lenguaje perl. Para mayorinformación respecto a la construcción <strong>de</strong> script, remitirse a las páginas <strong>de</strong> manual <strong>de</strong>l intérprete <strong>de</strong>comandos, en este caso man bash.Notas[1]Para saber el nombre y número <strong>de</strong> señales teclear kill -lAnterior Inicio SiguienteTareas y procesos Subir Programas <strong>de</strong> edición <strong>de</strong> consola


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html1 <strong>de</strong> 5 07/09/2005 8:01Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteTareas y procesosEn este punto tendremos que empezar a <strong>de</strong>terminar que es un proceso y una tarea. Anteriormente dijimosque un programa se transformaba en proceso en el momento en que este se ejecutaba y estaba enmemoria. A<strong>de</strong>más <strong>de</strong>l nombre que el proceso recibe, que es el nombre <strong>de</strong>l programa que esta corriendo,recibe también un número i<strong>de</strong>ntificativo llamado PID (process ID, o ID <strong>de</strong> proceso). Si ejecutamos elcomando ps veremos los procesos que están ejecutando en este momento con nuestro UID, es <strong>de</strong>cir queestamos corriendo nosotros mismos[shrek@pantano:~]$ psPID TTY STAT TIME COMMAND172 p0 S 0:00 -bash184 p0 R 0:00 ps[shrek@pantano:~]$Se pue<strong>de</strong> ver que están corriendo dos procesos, el bash (que es el intérprete <strong>de</strong> comandos) y el proceso psque es el que estamos usando en este momento en una terminal <strong>de</strong>terminada. Como se pue<strong>de</strong> ver el primernúmero es el PID que el sistema le asigna al proceso y en la columna COMMAND se pue<strong>de</strong> ver elnombre <strong>de</strong>l proceso. De ninguna manera estos son todos los procesos que se están ejecutando en elsistema. Si se quisieran ver todos los procesos tendrían que poner ps -ax con lo que obtendrían un listadocon todos los procesos que se estén ejecutando. Como se pue<strong>de</strong> apreciar, están ambos procesosejecutándose al mismo tiempo, pero solo uno <strong>de</strong> ellos esta activo, el comando ps. Nos po<strong>de</strong>mos darcuenta <strong>de</strong> esto ya que en la columna STAT aparece en la línea <strong>de</strong>l bash la letra S <strong>de</strong> SLEEP, ya que enese momento el intérprete <strong>de</strong> comandos esta esperando a que el proceso ps termine. Y es aquí don<strong>de</strong> estala diferencia entre proceso y tarea. Aunque ambos son procesos, una tarea se refiere al proceso que estacorriendo. Este calificativo solo lo da el shell <strong>de</strong>l sistema cuando se utilizan los controles <strong>de</strong> tareas dadoque no todos los intérpretes <strong>de</strong> comandos soportan este tipo <strong>de</strong> control.Primer y segundo planoCualquier proceso pue<strong>de</strong> estar en primer o segundo plano. Lo único a tener en cuenta es que solo unproceso estará en primer plano al mismo tiempo y es con el que estemos trabajando e interactuando en esemomento. Un proceso que este en segundo plano no recibirá ninguna señal <strong>de</strong> parte nuestra, es <strong>de</strong>cir queno nos po<strong>de</strong>mos comunicar con él a través, por ejemplo, <strong>de</strong>l teclado. La utilidad <strong>de</strong> enviar un programa asegundo plano esta dada por el hecho <strong>de</strong> que existen tareas que no requieren <strong>de</strong> nuestro control para quese ejecuten. Por ejemplo, bajar algún archivo <strong>de</strong> Internet, compilar el kernel u otro programa. Estas sontareas que pue<strong>de</strong>n ser lanzadas tranquilamente en segundo plano. Para lanzar un proceso en segundoplano, tendremos que poner a continuación <strong>de</strong>l comando el símbolo &. Para ejemplificar esto usaremos elcomando find y <strong>de</strong>jaremos que busque todos los archivos que existen en el disco[shrek@pantano:~]$ find / -name "*"Esto nos mostraría una lista bastante larga <strong>de</strong> archivos por pantalla y nos quedaríamos sin el control <strong>de</strong>lintérprete <strong>de</strong> comandos mientras esta ejecutándose. Podríamos usar el dispositivo null, que si recuerdanera como un agujero negro don<strong>de</strong> todo lo que se enviaba a él <strong>de</strong>saparecía, para redirigir la salida y que nosaliera por pantalla


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html2 <strong>de</strong> 5 07/09/2005 8:01[shrek@pantano~]$ find / -name "*" > /<strong>de</strong>v/nullIgualmente así no contaríamos con la atención <strong>de</strong> nuestro interprete <strong>de</strong> comandos hasta que terminara eltrabajo el comando find. La forma <strong>de</strong> tener la atención <strong>de</strong>l shell inmediatamente <strong>de</strong>spués <strong>de</strong> lanzar elproceso find es enviándolo en segundo plano[shrek@pantano:~]$ find / -name "*" > /<strong>de</strong>v/null &[1] 192[shrek@pantano:~]$Como se aprecia, regresó <strong>de</strong> inmediato al shell, pero antes envió un mensaje a la terminal. El [1]representa a un número <strong>de</strong> trabajo que el shell asigna a cada uno <strong>de</strong> los procesos que pasa a segundoplano. Inmediatamente <strong>de</strong>spués vemos el número <strong>de</strong> PID <strong>de</strong>l proceso. Podremos i<strong>de</strong>ntificar al proceso porcualquiera <strong>de</strong> los dos números mientras se encuentre en segundo plano. Para ver cuantos trabajos estánejecutándose en este momento po<strong>de</strong>mos usar el comando jobs.[shrek@pantano:~]$ jobs[1]+ Running find / -name "*" >/<strong>de</strong>v/null &[shrek@pantano:~]$Podremos eliminar un proceso que se esta ejecutando con la ayuda <strong>de</strong>l comando kill seguido bien sea <strong>de</strong>lnúmero <strong>de</strong> trabajo precedido <strong>de</strong> un signo % o <strong>de</strong>l número <strong>de</strong> PID. De esta forma estamos matando alproceso pero pue<strong>de</strong> darse el caso <strong>de</strong> que este tar<strong>de</strong> en <strong>de</strong>saparecer dado que tiene que limpiar el entorno,por esto muchas veces parecerá que no nos a hecho caso. En realidad el proceso esta haciendo unalimpieza <strong>de</strong>l sistema evitando así el mal funcionamiento <strong>de</strong>l mismo y/o una inconsistencia en los datoscon que trabajaba. Como ejemplo usaremos otro comando muy típico, el comando yes. Este comandoenviará a la salida estándar continuamente la letra y. Sirve este comando para que en caso <strong>de</strong> que serequiera contestar afirmativamente a las peticiones <strong>de</strong> un programa pudiéremos mediante una redireccióncontestarle con un y a cada pregunta. Si lo ejecutáramos sin redirigir la salida a /<strong>de</strong>v/null, nos llenaría lapantalla con una columna infinita <strong>de</strong> y. Por esto lo enviaremos a segundo plano redirigiendo la salida yluego lo mataremos con el comando kill.[shrek@pantano:~]$ yes > /<strong>de</strong>v/null &[1] 201[shrek@pantano:~]$ kill %1[shrek@pantano:~]$ jobs[1]+ Terminated yes > /<strong>de</strong>v/null &[shrek@pantano:~]$Como podrán ver, en el momento en que se mando el comando kill, no hubo ningún mensaje. Solo<strong>de</strong>spués <strong>de</strong> ejecutar el comando jobs se nos informo que el trabajo número 1 había finalizado(TERMINATED). Po<strong>de</strong>mos también hacer lo mismo empleando el número <strong>de</strong> PID con lo queobtendremos idénticos resultados.[shrek@pantano:~]$ kill 201Como parar y relanzar tareasLos procesos pue<strong>de</strong>n ser suspendidos temporalmente hasta que nosotros dispongamos, para asírelanzarlos y que continúen ejecutando don<strong>de</strong> se habían quedado. Esto es <strong>de</strong> gran utilidad. Supongamos


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html3 <strong>de</strong> 5 07/09/2005 8:01que se esta trabajando con el editor <strong>de</strong> texto Vi y no queremos trabajar en otra consola, solo tenemos queenviar al programa Vi a dormir un rato y tendremos el intérprete <strong>de</strong> comandos a nuestra disposición. En lamayoría <strong>de</strong> los programas, se envía una señal <strong>de</strong> terminación utilizando las teclas Ctrl-C, para po<strong>de</strong>renviar un trabajo a dormir utilizaremos otra combinación <strong>de</strong> teclas Ctrl-Z. Hay que tener en cuenta queno es lo mismo un trabajo en segundo plano que uno que es enviado a dormir. Un trabajo en segundoplano sigue ejecutándose, en cambio uno que se envía a dormir queda esperando en el lugar don<strong>de</strong> estabahasta que sea <strong>de</strong>spertado. Para ejemplificar esto, enviaremos al comando yes a segundo plano y luego lopondremos a dormir.[shrek@pantano:~]$ yes >/<strong>de</strong>v/null &[shrek@pantano:~]$ yes >/<strong>de</strong>v/nullAhora presionamos Ctrl-Z[shrek@pantano:~]$ yes >/<strong>de</strong>v/null &[shrek@pantano:~]$ yes >/<strong>de</strong>v/null[2]+ Stopped yes >/<strong>de</strong>v/null[shrek@pantano:~]$ jobs[1]- Running yes >/<strong>de</strong>v/null &[2]+ Stopped yes >/<strong>de</strong>v/nullComo pue<strong>de</strong>n ver, el proceso que se envió a segundo plano todavía se esta ejecutando (Running), encambio la que se mando dormir estaparada esperando que la relancemos (Stopped). Para ponerlo enprimerplano o <strong>de</strong>spertarlo a cualquiera <strong>de</strong> los dos po<strong>de</strong>mos usar el signo "%"seguido <strong>de</strong>l número <strong>de</strong>lproceso o bien el comando fg.[shrek@pantano:~]$ %1yes >/<strong>de</strong>v/null &Ahora presionamos Ctrl-Z[shrek@pantano:~]$ fg %1yes >/<strong>de</strong>v/nullPodremos enviar también un comando que esta durmiendo a que ejecute en segundo plano a través <strong>de</strong>lcomando bg[shrek@pantano:~]$ jobs[1]- Stopped yes >/<strong>de</strong>v/null[shrek@pantano:~]$ bg %1[1]+ yes >/<strong>de</strong>v/null &[shrek@pantano:~]$ jobs[1]+ Running yes >/<strong>de</strong>v/null &Cabe <strong>de</strong>cir que tanto fg como bg son comandos internos <strong>de</strong>l intérprete <strong>de</strong> comando. Esto es así porque esel mismo intérprete quien hace el control <strong>de</strong> tareas. Pue<strong>de</strong> darse el caso <strong>de</strong> que existan intérpretes <strong>de</strong>comandos que no tengan soporte para control <strong>de</strong> tareas.Programas <strong>de</strong> seguimiento (ps y top)Los sistemas GNU/Linux cuentan varios programas para efectuar el seguimiento <strong>de</strong> los procesos que se


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html4 <strong>de</strong> 5 07/09/2005 8:01están ejecutando en el sistema. Entre los mas usados en la interfase <strong>de</strong> texto están los programas ps y top.psSin ninguna opción dará la lista <strong>de</strong> procesos que están corriendo <strong>de</strong>s<strong>de</strong> la terminal don<strong>de</strong> se ejecuto el ps[shrek@pantano:~]$ psPID TTYTIME CMD9648 tty2 00:00:02 bash9659 tty2 00:00:00 ps[shrek@pantano:~]$Las columnas que nos quedan por explicar son TTY y TIME. TTY i<strong>de</strong>ntifica la consola don<strong>de</strong> se estaejecutando el proceso. En este caso es una terminal local. La columna TIME nos indica la cantidad <strong>de</strong>tiempo total que el proceso se ha estado ejecutando. Como se pue<strong>de</strong> ver el tiempo es <strong>de</strong> 2 segundos.Aunque este horas el sistema encendido, el bash pasa su mayor parte <strong>de</strong>l tiempo esperando que se leenvie algún comando para ejecutar, mientras tanto esta esperando dormido. Pue<strong>de</strong> verse en la columnaSTAT en que estado se encuentra el programa. Por ejemplo, que vemos que el bash en el momento <strong>de</strong>ejecutarse el comando ps esta dormido (S) y que el proceso ps esta activo (R). Si añadimos la opción ltendremos un listado largo <strong>de</strong>l comando ps. En algunas versiones se usa la opción -l[shrek@pantano:~]$ ps lF UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND4 100 9648 1 9 0 4368 1400 11b1d0 S tty2 0:01 -bash4 100 9660 9648 17 0 2676 732 - R tty2 0:00 ps lDentro <strong>de</strong> esta información esta la columna <strong>de</strong>l UID que i<strong>de</strong>ntifica el dueño <strong>de</strong>l proceso. El PID <strong>de</strong>lproceso y también el PPID que es el PID <strong>de</strong>l proceso padre. Po<strong>de</strong>mos apreciar que el padre <strong>de</strong>l comandops l es el -bash. NI viene <strong>de</strong> nice y es un nivel que se otorga a un proceso para requerir cierto privilegio.En este caso tiene uno muy bajo por en<strong>de</strong> un proceso que tenga un valor mayor tendrá más tiempo <strong>de</strong>procesador para trabajar. SIZE es el tamaño que tiene el proceso. RSS es la tamaño <strong>de</strong>l proceso que seencuentra resi<strong>de</strong>nte en la memoria. WCHAN es el nombre <strong>de</strong> la función <strong>de</strong>l kernel don<strong>de</strong> el proceso estadurmiendo. Esta expresado en forma hexa<strong>de</strong>cimal.Otra forma en la que po<strong>de</strong>mos ver el padre <strong>de</strong> cada proceso es a través <strong>de</strong>l modificador f.[shrek@pantano:~]$ ps fPID TTY STAT TIME COMMAND9648 tty2 S 0:02 -bash9660 tty2 R 0:00 \_ps f[shrek@pantano~]$Aquí se pue<strong>de</strong> ver que el comando ps f <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l -bash.topAhora bien, el comando ps nos muestra una radiografía <strong>de</strong> los procesos en el momento, pero no nosmuestra los cambios que se van teniendo. Para esto contamos con el comando top. El mismo muestra entiempo real la situación <strong>de</strong> los procesos que se están ejecutando en el sistema, or<strong>de</strong>nados por <strong>de</strong>fectosegún el porcentaje la CPU que estén usando. Al ejecutarlo se podrá ver otra información adicional, comola cantidad <strong>de</strong> usuarios que están en el sistema, cuantos procesos están corriendo y <strong>de</strong> estos cuantos estasactivos, cuantos durmiendo, cuantos en proceso <strong>de</strong> terminar (ZOMBIE) y cuantos finalizados. A<strong>de</strong>más sepodrá ver la cantidad e memoria física total, la cantidad usada y la cantidad libre; así como también se


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html5 <strong>de</strong> 5 07/09/2005 8:01podrá obtener la misma información <strong>de</strong> la memoria swap.Lo más importante es que esta información <strong>de</strong> ira actualizando automáticamente cada tanto tiempo, por<strong>de</strong>fecto 5 segundos, y que podremos ir alterando lo que va mostrando. Por ejemplo po<strong>de</strong>mos hacer queor<strong>de</strong>ne los procesos <strong>de</strong> acuerdo a la cantidad <strong>de</strong> memoria que esta usando con solo presionar la tecla M. Uor<strong>de</strong>narlos <strong>de</strong> acuerdo al tiempo que llevan corriendo. Otra utilidad es que podríamos matar algún procesocon solo presionar la tecla k y luego darle el número <strong>de</strong> PID.El listado que nos mostrará contendrá el número <strong>de</strong> PID, el usuario que lo está ejecutando, la prioridad<strong>de</strong>l proceso (PRI), el valor nice (NI), el tamaño <strong>de</strong>l proceso (SIZE), el tamaño total <strong>de</strong>l proceso junto conlos datos que maneja (RSS), el tamaño usado por el proceso en la memoria (SHARE), el estado <strong>de</strong>lproceso(STAT), el tamaño <strong>de</strong> las librerías <strong>de</strong>l proceso (LIB), el porcentaje <strong>de</strong> CPU ( %CPU) y <strong>de</strong>memoria (%MEM) así como también el tiempo <strong>de</strong> ejecución (TIME) y el nombre <strong>de</strong>l proceso(COMMAND).Anterior Inicio SiguienteEnlaces <strong>de</strong> archivos Subir Escritura <strong>de</strong> scripts <strong>de</strong> shell


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html1 <strong>de</strong> 6 07/09/2005 8:01Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEscritura <strong>de</strong> scripts <strong>de</strong> shellHemos llegado a un punto don<strong>de</strong> po<strong>de</strong>mos realizar tareas más complejas a partir <strong>de</strong> los comandosaprendidos y es aquí don<strong>de</strong> radica el po<strong>de</strong>r <strong>de</strong>l intérprete <strong>de</strong> comandos bash. Como veremos acontinuación, el intérprete <strong>de</strong> comandos es un po<strong>de</strong>roso lenguaje para realizar script que permitan unirvarios comandos para realizar una tarea un poco más compleja (y es el este el po<strong>de</strong>r principal <strong>de</strong> todoUn*x). El único requisito es tener nociones básicas <strong>de</strong> programación para po<strong>de</strong>r sacar todo el provechoposible <strong>de</strong> esta característica <strong>de</strong>l intérprete <strong>de</strong> comandos. En todo caso, con un poco <strong>de</strong> práctica y un buensentido <strong>de</strong> la lógica se podrán hacer también script po<strong>de</strong>rosos para <strong>de</strong>sarrollar las tareas que requerimos.Deberemos saber también que con la ayuda solamente <strong>de</strong> la conjunción <strong>de</strong> comandos no podremos hacerscript verda<strong>de</strong>ramente interesantes. Por esto se incorporan las construcciones <strong>de</strong> shell. Estas son lasconstrucciones while, for-in, if-then-fi y case-esac. Existen muchas más pero estas serán las másútiles para nosotros en estos momentos. Para mayor información sobre otro tipo <strong>de</strong> construcciones seriamejor revisar las páginas <strong>de</strong> manual <strong>de</strong>l intérprete <strong>de</strong> comandos bash (man bash).Empezaremos viendo un uso sencillo <strong>de</strong> la construcción for-in que tiene la siguiente sintaxisfor var in word1 word2docommandosdonePara po<strong>de</strong>r usar esto, podríamos realizar una lista <strong>de</strong> directorios que querramos nosotros <strong>de</strong> una sola vezfor dir in /bin /etc /libdols -R $dirdoneEsto hará un listado recursivo 3 veces. La primera vez que pase por el ciclo, la variable $dir tomará elvalor /bin, la segunda será /etc y la tercera /lib.Podríamos prescindir <strong>de</strong>l par do-done con el uso <strong>de</strong> llaves ({})for dir in /bin /etc /lib{ls -R $dir}Ya hemos visto anteriormente la i<strong>de</strong>a <strong>de</strong> argumentos en la utilización <strong>de</strong> comandos y programas; pero<strong>de</strong>beremos ver como se realiza la codificación <strong>de</strong> un script para tomar estos argumentos. Como antesdijimos, los argumentos eran pasados a los programas para que estos lo utilizaran. En la construcción <strong>de</strong>script veremos lo que se llaman variables posicionales cuyo valor correspon<strong>de</strong> a la posición <strong>de</strong>largumento luego <strong>de</strong>l nombre <strong>de</strong>l script. Supongamos que tenemos un script que toma 3 argumentos. Elprimero será el nombre <strong>de</strong> un directorio, el segundo el nombre <strong>de</strong> un archivo y el tercero es una palabra abuscar. Este script buscará en todos los archivos <strong>de</strong>l directorio, cuyo nombre incluya el nombre <strong>de</strong>archivo que le pasamos como argumento, la palabra que también le estamos pasando. El script se llamara


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html2 <strong>de</strong> 6 07/09/2005 8:01miscript y estará compuesto <strong>de</strong>l siguiente códigols $1 | grep $2 | while read ARCHIVOdogrep $3 ${1}/${ARCHIVO}doneLa sintaxis serámiscript [directorio] [nombre_archivo] [palabra]Aquí tenemos varias cosas para ver. Primero que nada, el uso <strong>de</strong> las variables posicionales. Como sepodrá apreciar el número <strong>de</strong> la variable, que esta precedido por un signo $, indica la posición <strong>de</strong>largumento cuando el script es llamado. Solamente se podrán usar 9 variables <strong>de</strong> este tipo sin tener queemplear un pequeño truco <strong>de</strong> corrimiento que veremos luego, dado que el 0 representa al nombre <strong>de</strong>lscript mismo. Es <strong>de</strong>cir que en este caso la variable posicional $0 valdrá "miscript". Como se pue<strong>de</strong> ver sehan utilizado canalizaciones para poner más <strong>de</strong> un comando junto. Al final <strong>de</strong> la construcción se estausando una construcción while. Esta se usa para repetir un ciclo mientras una expresión sea cierta.while ($VARIABLE=valor)docommandosdoneEn este caso esta siendo usada al final <strong>de</strong> una canalización con la instrucción read ARCHIVO. Es <strong>de</strong>cir,mientras pueda leer el contenido <strong>de</strong> la variable $ARCHIVO, continuar. Esta variable $ARCHIVO contiene elresultado <strong>de</strong> lo que arrojo la canalización <strong>de</strong>l listado con la salvedad <strong>de</strong> que tenia que contener la palabraque le enviamos como argumento, es así que solo se imprimirán las líneas en las que coincida la palabra abuscar <strong>de</strong> los archivos que cumplan con los requisitos.Otra cosa a tener en cuenta es una nueva construcción en este script, ${1}/${ARCHIVO}. Al encerrar unnombre <strong>de</strong> variable <strong>de</strong>ntro <strong>de</strong> llaves po<strong>de</strong>mos combinarlas. En este caso forman el nombre <strong>de</strong>l directorio(${1}) y añadimos una / como separador <strong>de</strong>l directorio, y seguido e nombre <strong>de</strong>l archivo don<strong>de</strong> se aplicarael comando grep con la palabra a buscar $3.Podríamos hacer que este script sea un poco más documentado. Para esto podríamos asignar las variablesposicionales a otras variables para que se pueda enten<strong>de</strong>r mejor su uso.DIRECTORIO=$1ARCHIVO_BUS=$2PALABRA=$3ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep $PALABRA ${DIRECTRIO}/${ARCHIVO}doneEl número <strong>de</strong> las variables posicionales que pue<strong>de</strong>n usarse en un script, como antes dijimos, se encuentrarestringido a 10. ¿Qué pasaría si tenemos más <strong>de</strong> 9 argumentos? Es aquí don<strong>de</strong> tenemos que usar lainstrucción shift. Esta instrucción mueve los argumentos hacia abajo en la lista <strong>de</strong> parámetrosposicionales. De esta manera podríamos tener una construcción con esta distribución <strong>de</strong> variables


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html3 <strong>de</strong> 6 07/09/2005 8:01DIRECTORIO=$1shiftARCHIVO_BUS=$1De esta manera podríamos asignar el valor <strong>de</strong> la primer variable posicional a la variable DIRECTORIO yluego el siguiente argumento que habíamos dado se tomara otra vez con el nombre <strong>de</strong> $1. Esto solo tienesentido si asignamos las variables posicionales a otra variable. Si tuviéramos 10 argumentos, el décimo noestaría disponible. Sin embargo, una vez que hacemos el que las variables se corran <strong>de</strong> posición este seconvertirá en el noveno y se acce<strong>de</strong>rá por la variable posicional $9. Existe una forma también <strong>de</strong> pasarcomo argumento a la instrucción shift el número <strong>de</strong> posiciones que queremos correr. Por lo cual po<strong>de</strong>mosusarshift 9y así se lograra que el décimo argumento sea el parámetro posicional 1.Lo que ocurre con los anteriores 9 argumentos es que <strong>de</strong>saparecen si no se los asigno a una variableanteriormente. Podremos cambiar usar un nuevo parámetro que podrá contener mas <strong>de</strong> un parámetropasado al script. Este se <strong>de</strong>nomina $* y contendrá el resto <strong>de</strong> los argumentos que se pasen al script luego<strong>de</strong> que se haya realizado un corrimiento <strong>de</strong>terminado. Por ejemplo, si quisiera buscar una frase en lugar<strong>de</strong> una única palabra el script podría serDIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneLo que aquí cambio es que luego <strong>de</strong> haber asignado a variables los parámetros posicionales 1 y 2 lasvariables fueron <strong>de</strong>splazadas dos veces, eliminando los dos primeros argumentos. Luego asignamos losargumentos restantes a la variable PALABRAS. Para que sea tomado como una ca<strong>de</strong>na, se lo encerró entrecomillas para ser pasado al comando grep, si no lo hiciéramos el bash vería nuestra entrada comoargumentos individuales para pasar al grep.Otro parámetro que es <strong>de</strong> utilidad es el $# que lleva la cuenta <strong>de</strong> la cantidad <strong>de</strong> argumentos pasados alscript. De esta forma podríamos realizar un script que i<strong>de</strong>ntificara si se le están pasando la cantidad <strong>de</strong>parámetros que realmente necesita y anunciar el error si faltaran estos. Para ello utilizaremos laconstrucción if-then-fi que es muy parecida a la while-do-done, en don<strong>de</strong> el par if-fi marca el final<strong>de</strong> un bloque. La diferencia entre estas construcciones es que el if solo evaluara una vez la condición. Lasintaxis es la siguienteif [ condición ]thenhacer_algofiLas condiciones que pue<strong>de</strong> usarse se encuentran en las man page test (man test). Nosotros usaremos unasimple condición para contar argumentos, pero pue<strong>de</strong>n ser usadas distintas condiciones como nombres <strong>de</strong>archivos, permisos, si son o no directorios, etc. Para saber si la cantidad <strong>de</strong> argumentos que se nos a


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html4 <strong>de</strong> 6 07/09/2005 8:01pasado en el script es correcta, utilizaremos una opción aritmética que compare la cantidad <strong>de</strong> argumentospasados ($#) con un número que nosotros estipularemos, en este caso 3. Pue<strong>de</strong>n usarse diferentesopciones con el formato arg1 OP arg2, don<strong>de</strong> OP será alguno <strong>de</strong> los siguientes-eq-ne-lt-le-gt-gees igualno es igualmenor quemenor que o igualmayor quemayor que o igualSe usará en este caso el -ge (mayor o igual que) dado que si la cantidad <strong>de</strong> argumentos que siguen alsegundo es mayor la tomaremos como una frase a buscar y si es igual como una palabra. Lo único queharemos en caso <strong>de</strong> que la cantidad <strong>de</strong> argumentos sea menor, será informar <strong>de</strong> esto y <strong>de</strong> la forma <strong>de</strong> usarel script.DIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*if [ $# -ge 3 ]thenls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneelseecho "Número <strong>de</strong> argumentos insuficientes"echo "Use: $0 "fiOtra utilidad para <strong>de</strong>l if, es la posibilidad <strong>de</strong> realizar lo que se <strong>de</strong>nomina if anidados. De esta formapodríamos tener varias capas <strong>de</strong> if-then-else-fi. Como ejemplo podría ser esta una construcción válidaif [ $condicion1 = "true" ]thenif [ $condicion2 = "true" ]thenif [ $condicion3 = "true" ]thenecho "las condiciones 1, 2 y 3 son ciertas"elseecho "solo son ciertas las condiciones 1 y 2"fielseecho "condición 1 es cierta, pero no la 2"fielseecho "la condición 1 no es cierta"fiPodríamos también hacer que una sola variable tome diferente valores e interactuar con ella para ver si secumple la condición buscada. De esta forma podríamos por ejemplo hacer un menú <strong>de</strong> usuario condistintas alternativas. Pero esta forma es útil solo para pocas condiciones. ¿Que pasaría si tuviéramosmuchas condiciones mas que agregar? Se nos haría por <strong>de</strong>más <strong>de</strong> complicado seguir el esquema armado ysería <strong>de</strong>masiado código para lo que se trata <strong>de</strong> realizar. Es aquí es don<strong>de</strong> se necesita la estructuracase-esac. Como se podrá ver, al igual que en el if-fi aquí el inverso <strong>de</strong> case (esac) cierra laconstrucción. Veamos un ejemplo <strong>de</strong> una construcción con case


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html5 <strong>de</strong> 6 07/09/2005 8:01read ELECCIONcase $ELECCION ina) programa1;;b) programa2;;c) programa3;;*) echo "No eligió ninguna opción valida";;esacHay que tener en cuenta algunas cosas respecto a este tipo <strong>de</strong> construcción. Por ejemplo el mandato que ledamos al principio read indica al bash que tiene que leer lo que se ingrese a continuación y lo guar<strong>de</strong> enuna variable que se llamara ELECCION. Esto también será útil para el uso <strong>de</strong> otras construcciones ya que elread no es propiedad exclusiva <strong>de</strong> la construcción esac, sino que pertenece al mismo bash. Como se ve,se le indica que si el valor que la variable contiene es igual a alguna <strong>de</strong> las mostradas <strong>de</strong>bajo se ejecute<strong>de</strong>terminado programa. (case $ELECCION in). La elección se <strong>de</strong>be terminar con un paréntesis ")" paraque se cierre las posibilida<strong>de</strong>s. Podríamos poner más posibilida<strong>de</strong>s para cada elección; lo único que hayque recordar es cerrar con un paréntesis. El punto y coma nos marca el final <strong>de</strong> un bloque, por lo quepodríamos agregar otro comando y se cerrara con punto y coma doble al último. El asterisco <strong>de</strong>l final nosindica que se hará en caso <strong>de</strong> que no coincida lo ingresado con ninguna <strong>de</strong> las posibilida<strong>de</strong>s. Un ejemplo,sería que nuestra construcción reconozca mayúsculas y minúsculas y a<strong>de</strong>más ejecute más <strong>de</strong> un comandopor bloque.read ELECCIONcase $ELECCION ina|A)programa1programa2programa3;;b|B)programa4programa5;;c|C)programa3;;*)echo "No eligió ninguna opción valida";;esacTambién se podría haber incluído un rango <strong>de</strong> posibilida<strong>de</strong>secho "Ingrese un caracter: "read ELECCIONcase $ELECCION in[1-9]) echo "Usted ingreso un número";;[a-z]) echo "Usted ingreso una letra minúscula";;[A-Z]) echo "Usted ingreso una letra mayúscula";;esacHay que recordar que todos estos script podrán estar en un archivo, pero para que se ejecuten se le <strong>de</strong>beráprimero dar los permisos pertinentes. Un par <strong>de</strong> cosas a tener en cuenta para la construcción <strong>de</strong> script sonla forma en que se quiere que ejecute éste y la captura <strong>de</strong> teclas. Al ejecutarse un script <strong>de</strong> shell, se estarácreando un bash hijo que lo ejecutará. Dado que las variables y funciones pertenecen al intérprete <strong>de</strong>comandos que las creó, al finalizar el script el proceso hijo <strong>de</strong>l bash morirá y con el todos los seteos <strong>de</strong>variables y funciones. Por esto, si se quisiera que los cambios <strong>de</strong> las variables y las funciones que se<strong>de</strong>finieron permanezcan para ser utilizables una vez que el script haya terminado, se <strong>de</strong>berá comenzar aejecutar el script con un punto "." seguido por un espacio antes <strong>de</strong>l nombre <strong>de</strong> éste. De esta forma elproceso <strong>de</strong>l intérprete <strong>de</strong> comando actual sera quien ejecute el script con lo que se conservaran todas lasvariables y funciones.


Escritura <strong>de</strong> scripts <strong>de</strong> shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html6 <strong>de</strong> 6 07/09/2005 8:01[shrek@pantano:~]$ . miscriptUn script pue<strong>de</strong> <strong>de</strong>jar cosas sueltas antes <strong>de</strong> terminar si éste es finalizado bruscamente enviándole unaseñal <strong>de</strong> finalización [1] ya sea con la combinación <strong>de</strong> teclas Ctrl-C o con un kill -15. Para esto se<strong>de</strong>berán capturar estas señales para po<strong>de</strong>r hacer una limpieza, ya se <strong>de</strong> variables o archivos, antes <strong>de</strong>finalizar. La forma <strong>de</strong> hacerlo es con el uso <strong>de</strong>l comando trap; <strong>de</strong> esta forma se capturará la señal que sele envíe al script y se podrá ya sea ignorar la misma o ejecutar otro comando <strong>de</strong> limpieza. Para <strong>de</strong>mostraresto haremos un pequeño script que servirá <strong>de</strong> menú. La llamada al script <strong>de</strong>l menú podría estar en elarchivo .profile <strong>de</strong>l usuario o en el .bash_profile. Si lo que no queremos es que el usuario salga <strong>de</strong>lscript con usando la combinación <strong>de</strong> teclas Ctrl-C, lo que haremos es capturar la señal y hacer que seejecute nuevamente el script que se llamará simplemente menu.trap './menu' 2while :doecho 'a) Listado <strong>de</strong> archivos'echo 'b) Día y hora actual'echo 'c) Mes actual'echo 'Seleccione: 'read ELECCIONcase $ELECCION ina|A) ls;;b|B) date;;c|C) cal;;*) echo "No eligió ninguna opción valida";;esacdoneComo se ve al principio <strong>de</strong>l script se utiliza el comando trap que al captura la señal 2 (SIGINT) queproduce el Ctrl-C relanza el script. Al final <strong>de</strong>l script se ve que se llama nuevamente dado que alejecutarse el comando <strong>de</strong> cada elección se quiere que el menú siga funcionando. Practicar con estasconstrucciones será <strong>de</strong> gran ayuda para enten<strong>de</strong>r el proceso <strong>de</strong> construcción <strong>de</strong> script y los preparara parascript más complejos usando otros interpretes como el sed, awk y el lenguaje perl. Para mayorinformación respecto a la construcción <strong>de</strong> script, remitirse a las páginas <strong>de</strong> manual <strong>de</strong>l intérprete <strong>de</strong>comandos, en este caso man bash.Notas[1]Para saber el nombre y número <strong>de</strong> señales teclear kill -lAnterior Inicio SiguienteTareas y procesos Subir Programas <strong>de</strong> edición <strong>de</strong> consola


Enlaces <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/x1811.html1 <strong>de</strong> 2 07/09/2005 8:00Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEnlaces <strong>de</strong> archivosEn ocasiones es necesario dar a un mismo archivo distintos nombres o, para mantener la integridad <strong>de</strong> losdatos, se hace necesario que un mismo archivo que va a ser modificado por varias personas pueda estarrepresentado por un nombre distinto con distintos permisos cada uno. Dada la representación queGNU/Linux le da a los archivos es posible que dos o más nombres apunten al mismo contenido en eldisco rígido. Recor<strong>de</strong>mos que los archivos se representan por el número <strong>de</strong> inodo en el disco y es el únicoi<strong>de</strong>ntificador que el sistema tiene <strong>de</strong>l archivo. Si se quiere ver el inodo que representa un archivo bastasolo con agregar el modificador -i al comando ls. Existen dos tipos <strong>de</strong> enlaces: los duros y lossimbólicos.Enlaces duros o hard linksPara crear enlaces entre los archivos se utiliza el comando ln. Para dar un ejemplo, si se quisiera hacer unenlace <strong>de</strong>l archivo hola el comando es[shrek@pantano:~]$ ln hola saludoSi ahora hacemos un listado mostrando los inodos[shrek@pantano:~]$ ls -iltotal 214438 -r-------- 2 shrek user 64 Apr 29 14:04 hola14438 -r-------- 2 shrek user 64 Apr 29 14:04 saludoComo se ve el número <strong>de</strong> nombres que los archivos tienen ahora es 2 dado que hemos creado otro nombreque es un enlace al contenido que tenía el archivo hola en el disco. Esto pue<strong>de</strong> verse dado que el primernúmero <strong>de</strong>l listado, 14438, es el número <strong>de</strong>l inodo don<strong>de</strong> comienza el contenido <strong>de</strong>l archivo hola.Aunque parezca que el contenido se a duplicado, esto no es así. Ambos archivos apuntan al mismo sitio.Por esto, un archivo no se borra hasta que se haya borrado el último <strong>de</strong> sus nombres. De esta formatambién po<strong>de</strong>mos <strong>de</strong>cir que un directorio no es más que un archivo que contiene información sobre latranslación enlace a inodo. También que cada directorio tiene dos enlaces duros en él: . (un enlaceapuntando a si mismo) y .. (un enlace apuntando a su directorio padre). En el directorio raíz / el enlace.. siempre apunta a /.Enlaces simbólicos o symbolic linksA diferencia con los enlaces duros, estos enlaces solo dan otro nombre a un archivo pero no hacen unenlace al nivel <strong>de</strong> inodo. Se pue<strong>de</strong> hacer una comparación con los "Accesos directos" <strong>de</strong> Windows95. Laor<strong>de</strong>n ln -s genera un enlace simbólico.


Enlaces <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/x1811.html2 <strong>de</strong> 2 07/09/2005 8:00[shrek@pantano:~]$ ln -s hola saludos[shrek@pantano:~]$ ls -iltotal 214438 -r-------- 1 shrek user 64 Apr 29 14:04 hola14446 lrwxrwxrwx 1 shrek user 4 May 7 08:33 saludos -> hola[shrek@pantano:~]$Como se ve, el enlace nos muestra a que archivo esta apuntando. Existen diferencias entre este tipo <strong>de</strong>enlaces y los duros como que ya no están apuntando al mismo inodo. A<strong>de</strong>más los bit <strong>de</strong> permisosaparecen todos encendidos dado que no son usados. Los permisos que se utilizan son los <strong>de</strong>l archivo alque se esta apuntando. Si nos fijamos bien, en la primera posición <strong>de</strong> los permisos veremos una letra l.Esto nos indica que es un enlace simbólico. Otra particularidad es que se pue<strong>de</strong>n crear enlaces simbólicos<strong>de</strong> archivos que no existen; pero lo mismo no es cierto para los enlaces duros. Con los enlaces simbólicosse pue<strong>de</strong> saber a que archivo están apuntando, no así con los duros. Los enlaces simbólicos sonampliamente usados para las librerías compartidas.Anterior Inicio SiguientePermisos <strong>de</strong> archivos, sus dueñosSubirTareas y procesosy grupos


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html1 <strong>de</strong> 9 07/09/2005 8:00Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguientePermisos <strong>de</strong> archivos, sus dueños y gruposPara enten<strong>de</strong>r mejor el concepto <strong>de</strong> permisos se tendrá que tener en cuenta que cada usuario pue<strong>de</strong>pertenecer a uno o más grupos. Cada usuario pertenece por lo menos a un grupo, que es establecido en elmomento en que el usuario se crea. El administrador <strong>de</strong>l sistema pue<strong>de</strong> agregar al usuario a otros grupos.Estos grupos son necesarios para po<strong>de</strong>r establecer una política <strong>de</strong> acceso más organizada dado que encualquier momento se podría dar a un archivo el acceso a personas <strong>de</strong> un grupo <strong>de</strong>terminado. Lo únicoque se tendría que hacer es agregar a los usuarios que se quieran dar permisos a ese grupo.Para cada objeto (archivo) que se encuentre en el sistema, GNU/Linux guarda información administrativaen la tabla <strong>de</strong> inodos, tema que abarcaremos en mayor <strong>de</strong>talle más a<strong>de</strong>lante. Entre los datos que seguardan en esta tabla se encuentran la fecha <strong>de</strong> creación <strong>de</strong>l archivo, modificación <strong>de</strong>l archivo y la fechaen que se cambio el inodo. Pero a<strong>de</strong>más contiene los datos en los que se centra toda la seguridad en Un*x.Estos sonEl dueño <strong>de</strong> archivoEl grupo <strong>de</strong>l archivoLos bits <strong>de</strong> modo o también llamados permisos <strong>de</strong> archivoEn este tramo nos centraremos en primer medida en enten<strong>de</strong>r los permisos y en establecer la forma en quepue<strong>de</strong>n trabajar con ellos.ConceptosAl ser Un*x y GNU/Linux sistemas operativos multiusuario, para que se puedan proteger los archivos seestableció un mecanismo por el cual se otorgan permisos a un <strong>de</strong>terminado usuario y/o grupo. Estopermite, por ejemplo, que si existe un archivo creado por un usuario en particular, este será propiedad <strong>de</strong>lusuario y también tendrá el grupo <strong>de</strong>l usuario. Se permite que los archivos sean compartidos entreusuarios y grupos <strong>de</strong> usuarios. Por ejemplo si shrek quisiera pue<strong>de</strong> prohibir los accesos a un archivo<strong>de</strong>terminado que le pertenezca a todos los usuarios que no pertenezcan a su grupo <strong>de</strong> usuarios.Los permisos están divididos en tres tipos: lectura, escritura y ejecución (rwx). Estos permisos pue<strong>de</strong>nestar fijados para tres clases <strong>de</strong> usuario: el propietario <strong>de</strong>l archivo, el grupo al que pertenece el archivo ypara todo el resto <strong>de</strong> los usuarios. El permiso <strong>de</strong> lectura permite a un usuario leer el contenido <strong>de</strong>l archivoo en el caso <strong>de</strong> que el archivo sea un directorio, la posibilidad <strong>de</strong> ver el contenido <strong>de</strong>l mismo. El permiso<strong>de</strong> escritura permite al usuario modificar y escribir el archivo. En el caso <strong>de</strong> un directorio permite la crearnuevos archivos en él o borrar archivos existentes. El permiso <strong>de</strong> ejecución permite al usuario ejecutar elarchivo, si tiene algo para ejecutarse. Para los directorios permite al usuario cambiarse a él con elcomando cd.Como se interpretan los permisosPara po<strong>de</strong>r interpretar los permisos <strong>de</strong> archivos nada mejor que utilizar el comando ls -la. Con estovemos un listado largo <strong>de</strong> un directorio.[shrek@pantano:~]$ ls -la


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html2 <strong>de</strong> 9 07/09/2005 8:00total 13drwxr-sr-x 2 shrek user 1024 May 2 09:04 .drwxrwsr-x 4 root staff 1024 Apr 17 21:08 ..-rw------- 1 shrek user 2541 May 2 22:04 .bash_history-rw-r--r-- 1 shrek user 164 Apr 23 14:57 .bash_profile-rw-r--r-- 1 shrek user 55 Apr 23 14:44 .bashrc-rwxrwxr-x 1 shrek user 0 Apr 14 19:29 a.out-rwxrwxr-x 1 shrek user 40 Apr 30 12:14 hello.pl-r-------- 1 shrek user 64 Apr 29 14:04 hola-rwxrw-r-- 1 shrek user 337 Apr 29 13:57 lista-rw-rw-r-- 1 shrek user 40 Apr 30 12:31 listador-rw-rw-r-- 1 shrek user 0 May 2 09:04 null-rwxrwxr-x 1 shrek user 175 Apr 30 12:30 prue.pl-rwxrwxr-x 1 shrek user 56 Apr 23 15:08 que.shComo se pue<strong>de</strong> apreciar en este listado, también están el directorio actual, representado por un punto . yel directorio padre representado por dos puntos .. . Ellos también poseen permisos y atributos que sonmostrados. Para ir entendiendo un poco más vamos a explicar que significan los primeros 10 dígitos.Tomemos como ejemplo el siguiente archivo-rw-r--r-- 1 shrek user 337 Apr 29 13:57 listaPara esclarecer un poco mas que significa cada uno <strong>de</strong> estos caracteres al inicio, utilizaremos unas tablas.Primero veamos aquellos caracteres que podrían aparecer en el primer lugar, que en el ejemplo anterior esun solo guión. Esto nos indica que es un archivo común. La tabla siguiente explica el significado <strong>de</strong>lprimer símbolo <strong>de</strong> acuerdo al tipo <strong>de</strong> archivo.Tabla 1. Tipos <strong>de</strong> archivoContenidoSignificado- Archivo comúndDirectoriocDispositivo <strong>de</strong> caracteres (tty o impresora)bDispositivo <strong>de</strong> Bloque (usualmente disco rígido oCD-ROM)


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html3 <strong>de</strong> 9 07/09/2005 8:00ContenidoSignificadolEnlace simbólicosSocketpPipeLos siguientes 9 símbolos se toman en grupos <strong>de</strong> tres y cada grupo pertenece a una clase <strong>de</strong> permisos, y semuestran a continuaciónTabla 2. Tipos <strong>de</strong> permisosPermisoSignificadorPermiso <strong>de</strong> lecturawPermiso <strong>de</strong> escrituraxPermiso <strong>de</strong> ejecuciónTabla 3. <strong>Grupo</strong>s <strong>de</strong> permisosColumnas Se aplica a Significado2,3,4 owner Establece los permisos para el dueño <strong>de</strong>l archivo5,6,7 group Establece los permisos para el grupo <strong>de</strong>l archivo8,9,10 other Establece los permisos para los usuarios que no entran en lascategorías anterioresDe esta forma podremos interpretar el listado generado a partir <strong>de</strong> ls -la <strong>de</strong> mejor manera. Como yadijimos, el primer símbolo nos esta indicando que el archivo es un archivo común. El primer grupo <strong>de</strong> tressímbolos representa los permisos para el dueño <strong>de</strong>l archivo (owner) que en este caso posee permisos <strong>de</strong>lectura, escritura y ejecución. El segundo grupo <strong>de</strong> tres símbolos representa los permisos para el grupo alcual pertenece el archivo (group), que en este caso tienen permisos <strong>de</strong> lectura y escritura. El tercer grupo


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html4 <strong>de</strong> 9 07/09/2005 8:00<strong>de</strong> tres símbolos representa los permisos para todo el resto <strong>de</strong> los usuarios (other) en este caso es solo <strong>de</strong>lectura.El número que sigue (1) representa el número <strong>de</strong> nombres que el archivo posee. Esto indica la cantidad <strong>de</strong>enlaces que existen a este archivo y lo veremos más a<strong>de</strong>lante cuando tratemos el tema <strong>de</strong> enlacessimbólicos y duros.A continuación esta el nombre <strong>de</strong>l dueño <strong>de</strong>l archivo y <strong>de</strong>l grupo al cual pertenece el archivo.El "337" representa el tamaño <strong>de</strong>l archivo expresado en bytes.Lo siguiente es la fecha y hora <strong>de</strong> modificación <strong>de</strong>l archivo e inmediatamente <strong>de</strong>spués esta el nombre <strong>de</strong>lmismo.Depen<strong>de</strong>nciasLos permisos <strong>de</strong> los archivos también <strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l directorio don<strong>de</strong> estén guardados. En un ejemplocomún podríamos dar el caso <strong>de</strong> un archivo que posea todos los permisos, tanto para el usuario, grupo yotros pero no se podrá acce<strong>de</strong>r a él si no se cuenta con permisos <strong>de</strong> lectura y ejecución en el directorioque los contiene.Esto funciona en el caso que se quiera restringir el acceso a un directorio <strong>de</strong>terminado y a todos losarchivos que este contiene. En lugar <strong>de</strong> cambiar los permisos uno por uno solo tenemos que sacarle lospermisos necesarios para que se prohíba el acceso mismo al directorio y con esto no podrán ingresar parausarlos. Esto también esta dado para toda la ruta <strong>de</strong>l archivo. Es <strong>de</strong>cir que no solo el último directorio, elcual lo contiene, tiene que tener los permisos necesarios, sino que todos los directorios que lo prece<strong>de</strong>ntambién.Cambiando permisosEn el el capítulo <strong>de</strong> nombre Empezando con GNU/Linux vimos la utilización <strong>de</strong>l comando chmod, peroen este entraremos a explicar en mejor forma su utilización. A<strong>de</strong>más trataremos el tema <strong>de</strong> otro forma <strong>de</strong>representar los permisos posibles, la representación octal, que es extremadamente útil a la hora <strong>de</strong>establecer nuevos permisos.El comando chmod se emplea utilizando símbolos como a,u,g,o que representan a todos (a "all"), alusuario (u), al grupo (g) y a todos los <strong>de</strong>más (o). Existen símbolos para agregar (+) quitar (-) o <strong>de</strong>jarinvariantes los permisos (=). A<strong>de</strong>más tendrán que usarse los símbolos característicos para cada tipo <strong>de</strong>permiso. Para el permiso <strong>de</strong> lectura (r), para el permiso <strong>de</strong> escritura (w) y para el permiso <strong>de</strong> ejecución(x). Solo el dueño <strong>de</strong>l archivo pue<strong>de</strong> cambiarlo con él; excepción <strong>de</strong>l root que también lo pue<strong>de</strong> hacer.Para ejemplificar un cambio <strong>de</strong> permisos usaremos el archivo lista.[shrek@pantano:~]$ ls -l listatotal 1-rwxrw-r-- 1 shrek user 337 Apr 29 13:57 lista[shrek@pantano:~]$ chmod a-r lista[shrek@pantano:~]$ ls -l listatotal 1--wx-w---- 1 shrek user 337 Apr 29 13:57 listaDe esta forma se le ha sacado a todos los grupos y usuarios los permisos <strong>de</strong> lectura. Algunos ejemplosmás[shrek@pantano:~]$ chmod u+r lista


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html5 <strong>de</strong> 9 07/09/2005 8:00[shrek@pantano:~]$ ls -l listatotal 1-rwx-w---- 1 shrek user 337 Apr 29 13:57 lista[shrek@pantano:~]$ chmod o+w lista[shrek@pantano:~]$ ls -l listatotal 1-rwx-w-w-- 1 shrek user 337 Apr 29 13:57 lista[shrek@pantano:~]$ chmod og-w lista[shrek@pantano:~]$ ls -l listatotal 1-rwx------ 1 shrek user 337 Apr 29 13:57 listaAhora bien, esta es la forma simbólica. Pero existe una forma un poco más sistemática que es la forma <strong>de</strong>representación octal. El comando chmod permite establecer los permisos <strong>de</strong> un archivo por medio <strong>de</strong> unnúmero octal. Comúnmente nosotros usamos para contar una representación <strong>de</strong>cimal (0,1,2,3,4,5,6,7,8,9)pero en una representación octal solo se usan 8 números (0,1,2,3,4,5,6,7). Para establecer el permisohabrá que sumar los dígitos octales <strong>de</strong> acuerdo a una tabla que se dará a continuación. Dado que no serealiza acarreo, la suma será trivial.Tabla 4. Permisos en notación octalNúmero octal400020001000040002000100004000200010PermisoEstablece el número <strong>de</strong> i<strong>de</strong>ntificación <strong>de</strong> usuario al ejecutarse SUID [a]Establece el número <strong>de</strong> i<strong>de</strong>ntificación <strong>de</strong> grupo al ejecutarse SGID[a]Establece el bit adhesivo[a]Lectura por parte <strong>de</strong>l dueñoEscritura por parte <strong>de</strong>l dueñoEjecución por parte <strong>de</strong>l dueñoLectura por parte <strong>de</strong>l grupoEscritura por parte <strong>de</strong>l grupoEjecución por parte <strong>de</strong>l grupo


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html6 <strong>de</strong> 9 07/09/2005 8:00Número octalPermiso0004Lectura por parte <strong>de</strong> los otros0002Escritura por parte <strong>de</strong> los otros0001Ejecución por parte <strong>de</strong> los otrosNotas:a. Se verá al finalizar el temaPara dar un ejemplo <strong>de</strong> la suma que se tendrá que realizar, tomemos un archivo con los permisosexpresados en forma simbólica y realicemos la conversión. Para representar -rwxr-x---0400 Lectura por parte <strong>de</strong>l dueño+ 0200 Escritura por parte <strong>de</strong>l dueño+ 0100 Ejecución por parte <strong>de</strong>l dueño+ 0040 Lectura por parte <strong>de</strong>l grupo+ 0010 Ejecución por parte <strong>de</strong>l grupo-----------------------------------------0750 ResultadoDe esta forma si lo que quisiéramos es cambiar los permisos <strong>de</strong> un archivo, solo se tendría que efectuar lasuma necesaria y establecerlo con el comando chmod. Si quisiéramos cambiar los permisos para que eldueño tenga permisos <strong>de</strong> lectura y escritura y que el grupo y otros solo tengan permisos <strong>de</strong> lectura, lasintaxis es[shrek@pantano:~]$ chmod 0644 lista[shrek@pantano:~]$ ls -l listatotal 1-rw-r--r-- 1 shrek user 337 Apr 29 13:57 listaCon la práctica se sabrán cuales son las sumas mas utilizadas y podrán ver que es mucho más sencillo elestablecer <strong>de</strong> esta forma los permisos <strong>de</strong> archivos.Cambiando grupos y usuariosLo que nos queda por ver es el caso en que se quisiera cambiar el usuario o el grupo <strong>de</strong>l archivo. Para estose usa el comando chown y su sintaxis es similar a la <strong>de</strong> chmod pero con la variante que se dan losnombres <strong>de</strong>l usuario y <strong>de</strong>l grupo. Si quisiéramos cambiar el nombre <strong>de</strong> usuario <strong>de</strong>l archivo lista tendremos[root@pantano:/home/shrek]# ls -l listatotal 1-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista[root@pantano:/home/shrek]# chown fiona lista[root@pantano:/home/shrek]# ls -l listatotal 1-rw-r--r-- 1 fiona user 337 Apr 29 13:57 lista


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html7 <strong>de</strong> 9 07/09/2005 8:00Si se quisiera cambiar también el nombre <strong>de</strong>l grupo, se tendría que poner un punto entre el nombre <strong>de</strong>usuario y el grupo[root@pantano]# ls -l listatotal 1-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista[root@pantano]# chown fiona.ventas lista[root@pantano]# ls -l listatotal 1-rw-r--r-- 1 fiona ventas 337 Apr 29 13:57 listaPor supuesto que tanto el usuario como el grupo al que se hacen referencia tendrán que existir en elsistema, sino se producirá un error. En el caso que solo se quiera cambiar el grupo y no el usuario, setendrá que poner un punto <strong>de</strong>lante <strong>de</strong>l nombre <strong>de</strong>l grupo, omitiendo poner el nombre <strong>de</strong>l algún usuario. Osi se quiere, se podrá poner el nombre <strong>de</strong> usuario que estaba anteriormente.[root@pantano]# ls -l listatotal 1-rw-r--r-- 1 shrek user 337 Apr 29 13:57 lista[root@pantano]# chown .ventas lista[root@pantano]# ls -l listatotal 1-rw-r--r-- 1 shrek ventas 337 Apr 29 13:57 listaPuntos adicionalesExplicaremos algunos puntos sobre permisos que son <strong>de</strong> gran utilidad para la seguridad <strong>de</strong> nuestrosistema.umaskEsta es la abreviatura <strong>de</strong> user file-creation mo<strong>de</strong> mask o máscara <strong>de</strong>l modo <strong>de</strong> creación <strong>de</strong> archivos <strong>de</strong>usuario y es un número octal <strong>de</strong> cuatro dígitos que se utilizan para fijar los permisos <strong>de</strong> los archivosrecién creados. Esto pue<strong>de</strong> ocasionar confusión pero en realidad es una utilidad que permite el uso <strong>de</strong>lsistema por múltiples usuarios sin que peligre la privacidad. En la mayoría <strong>de</strong> los Un*x los archivos queson creados por el usuario, poseen permisos 0666 que dan permiso <strong>de</strong> lectura y escritura a cualquierusuario. En relación con los programas, estos se crean con 0777 don<strong>de</strong> cualquier usuario pue<strong>de</strong> leer,escribir y ejecutar el programa. Normalmente el administrador <strong>de</strong>l sistema aplica una máscara al usuarioen el archivo .bash_profile y esta es usada para la creación <strong>de</strong> archivos haciendo una operación simple"AND" bit por bit con el complemento <strong>de</strong>l valor umask bit por bit. La función umask esta integrada alintérprete <strong>de</strong> comandos. Para ejemplificar el proceso tomemos un archivo creado por el usuario.0666 Modo pre<strong>de</strong>terminado <strong>de</strong> creación <strong>de</strong> archivos- 0022 Umask-------------------------------------------------------0644 Modo resultanteEl modo resultante es que el dueño tiene permisos <strong>de</strong> lectura y escritura y los <strong>de</strong>más y el grupo solo <strong>de</strong>lectura.0666 Modo pre<strong>de</strong>terminado <strong>de</strong> creación <strong>de</strong> archivos- 0077 Umask-------------------------------------------------------0600 Modo resultante


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html8 <strong>de</strong> 9 07/09/2005 8:00El modo resultante es que el dueño tiene permisos <strong>de</strong> lectura y escritura y los <strong>de</strong>más y el grupo no tienenningún permiso. Una forma <strong>de</strong> darse cuenta <strong>de</strong> la forma en que funciona el umask es tener en cuenta queel valor 2 inhabilita el permiso <strong>de</strong> escritura mientras que el valor 7 inhabilita los permisos <strong>de</strong> lecturaescritura y ejecución. A continuación daremos una tabla con los valores comúnmente usados para elumask.Tabla 5. Valores usuales <strong>de</strong> la variable umaskUmask Accesos <strong>de</strong>l usuario Accesos <strong>de</strong>l grupo Accesos <strong>de</strong> los otros0000 Todos Todos Todos0002 Todos Todos Lectura y ejecución0007 Todos Todos Ninguno0022 Todos Lectura y ejecución Lectura y ejecución0027 Todos Lectura y ejecución Ninguno0077 Todos Ninguno NingunoSUID y SGIDExisten ocasiones que los usuarios necesitan ejecutar algún programa que requiere <strong>de</strong> privilegios. Unejemplo <strong>de</strong> esto es el uso <strong>de</strong>l programa passwd para cambiar la contraseña. Sería un error darle a losusuarios los privilegios necesarios para que puedan ejecutar esta clase <strong>de</strong> programas ya que el usuariopodría cambiarse <strong>de</strong> grupo o crear una cuenta con privilegios <strong>de</strong> root. Para que esto no suceda, seimplemento en Un*x, un sistema por el cual un programa que cuente con SUID o SGID pue<strong>de</strong> serejecutado con los privilegios <strong>de</strong>l dueño y/o grupo <strong>de</strong>l programa. Para que que<strong>de</strong> más claro se tiene quesaber que cada usuario esta i<strong>de</strong>ntificado por el sistema con un número <strong>de</strong> i<strong>de</strong>ntificación tanto para él,como para el grupo. Este número se <strong>de</strong>nomina UID (user ID) para el caso <strong>de</strong> los usuarios y GID para elcaso <strong>de</strong> los grupos. Por ejemplo, un usuario podría tener un UID 100 y un GID 500. En el caso <strong>de</strong>l root,este tiene UID 0 y GID 0. Más a<strong>de</strong>lante sé verá esto en mayor <strong>de</strong>talle. Lo que se efectúa con el sistemaSUID es una adquisición temporal <strong>de</strong> un UID o GID distinto al propio cuando se está ejecutando elprograma. Cuando un programa cambia <strong>de</strong> UID se <strong>de</strong>nomina SUID (set-UID: se establece UID) y cuandocambia <strong>de</strong> GID se <strong>de</strong>nomina SGID (set-GID: se establece GID) Un programa pue<strong>de</strong> ser SUID y SGID almismo tiempo. Para darse cuenta si un programa es SUID o SGID basta con hacer un listado largo con elcomando ls -l y se verá que don<strong>de</strong> tendría que estar una x, que asigna permisos <strong>de</strong> ejecución, va a estaruna letra s.[shrek@pantano:~]$ ls -l /usr/bin/passwd-rwsr-sr-- 1 root bin 36068 2003-06-23 20:40 /usr/bin/passwd*/usr/bin/passwd


Permisos <strong>de</strong> archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html9 <strong>de</strong> 9 07/09/2005 8:00Bit adhesivoEn los antiguos sistemas Un*x, la memoria era algo esencial y escasa dado su costo. Para po<strong>de</strong>raprovechar más esta, se empleo una tecnología que mantenía parte <strong>de</strong> programas esenciales en el áreaswap <strong>de</strong> memoria para que pudieran ser usados más rápidamente dado que si se tendrían que ir a buscar aldisco se adhesivo o sticky bit y estos archivos así marcados eran los que valía la pena mantener ya queesas partes <strong>de</strong>l programa que se guardaban en memoria también podían ser usadas por otros.Anterior Inicio SiguienteComo en UNIX también enSubirEnlaces <strong>de</strong> archivosGNU/Linux


Como en UNIX también en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c1369.html1 <strong>de</strong> 3 07/09/2005 7:59Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteComo en UNIX también en GNU/LinuxEn el capítulo anterior vimos el funcionamiento <strong>de</strong> la interfase <strong>de</strong> comandos bash y comenzamos viendoel po<strong>de</strong>r que posee Un*x para el manejo <strong>de</strong> la información. En este capítulo trataremos temas un pocomás específicos, concentrándonos en los aspectos más importantes que podremos ver en nuestro sistemaoperativo. El hecho <strong>de</strong> que estas terminologías empleadas en GNU/Linux, antes se hayan aplicado aUn*x, hacen que él saberlas nos abra las puertas a todo un sinfín <strong>de</strong> particularida<strong>de</strong>s compartidas quehacen mucho más versátil el trabajo con cualquier entorno que sea equivalente.Plomería en GNU/LinuxEntrada y salida estándarHablamos antes <strong>de</strong> los 3 archivos que el sistema abría en memoria al iniciarse, estos eran el stdin, elstdout y st<strong>de</strong>rr. El intérprete <strong>de</strong> comandos configurará estos archivos para que apunten al teclado, en elcaso <strong>de</strong>l stdin, y al monitor, en el caso <strong>de</strong>l stdout y st<strong>de</strong>rr. Existen numerosos comandos <strong>de</strong> Un*x queutilizan la entrada estándar para tomar sus datos y la salida estándar para volcarlos a la pantalla. Laconfiguración esta dada <strong>de</strong> este modo ya que el shell espera que se ingresen los datos por el teclado y quesu resultado o algún error se reflejen en la pantalla. Un ejemplo seráa el caso <strong>de</strong>l comando cat. Siusáramos el comando cat, sin ningún argumento, todo lo que ingresemos se vería repetido en la pantalla.[shrek@pantano:~]$ catHola (1)Hola (2)Que tal (3)Que tal (4)(1)(3)Línea escrita por nosotros.(2)(4)Línea <strong>de</strong>vuelta a la salida estándar.La entrada se termina presionando Ctrl-D que es el carácter <strong>de</strong> EOT (end of text) fin <strong>de</strong> texto.Canalización y redirecciónExiste la posibilidad <strong>de</strong> <strong>de</strong>sviar la salida o la entrada a un comando para po<strong>de</strong>r realizar funcionescomplejas u obtener los datos que saldrían por la pantalla directamente a otro archivo. Lo primero se<strong>de</strong>nomina canalización y lo segundo redirección. El símbolo que se utiliza para efectuar la canalización esel <strong>de</strong>nominado pipe o símbolo<strong>de</strong> canalización (|). Este símbolo permite que se pase la salida <strong>de</strong>unacomando o programa a la entrada <strong>de</strong> otro. Un ejemplo clásico <strong>de</strong> lautilización <strong>de</strong> este símbolo escuando se requiere listar un directorioque ocupa más <strong>de</strong> una pantalla. Se podrá entonces utilizar elcomandoclásico para listar ls y enviar su salida a otroprograma que lo muestre <strong>de</strong> a una página <strong>de</strong> pantallapor vez, por ejemplo el more.


Como en UNIX también en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c1369.html2 <strong>de</strong> 3 07/09/2005 7:59[shrek@pantano:~]$ ls -l | moreEsto servirá para realizar lo antedicho ya que la salida <strong>de</strong>l comando ls será canalizada para que sea laentrada <strong>de</strong>l comando more y este se encargara <strong>de</strong> mostrar los datos por pantalla. Lo que se esta utilizandoes la canalización <strong>de</strong> la entrada estándar y la salida estándar. La salida estándar <strong>de</strong>l comando ls esredireccionada hacia la entrada estándar <strong>de</strong>l comando more que es cambiada para que también apunte a lacanalización. Otros dos símbolos utilizados son el < y el >. Lo que hacen es redirigir tanto la salida comola entrada estándar <strong>de</strong> o hacia un archivo. Por ejemplo, supongamos que necesitamos guardar en unarchivo llamado listado la salida <strong>de</strong>l comando ls.[shrek@pantano:~]$ ls > listadoCon esto le indicamos al comando ls que redireccione la salida estándar hacia un archivo <strong>de</strong> nombrelistado. En caso <strong>de</strong> que el archivo exista, será reemplazado con la nueva información. Para agregarcontenido a un archivo, inmediatamente <strong>de</strong>spués <strong>de</strong>l contenido que posea, se tendrá que poner el símbolo<strong>de</strong> redirección dos veces[shrek@pantano:~]$ ls >> listadoEl uso <strong>de</strong> < es para redireccionar el contenido <strong>de</strong> un archivo hacia la entrada estándar <strong>de</strong> un comando oprograma. Supongamos que necesitamos or<strong>de</strong>nar el contenido <strong>de</strong> un archivo en or<strong>de</strong>n alfabético, lo quelograremos con el comando sort. Podremos entonces redireccionar el contenido <strong>de</strong> un archivo a la entrada<strong>de</strong>l comando sort para que éste lo or<strong>de</strong>ne.[shrek@pantano:~]$ sort < nombresDe esta manera saldría por pantalla la lista <strong>de</strong> nombres or<strong>de</strong>nadas alfabéticamente. También se podráredireccionar el error estándar para que no salga en pantalla. Si quisieramos realizar un listado <strong>de</strong> undirectorio y, en caso <strong>de</strong> producirse un error, este fuese redirigido a un archivo, haremos lo siguiente[shrek@pantano:~]$ ls /bin 2>/tmp/error.lsEsta simple redirección solo tendría efecto sobre el error estándar (st<strong>de</strong>rr) o como también se <strong>de</strong>nomina,<strong>de</strong>scriptor <strong>de</strong> archivo nº 2. Con esta redirección los posibles errores serían redirigidos al archivo/tmp/error.ls. Si quisiéramos dividir tanto la salida por pantalla como el error en dos archivosseparados po<strong>de</strong>mos hacerlo <strong>de</strong> esta manera[shrek@pantano:~]$ ls /bin 1>/tmp/salida 2>/tmp/error.lsLa redirección y la canalización pue<strong>de</strong>n combinarse para hacer cosas un poco más complejas o realizartareas en un solo paso. Supongamos que necesitábamos obtener las 10 primeras líneas <strong>de</strong>l listado queanteriormente guardamos <strong>de</strong>l directorio /bin. Para esto podríamos usar el comando head directamentepara que obtenga las 10 primeras líneas <strong>de</strong>l archivo listado, pero para enten<strong>de</strong>r el uso combinado <strong>de</strong> lacanalización y la redirección lo haremos <strong>de</strong> otra forma


Como en UNIX también en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c1369.html3 <strong>de</strong> 3 07/09/2005 7:59[shrek@pantano:~]$ sort < listado | headComo se pue<strong>de</strong> ver, se a pasado por medio <strong>de</strong> una redirección el contenido <strong>de</strong>l archivo listado alcomando sort y por medio <strong>de</strong> la canalización hemos pasado la salida estándar <strong>de</strong>l comando sort alcomando head.Anterior Inicio SiguienteCaracterísticas adicionales Permisos <strong>de</strong> archivos, sus dueñosy grupos


Características adicionaleshttp://www.ant.org.ar/cursos/curso_intro/x1341.html1 <strong>de</strong> 1 07/09/2005 7:59Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Tutorial <strong>de</strong>l Shell SiguienteCaracterísticas adicionalesDepuración <strong>de</strong> ScriptEs posible <strong>de</strong>purar un script si se escribe set -x antes <strong>de</strong> ejecutarlo. De esta forma cada comando semostrará en pantalla antes <strong>de</strong> ejecutarse con sus correspondientes argumentos. Se <strong>de</strong>sactiva ingresandoset +x. Si lo que se quiere es mandar la salida a un archivo se tendrá que tener en cuenta que la salida <strong>de</strong>lset -x no vá hacia la salida estándar (stdout) sino hacia el error estándar st<strong>de</strong>rr. Si tomamos que laentrada estándar (stdin) es el "0", la salida estándar (stdout) es el "1", entonces el tercer archivo (sterr) esel "2". Por ello si se quiere <strong>de</strong>purar el script myscript y mandar la salida a un archivo, se tendrá queingresar lo siguient luego <strong>de</strong>l set -x.[shrek@pantano:~]$ myscript 2>archivo_salidaEsto indica que se <strong>de</strong>be mandar el <strong>de</strong>scriptor <strong>de</strong> archivo 2 (st<strong>de</strong>rr) al archivo archivo_salida.Creación <strong>de</strong> directorios múltiplesSupongamos que queremos crear un subdirectorio en el directorio /home/shrek/cartas/trabajo/mensuales,pero ni el directorio /cartas ni /trabajo están creados aún. A través <strong>de</strong>l modificador -p <strong>de</strong>l comando mkdir<strong>de</strong> esta forma parados sobre el directorio /home/shrek[shrek@pantano /home/shrek]$ mkdir -p /cartas/trabajo/mensualesDe esta forma primero se creará el directorio /cartas, luego /trabajo y por ultimo /mensuales.Anterior Inicio SiguienteFunciones Subir Como en UNIX también enGNU/Linux


Funcioneshttp://www.ant.org.ar/cursos/curso_intro/x1299.html1 <strong>de</strong> 2 07/09/2005 7:59Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Tutorial <strong>de</strong>l Shell SiguienteFuncionesUno <strong>de</strong> las mayores utilida<strong>de</strong>s que posee una shell es el permitirnos crear funciones para realizar tareasrepetitivas fácilmente. El funcionamiento <strong>de</strong> estas funciones es parecido al que posee cualquier lenguaje<strong>de</strong> programación, en el cual se agrupan conjunto <strong>de</strong> comandos y se los llama por un nombre. El formato<strong>de</strong> las funciones es el siguientenombre_funcion(){primero_a_realizarsegundo_a_realizar}Estas funciones pue<strong>de</strong>n ser <strong>de</strong>finidas en cualquier lugar, incluso en la misma línea <strong>de</strong> comandos. Lo quehabrá que recordar que hechas <strong>de</strong> esta forma se borraran <strong>de</strong> la memoria una vez que se a salido <strong>de</strong>l shell.Una forma <strong>de</strong> hacer que que<strong>de</strong>n disponibles en forma permanente es incorporarla en el archivo <strong>de</strong> inicio<strong>de</strong>l shell, el .bash_profile, en el cual se pondrá la función. De esta forma podremos seguir utilizándoladado que será cargada en memoria cada vez que ejecute el shell. Veamos un ejemplo <strong>de</strong> una funciónsimple[shrek@pantano:~]$ que_tal()> {> echo "Hola $1, como estás?"> }[shrek@pantano:~]$ que_tal shrekHola shrek, como estás?Aquí po<strong>de</strong>mos ver dos factores en la creación <strong>de</strong> funciones. Primero se nombra a la función, seguida <strong>de</strong>un par <strong>de</strong> paréntesis "( )" con lo cual se indica al shell que lo que viene a continuación <strong>de</strong>berá ser tomadocomo una función. Inmediatamente <strong>de</strong>spués <strong>de</strong> los paréntesis se abrirá una llave "{", con lo que se indicaque comienzan los comandos <strong>de</strong> la función. Al terminar se cierra la llave "}".El otro punto es el reemplazo que efectúa el shell <strong>de</strong> las variables. Aquí la variable se asigna directamentey es un número que vendrá <strong>de</strong>spués <strong>de</strong>l signo "$". Este número indica el número <strong>de</strong>l argumento <strong>de</strong> quetomara su valor y que es dado al invocar a la función. En este caso su valor pasa a ser "shrek". Podremosasignar más variables <strong>de</strong> este tipo que serán tomadas <strong>de</strong> acuerdo a su valor numérico como el número <strong>de</strong>largumento.[shrek@pantano:~]$ que_tal()> {> echo Hola $1 como estas?> echo Espero que estés $2> }[shrek@pantano:~]$ que_tal shrek bienHola shrek como estas?Espero que estés bienComo en la programación, don<strong>de</strong> los límites entre las funciones y los procedimientos esta dada <strong>de</strong>acuerdo a la función que se esta cumpliendo, en el caso <strong>de</strong> las funciones <strong>de</strong>l shell varía <strong>de</strong> acuerdo don<strong>de</strong>se encuentren guardadas. Una función está en memoria y pue<strong>de</strong> ser cargada por el shell a partir <strong>de</strong> un


Funcioneshttp://www.ant.org.ar/cursos/curso_intro/x1299.html2 <strong>de</strong> 2 07/09/2005 7:59archivo como el .bash_profile que es leído por él al iniciarse. En caso <strong>de</strong> que se creará un archivoaparte con permisos <strong>de</strong> ejecución, esta función pasaría a ser un script pero se necesitaría que se llame a lafunción <strong>de</strong>s<strong>de</strong> <strong>de</strong>ntro <strong>de</strong>l mismo script. Volveremos a esto al tratar el tema <strong>de</strong> script <strong>de</strong> shell pero daremosun ejemplo para que se entienda mejor. Supongamos que creamos un archivo llamado saludo.sh y ledamos permisos <strong>de</strong> ejecución con el comando chmod. El signo # representa un comentario[shrek@pantano:~]$ cat > saludo.sh (1)que_tal() (2){echo Hola $1 como estas?echo Espero que estés $2}que_tal $1 $2 (3)[shrek@pantano:~]$ chmod +x saludo.sh (4)(1)(2)(3)(4)Con el comando cat y redirigiendo su salida se pue<strong>de</strong> crear un archivoA continuación se ingresa la funciónAhora la función es llamada <strong>de</strong>s<strong>de</strong> <strong>de</strong>ntro <strong>de</strong>l script. Al finalizar se presionan las teclas Ctrl-DLe damos los permisos <strong>de</strong> ejecución solo para nosotrosLo ejecutamos, dado que estamos parados en el mismo directorio en que lo creamos, anteponiendo unpunto y la barra para que el shell sepa que nos estamos refiriendo al directorio actual. El resultado es[shrek@pantano:~]$ ./saludo.sh shrek bienHola shrek como estas?Espero que estés bienAnterior Inicio SiguienteTutorial <strong>de</strong>l Shell Subir Características adicionales


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html1 <strong>de</strong> 12 07/09/2005 7:57Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteTutorial <strong>de</strong>l ShellHablando con GNU/Linux a través <strong>de</strong>l shellEl shell o intérprete <strong>de</strong> comandos, como antes habíamos dicho, es una interfase con nuestro sistemaoperativo. Gracias a él podremos dar las ór<strong>de</strong>nes y mandatos necesarios para que nuestro sistemainformático realice las tareas que necesitamos. No <strong>de</strong>bemos confundir al intérprete <strong>de</strong> comandos con elsistema operativo. Este es solo un programa que hará <strong>de</strong> mediador entre nosotros y el kernel <strong>de</strong>l sistema.El shell pue<strong>de</strong> ser tanto gráfico (Ej. La interfase X-Window), como <strong>de</strong> texto (Ej. El bash).En este capítulo trataremos el tema <strong>de</strong> shell al nivel <strong>de</strong> solo texto y en especial veremos un intérprete <strong>de</strong>comando que por su utilidad y su gran aceptación, es él mas usado tanto en Un*x como en GNU/Linux.Como veremos luego, el intérprete <strong>de</strong> comandos no solo tiene la labor <strong>de</strong> interpretar nuestros mandatos,también es un potente lenguaje <strong>de</strong> programación que nos será <strong>de</strong> gran utilidad a la hora <strong>de</strong> elaborarguiones (script) para po<strong>de</strong>r automatizar nuestras tareas. Los usuarios <strong>de</strong> DOS estarán acostumbrados a lautilización <strong>de</strong> los archivos <strong>de</strong> procesamiento por lotes (.bat) o más bien <strong>de</strong>nomina "batch".Existen varios tipos <strong>de</strong> intérpretes <strong>de</strong> comandos en UNIX <strong>de</strong> los cuales los más famosos e importantes sonel "Bourne Shell" (sh) y el "C Shell" (csh). El intérprete <strong>de</strong> comandos Bourne, usa una sintaxis <strong>de</strong>comandos usada en los primeros sistemas UNIX, como el System III. El nombre <strong>de</strong> intérprete Bourne enla mayoría <strong>de</strong> los Un*x es /bin/sh (sh por shell). El C Shell posee una sintaxis muy parecida al lenguaje<strong>de</strong> programación C y se lo encontrara como /bin/csh. El más usado en el mundo GNU/Linux, comoantes dijimos, es el bash por "Bourne Again Shell y se lo encontrará en /bin/bash. Bash posee toda lafuncionalidad <strong>de</strong>l sh con características avanzadas <strong>de</strong> C Shell, por esto cualquier guión escrito para unintérprete <strong>de</strong> comandos sh correrá perfectamente en él. Si lo que se prefiere es el uso <strong>de</strong>l intérprete <strong>de</strong>comandos basado en el lenguaje C, en GNU/Linux se podrá encontrar el Tcsh en /bin/tcsh, que es unaversión extendida <strong>de</strong>l C Shell. Los gustos <strong>de</strong> los usuarios son los que <strong>de</strong>ci<strong>de</strong>n que intérprete <strong>de</strong> comandosse usará, por esto es posible configurar para cada usuario un intérprete <strong>de</strong> comandos distintos y no afectarel funcionamiento <strong>de</strong> programas como el ls, cat o cp. Solo se vera afectada la funcionalidad <strong>de</strong> algúnguión que esté preparado para ejecutar con un intérprete <strong>de</strong> comandos <strong>de</strong>terminado, lo que veremos comose pue<strong>de</strong> corregir al ver programación <strong>de</strong> script <strong>de</strong> shell.Para más información respecto a cada uno <strong>de</strong> estos intérpretes <strong>de</strong> comandos se recomienda leer laspáginas <strong>de</strong> manual <strong>de</strong> cada uno <strong>de</strong> ellos, lo que dará información muy <strong>de</strong>tallada <strong>de</strong> estos.CaracterísticasComodinesHablaremos <strong>de</strong> algunas característica <strong>de</strong> mucha utilidad y que harán mucho más fácil el trabajo, tanto ensh como en bash. Una <strong>de</strong> las características que poseen los intérpretes <strong>de</strong> comandos es el uso <strong>de</strong>comodines para reemplazar partes <strong>de</strong> archivos. Con esto, podría referirse a un archivo usando caracteresespeciales como el "*" o "?". Supongamos que se <strong>de</strong>sea listar todos los archivos que contengan la letra"ñ" en nuestro directorio. Para ello usaremos el comando ls[shrek@pantano:~]$ ls *ñ*


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html2 <strong>de</strong> 12 07/09/2005 7:57Esto el intérprete <strong>de</strong> comandos lo vera como si quisiéramos listas todos los archivos que empezaran conninguno, uno o varios caracteres, tuviesen una letra "ñ" y terminaran con ninguno, uno o varioscaracteres.[shrek@pantano:~]$ lshola heart texto.form manti.form[shrek@pantano:~]$ ls h*hola heartComo pue<strong>de</strong> observarse también nos es útil si se sabe como comienza el archivo pero no como termina.Lo que nuestro intérprete <strong>de</strong> comando esta haciendo es sustituir el "*" con cualquier combinación posibleque coincida con los archivos que tenemos en el directorio don<strong>de</strong> estamos buscando. Si se utilizasolamente el "*" con el comando ls, este interpretará que se esta buscando cualquier combinación posibley listará todo como si se estuviese tratando <strong>de</strong> ejecutar el comando ls solo[shrek@pantano:~]$ ls *hola heart texto.form manti.formEste proceso es llamado "expansión <strong>de</strong> comodines" y lo efectúa el intérprete <strong>de</strong> comandos. Esto es muyimportante ya que los comandos como el ls nunca ven el "*" en su lista <strong>de</strong> parámetros, es el intérprete <strong>de</strong>comandos quien expan<strong>de</strong> los comodines para incluir todos los nombres <strong>de</strong> archivos que se adapten. Es<strong>de</strong>cir que luego que se da la or<strong>de</strong>n[shrek@pantano:~]$ ls h*es expandida para obtener[shrek@pantano:~]$ ls hola heartOtro comodín es el "?". Este carácter comodín solo expan<strong>de</strong> un único carácter. Luego ls ? mostrarátodos los nombres <strong>de</strong> archivos con un carácter <strong>de</strong> longitud. En cambio la or<strong>de</strong>n ls hol? nos mostrará elarchivo hola.[shrek@pantano:~]$ ls ho?ahola[shrek@pantano:~]$ ls h????heartEstos caracteres comodín nos permiten referirnos a más <strong>de</strong> un archivo al mismo tiempo y en conjunto conlos comandos ya aprendidos, podrán ser <strong>de</strong> gran utilidad para realizar nuestras tareas <strong>de</strong> forma más fácil.Ejecución <strong>de</strong> comandos uno <strong>de</strong>trás <strong>de</strong>l otroSupongamos que se necesita ejecutar un comando e inmediatamente <strong>de</strong>spués otro. En la forma común loque haríamos seria ejecutar el primer comando y una vez que este haya finalizado, ejecutaríamos elsegundo. Existe una segunda forma <strong>de</strong> hacerlo y es utilizando el carácter ";" inmediatamente <strong>de</strong>spués <strong>de</strong>lprimer comando y a continuación poner el segundo comando. Con esto lograríamos que se ejecutara elprimer comando y al terminar se ejecutará el segundo.


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html3 <strong>de</strong> 12 07/09/2005 7:57[shrek@pantano:~]$ lshola heart texto.form manti.form[shrek@pantano:~]$ datemié jul 14 15:15:25 ART 2004Utilizando el carácter ";" haremos[shrek@pantano:~]$ ls;datehola heart texto.form manti.formmié jul 14 15:15:25 ART 2004ComillasEste punto viene bien aclararlo antes <strong>de</strong> empezar a ver características <strong>de</strong> alias y script para no tenercomplicaciones y confusiones. En GNU/Linux existen tres tipos <strong>de</strong> comillas: las dobles ("), comillassencillas (') y comillas inversas o tics inversos (`). Empezaremos con las comillas inversas. Estas indicanal shell que tendrá que remplazar lo que esta encerrado entre ellas con su resultado. Supongamos quequisiéramos ver solamente el día <strong>de</strong> hoy. Entonces teclearíamos el comando[shrek@pantano:~]$ date +%d15Ahora bien, cada vez que quisiéramos ver el día <strong>de</strong> hoy tendríamos que ingresar este comandonuevamente. Si le asignamos a una variable <strong>de</strong> entorno el resultado, solo tendríamos que mostrar estavariable.[shrek@pantano:~]$ DIAHOY=`date +%d`[shrek@pantano:~]$ echo $DIAHOY15Hay que tener en cuenta que para asignarle un valor a una variable tenemos que solo poner un nombreseguido <strong>de</strong>l signo "=" y luego lo que queramos ponerle <strong>de</strong>ntro. En cambio para mostrarla tendremos queanteponer el signo <strong>de</strong> dólar "$". Esto seria igual a poner[shrek@pantano:~]$ DIAHOY=15Lo único que el shell hace es expandir el comando para que solo se guar<strong>de</strong> el resultado <strong>de</strong> éste.El otro tipo <strong>de</strong> comillas, la sencilla ('), le dice al sistema que no haga ninguna expansión.[shrek@pantano:~]$ DIAHOY='date +%d'[shrek@pantano:~]$ echo $DIAHOYdate +%dLo que se obtiene es exactamente lo que le asignamos a la variable ya que el shell no realizo ningunaexpansión y lo único que asigno fue la ca<strong>de</strong>na 'date +%d' a la variable DIAHOY.El ultimo tipo <strong>de</strong> comillas son las dobles, este tiene casi la misma funcionalidad que las comillas simplespero con la salvedad <strong>de</strong> que lo que se incluya <strong>de</strong>ntro <strong>de</strong> estas estará sujeto a expansión por parte <strong>de</strong>l shell,


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html4 <strong>de</strong> 12 07/09/2005 7:57siendo los caracteres con significado especial los tics inversos (`) el signo <strong>de</strong> dólar ($), la diagonal (\) ylas mismas comillas dobles ("). Por ejemplo podríamos ingresar el siguiente comando[shrek@pantano:~]$ echo "`date`"Sat Apr 15 14:17:01 ART 2000AliasLa utilización <strong>de</strong> alias nos da la capacidad <strong>de</strong> po<strong>de</strong>r referenciar a un comando con otro nombre. Ladiferencia sustancial que po<strong>de</strong>mos encontrar con los script <strong>de</strong> shell, es que los script para ejecutarseprimero lanzaran a un subshell como un proceso hijo <strong>de</strong>l shell que esta ejecutando en ese momento. Encambio un alias funciona en el proceso <strong>de</strong>l shell siendo ejecutado en forma interna con la subsiguientevelocidad que esto otorga al no tener que crearse un nuevo proceso o <strong>de</strong> buscar en el disco rígido. Porsupuesto que pue<strong>de</strong>n usarse un conjunto <strong>de</strong> comandos para crear otro más complejos. Con los scripts sepue<strong>de</strong> realizar lo mismo y lo veremos más a<strong>de</strong>lante, pero para comandos simples y cortos no sonnecesarios. Los alias pertenecen a cada usuario, pudiendo éste configurarlos como más le convenga.Supongamos que quisiéramos ver solo la hora cada vez que se lo pidamos al sistema y no quisiéramosponer el comando date con su modificador cada vez que lo queramos hacer. Lo que haremos será crear un"alias" al comando "date" con el modificador correspondiente. Para ello contamos con el comando alias,que seguido <strong>de</strong> argumentos nos permitirá crear uno, sin argumentos nos mostrará los alias que tenemosconfigurados.[shrek@pantano:~]$ alias hora='date +%r'[shrek@pantano:~]$ hora02:45:04 PMAhora bien, esto funcionará mientras estemos en el sistema, ya que estos datos son cargados en memoriay al salir <strong>de</strong>l sistema se per<strong>de</strong>rán. Para que cada vez que entremos al sistema los alias sigan funcionando<strong>de</strong>beremos agregarlos a un archivo, que aparece en forma oculta en el directorio <strong>de</strong> cada usuario,<strong>de</strong>nominado .bashrc o en caso <strong>de</strong> que se requiera que el alias funcione para todos los usuarios en el/etc/bashrc. Este archivo es leído por el /bin/bash cada vez que se entra al sistema. En él se tendrá queponer la línea alias en igual forma que lo haríamos en la interfaz <strong>de</strong> comandos.Completado <strong>de</strong> líneaSe pue<strong>de</strong> hacer que el shell complete la línea <strong>de</strong> comandos cuando se introduzca la primeras letras y sepresione la tecla Tab. Esta propiedad también es útil para expandir la ruta a un directorio <strong>de</strong>terminado.Supongamos que <strong>de</strong>ntro <strong>de</strong>l directorio /home existe un subdirectorio llamado /shrek[shrek@pantano:~]$ cd /home/shrSi presionamos la tecla Tab se completara la línea en /home/shrek. Si existiera más <strong>de</strong> un directorio quecomenzará con "shr", el shell anunciaría con una señal audible, "bip", que existen más <strong>de</strong> unacoinci<strong>de</strong>ncia, y al presionar nuevamente la tecla Tab mostraría una lista <strong>de</strong> todos los directorios queposeen "shr" al comienzo. Si dicha lista excediera la catidad <strong>de</strong> lineas a motrar en la consola, nospreguntará primero si es que queremos ver la cantidad "X" <strong>de</strong> posibilida<strong>de</strong>s. Como ejemplo <strong>de</strong> estopodríamos citar el autocompletado <strong>de</strong> comandos. Si se oprime la tecla Tab sin haber introducido nadaantes, el shell nos mostraría primero que existe un número "X" <strong>de</strong> posibilida<strong>de</strong>s y al presionarnuevamente nos mostraría un listado <strong>de</strong> todos los comandos que son alcanzables.


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html5 <strong>de</strong> 12 07/09/2005 7:57PATHMuchas veces ocurre que al tratar <strong>de</strong> introducir un comando nos damos cuenta <strong>de</strong> que no tiene efecto ynos da un error en él intérprete <strong>de</strong> comandos. Tal vez se haya ingresado mal, pero tal vez no se posea eldirectorio que contiene dicho comando en la "ruta <strong>de</strong> búsqueda" o PATH. EL PATH es una variable <strong>de</strong>entorno que contiene un grupo <strong>de</strong> directorios pre<strong>de</strong>finidos en los cuales el shell buscará el comando oprograma a ejecutar. Esto ahorra tiempo ya que el sistema no tendrá que buscar en todos los directorios elprograma a ejecutar. Por esto el sistema, en caso <strong>de</strong> que el directorio no figure en el PATH, no podráejecutar el programa hasta que le <strong>de</strong>mos la ruta exacta en don<strong>de</strong> se encuentre.Esta variable <strong>de</strong> entorno llamada PATH, es inicializada con un valor pre<strong>de</strong>terminado en el archivo/etc/profile que es sólo modificable por el "root" y funciona como una referencia para todos losusuarios. A<strong>de</strong>más cada usuario posee en un archivo oculto <strong>de</strong>nominado .bash_profile o .profile,don<strong>de</strong> se le asigna a<strong>de</strong>más <strong>de</strong>l PATH inicial, cualquier otra modificación exclusiva para él. Tambiénpue<strong>de</strong> modificarse totalmente esta variable.Volviendo a la especificación <strong>de</strong> la ruta completa, anteriormente dijimos que los archivos sereferenciaban <strong>de</strong> esta forma, pero los programas también podrán referenciarse <strong>de</strong> la misma forma. Si ledamos la ruta completa podremos ejecutar el programa, si es que se cuenta con los permisos a<strong>de</strong>cuados,in<strong>de</strong>pendientemente <strong>de</strong>l valor <strong>de</strong> la variable PATH. Como ejemplo, si quisiéramos ejecutar el programadate, referenciándolo con una ruta completa, la sintaxis es[shrek@pantano:~]$ /bin/datemié jul 14 15:15:25 ART 2004Seguramente el directorio /bin estará en nuestra ruta, esto sirve solo como un ejemplo.Existe otra forma <strong>de</strong> ejecutar el programa, y es haciendo referencia a su ruta relativa, que es la ruta conrelación al directorio don<strong>de</strong> estamos parados actualmente. Para esto <strong>de</strong>bemos saber que la forma <strong>de</strong>referenciar al directorio actual es mediante "." y a su directorio padre con ".." (Mencionándosecomúnmente como "punto" y "punto - punto"). Dado que los directorios están divididos por una "/", sepodría hacer referencia a un archivo en el directorio padre con ../archivo. De esta forma, si se quisierahacer referencia a un archivo que se encuentra dos niveles encima nuestro, su referencia relativa seria../../archivo.Algo que difiere en la forma <strong>de</strong> ejecutar los programas en GNU/Linux y DOS, es que este último buscaprimero el archivo a ejecutar en el directorio actual y luego en la ruta <strong>de</strong> búsqueda. En cambio enGNU/Linux, solo se buscará en la ruta.No es problema ejecutar un archivo que esta en el directorio actual ya que este está incluíido en la ruta,pero por seguridad, <strong>de</strong>berá estar agregado como el último directorio en la ruta, por lo menos en la cuenta"root" ya que si algún usuario creara un archivo malicioso que estuviera en el directorio don<strong>de</strong> estaparado el usuario root en ese momento, y lo nombrara "more", cuando el root ejecute este comandotendría resultados catastróficos. En cambio, si el directorio actual esta a lo último <strong>de</strong> la ruta, primero seejecutara el que se encontré en el /bin en lugar que el que esté en el directorio actual. Igualmente parapo<strong>de</strong>r ejecutar directamente un programa que se encuentra en el directorio en que estamos paradosactualmente podríamos ingresar la ruta relativa a este, anteponiendo la referencia al directorio actual "./"al programa. Para ejecutar el programa hola que se encuentra en el directorio don<strong>de</strong> estamos paradosactualmente[shrek@pantano:~]$ ./holaHola amigos !!!


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html6 <strong>de</strong> 12 07/09/2005 7:57No busquen el programa "hola" en su sistema, no lo he distribuido aún ya que esta en <strong>de</strong>sarrollo :^).Variables <strong>de</strong> entornoIn<strong>de</strong>pendientemente <strong>de</strong> shell que estemos usando, se contará con lo que se <strong>de</strong>nomina "variable <strong>de</strong>entorno" o "variable <strong>de</strong> ambiente". Estas variables son como las que encontraremos en cualquier lenguaje<strong>de</strong> programación. Esto es tan esta forma que también podría ser accedidas <strong>de</strong>s<strong>de</strong> los scripts que creemos.Para distinguir <strong>de</strong> los comando, la variables se ponen en letra mayúscula. Cuando uno entra al sistema,existen ciertas <strong>de</strong> estas variables ya están asignadas. Para ver estas variables y su contenidos se cuentacon el comando "set", y para ver el contenido <strong>de</strong> una <strong>de</strong> estas variables solo tenemos que usar el comando"echo" seguido <strong>de</strong>l nombre <strong>de</strong> la variable con el signo "$" antepuesto. Ej. echo $LOGNAME, con loobtendremos el nombre <strong>de</strong>l usuario.Siguiendo con la ruta <strong>de</strong> búsqueda o PATH, esta es guardada en una variable llamada "$PATH", con loque si tecleamos "echo $PATH" veremos algo como esto[shrek@pantano:~]$ echo $PATH/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/home/shrek:/:.Nótese que el ultimo exponente <strong>de</strong> la ruta es el directorio actual que habíamos indicado en el puntoanterior sobre "ruta <strong>de</strong> búsqueda". Como se pue<strong>de</strong> observar cada uno <strong>de</strong> los directorios esta separado por":" y en último lugar está la referencia al directorio actual que habíamos hablado anteriormente. Otravariable muy importante es el "prompt" que no es ni más ni menos que la secuencia <strong>de</strong> caracteres queaparecen justo antes <strong>de</strong> lo que ingresamos en la interfase <strong>de</strong> comandos. El entorno bash dispone <strong>de</strong> 4prompt's, "PS1", "PS2", "PS3" y "PS4". Estas variables tienen un porqué. La <strong>de</strong>nominación "PS1" es elprompt principal y es el que vemos al iniciar el sistema. El "PS2" es el que aparece si al introducir algoque sobrepasa la línea y se va a la siguiente. Su valor por <strong>de</strong>fecto es ">". Se pue<strong>de</strong> comprobar ingresandoel carácter "\" en la línea que estemos ingresando, con lo que pasaremos a la siguiente línea. El "PS3"aparece cuando se utiliza el comando "select" <strong>de</strong> la interfase <strong>de</strong> comandos. El "PS4" aparece cuando seefectúa el seguimiento <strong>de</strong> un comando. El prompt y la mayoría <strong>de</strong> las variables <strong>de</strong> entorno pue<strong>de</strong>n sermodificados con el comando "export", con el podremos modificar el contenido <strong>de</strong> las variables.[shrek@pantano:~]$ export SECONDS=0[shrek@pantano:~]$ echo $SECONDS0La variable $SECONDS cuenta la cantidad <strong>de</strong> segundos <strong>de</strong>s<strong>de</strong> que entramos al sistema; con este mandatola seteamos a "0". Existen variables que no pue<strong>de</strong>n ser cambiadas, como UID, EUID o PPID, (se muestraun <strong>de</strong>talle <strong>de</strong> las variables más útiles en la tabla 2). Volviendo al prompt, este pue<strong>de</strong> ser cambiado paraque, por ejemplo, nos muestre el nombre <strong>de</strong> usuario seguido <strong>de</strong> una "@" y el nombre <strong>de</strong>l sistema, con laayuda <strong>de</strong> caracteres especiales.[shrek@pantano:~]$ export PS1='[\u@\h:\w]\$ 'Se muestra en la tabla los caracteres especiales <strong>de</strong>l prompt.Tabla 1. Caracteres especiales <strong>de</strong> la variable PROMPTCaracterQue representa\t La Hora actual en formato HH:MM:SS.


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html7 <strong>de</strong> 12 07/09/2005 7:57CaracterQue representa\d La fecha en formato "Día <strong>de</strong> la Semana Mes Fecha", como por ejemplo, "Sun Feb4".\n Salto <strong>de</strong> línea.\s Nombre <strong>de</strong>lshell.\w El directorio actual.\W El nombre base <strong>de</strong>l directorio actual. Por ejemplo, <strong>de</strong>l directorio /home/shrek, elnombre base es shrek.\u Nombre <strong>de</strong> usuario.\h Nombre <strong>de</strong> máquina.\# Número <strong>de</strong> comando <strong>de</strong>l comando actual.\! Posición en el historial <strong>de</strong> comandos <strong>de</strong>l comando actual.\$ Si la EUID es 0 (root), el carácter '#'. En cualquier otro caso el carácter es '$'.\\ La barra inclinada hacia atrás.\nnnEl carácter correspondiente al numero octal nnn.\[ Comienza una secuencia <strong>de</strong> caracteres no imprimibles, como los caracteres <strong>de</strong>escape o las secuencias <strong>de</strong> control. Estos caracteres pue<strong>de</strong>n ser usados para <strong>de</strong>finircolores.\] Fin <strong>de</strong> la secuencia <strong>de</strong> caracteres no imprimibles.Tabla 2. Variables más comunesVariablePPIDPWDOLDPWDREPLYUIDEUIDBASHBASH_VERSIONSHLVLRANDOMDefiniciónNúmero <strong>de</strong> i<strong>de</strong>ntificación <strong>de</strong>l proceso padre <strong>de</strong> la interfaz <strong>de</strong>comandos.Directorio <strong>de</strong> trabajo actual, establecido por el comando cd.Anterior directorio <strong>de</strong> trabajo, establecido por el comando cd.Cuando se usa el comando read <strong>de</strong> bash sin argumentos,estavariable recoge el contenido <strong>de</strong> la línea leída.Número i<strong>de</strong>ntificativo (ID) <strong>de</strong>l usuario, establecida en el arranque<strong>de</strong>l shell.ID eficaz <strong>de</strong> usuario, inicializada en el arranque <strong>de</strong>l shell.Nombre completo, incluida la ruta, <strong>de</strong>l archivo que se ejecutó paralanzar el shell.Número <strong>de</strong> versión <strong>de</strong> Bash.Nivel <strong>de</strong>l shell. Incrementa su valor en una unidad cada vez que selanza una nueva interfaz <strong>de</strong> comandos.Cada vez que se invoca a esta variable se obtiene un número enteroaleatorio. La secuencia <strong>de</strong> números aleatorios proporcionadas porRAMDOM se pue<strong>de</strong> inicializar simplemente asignándole un nuevo


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html8 <strong>de</strong> 12 07/09/2005 7:57VariableSECONDSLINENOHISTCMDHOSTTYPEHOSTNAMEOSTYPEPATHHOMECDPATHMAILMAILCHECKMAILPATHPS1valor a esta variable.DefiniciónMantiene el número <strong>de</strong> segundos que han transcurrido <strong>de</strong>s<strong>de</strong> que seejecutó el shell. Si asignamos un valor a esta variable, la cuentaindicará los segundos transcurridos <strong>de</strong>s<strong>de</strong> dicha asignación, mas elvalor asignado.Cuando se hace referencia a esta variable <strong>de</strong>s<strong>de</strong> un script, indica lalínea <strong>de</strong>ntro <strong>de</strong>l script en la que se le esta haciendo referencia,consi<strong>de</strong>rando que la primera línea se numera como 1. Si se invoca<strong>de</strong>s<strong>de</strong> la propia interfaz <strong>de</strong> comandos, el valor que <strong>de</strong>vuelve es elnúmero <strong>de</strong> línea que hace la or<strong>de</strong>n ejecutada <strong>de</strong>s<strong>de</strong> que se inició lainterfaz <strong>de</strong> comandos.Contiene la posición <strong>de</strong>ntro <strong>de</strong>l archivo <strong>de</strong> historia <strong>de</strong> comandos queocupa el comando actual.Se trata <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> texto <strong>de</strong>scribiendo el tipo <strong>de</strong> máquina en laque esta ejecutando el bash.Nombre <strong>de</strong> la máquina.Se trata <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> texto <strong>de</strong>scribiendo el sistema operativo enel que sé esta ejecutando el bash.La ruta <strong>de</strong> búsqueda <strong>de</strong> comandos. Se trata <strong>de</strong> una secuencia <strong>de</strong>directorios en los que localizar los programas, separados entre sí porun signo <strong>de</strong> dos puntos (:). La interfaz <strong>de</strong> comandos recorrerá estalista en el or<strong>de</strong>n dado buscando los comandos que queramosejecutar.Directorio raíz <strong>de</strong>l usuario actual. Es el argumento usado por <strong>de</strong>fectocuando ejecutamos el comando cd sin especificar ninguno.Se trata <strong>de</strong> la ruta <strong>de</strong> búsqueda para el cd. Tiene una estructurasimilar a la variable PATH. Lo que indica es don<strong>de</strong> se <strong>de</strong>ben buscarlos directorios especificados como argumentos al comando. Comoejemplo habitual, podría contener :~:/usr.Cuando contiene el nombre <strong>de</strong> un archivo, bash comprueba en él lallegada <strong>de</strong> correo nuevo y avisa en caso que se produzca.Determina el intervalo <strong>de</strong> tiempo en segundos que bash tomará pararevisar si hay correos nuevos.Al igual que PATH y CDPATH, esta variable contiene una lista, eneste caso, <strong>de</strong> archivos que <strong>de</strong>berán ser comprobados para la posiblellegada <strong>de</strong> correo. Se pue<strong>de</strong> indicar un mensaje especifico para lallegada <strong>de</strong> correo en diferentes buzones usando el carácter '?' comoseparador entre el archivo y el mensaje. En ese caso, la variable $_obtendrá el nombre <strong>de</strong>l buzón. Un ejemplo:MAILPATH='/var/spool/mail/nlucas?"Tienescorreo":~/mail/buzon?"Ha llegado algo al $_"'Valor <strong>de</strong>l prompt principal. En la tabla 1 se muestran los valores conlos que pue<strong>de</strong> expandirse.


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html9 <strong>de</strong> 12 07/09/2005 7:57VariablePS2PS3PS4HISTSIZEHISTFILEHISTFILESIZEPROMPT_COMMANDIGNOREEOFTMOUTFCEDITFIGNOREEDITORTERMDefiniciónValor <strong>de</strong>l prompt secundario. Este prompt es el que aparece cuandopartimos una línea en la interfaz <strong>de</strong> comandos para continuarintroduciendo en la siguiente línea <strong>de</strong> la pantalla.Valor <strong>de</strong>l tercer prompt. Este prompt es usado solamente por elcomando select.Valor <strong>de</strong>l cuarto prompt y último. Tan solo se usa cuando se estarealizando un seguimiento <strong>de</strong> los comandos mostrándose paraindicar los pasos por los que se va ejecutando el comando. Paraentrar en el modo <strong>de</strong> seguimiento, basta con ejecutar set -x.Entonces veremos como cada comando que ejecutemos se expan<strong>de</strong>,mostrando las sustituciones que se hacen con los alias, las variables,etc.Contiene él número <strong>de</strong> comandos a guardar en el historial <strong>de</strong>comandos.Contiene el nombre <strong>de</strong>l archivo en el que se almacena el historial <strong>de</strong>comandos. Por <strong>de</strong>fecto se trata <strong>de</strong>l archivo ~/.bash_history.Número máximo <strong>de</strong> líneas que pue<strong>de</strong> contener el archivo <strong>de</strong>historial. Tengamos en cuenta que un comando pue<strong>de</strong> ocupar variaslíneas.Si esta <strong>de</strong>finido, contiene el comando a ejecutar antes <strong>de</strong> presentar elprompt.Indica cuantas veces ha <strong>de</strong> recibir el carácter EOF (End Of File, o lapulsación <strong>de</strong> la tecla Crtl-D) antes <strong>de</strong> salir <strong>de</strong> bash. Si el valorindicado no es numérico, se toma por <strong>de</strong>fecto el 10. Si no estaseleccionado, una única pulsación basta.Si contiene un valor superior a cero, indica el número <strong>de</strong> segundosque se pue<strong>de</strong> estar sin introducir un comando a el shell. Pasado estetiempo, la interfaz <strong>de</strong> comandos se cerrará.Ruta y nombre <strong>de</strong>l editor usado por <strong>de</strong>fecto para el comando fc. Por<strong>de</strong>fecto se usa Vi .Lista <strong>de</strong> sufijos <strong>de</strong> archivos que se ignoraran al intentar completar unnombre <strong>de</strong> archivo <strong>de</strong>s<strong>de</strong> bash. La lista estará formada por lossufijos ignorados, separados por un signo <strong>de</strong> dos puntos (:). Porejemplo .0:.tmpEn esta variable muchos programas buscaran la ruta y el nombre <strong>de</strong>leditor a usar. Por <strong>de</strong>fecto el editor usado es el Vi. Algunos <strong>de</strong> losprogramas que hacen uso <strong>de</strong> esta variable son crontab (con laopción -e), edquota y otros muchos.Contiene el tipo <strong>de</strong> terminal. Esta variable es importante, puesalgunos tipos <strong>de</strong> terminales no son compatibles con algunosprogramas.Expresiones regulares y uso <strong>de</strong> metacaracteresEmpezaremos ampliando el uso <strong>de</strong> los comodines que antesmencionamos (* y ?). Es muy frecuente el uso


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html10 <strong>de</strong> 12 07/09/2005 7:57<strong>de</strong> esta clase <strong>de</strong> caracterespara que el shell los expanda a fin <strong>de</strong> que coincidan con cualquiercarácter, en elcaso <strong>de</strong> "?", y con cualquier ca<strong>de</strong>na <strong>de</strong> caracteres, en elcaso <strong>de</strong> "*". La utilización <strong>de</strong> estos ya la <strong>de</strong>finimosanteriormente ysolo nos queda mostrar su utilización en función <strong>de</strong> las expresiones regulares.La expresiones regulares son una serie <strong>de</strong> reglas que <strong>de</strong> cumplirsese expan<strong>de</strong>n para po<strong>de</strong>r ser utilizadas.Para esto se utiliza también otrotipo <strong>de</strong> metacaracteres "[]" don<strong>de</strong> los caracteres que se introduzcan<strong>de</strong>ntroserán reemplazados para completar el comando. Supongamos quequeremos editar con el programa vi losarchivos carta.1, carta.2, carta.3, carta.4 y carta.5. Podríamos utilizar tanto el carácter ? como el *paraeditarlo. Pero también pue<strong>de</strong> ser utilizado la serie <strong>de</strong> números <strong>de</strong>l 1 al 5 encerrados <strong>de</strong>ntro <strong>de</strong> loscorchetes ([]).[shrek@pantano:~]$ vi carta.*Con esto editaríamos todos los archivos <strong>de</strong>s<strong>de</strong> carta.1 a carta.5.[shrek@pantano:~]$ vi carta.[12345]Con esta expresión, el intérprete <strong>de</strong> comandos expandirá a cadauno <strong>de</strong> los caracteres encerrados entre loscorchetes para que tome ellugar que correspon<strong>de</strong> en el nombre <strong>de</strong>l archivo a editar. ¿Pero que pasaría sisolo se quisiera editar el archivo carta.1, carta.2 y carta.5? No podríamos utilizar ni el carácter "*" niel "?" para hacerlo <strong>de</strong> un solo paso, pero si podremos usar la expresión regular <strong>de</strong> esta forma[shrek@pantano:~]$ vi carta.[125]Con esto, y dado que el intérprete <strong>de</strong> comandos solo interpreta <strong>de</strong>un carácter por vez, se editaransolamente los archivos carta.1, carta.2y carta.5. Los números serán tomados <strong>de</strong>ntro <strong>de</strong> los corchetescomocaracteres individuales.La utilidad <strong>de</strong> las expresiones regulares es muy gran<strong>de</strong>, y existencasos que es solamente con su utilizaciónque pue<strong>de</strong> realizarse untrabajo. Las expresiones regulares podrán ser usadas, junto con otroscomandos,también para i<strong>de</strong>ntificar grupos <strong>de</strong> caracteres en un texto yrepresentarlos según se pida. Por ejemplo,utilizando el comando grep,que casualmente significa Global Regular Expresión Print, se podrábuscar<strong>de</strong>ntro <strong>de</strong> un texto una ca<strong>de</strong>na que se requiera y mostrarla por pantalla. Supongamos que necesitamosmostrar todas las líneas que posean la palabra carta en el archivo documentos[shrek@pantano:~]$ grep carta documentosLo que nos <strong>de</strong>volverá las líneas que posean la palabra carta, aun aquellas que tengan entre sus letras ungrupo <strong>de</strong> caracteres que sea igual al buscado, por ejemplo "cartas" o "pancarta". Ahora bien, que pasaríasi la palabra carta estuviese escrita con el primer carácter en mayúsculas. Entonces el comando grep no lamostraría, para esto podríamos usar una expresión regular <strong>de</strong> esta forma[shrek@pantano:~]$ grep [Cc]arta documentosSi lo que necesitáramos es buscar las líneas que comiencen con la palabra carta, tanto con la "C" enmayúsculas o minúsculas usaríamos el símbolo circunflejo (^) y el comando es


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html11 <strong>de</strong> 12 07/09/2005 7:57[shrek@pantano:~]$ grep ^[Cc]arta documentosCon esto indicaríamos que mostrará todas las líneas que tuviesen como primer palabra a "carta" tanto conla primera letra en mayúscula o minúscula. Si lo que quisiéramos es mostrar todas las líneas <strong>de</strong>documentos que terminaran con la palabra "carta", tendríamos que usar la función que cumple el símbolo"$" (ya habíamos visto que era usado para referenciar a una variable <strong>de</strong> entorno) que en las expresiónesregulares, colocado al final, indica que esta tendrá que ser buscada al final <strong>de</strong> la línea. Primero leasignaremos la expresión a una variable para que el mandato sea más legible y se vea la utilización <strong>de</strong> lasdos funciones <strong>de</strong>l símbolo $[shrek@pantano:~]$ VAR=^[Cc]arta[shrek@pantano:~]$ grep $VAR$ documentosExplicamos el uso <strong>de</strong> expresiones regulares solo con el comando grep, pero existe un sin número <strong>de</strong>oportunida<strong>de</strong>s para usarlas con los comandos. Se verá más a<strong>de</strong>lante que pue<strong>de</strong>n ser muy utilizadas en eleditor Vi y nos harán muy fácil el trabajo con éste.Interpretación <strong>de</strong> comandosHemos podido apreciar la utilización <strong>de</strong> una serie <strong>de</strong> comandosjunto con aplicaciones comunes <strong>de</strong> estos,pero es <strong>de</strong> necesidad po<strong>de</strong>renten<strong>de</strong>r el método por el cual estos comandos son interpretados por elshell,para tener un poco más <strong>de</strong> entendimientos a la hora <strong>de</strong> elaborarnuestros propios script y programas. Loprimero que se nos pue<strong>de</strong> ocurrir averiguar, es el or<strong>de</strong>n en que son interpretados los comandos.Partiremos <strong>de</strong> la base que se pue<strong>de</strong>n ejecutar más <strong>de</strong> un comando en una línea. Esto se logra separándoloscon un punto y coma (;).Lo primero que el shell realiza es dividir estos comandos en lo que se <strong>de</strong>nomina "tokens". Cada token esun comando, junto con sus argumentos, a ejecutar. Una vez que el shell pue<strong>de</strong> saber cuantos tokens hay,<strong>de</strong>termina su sintaxis. Si existe un error en este punto, ninguno <strong>de</strong>l os tokens se ejecutará y el shell nosadvertirá <strong>de</strong> un posible error <strong>de</strong> sintaxis. Si la sintaxis es correcta, comienza la interpretación <strong>de</strong> loscomandos. A partir <strong>de</strong> aquí el shell trata <strong>de</strong> ver si alguno <strong>de</strong> los tokens es en realidad una función <strong>de</strong>l


Tutorial <strong>de</strong>l Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html12 <strong>de</strong> 12 07/09/2005 7:57propio shell. Si existe, esta será expandida antes <strong>de</strong> ser ejecutada. Luego, se expan<strong>de</strong>n los alias. Si alguno<strong>de</strong> los tokens es en realidad un alias, ya sea creado por el usuario o no, este se expandirá antes <strong>de</strong>ejecutarse. Si el alias llama a otro alias, este también se expandirá antes <strong>de</strong> ejecutarse. Una vez que se hanexpandido los alias y funciones el shell comenzará a evaluar las variables y las sustituirá con su valor. Alterminar esto, se expandirá cualquier comodín utilizado expandiéndolo al nombre <strong>de</strong> archivo o comandoque concuer<strong>de</strong> <strong>de</strong> acuerdo a las reglas antedichas. Ahora, aunque está la mayor parte <strong>de</strong>l comandoevaluado, el shell tendrá todavía que ver si el primero <strong>de</strong> los tokens correspon<strong>de</strong> a un comando <strong>de</strong>l shell oa un programa externo. Si esto ocurriera, se tendrá que consultar la ruta <strong>de</strong> búsqueda. Luego evaluará siexiste algún tipo <strong>de</strong> redirección o canalización, tem que veremos más en <strong>de</strong>talle en el próximo capítulo,por el cual la entrada o salida <strong>de</strong> un comando este redirigida a otro lugar. Una vez que se ha podidoanalizar todo el comando o conjunto <strong>de</strong> comandos a su mínima expresión, el shell efectuará una copia <strong>de</strong>si mismo, a través <strong>de</strong> la llamada a sistema fork() para po<strong>de</strong>r ejecutar el script. Esta copia es un hijo <strong>de</strong>lshell y que <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l shell que lo originó. Luego <strong>de</strong> esto, el shell hijo, usará una llamada a sistema<strong>de</strong>nominada exec() para po<strong>de</strong>r ejecutar el binario correspondiente. Aunque quien lo ejecuta es en realida<strong>de</strong>l shell hijo, hay que recordar que el padre todavía se encuentra en memoria esperando la finalización <strong>de</strong>lproceso hijo.Pue<strong>de</strong> darse el caso que se <strong>de</strong>see que quien ejecute el comando o script sea el propio shell y no un shellhijo. Esto se logra con la utilización <strong>de</strong>l comando "." punto. Al anteponer un punto al comando o script y<strong>de</strong>jando un espacio entre ellos, el shell enten<strong>de</strong>rá que es el mismo quién <strong>de</strong>be interpretar este comando oscript.[shrek@pantano:~]$ . myscriptEste script será interpretado sin que se genere un sub-shell hijo.Esta es una simplificación <strong>de</strong> la ejecución <strong>de</strong> un comando tipo, no quiere ser una explicación total <strong>de</strong> loque pue<strong>de</strong> ocurrir dado la grancantidad <strong>de</strong> variantes que intervienen, pero servirá como base <strong>de</strong>entendimiento <strong>de</strong> lo que el shell realiza una vez que se ha presionado la tecla Enter.Anterior Inicio SiguienteSistema <strong>de</strong> archivos Funciones


Sistema <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html1 <strong>de</strong> 4 07/09/2005 7:57Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteSistema <strong>de</strong> archivosLa mayoría <strong>de</strong> los sistema Un*x tienen una distribución estándar <strong>de</strong> ficheros, <strong>de</strong> esta forma los recursosque el sistema posee y los archivos, serán fácilmente localizados. Esta distribución forma el árbol <strong>de</strong>directorios, el cual comienza con /, también conocido como directorio raíz. Directamente por <strong>de</strong>bajo <strong>de</strong>este hay algunos subdirectorios muy importantes para el sistema: Estos son /bin, /etc, /<strong>de</strong>v y /usr,entre otros. Estos a su vez contienen otros directorios con archivos <strong>de</strong> configuración <strong>de</strong>l sistema,programas, etc. Cada usuario posee un directorio en el /home que como vimos anteriormente yusualmente tienen el nombre <strong>de</strong>l usuario que es su dueño. En algunas distribuciones pue<strong>de</strong> ser encontradoen /usr/home.Veremos los directorios que se muestran en este árbol/___bin|___<strong>de</strong>v|___etc| |___X11| |___httpd| |___mail| |___ppp| |___sysconfig|___sbin|___home| |___shrek| |___fiona| |___burro|___lib|___proc|___tmp|___usr| |___bin| |___local| |___X11R6| |___etc| |___inclu<strong>de</strong>| |___lib| |___man| |___src|___var| |___admin| |___spool| |___run| |___log/bin/<strong>de</strong>vbin es la abreviación <strong>de</strong> binaries, o ejecutables. Es don<strong>de</strong> resi<strong>de</strong>n la mayoría <strong>de</strong> los programasesenciales <strong>de</strong>l sistema. Use la or<strong>de</strong>n ls -F /bin para listar los ficheros. Podrá ver algunas ór<strong>de</strong>nesque reconocerá, como cp, ls y mv. Estos son los programas para estas ór<strong>de</strong>nes. Cuando usa la or<strong>de</strong>ncp está ejecutando el programa /bin/cp. Usando ls -F se verá que la mayoría (si no todos) losficheros <strong>de</strong> /bin tienen un asterisco añadido al final <strong>de</strong> sus nombres. Esto indica que son ficherosejecutables.El siguiente es /<strong>de</strong>v. Veamos <strong>de</strong> nuevo con ls -F. Los archivos en /<strong>de</strong>v son conocidos como


Sistema <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html2 <strong>de</strong> 4 07/09/2005 7:57/etc/sbin/home/libcontroladores <strong>de</strong> dispositivo (<strong>de</strong>vice drivers) son usados para acce<strong>de</strong>r a los dispositivos <strong>de</strong>l sistemay recursos, como discos duros, mo<strong>de</strong>ms, memoria, etc. Por ejemplo, <strong>de</strong> la misma forma que pue<strong>de</strong>leer datos <strong>de</strong> un fichero, pue<strong>de</strong> leerla <strong>de</strong>s<strong>de</strong> la entrada <strong>de</strong>l ratón leyendo /<strong>de</strong>v/mouse. Los ficherosque comienzan su nombre con fd son controladores <strong>de</strong> disqueteras. fd0: es la primera disquetera,fd1 la segunda. Ahora, alguien astuto se dará cuenta <strong>de</strong> que hay más controladores <strong>de</strong> dispositivopara disqueteras <strong>de</strong> los que hemos mencionado. Estos representan tipos específicos <strong>de</strong> discos. Porejemplo, fd1H1440 acce<strong>de</strong>rá a discos <strong>de</strong> 3.5" <strong>de</strong> alta <strong>de</strong>nsidad en la disquetera 1. Aquí tenemos unalista <strong>de</strong> algunos <strong>de</strong> los controladores <strong>de</strong> dispositivo más usados. Nótese que incluso aunque pue<strong>de</strong>que no tenga alguno <strong>de</strong> los dispositivos listados, tendrá entradas en <strong>de</strong>v <strong>de</strong> cualquier forma./<strong>de</strong>v/console hace referencia a la consola <strong>de</strong>l sistema, es <strong>de</strong>cir, al monitor conectadodirectamente a su sistema.Los dispositivos /<strong>de</strong>v/ttyS* y /<strong>de</strong>v/cua* son usados para acce<strong>de</strong>r a los puertos serie. Porejemplo, /<strong>de</strong>v/ttyS0 hace referencia a "COM1" bajo MS-DOS. Los dispositivos /<strong>de</strong>v/cuason "callout", los cuales son usados en conjunción con un mo<strong>de</strong>m.Los nombres <strong>de</strong> dispositivo que comienzan por hd acce<strong>de</strong>n a discos duros. /<strong>de</strong>v/hda hacereferencia a la totalidad <strong>de</strong>l primer disco duro, mientras que /<strong>de</strong>v/hda1 hace referencia a laprimera partición en /<strong>de</strong>v/hda.Los nombres <strong>de</strong> dispositivo que comienzan con sd son dispositivos SCSI. Si tiene un discoduro SCSI, en lugar <strong>de</strong> acce<strong>de</strong>r a él mediante /<strong>de</strong>v/hda, <strong>de</strong>berá acce<strong>de</strong>r a /<strong>de</strong>v/sda. Lascintas SCSI son accedidas vía dispositivos st y los CD-ROM SCSI vía sr.Los nombres que comienzan por lp acce<strong>de</strong>n a los puertos paralelo. /<strong>de</strong>v/lp0 hace referenciaa "LPT1" en el mundo MS-DOS./<strong>de</strong>v/null es usado como "agujero negro", cualquier dato enviado a este dispositivo<strong>de</strong>saparece. ¿Para qué pue<strong>de</strong> ser útil esto? Bien, si <strong>de</strong>sea suprimir la salida por pantalla <strong>de</strong>una or<strong>de</strong>n, podría enviar la salida a /<strong>de</strong>v/null. Hablaremos más sobre esto <strong>de</strong>spués.Los nombres que comienzan por /<strong>de</strong>v/tty[0-9]* hacen referencia a "consolas_virtuales" <strong>de</strong>su sistema (accesibles mediante las teclas Alt-F1, Alt-F2, etc). /<strong>de</strong>v/tty1 hace referencia ala primera VC, /<strong>de</strong>v/tty2 a la segunda, etc.Los nombres <strong>de</strong> dispositivo que comienzan con /<strong>de</strong>v/pty* son "pseudo-terminales". Estosson usados para proporcionar un "terminal" a sesiones remotas. Por ejemplo, si su máquinaestá en una red, telnet <strong>de</strong> entrada usará uno <strong>de</strong> los dispositivos /<strong>de</strong>v/pty.contiene una serie <strong>de</strong> ficheros <strong>de</strong> configuración <strong>de</strong>l sistema. Estos incluyen /etc/passwd (la base<strong>de</strong> datos <strong>de</strong> usuarios), /etc/rc (guiones <strong>de</strong> inicialización <strong>de</strong>l sistema), etc.se usa para almacenar programas esenciales <strong>de</strong>l sistema, que usará el administrador <strong>de</strong>l sistema.contiene los directorios "home" <strong>de</strong> los usuarios. Por ejemplo, /home/shrek es el directorio <strong>de</strong>lusuario shrek. En un sistema recién instalado, no habrá ningún usuario en este directorio.contiene las imágenes <strong>de</strong> las librerías compartidas. Estos ficheros contienen código que compartirán


Sistema <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html3 <strong>de</strong> 4 07/09/2005 7:57muchos programas. En lugar <strong>de</strong> que cada programa contenga una copia propia <strong>de</strong> las rutinascompartidas, estas son guardadas en un lugar común, en /lib. Esto hace que los programasejecutables sean menores y reduce el espacio usado en disco./proc/tmp/usres un "sistema <strong>de</strong> ficheros virtual". Los ficheros que contiene realmente resi<strong>de</strong>n en memoria, no enun disco. Hacen referencia a varios procesos que corren en el sistema, y le permiten obtenerinformación acerca <strong>de</strong> que programas y procesos están corriendo en un momento dado.Muchos programas tienen la necesidad <strong>de</strong> generar cierta información temporal y guardarla en unfichero temporal. El lugar habitual para esos ficheros es en /tmp.es un directorio muy importante. Contienen una serie <strong>de</strong> subdirectorios que contienen a su vezalgunos <strong>de</strong> los más importantes y útiles programas y ficheros <strong>de</strong> configuración usados en el sistema.Los directorios <strong>de</strong>scritos arriba son esenciales para que el sistema esté operativo, pero la mayoría<strong>de</strong> las cosas que se encuentran en /usr son opcionales para el sistema. De cualquier forma, son estascosas opcionales las que hacen que el sistema sea útil e interesante. Sin /usr, tendría un sistemaaburrido, solo con programas como cp y ls. /usr contiene la mayoría <strong>de</strong> los paquetes gran<strong>de</strong>s <strong>de</strong>programas y sus ficheros <strong>de</strong> configuración./usr/X11R6/usr/bin/usr/etccontiene el sistema XWindow si se ha instalado. El sistema X Window es un entorno gráficogran<strong>de</strong> y potente el cual proporciona un gran número <strong>de</strong> utilida<strong>de</strong>s y programas gráficos,mostrados en "ventanas" en su pantalla. Si está familiarizado con los entornos MicrosoftWindows o Macintosh, XWindow le será muy familiar. Este directorio contiene todos losejecutables <strong>de</strong> XWindow, ficheros <strong>de</strong> configuración y <strong>de</strong> soporte. Esto será cubierto con más<strong>de</strong>talle en la Sección 9.es el almacén real <strong>de</strong> programas <strong>de</strong>l sistema Un*x. Contiene la mayoría <strong>de</strong> los programas queno se encuentran en otras partes como /bin.Como /etc contiene diferentes ficheros <strong>de</strong> configuración y programas <strong>de</strong>l sistema, /usr/etccontiene incluso más que el anterior. En general, los ficheros que se encuentran aquí no sonesenciales para el sistema, a diferencia <strong>de</strong> los que se encuentran en /etc, que si lo son./usr/inclu<strong>de</strong>/usr/libcontiene los ficheros <strong>de</strong> cabacera para el compilador <strong>de</strong> C. Estos ficheros (la mayoría <strong>de</strong> loscuales terminan en .h, <strong>de</strong> "hea<strong>de</strong>r") <strong>de</strong>claran estructuras <strong>de</strong> datos, subrutinas y constantesusados en la escritura <strong>de</strong> programas en C. Los ficheros que se encuentran en/usr/inclu<strong>de</strong>/sys son generalmente usados en la programación <strong>de</strong> en Un*x a nivel <strong>de</strong>sistema. Si se está familiarizado con el lenguaje <strong>de</strong> programación C, aquí encontrarán losficheros <strong>de</strong> cabecera , como por ejemplo stdio.h, el cual <strong>de</strong>clara funciones como printf().


Sistema <strong>de</strong> archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html4 <strong>de</strong> 4 07/09/2005 7:57contiene las librerías equivalentes "stub" y "static" a los ficheros encontrados en /lib. Alcompilar un programa, este es "enlazado" con las librerías que se encuentran en aquí, lascuales dirigen al programa a buscar en /lib cuando necesita el código <strong>de</strong> la librería. A<strong>de</strong>más,varios programas guardan ficheros <strong>de</strong> configuración en /usr/lib./usr/local/var/usr/man/usr/srces muy parecido a /usr contiene programas y ficheros no esenciales para el sistema, pero quehacen el sistema más divertido y excitante. En general, los programas que se encuentran en/usr/local son específicos <strong>de</strong> su sistema esto es, el directorio /usr/local difiere bastanteentre sistemas Un*x. Aquí encontrará programas gran<strong>de</strong>s como TeX (sistema <strong>de</strong> formateo <strong>de</strong>documentos) y Emacs (gran y potente editor), si se los instala.Este directorio contiene las páginas <strong>de</strong> manual. Hay dos subdirectorios para cada página"sección" <strong>de</strong> las páginas (use la or<strong>de</strong>n man man para más <strong>de</strong>talles). Por ejemplo,/usr/man/man1 contiene los fuentes (es <strong>de</strong>cir, los originales por formatear) <strong>de</strong> las páginas <strong>de</strong>manual <strong>de</strong> la sección 1, y /usr/man/cat1 las páginas ya formateadas <strong>de</strong> la sección 1.contiene el código fuente (programas por compilar) <strong>de</strong> varios programas <strong>de</strong> su sistema. Elmás importante es /usr/src/linux, el cual contiene el código fuente <strong>de</strong>l Núcleo <strong>de</strong> Linux.contiene directorios que a menudo cambian su tamaño o tien<strong>de</strong>n a crecer. Muchos <strong>de</strong> estosdirectorios solían residir en /usr, pero <strong>de</strong>s<strong>de</strong> que estamos tratando <strong>de</strong> <strong>de</strong>jarlo relativamenteinalterable, los directorios que cambian a menudo han sido llevados a /var. Algunos <strong>de</strong> estosdirectorios son:/var/logcontiene varios ficheros <strong>de</strong> interés para el administrador <strong>de</strong>l sistema, específicamentehistóricos <strong>de</strong>l sistema, los cuales recogen errores o problemas con el sistema. Otros ficherosguardan las sesiones <strong>de</strong> presentación en el sistema, así como los intentos fallidos./var/spool/var/mailcontiene ficheros van a ser pasados a otro programa. Por ejemplo, si su máquina estáconectada a una red, el correo <strong>de</strong> llegada será almacenado en /var/spool/mail hasta que lolea o lo borre. Artículos nuevos <strong>de</strong> las "news" tanto salientes como entrantes pue<strong>de</strong>nencontrarse en /var/spool/news, etc.En algunas distribuciones como la RedHat, es don<strong>de</strong> se guardaran los emails que nos llegueny man<strong>de</strong>mos.Anterior Inicio SiguienteConceptos básicos <strong>de</strong> entornoSubirTutorial <strong>de</strong>l Shellshell


Conceptos básicos <strong>de</strong> entorno shellhttp://www.ant.org.ar/cursos/curso_intro/shellbasics.html1 <strong>de</strong> 2 07/09/2005 7:57Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteConceptos básicos <strong>de</strong> entorno shellAl hablar <strong>de</strong> un SO Un*x nos ponemos a pensar en un entorno <strong>de</strong> texto. ¿Pero que hay entre lo que vemosy lo que es realmente? ¿Qué es este entorno <strong>de</strong> texto que se habla tanto? Este entorno se maneja a través<strong>de</strong> lo que se <strong>de</strong>nomina un interprete <strong>de</strong> comandos. De la misma forma que DOS posee su interprete <strong>de</strong>comandos, el COMMAND.COM. Un*x y GNU/Linux posee los suyos. A través <strong>de</strong> estos podremosefectuar una comunicación entre nosotros y el sistema dándole ór<strong>de</strong>nes a través <strong>de</strong> comando que elinterprete <strong>de</strong> comandos <strong>de</strong>scifrara para que el sistema haga lo que le pedimos.Anteriormente ubicamos al interprete <strong>de</strong> comandos <strong>de</strong>ntro <strong>de</strong> las capas con la que nos podremos encontraren un sistema. El interprete <strong>de</strong> comandos bash es solo una interfase <strong>de</strong> las muchas que posee Un*x oGNU/Linux. Dentro <strong>de</strong> este tipo <strong>de</strong> interpretes <strong>de</strong> comando al que nos estamos refiriendo, existen muchasotras variantes.Tan pronto se entra al sistema, se iniciara él interprete <strong>de</strong> comando que tengamos configurando, en lamayoría <strong>de</strong> los casos será el bash y es en el que nos ocuparemos nosotros. En este momento, podremosteclear las or<strong>de</strong>nes que necesitemos o que tengamos ganas <strong>de</strong> teclear.pantano login: shrekPassword:Last login: Sun Mar 26 19:23:32 on tty1Bienvenido al sistema pantano. Que tenga un buen día.[shrek@pantano:~]$Aquí se ve el prompt <strong>de</strong>l interprete <strong>de</strong> comandos, [shrek@pantano:~]$ indicándonos que esta listo pararecibir or<strong>de</strong>nes.Tratemos <strong>de</strong> <strong>de</strong>cirle al sistema que realice algo interesante[shrek@pantano:~]$ make loveBueno, si estamos muy enamorados <strong>de</strong> nuestro sistema pue<strong>de</strong> resultar lógico que nos sintamos así, pero elsistema no pensara lo mismo <strong>de</strong> nosotros y nos <strong>de</strong>volverá un mensaje <strong>de</strong> error indicándonos que no pue<strong>de</strong>ejecutar el comando que le hemos solicitado.make: *** No hay ninguna regla para construir el objetivo `love'. Alto.[shrek@pantano:~]$Con razón dicen que GNU/Linux es poco amigable. Ahora con esto se nos presentan preguntasinteresantes. ¿Qué son ór<strong>de</strong>nes? ¿Qué esta ocurriendo cuando tecleamos make love? El programa makerealmente existe en el sistema pero no pue<strong>de</strong> interpretar lo que le estamos pidiendo que realice.La primera palabra <strong>de</strong> la or<strong>de</strong>n, make, es el nombre <strong>de</strong> la or<strong>de</strong>n a ejecutar. El resto <strong>de</strong> la or<strong>de</strong>n es tomadocomo argumento <strong>de</strong> la or<strong>de</strong>n. Veamos un ejemplo


Conceptos básicos <strong>de</strong> entorno shellhttp://www.ant.org.ar/cursos/curso_intro/shellbasics.html2 <strong>de</strong> 2 07/09/2005 7:57[shrek@pantano:~]$ cal 10 2004 octubre <strong>de</strong> 2004do lu ma mi ju vi sá1 23 4 5 6 7 8 910 11 12 13 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 3031[shrek@pantano:~]$El comando cal sirve para mostrar un simple calendario, si no se le dan argumentos nos mostrará el mesen curso en el año actual. Aquí el nombre <strong>de</strong> la or<strong>de</strong>n es cal y los argumentos que le hemos dado son 10 y2004.Cuando una or<strong>de</strong>n se ingresa al sistema, el intérprete <strong>de</strong> comando efectúa varias operaciones. Primero quetodo, busca el nombre <strong>de</strong> la or<strong>de</strong>n y comprueba si es una or<strong>de</strong>n interna, propiedad <strong>de</strong>l mismo intérprete <strong>de</strong>comandos y que este sabe ejecutar por si mismo, existen numerosas <strong>de</strong> estas ór<strong>de</strong>nes. El interprete <strong>de</strong>comandos también comprueba si la or<strong>de</strong>n es un "alias" o nombre sustituto <strong>de</strong> otra or<strong>de</strong>n. Si no cumple conninguno <strong>de</strong> estos requisitos, él interprete <strong>de</strong> comandos busca el programa y lo ejecuta pasándole losargumentos especificados en la línea <strong>de</strong> comandos. En el ejemplo <strong>de</strong>l make que es un comando que sirvepara po<strong>de</strong>r compilar, el intérprete <strong>de</strong> comandos ve que no es una or<strong>de</strong>n interna ni un alias, así que busca elprograma, que está ubicado en /usr/bin, y lo ejecuta pasándole el argumento love como un objeto acompilar. Como make no pue<strong>de</strong> encontrar un objetivo <strong>de</strong> ese nombre, falla enviando un mensaje <strong>de</strong> errory <strong>de</strong>volviendo el control al intérprete <strong>de</strong> comandos.Para que el intérprete <strong>de</strong> comandos pueda encontrar los programas a ejecutar, se basa en lo que se<strong>de</strong>nomina path. Este path o ruta es cargado como una variable <strong>de</strong> entorno, la carga el mismo interprete enmemoria <strong>de</strong>s<strong>de</strong> un archivo <strong>de</strong> configuración central llamado /etc/profile y agregándole a<strong>de</strong>más laspropias configuraciones <strong>de</strong> path que cada usuario posea en su directorio personal, en el caso <strong>de</strong>l interpretebash, será ~/.bash_profile, a<strong>de</strong>más <strong>de</strong> ~/.profile. Volveremos en el próximo capítulo sobre esto.Ahora, que ocurre si tecleamos un comando que el sistema no pueda ni interpretar ni encontrar en la ruta<strong>de</strong>finida[shrek@pantano:~]$ besame-bash: besame: command not found[shrek@pantano:~]$Si no se encuentra el programa con el nombre <strong>de</strong> la or<strong>de</strong>n que indicamos (en este caso besame), semostrará un mensaje <strong>de</strong> error que <strong>de</strong>berá explicar bien ese problema.Anterior Inicio SiguienteConsolas Subir Sistema <strong>de</strong> archivos


Consolashttp://www.ant.org.ar/cursos/curso_intro/consolas.html1 <strong>de</strong> 1 07/09/2005 7:56Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteConsolasLa consola <strong>de</strong>l sistema es el monitor y teclado conectado directamente al sistema. Como GNU/Linux esun sistema operativo multiusuario, pue<strong>de</strong> tener otros terminales conectados a puertos serie <strong>de</strong>l sistema,pero estos serán consolas físicas y no el tipo que trataremos ahora. GNU/Linux, como otras versiones <strong>de</strong>Un*x, proporciona acceso a lo que se <strong>de</strong>nominan consolas virtuales o VC's, las cuales permitirán tenermás <strong>de</strong> una sesión <strong>de</strong> trabajo abierta <strong>de</strong>s<strong>de</strong> consola a la vez. Para po<strong>de</strong>r ver esto una vez que estemos<strong>de</strong>ntro <strong>de</strong>l sistema presionen las teclas Alt-F2 y se tendrá un nuevoBienvenido. Este sistema es Linux 2.4.26pantano login:Esta es una segunda consola virtual. Para po<strong>de</strong>r volver a la primer consola, solo hace falta presionar lasteclas Alt-F1 y se estará otra vez en la primer sesión.En un sistema que recién se instala se contara con 6 consolas virtuales activas <strong>de</strong>s<strong>de</strong> Alt-F1 a Alt-F6. Enalgunas distribuciones se podrán contar con 8 o más activas al inicio, pero esto se pue<strong>de</strong> aumentar hasta12 VC's, una por cada tecla <strong>de</strong> función.El uso <strong>de</strong> estas consolas es extremadamente potente ya que nos permite tener varias aplicacionescorriendo al mismo tiempo y hasta, lo que veremos en la sección <strong>de</strong> Xwindow, podremos tener corriendo elentorno gráfico en una consola y otra aplicación en otra VC. El uso <strong>de</strong> las VC's, por <strong>de</strong>fecto esta limitadoa ver una consola a la vez, pero existen aplicaciones que permiten ver varias consolas al mismo tiempo enun mismo monitor lo que las hace más provechosas.Anterior Inicio SiguienteEntrando al sistema y creación <strong>de</strong>SubirConceptos básicos <strong>de</strong> entornocuentasshell


Entrando al sistema y creación <strong>de</strong> cuentashttp://www.ant.org.ar/cursos/curso_intro/entrando.html1 <strong>de</strong> 3 07/09/2005 7:56Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteEntrando al sistema y creación <strong>de</strong> cuentasPara empezar a ver las características <strong>de</strong> que GNU/Linux posee <strong>de</strong>bemos dar algunas pautas generalessobre los usuarios que se ampliarán mas a<strong>de</strong>lante.Pondremos algunas pautas. Nuestro sistema tendrá un nombre que lo i<strong>de</strong>ntificará en la red y este será"pantano". Y aparecerá ante cualquier comando que pongamos como indicativo <strong>de</strong>l sistema con la forma[usuario@pantano:/directorio_actual]{símbolo}don<strong>de</strong> directorio_actual será el directorio don<strong>de</strong> estamos parados actualmente. Tendremos que tenerdos usuarios mínimos <strong>de</strong> ejemplo para po<strong>de</strong>r interactuar, que ya bautizaremos shrek y fiona. Dosindicativos que nos dirán con que tipo <strong>de</strong> usuario estamos trabajando en el lugar <strong>de</strong> {símbolo},se usará él"#" para el usuario root y "$" para el usuario común. Por supuesto que esto pue<strong>de</strong> configurarse <strong>de</strong> maneradistinta. Esta es solo una muestra <strong>de</strong> posibilida<strong>de</strong>s que se podrían tener configuradas.[root@pantano:/home]#Aquí a entrado en el sistema el usuario "root" y esta parado sobre el directorio /home. Como se habránotado la barra indicativa <strong>de</strong>l directorio raíz es / y no la acostumbrada en DOS \.Cuando inicia el sistema lo más probable es que tenga que ingresar como root o lo que <strong>de</strong>nomina súperusuario. Para esta sección basta <strong>de</strong>cir que el root es quien tiene po<strong>de</strong>r absoluto sobre el sistema. Es quienpue<strong>de</strong> hacer cualquier cosa que le plazca y más. Por ello se dice muchas veces "En un sistema eres root ono eres nadie" y con razón. Por ello se <strong>de</strong>berá usar esta cuenta lo menos posible, solo en el caso <strong>de</strong> tenerque utilizar algún comando privilegiado o para mantenimiento <strong>de</strong>l sistema. Sí, cuanto más tiempo estemostrabajando como root, tendremos más posibilida<strong>de</strong>s <strong>de</strong> cometer un error irreparable que si trabajamoscomo un simple usuario. Repetiremos esto otra vez, tal vea así se vea mejorUSA AL USUARIO ROOT LO MENOS POSIBLE, CUANTO MÁS TIEMPO ESTEMOSTRABAJANDO COMO ROOT, TENDREMOS MAS POSIBILIDADES DE COMETER UNERROR IRREPARABLE QUE SI TRABAJAMOS COMO UN SIMPLE USUARIO.Se vera un indicativo en la pantalla que le pedirá su nombre <strong>de</strong> usuario a través <strong>de</strong> la palabra login:Bienvenido. Este sistema es Linux 2.4.26pantano login:Poniendo nuestro nombre <strong>de</strong> usuario y luego presionando Intro o Enter (como más les guste), se podrápasa a ingresar nuestra contraseña o password que no será mostrada en la pantalla para evitar que seavista por alguna persona que este en los alre<strong>de</strong>dores <strong>de</strong> su sistema, por ello se <strong>de</strong>berá teclearcuidadosamente


Entrando al sistema y creación <strong>de</strong> cuentashttp://www.ant.org.ar/cursos/curso_intro/entrando.html2 <strong>de</strong> 3 07/09/2005 7:56Bienvenido. Este sistema es Linux 2.4.26pantano login: rootPassword:Hay que recordar que GNU/Linux es case sensitive por lo que los caracteres en minúscula y mayúsculason distintos. Si el password es incorrecto se mostrará el siguiente mensajeBienvenido. Este sistema es Linux 2.4.26pantano login: rootPassword:login incorrectlogin:Y se <strong>de</strong>berá intentar <strong>de</strong> nuevo. Una vez introducido correctamente el nombre <strong>de</strong> usuario y el passworduno es libre <strong>de</strong> empezar a trabajar con el sistema. Lo primero que se <strong>de</strong>berá hacer al entrar al sistemarecién instalado, si no es que se hizo durante la instalación, es crearnos una cuenta <strong>de</strong> usuario común. Paraesto po<strong>de</strong>mos utilizar dos script que vienen por <strong>de</strong>fecto en la mayoría <strong>de</strong> las distribuciones adduser yuseradd. Ambos realizan el mismo trabajo pero se han nombrado diferente en distintas distribuciones. Enmuchos casos uno es un enlace <strong>de</strong>l otro. Para la creación <strong>de</strong> una cuenta, se <strong>de</strong>berá entrar al sistema comorootpantano login: rootpassword:Last login: Sun Mar 26 19:23:32 on tty1Luego introduciremos uno <strong>de</strong> estos comandos seguido por el nombre <strong>de</strong> usuario que se quiera agregar alsistema.[root@pantano:~]# adduser shrek[root@pantano:~]#Este comando creará una entrada en el archivo /etc/password don<strong>de</strong> la clave estará en blanco, yaveremos por qué, y un subdirectorio en el directorio /home o /usr/home según se haya instalado. Laentrada <strong>de</strong> la clave en blanco esta dada porque tendremos que asignarle una contraseña para que elusuario pueda entrar al sistema y si le vienen ganas pueda cambiarla luego. Ya veremos en el tema <strong>de</strong>Administración Básica <strong>de</strong> Sistemas, las diferentes posibilida<strong>de</strong>s que se pue<strong>de</strong>n llegar a tener para lagestión <strong>de</strong> usuarios. Con el comando passwd seguido <strong>de</strong>l nombre <strong>de</strong>l usuario le asignaremos unacontraseña[root@pantano:~]# passwd shrekNew UNIX password:Re-Type UNIX password:[root@pantano:~]#Algo a tener muy en cuenta en lo que se refiere a la creación <strong>de</strong> claves para los usuarios es que muchasveces estos no la cambian durante mucho tiempo. Este es un gran problema <strong>de</strong> seguridad, por lo que


Entrando al sistema y creación <strong>de</strong> cuentashttp://www.ant.org.ar/cursos/curso_intro/entrando.html3 <strong>de</strong> 3 07/09/2005 7:56tendremos que darle a esta primera clave un plazo <strong>de</strong> expiración corto, no más <strong>de</strong> 30 días, para que elusuario se vea obligado a cambiarla inmediatamente. Con respecto a la calidad <strong>de</strong> la clave, se tendrá quetener en cuenta que cuanto más fácil <strong>de</strong> recordar sea una clave, más fácil será que la <strong>de</strong>scubra otrapersona y cuanto más difícil sea <strong>de</strong> recordar se anotara en algún lugar que será menos seguro que siguardase en la memoria. Usar palabras muy conocidas o fechas <strong>de</strong> cumpleaños u otra cosa relacionadacon nosotros es perjudicial para la seguridad <strong>de</strong> nuestro sistema. Volveremos más a<strong>de</strong>lante con esto.Anterior Inicio SiguienteEmpezando con GNU/Linux Subir Consolas


Empezando con GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/empezando.html1 <strong>de</strong> 1 07/09/2005 7:55Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteEmpezando con GNU/LinuxLos usuarios que recién comienzan a utilizar un entorno operativo UNIX como es GNU/Linux se sientenintimidados por la complejidad que este SO posee. Existen numerosos libros que ya han tratado el tema<strong>de</strong> GNU/Linux pero ninguno <strong>de</strong> ellos pue<strong>de</strong> cubrir en total profundidad todo los temas que este SO tienepara dar. Este parte <strong>de</strong>l curso no tratara <strong>de</strong> ahondar en <strong>de</strong>talles y como todo el curso, solo dará las pautasnecesarias para que el estudiante pueda investigar los temas que más les interesen. Lo que trataremos <strong>de</strong>hacer es ganar conceptos fundamentales para el mejor funcionamiento <strong>de</strong> esta clase <strong>de</strong> SO por lo queempezaremos con UNIX. Para ello pasaremos a ver los interpretes <strong>de</strong> comando y algunos comandossimples pero solo a modo <strong>de</strong> que se tenga una pequeña noción para comenzar a trabajar. Luego seprofundizará en cada uno <strong>de</strong> estos puntos con mayor <strong>de</strong>talle. Expondremos el concepto <strong>de</strong> árbol <strong>de</strong>directorios y su distribución así como también una lista <strong>de</strong>l comando más utilizados.Conceptos básicos <strong>de</strong> Un*xComo antes vimos, GNU/Linux posee un 95 % <strong>de</strong> compatibilidad con el SO UNIX, es por esto veremosque la mayoría <strong>de</strong> las posibilida<strong>de</strong>s <strong>de</strong> este se aplican. UNIX posee las características <strong>de</strong> cualquier sistemaoperativo multiusuario y multitarea. Esto significa que pue<strong>de</strong> existir más <strong>de</strong> una persona usando lacomputadora a la vez, cada uno <strong>de</strong> ellos ejecutando un programa diferente. Esta sensación la da el SOjunto con las características <strong>de</strong>l procesador ya que nos asigna tiempos para cada usuario y cada programahaciéndonos pensar que contamos con un procesador solo para nosotros.El sistema <strong>de</strong> archivos es un árbol multinivel que permite a los usuarios crear sus propios subdirectorios.Tanto los programas escritos por los usuarios, como los <strong>de</strong>l sistema normalmente se ejecutan por medio<strong>de</strong> un intérprete <strong>de</strong> comandos, que en Un*x o en GNU/Linux es un proceso <strong>de</strong> usuario como cualquierotro, al cual se le <strong>de</strong>nomina shell. Aunque el shell es un programa, lo po<strong>de</strong>mos observar como tres entesdistintos: como programa, como proceso y como ambiente <strong>de</strong> trabajo.El shell que se tomaba anteriormente como estándar era el Bourne Shell llamado simplemente sh escritopor el <strong>de</strong>sarrollador Steven Bourne. Pero el paso <strong>de</strong>l tiempo a dado lugar a un nuevo estándar, el bash, yse usará <strong>de</strong> aquí en a<strong>de</strong>lante para referirse al shell dado su gran aceptación en todos los sistemas UNIX y<strong>de</strong>rivados.Anterior Inicio SiguienteProceso post-instalación yEntrando al sistema y creación <strong>de</strong>resolución <strong>de</strong> problemascuentas


Proceso post-instalación y resolución <strong>de</strong> problemashttp://www.ant.org.ar/cursos/curso_intro/x592.html1 <strong>de</strong> 1 07/09/2005 7:55Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Instalación SiguienteProceso post-instalación y resolución <strong>de</strong>problemasMuy bien, el SO esta instalado y se nos pi<strong>de</strong> reiniciar la computadora. Al cabo <strong>de</strong> un instante lacomputadora se reinicia y ... nada. El sistema no arranca y para peor el anterior SO que teníamosinstalado tampoco. Pue<strong>de</strong> presentarse este y otros problemas una ves terminada la instalación y muchasveces se <strong>de</strong>be a que el LILO no esta bien instalado. Tal vez algún aspecto <strong>de</strong> la configuración <strong>de</strong> este no sehizo bien o se cuenta con un SO anterior que no permite que se cambie el MBR <strong>de</strong> disco rígido. El LILOpue<strong>de</strong> ser interpretado como un virus por programas como el Norton Antivirus <strong>de</strong> Windows. Esto se <strong>de</strong>bea que este programa monitoriza cualquier cambio en el MBR y al momento <strong>de</strong> que lo encuentra, rescribeel MBR sobreescribiendo el LILO.Si se cuelga el sistema durante el arranque se <strong>de</strong>be tomar nota <strong>de</strong> todos los mensajes que aparezcan paraasí <strong>de</strong>terminar la causa que origino esto. Muchas veces es por hardware que tiene conflictos y esto hayque solucionarlo radicalmente. Los sistemas nuevos funcionan con dispositivos Plug an Play <strong>de</strong>configuración por software y muchas veces originan conflictos con otros dispositivos. En este punto y con<strong>de</strong>stornillador en mano se tendrá que proce<strong>de</strong>r a ir quitando cada uno <strong>de</strong> los dispositivos y comenzar conuna máquina casi pelada. Solo placa <strong>de</strong> vi<strong>de</strong>o, memoria, rígido, teclado y monitor. Solo lo esencial paraque el sistema arranque. Si no arranca, el problema esta en alguno <strong>de</strong> los cinco puntos anteriores, lo quees muy difícil ya que la mayoría <strong>de</strong> los problemas se <strong>de</strong>be a tarjetas mal configuradas. Si arranco, se<strong>de</strong>berá ir instalando placa por placa hasta encontrar cual es la que trae problemas.Los errores que pue<strong>de</strong>n generarse por la RAM <strong>de</strong>l sistema se <strong>de</strong>be en su mayoría a falta <strong>de</strong> esta (aunquese han visto casos <strong>de</strong> kernel panic originados por memorias <strong>de</strong>scompuestas o que se encuentranmezcladas en los slots). En muchos casos si no se cuenta con la cantidad <strong>de</strong> RAM necesaria, el sistema senegara a encen<strong>de</strong>r ya que GNU/Linux necesita suficiente RAM para crear un sistema <strong>de</strong> archivos raíz enmemoria.Los discos SCSI son muy buenos pero ocasionan gran<strong>de</strong>s problemas. Hay que procurar leer toda ladocumentación que se encuentre sobre estos y la forma <strong>de</strong> instalarlos en GNU/Linux.Anterior Inicio SiguienteInstalación general y pequeñasSubirEmpezando con GNU/Linuxdiferencias


Instalación general y pequeñas diferenciashttp://www.ant.org.ar/cursos/curso_intro/x568.html1 <strong>de</strong> 2 07/09/2005 7:55Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Instalación SiguienteInstalación general y pequeñas diferenciasAl instalar GNU/Linux en un sistema nuevo sin ningún otro SO instalado previamente uno pue<strong>de</strong> tenerpocos problemas. En todo caso se tendrá que empezar el proceso <strong>de</strong> instalación <strong>de</strong>s<strong>de</strong> el comienzo perono per<strong>de</strong>remos ningún dato importante.La recomendación general, y para todo lo que se haga en GNU/Linux, es leer la documentaciónrelacionada a lo que realizaremos. (RTFM)Los sistemas como Windows han mal acostumbrado a los usuarios al no tener que leer casi nada paratener funcionando su sistema. Pero esto tiene un costo. Cuando un problema se presenta no se sabe quefue lo que paso. En GNU/Linux existe gran documentación para todo y en los casos más importantes estaen nuestro idioma. Por esto no hay que <strong>de</strong>saprovechar esta oportunidad.No se trataran el tema <strong>de</strong> instalación a partir <strong>de</strong> cada una <strong>de</strong> las distribuciones ya que en cada una <strong>de</strong> ellasexiste la documentación para po<strong>de</strong>r hacerlo. Lo que se tratara es la instalación a partir <strong>de</strong> un sistema quetenga Windows instalado, que será la mayoría <strong>de</strong> las ocasiones.Los pasos a seguir son los siguientes:1.2.3.4.Como antes habíamos visto, el recabar información <strong>de</strong>l sistema ayudara a una buena instalación. Laforma más sencilla <strong>de</strong> hacerlo es imprimir la información que nos proporciona las Propieda<strong>de</strong>s <strong>de</strong>lSistema en el panel <strong>de</strong> control.Luego <strong>de</strong> que inicie la instalación a través <strong>de</strong>l método que se haya elegido, CD-ROM, diskette oNFS, GNU/Linux intentara <strong>de</strong>tectar el hardware <strong>de</strong>l sistema. Si no pue<strong>de</strong> hacerlo se le tendrá queindicar con los datos que se recabaron anteriormente.Se tienen que crear ahora las particiones principal y swap. Si se instala a partir <strong>de</strong> un disco yaparticionado con el fdisk <strong>de</strong>l DOS, se podrá cambiar el tipo <strong>de</strong> partición con la utilería fdisk <strong>de</strong>GNU/Linux. En otras distribuciones existe otra aplicación como el DiskDruid <strong>de</strong> Red Hat que haráel trabajo por uste<strong>de</strong>s.La configuración <strong>de</strong> la interfase gráfica es todo un tema. Existen diversos ambientes gráficos <strong>de</strong>entre los cuales se pue<strong>de</strong> escoger. En muchos casos la instalación se hará exclusivamente en unentorno gráfico preconfigurado pero en otras se tendrá que configurar para po<strong>de</strong>r utilizarlo. Setendrá que ingresar información sobre mouse, teclado, monitor incluyendo velocida<strong>de</strong>s <strong>de</strong> refrescoe intervalo <strong>de</strong> barrido a<strong>de</strong>más <strong>de</strong> la tarjeta <strong>de</strong> vi<strong>de</strong>o disponible. Veremos este punto más en <strong>de</strong>talleen la sección <strong>de</strong> X. En este punto tal vez se pida crear un disco <strong>de</strong> booteo o rescate. Hay quehacerlo, rotularlo y guardarlo en un lugar seguro. Servirá en caso <strong>de</strong> fallas o que el sistema noarranque al reiniciar la computadora.5.6.El arranque <strong>de</strong>l sistema es todo un caso. Se esta contando seguramente con dos SO en el mismosistema. Los programas que lo guiaran por la instalación les pedirán que indiquen que sistemaoperativo quieren que inicie al encen<strong>de</strong>r la computadora. Con GNU/Linux se utiliza un programaque resi<strong>de</strong> en el MBR <strong>de</strong> disco rígido llamado LILO (LInux LOa<strong>de</strong>r) el cual administra en quepartición se encuentra cada SO y uno pue<strong>de</strong> elegir, presionando la tecla Tab, con cual SO se quiereiniciar.Ahora ya estará <strong>de</strong>ntro, se iniciara el sistema y se pedirá que ingrese una clave para el root (que esel súper - usuario, lo trataremos mas a<strong>de</strong>lante).


Instalación general y pequeñas diferenciashttp://www.ant.org.ar/cursos/curso_intro/x568.html2 <strong>de</strong> 2 07/09/2005 7:55La pequeñas diferencias en la instalación se <strong>de</strong>be al programa <strong>de</strong> instalación que la distribución utilice.Por ejemplo el programa utilizado por la distribución SUSE, el YaST, es uno <strong>de</strong> los mas completoscubriendo gran parte, si no es que todos, los aspectos <strong>de</strong> la instalación sistema. Otro es el programa <strong>de</strong>instalación <strong>de</strong> Red Hat y su sistema <strong>de</strong> configuración LinuxConf el cual ayudara al usuario, una vezinstalado el sistema, a cambiar cualquier aspecto <strong>de</strong> este. El programa <strong>de</strong> la distribución <strong>de</strong> Debian no sequeda atrás, el Dselect, es muy confiable al indicar los paquetes que <strong>de</strong>berán instalarse antes <strong>de</strong>lseleccionado.Un problema que pue<strong>de</strong> presentarse es que no se cuente con espacio suficiente para la instalación <strong>de</strong>l SO.En muchos casos el programa <strong>de</strong> instalación avisara <strong>de</strong> esto pero en otros casos no y se tendrá que esperara que el programa <strong>de</strong> instalación se <strong>de</strong> cuenta, al no tener mas espacio, para po<strong>de</strong>r comenzar otra vez conel proceso <strong>de</strong> instalación.Anterior Inicio SiguienteProceso pre-instalación Subir Proceso post-instalación yresolución <strong>de</strong> problemas


Proceso pre-instalaciónhttp://www.ant.org.ar/cursos/curso_intro/preinst.html1 <strong>de</strong> 3 07/09/2005 7:54Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Instalación SiguienteProceso pre-instalaciónAntes <strong>de</strong> ponerse a instalar el SO se tendrán que tener algunos recaudos para que no sea la última vez quese intente realizar esta tarea. Ante todo, se tendrá que tomar nota <strong>de</strong> cada paso que se dio, cada tecla quese apretó y que se contesto a las preguntas que el sistema iba haciendo. Cualquier sistema operativonecesita que el disco este dividido en particiones. Se pue<strong>de</strong>n tener hasta cuatro particiones dado que lasparticiones lógicas <strong>de</strong> DOS son <strong>de</strong> hecho subdivisiones <strong>de</strong> las particiones extendidas. GNU/Linux pue<strong>de</strong>ser instalado en particiones lógicas cosa que no todos los SO lo permiten.Los archivos serán guardados en un sistema <strong>de</strong> archivo que ocupara toda la partición. Los sistemas <strong>de</strong>archivos pue<strong>de</strong>n estar en particiones diferentes o hasta en cuatro discos rígidos. Tener diferentes sistemas<strong>de</strong> archivos ayuda a recuperarse <strong>de</strong> <strong>de</strong>sastres. Se podría tener el sistema <strong>de</strong> archivos principal en unapartición y el /home, directorio don<strong>de</strong> los usuarios guardan sus archivos, en otra. De esta manera si elsistema <strong>de</strong> archivos raíz / falla, se podrá instalar todo el sistema otra vez y preservar los datos <strong>de</strong> losusuarios.La vida útil <strong>de</strong> un sistema <strong>de</strong> archivos <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l uso. Si se <strong>de</strong>be tener una base <strong>de</strong> datos que funcioneconstantemente, seria bueno ubicarla en una partición diferente, para que el tráfico no pueda ocasionardaños a la partición don<strong>de</strong> se encuentra el / o los datos <strong>de</strong> los usuarios.Para po<strong>de</strong>r particionar la unidad existen muchas utilerías, tanto <strong>de</strong>structivas como no <strong>de</strong>structivas. Con no<strong>de</strong>structivas se dice que no se tendrán que per<strong>de</strong>r los datos al reparticionar una unidad que ya este enfuncionamiento. Igualmente siempre se recomienda el hacer una copia <strong>de</strong> seguridad para evitarproblemas. En /dosutils se encontrara una utilidad llamada FIPS.EXE que es un particionadorno-<strong>de</strong>structivo. Leer la documentación <strong>de</strong> FIPS para mas <strong>de</strong>talles.Esta utilidad solo pue<strong>de</strong> reparticionar discos que tengan particiones DOS. Si se necesita particionar unaunidad que ya tenga GNU/Linux instalado u otro dialecto <strong>de</strong> UN*X, se podrá utilizar el FDISK <strong>de</strong>GNU/Linux, la cual hace mucho más que su contraparte <strong>de</strong> DOS, ya que pue<strong>de</strong> cambiar también el tipo<strong>de</strong> partición lo que es <strong>de</strong> utilidad si las particiones se crearon con el FDISK <strong>de</strong> DOS.Hay que recordar algo muy importante a la hora <strong>de</strong> realizar un particionamiento <strong>de</strong>l disco. GNU/Linuxnecesita como mínimo 2 particiones. Una principal (raíz) y otra <strong>de</strong> intercambio (swap).En el área swap se guardaran páginas <strong>de</strong> memoria para hacer un tipo <strong>de</strong> memoria virtual y así exten<strong>de</strong>r lamemoria física cuando se necesite. Se podrán tener hasta 16 particiones swap <strong>de</strong> hasta 128 MB cada una.El tamaño recomendado para las particiones swap es <strong>de</strong>l doble que la memoria que tenga el sistema. Estoes así dado que si necesita expandir la memoria ya lo tendremos previsto, y en la mayoría <strong>de</strong> los casos laexpansión es <strong>de</strong> la misma cantidad que teníamos instalada. Si no se hiciera así, el sistema no podría hacerun intercambio <strong>de</strong>l total <strong>de</strong> la memoria, con lo que podrían aparecer problemas <strong>de</strong> ejecución. Por ellosiempre es mejor <strong>de</strong>sperdiciar un poco <strong>de</strong> espacio <strong>de</strong> disco que tener que reinstalar todo el sistema. Detodas maneras el tamaño <strong>de</strong> las particiones estará regido <strong>de</strong> acuerdo al software que se instalara y a lautilización que se le <strong>de</strong> al sistema.Los discos en ocasiones son un problema. Se <strong>de</strong>be consi<strong>de</strong>rar una frontera que se tenia por la BIOS <strong>de</strong> lacomputadora y que no podía romperse. La barrera <strong>de</strong> los 1024 cilindros. Mientras que GNU/Linux no secargue y tome control completo <strong>de</strong>l sistema, se tendrá que acce<strong>de</strong>r al hardware a través <strong>de</strong> la BIOS y estano pue<strong>de</strong> leer el kernel <strong>de</strong>l SO si esta fuera <strong>de</strong> ellos totalmente o en parte. Si se cuenta con una versión <strong>de</strong>LILO que no soporte el kernel <strong>de</strong>spués <strong>de</strong>l cilindro 1024, habrá avisos <strong>de</strong>l sistema que nos dirán que estoesta pasando. Esta limitación se ha vencido en las ultimas versiones <strong>de</strong>l programa LILO. Para más


Proceso pre-instalaciónhttp://www.ant.org.ar/cursos/curso_intro/preinst.html2 <strong>de</strong> 3 07/09/2005 7:54información sobre los problemas <strong>de</strong> discos rígidos leer el Hardware-HOWTO.Hay que conocer algunos aspectos en lo referente a particiones y dispositivos que varían con lo que seesta acostumbrado. En GNU/Linux los dispositivos y particiones tienen nombres muy distintos a losutilizados en otros sistemas operativos. Por ejemplo, en DOS las disqueteras se <strong>de</strong>nominan A: y B:,mientras que las particiones <strong>de</strong>l disco rígido <strong>de</strong> <strong>de</strong>nominan C:, D:,etc.Bajo GNU/Linux esto difiere dado que los dispositivos son manejados por controladores que están en eldirectorio /<strong>de</strong>v. Estos sirven para comunicar al sistema con los dispositivos como disco rígido, puertoserie y disqueteras. Por ejemplo, si se tiene un mouse en el sistema que se comunique por el puerto serie,se pue<strong>de</strong> acce<strong>de</strong>r a él a través <strong>de</strong>l dispositivo /<strong>de</strong>v/mouse, el cual es un enlace simbólico al dispositivo <strong>de</strong>lpuerto serie don<strong>de</strong> este conectado, /<strong>de</strong>v/ttyS0 o /<strong>de</strong>v/ttyS1. Las disqueteras, discos rígidos y particionestienen controladores propios y se acce<strong>de</strong>n a través <strong>de</strong> archivos <strong>de</strong> dispositivo. Nos preocuparemos porellos mas a<strong>de</strong>lante pero veamos como se <strong>de</strong>nominan cada uno.Tabla 1. Nombres <strong>de</strong> DispositivosDispositivoPrimera Disquetera (A:)Segunda Disquetera (B:)Primer disco rígido (todo el disco)Primer disco rígido, partición primaria 1Primer disco rígido, partición primaria 2Primer disco rígido, partición primaria 3Primer disco rígido, partición primaria 4Primer disco rígido, partición lógica 1Primer disco rígido, partición lógica 2Segundo disco rígido (todo el disco)Segundo disco rígido, partición primaria 1Primer disco rígido SCSI (todo el disco)Primer disco rígido SCSI, partición primaria 1Segundo disco rígido SCSI (todo el disco)Segundo disco rígido SCSI, partición primaria1Nombre/<strong>de</strong>v/fd0/<strong>de</strong>v/fd1/<strong>de</strong>v/hda/<strong>de</strong>v/hda1/<strong>de</strong>v/hda2/<strong>de</strong>v/hda3/<strong>de</strong>v/hda4/<strong>de</strong>v/hda5/<strong>de</strong>v/hda6/<strong>de</strong>v/hdb/<strong>de</strong>v/hdb1/<strong>de</strong>v/sda/<strong>de</strong>v/sda1/<strong>de</strong>v/sdb/<strong>de</strong>v/sdb1Como pue<strong>de</strong> verse a<strong>de</strong>más, los discos rígidos SCSI se nombran <strong>de</strong> diferente manera. Los discosIDE,MFM y RLL se acce<strong>de</strong>n a través <strong>de</strong> los dispositivos /<strong>de</strong>v/hda, /<strong>de</strong>v/hdb, etc. Las particiones sedivi<strong>de</strong>n a su vez en /<strong>de</strong>v/hda1, /<strong>de</strong>v/hda2, etc. Sin embargo los discos rígidos SCSI se nombran como/<strong>de</strong>v/sda, /<strong>de</strong>v/sdb y sus particiones como /<strong>de</strong>v/sda1, /<strong>de</strong>v/sd2, etc.Veamos un ejemplo práctico que servirá para ilustrar un sistema que este configurado ya con DOS oalguna clase <strong>de</strong> Windows.Primera disquetera (A:)Primera partición MS-DOS (C:)Segunda partición MS-DOS (d:)/<strong>de</strong>v/fd0/<strong>de</strong>v/hda1/<strong>de</strong>v/hda2


Proceso pre-instalaciónhttp://www.ant.org.ar/cursos/curso_intro/preinst.html3 <strong>de</strong> 3 07/09/2005 7:54Particion ExtendidaPrimera partición lógicaSegunda partición lógicaCD_ROM esclavo/<strong>de</strong>v/hda3/<strong>de</strong>v/hda5/<strong>de</strong>v/hda6/<strong>de</strong>v/hdbComo verán se salto a la partición /<strong>de</strong>v/hda4 ya que esta pertenece a la cuarta partición primaria. Cadatipo <strong>de</strong> partición tiene su propio nombre.Anterior Inicio SiguienteInstalación Subir Instalación general y pequeñasdiferencias


La documentación en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/documentacion.html1 <strong>de</strong> 2 07/09/2005 7:53Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a GNU/Linux SiguienteLa documentación en GNU/LinuxLa documentación <strong>de</strong> todo software es un tema muy preocupante. Las distintas distribuciones comerciales<strong>de</strong> GNU/Linux poseen documentación en formato impreso. Pero el mismo no cubre la totalidad <strong>de</strong>funcionalida<strong>de</strong>s y programas <strong>de</strong>l SO, sino solamente lo que correspon<strong>de</strong> a su implementación particular,quedando en manos <strong>de</strong> los usuarios el adquirir documentación más específica. Sin embargo, existe tantoen la misma distribución como en Internet infinidad <strong>de</strong> documentación que pue<strong>de</strong> ser consultada.El mayor problema al instalar un SO nuevo o un programa, es que los usuarios y administradores no setoman el tiempo necesario para leer la documentación y es por ello que la mayoría <strong>de</strong> las llamadas aservicio técnico se <strong>de</strong>ben más a problemas que están en la documentación que a los inesperados. Si setomara el tiempo necesario para leer la documentación, el costo <strong>de</strong> servicio técnico se reduciríanotablemente y esto en una empresa se tiene que tener en cuenta tratando que los usuarios yadministradores puedan tener el material necesario para informarse <strong>de</strong> todos los aspectos <strong>de</strong>l sistema.Des<strong>de</strong> sus inicios los <strong>de</strong>sarrolladores se han preocupado por mantener todo lo que se hizo en este sistemaoperativo bien documentado. Por esto existen numerosos proyectos que sirven para documentar cadaaspecto <strong>de</strong>l sistema y sus aplicaciones. Uno <strong>de</strong> los proyectos más conocidos es el LDP (Proyecto <strong>de</strong>Documentación <strong>de</strong> Linux), que se alza como una entidad centralizadora <strong>de</strong> documentación. Esto es buenopara tener un solo lugar en don<strong>de</strong> buscar toda la información necesaria.GNU/Linux cuenta con gran cantidad <strong>de</strong> documentación en varios formatos y uno <strong>de</strong> los <strong>de</strong>sarrolladospor el LDP son los HOWTO que están disponibles muchas veces con la misma distribución o a través <strong>de</strong>Internet. En muchos casos estos HOWTO fueron escritos por los mismos autores que los programas y enotros por personas que se han visto en un problema real en una empresa, universidad u otra institución.También existen lo que se <strong>de</strong>nomina MINI-HOWTO, que son guías rápidas para la prontaimplementación <strong>de</strong> un servicio o un programa, sin <strong>de</strong>tenerse en aspectos que no se utilizarán o seutilizarán rara vez. Se pue<strong>de</strong>n encontrar, tanto los HOWTO como los MINI-HOWTO, en distintosformatos como en ASCII, PDF, PS, HTML, DocBook, etc. En nuestro país existe un mirror <strong>de</strong>documentación <strong>de</strong>l proyecto LUCAS (LinUx en CAStellano), en el cual se podrán encontrar la mayoría<strong>de</strong> ellos.Uno <strong>de</strong> las formas <strong>de</strong> documentación más populares y simples <strong>de</strong> acce<strong>de</strong>r es el uso <strong>de</strong> las man-pages.Estas páginas <strong>de</strong> manual vienen en todas las distribuciones y cubren con notable <strong>de</strong>talle el uso <strong>de</strong>comandos o programas. A<strong>de</strong>más los programas nuevos que se instalen traerán en su mayoría man-pagesque se podrán acce<strong>de</strong>r <strong>de</strong> igual manera que a las propias <strong>de</strong>l sistema.Se acce<strong>de</strong> a ellas con el comandoshrek@pantano$ man Existen varias opciones que se pue<strong>de</strong>n utilizar y se pue<strong>de</strong>n buscar tecleandoshrek@pantano$ man mancon lo que aparecerán las páginas <strong>de</strong> manual <strong>de</strong>l comando man.Muchas veces las páginas <strong>de</strong> manual indican un número luego <strong>de</strong>l comando Ej. ls(1). Esto indica que lainformación <strong>de</strong>l comando ls pue<strong>de</strong> encontrarse en la sección 1. Esta forma se remonta a cuando las


La documentación en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/documentacion.html2 <strong>de</strong> 2 07/09/2005 7:53man-pages <strong>de</strong> los sistemas Un*x venían en libros impresos que se dividían en secciones don<strong>de</strong> seabordaba el tema <strong>de</strong> un comando <strong>de</strong> acuerdo a su aplicación. También se pue<strong>de</strong> contar con las páginas <strong>de</strong>INFO <strong>de</strong> cada comando, utilizando el comandoshrek@pantano$ info don<strong>de</strong> se encontrara información menos <strong>de</strong>tallada que en las man-pages pero <strong>de</strong> pronta utilización.Un lugar don<strong>de</strong> buscar cuando se instale un nuevo programa es los archivos README. Estos explicantodo el proceso <strong>de</strong> instalación así como también los requerimientos necesarios. A<strong>de</strong>más cada programacuenta con documentación propia que se podrá encontrar en los directorios /usr/doc y /usr/share/doc,pudiendo haber otros según el programa y/o la distribución. Los fuentes <strong>de</strong>l kernel también poseen unagran cantidad <strong>de</strong> información sobre aspectos generales <strong>de</strong>l SO y su funcionamiento, siendo una muybuena fuente <strong>de</strong> información al momento <strong>de</strong> meter mano al sistema, abundando los comentarios técnicosy los jocosos, dirigidos por los distintos <strong>de</strong>sarrolladores a sus pares. Existen a<strong>de</strong>más muchísimas guíasque cubren aspectos muy importantes y <strong>de</strong> alta complejidad <strong>de</strong>l SO y sus aplicaciones. Cabe <strong>de</strong>stacar quemucha <strong>de</strong> esta información se encuentra en español pero existe un número mucho mayor que esta eninglés. Proyectos como LuCAS tratan <strong>de</strong> que se revierta esto, aportando con su trabajo un aporteinvaluable para toda la comunidad hispanoparlante. Por todo lo expuesto hasta aquí, pue<strong>de</strong> <strong>de</strong>cirse queGNU/Linux es uno <strong>de</strong> los sistemas con mayor cantidad <strong>de</strong> documentación que existe, tanto librementecomo en forma <strong>de</strong> libros impresos por editoriales <strong>de</strong> renombre en el campo técnico. No quedan excusaspara no informarse.Anterior Inicio SiguientePor que usar GNU/Linux y queSubirInstalaciónnos ofrece


Instalaciónhttp://www.ant.org.ar/cursos/curso_intro/instalacion.html1 <strong>de</strong> 3 07/09/2005 7:54Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteInstalaciónSe tiene que tener en cuenta que cuanto más se conozca <strong>de</strong> su computadora menos problemas tendrá en lainstalación <strong>de</strong> GNU/Linux. Se tendrán que tener a mano una serie <strong>de</strong> información elemental que le seránrequeridas en el momento <strong>de</strong> la instalación tales como el idioma <strong>de</strong>l teclado y la zona <strong>de</strong>l tiempo don<strong>de</strong> seencuentra. Aunque parezca elemental, es aquí don<strong>de</strong> la mayoría se paraliza o pone mal los datos, lo quetraerá futuros dolores <strong>de</strong> cabeza.Hemos visto anteriormente las distribuciones más importantes que existen y la mayoría se instala enforma estándar <strong>de</strong> manera similar. Pero antes <strong>de</strong> proce<strong>de</strong>r a informar como es la instalación <strong>de</strong> alguna <strong>de</strong>estas, proce<strong>de</strong>remos a ver algunos aspectos generales a tener en cuenta a la hora <strong>de</strong> realizar dichainstalación.Antes <strong>de</strong> comenzar a instalar se tendrán que revisar nuestro sistema siendo lo primero a revisar elhardware <strong>de</strong> éste y verificar que el mismo esté soportado. Para ello se cuenta con un HOWTO especial<strong>de</strong>nominado Hardware HOWTO en el que se <strong>de</strong>talla una lista <strong>de</strong> hardware soportado por GNU/Linux.Cuando se habla <strong>de</strong> soportado significa que existe un controlador para ese dispositivo <strong>de</strong> hardware. Elnúmero <strong>de</strong> dispositivos soportados crece continuamente por ello esta lista esta en constante actualización.Si un dispositivo no es soportado, se pue<strong>de</strong> recurrir a la empresa que ven<strong>de</strong> la distribución que se estainstalando. Ellos saben a quien contactar para encontrar los controladores a<strong>de</strong>cuados para ese dispositivo.Una afirmación incorrecta que se hace es que si funciona en DOS funciona en GNU/Linux. Esto no essiempre cierto, <strong>de</strong>bido a que el DOS acce<strong>de</strong> al hardware a través <strong>de</strong> la BIOS y esta es <strong>de</strong>jada atrás porGNU/Linux cuando esta en funcionamiento. Linux toma control <strong>de</strong> cada parte <strong>de</strong>l sistema y <strong>de</strong> todos losdispositivos, por ello estos <strong>de</strong>berán funcionar <strong>de</strong> una forma estándar para que Linux los pueda utilizar.Otra afirmación es que solo el hardware <strong>de</strong> marca es soportado. Eso no es tan así. Existe una grancantidad <strong>de</strong> dispositivos clónicos que funcionan en GNU/Linux, pero como siempre uno es el responsable<strong>de</strong> lo que pueda ocurrir.Ocurre en ocasiones que cierto hardware funciona en otro sistema con GNU/Linux y no en el nuestro.Esto pue<strong>de</strong> <strong>de</strong>berse a que el sistema en el que funciona posee un kernel actualizado que soporta estedispositivo. Esto es algo a tener siempre en cuenta.Se tendrán que tener en cuenta los conflictos que puedan suce<strong>de</strong>rse entre distintos dispositivos ya queGNU/Linux permite que estos funcionen con los valores pre<strong>de</strong>terminados.La forma <strong>de</strong> instalar GNU/Linux pue<strong>de</strong> ser variada, por ello se tienen que tener los recaudos necesariospara po<strong>de</strong>r instalarlo <strong>de</strong> la forma en que queremos. Si nuestro sistema no permite el arranque a través <strong>de</strong>lCD-ROM, se tendrán que crear discos <strong>de</strong> instalación para lo que se cuenta con aplicaciones que hacenesto.En un directorio <strong>de</strong>l CD-ROM se encontrara un directorio /dosutils, por supuesto la ubicación <strong>de</strong> esteestará supeditada a la que le dé cada uno <strong>de</strong> los distribuidores, don<strong>de</strong> hay un programa llamadoRAWRITE.EXE. Es un programa <strong>de</strong> DOS que sirve para escribir una imagen <strong>de</strong> disco en un diskette. Tambiénse encontrara un directorio llamado /image don<strong>de</strong> se encontraran las imágenes que necesitemos. En ladocumentación <strong>de</strong> la distribución se indicara cual imagen tiene el soporte para la clase <strong>de</strong> dispositivo ausar para la instalación, así si queremos instalarlo <strong>de</strong>s<strong>de</strong> un CD-ROM tendremos que usar una imagen quetenga soporte para el CD-ROM que se posee o en otra imagen <strong>de</strong> diskette se contaran con una serie <strong>de</strong>driver's para el manejo <strong>de</strong> dispositivos variados como placas <strong>de</strong> red, tarjetas PCMCIA, discos rígidos


Instalaciónhttp://www.ant.org.ar/cursos/curso_intro/instalacion.html2 <strong>de</strong> 3 07/09/2005 7:54SCSI, etc.En ocasiones no se contara con un CD-ROM para la instalación, pero podremos hacerla a través <strong>de</strong> la red,si es que se cuenta con un servidor que nos provea la instalación por medio <strong>de</strong> NFS (Network FileSystems) con lo cual <strong>de</strong>berían saber correctamente la configuración a<strong>de</strong>cuada <strong>de</strong> la placa <strong>de</strong> red que seposee y la dirección <strong>de</strong>l servidor y el directorio don<strong>de</strong> la instalación resi<strong>de</strong>. Para poner un ejemplo,supongamos que hemos montado el cd <strong>de</strong> la instalación en el directorio /mnt/cdrom y que el servidor sellama Snoopy, esto significa que tendremos que seleccionar como servidor a Snoopy y como directoriodon<strong>de</strong> se encuentra la distribución a /mnt/cdrom.Cuando se instala un sistema GNU/Linux se podrán elegir, en la mayoría <strong>de</strong> las distribuciones, diferentesformas <strong>de</strong> instalación, <strong>de</strong>s<strong>de</strong> una completamente automática hasta una completamente configurable.Es <strong>de</strong> suponer que aquellos administradores expertos elegirán la opción que les permite la configuracióntotal <strong>de</strong>l sistema, a<strong>de</strong>más con ello pue<strong>de</strong>n saber a cada momento que es lo que se esta instalando y don<strong>de</strong>.La opción automática es recomendable para aquellas personas noveles que no quieren hacerse problemaspor la instalación. Hasta en algunos casos con solo colocar el CD en el CD-ROM, al cabo <strong>de</strong> unos 20minutos, tendrán un sistema funcionando sin mas que un par <strong>de</strong> preguntas que el sistema les hará; hasta lamisma instalación se encarga <strong>de</strong> particionar el disco rígido por si solo, tema que hablaremos mása<strong>de</strong>lante.Requisitos <strong>de</strong> hardwareLa propaganda que surgió hace algún tiempo fue que GNU/Linux podía ejecutarse en un 386/16 sin discorígido y con 2 MB <strong>de</strong> memoria. Aunque esto es cierto, no es productivo. Para que GNU/Linux funcionecorrectamente se tendrá que contar con un sistema 486 con disco rígido <strong>de</strong> por lo menos 500 MB con almenos 8 MB <strong>de</strong> memoria para las aplicaciones en modo texto y 16 MB para el modo gráfico.Si se pensara poner dicha máquina como servidor, tendríamos que pensar en por lo menos 1 MB <strong>de</strong> RAMadicional por usuario en modo texto y 2 MB para modo grafico que aunque parezca <strong>de</strong>masiado, cuando secuenta con 100 usuarios usando el entorno gráfico se vera que la memoria se evapora como agua en el<strong>de</strong>sierto.Si el trabajo a realizar requiere <strong>de</strong> un entorno gráfico como el KDE o el GNOME y el uso <strong>de</strong> aplicacionesofimáticas como el OpenOffice, los requerimientos serán mayores <strong>de</strong>bido a que estos requiere por lomenos <strong>de</strong> 128 MB para su correcto funcionamiento y <strong>de</strong> un Pentium <strong>de</strong> por lo menos 450 MHZ.Un servidor sencillo <strong>de</strong> páginas WEB pue<strong>de</strong> funcionar correctamente con 16 MB <strong>de</strong> RAM en un 486 conun disco <strong>de</strong> 1 GB. Aunque la instalación <strong>de</strong>l servidor WEB requiere <strong>de</strong> menos <strong>de</strong> 65 MB, el espaciorestante es para que se cuente con espacio suficiente para las páginas WEB que en un futuro seincorporaran. Igualmente <strong>de</strong>pen<strong>de</strong> <strong>de</strong> lo que se quiera poner en el servidor.Un tema interesante es la capacidad <strong>de</strong> almacenamiento. Existen distribuciones con herramientas muybásicas que ocupan menos <strong>de</strong> 20 MB <strong>de</strong> espacio en disco, pero también hay distribuciones completas queocupan más <strong>de</strong> 1 GB <strong>de</strong> disco para todos sus programas, y el número <strong>de</strong> estos va creciendo <strong>de</strong> distribuciónen distribución.Habíamos hablado antes <strong>de</strong> las compatibilida<strong>de</strong>s con el hardware <strong>de</strong>l sistema. Antes <strong>de</strong> comenzar ainstalar se tendrá que armar una libreta o apuntador con todo el Hardware <strong>de</strong> nuestro sistema, con suscorrespondientes interrupciones y DMA así como también las características que vienen puestas <strong>de</strong>fábrica; con esta lista se buscara en el Hardware-HOWTO si es soportado y este será el <strong>de</strong>talle queseguiremos cada vez que se tenga que agregar un dispositivo nuevo. De esta manera estarán seguros <strong>de</strong>que comprar y como instalarlo antes <strong>de</strong> que nos <strong>de</strong>mos cuenta que no funciona en nuestro sistema.


Instalaciónhttp://www.ant.org.ar/cursos/curso_intro/instalacion.html3 <strong>de</strong> 3 07/09/2005 7:54Anterior Inicio SiguienteLa documentación en GNU/Linux Proceso pre-instalación


Por que usar GNU/Linux y que nos ofrecehttp://www.ant.org.ar/cursos/curso_intro/porque.html1 <strong>de</strong> 3 07/09/2005 7:53Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a GNU/Linux SiguientePor que usar GNU/Linux y que nos ofreceLos usuarios buscan sistemas que puedan satisfacer sus necesida<strong>de</strong>s. Tal vez la curiosidad los ha llevado abuscar en GNU/Linux, pero es bueno saber que la elección no solamente pue<strong>de</strong> satisfacer dichacuriosidad.Como estudiantes, tendrán ante uste<strong>de</strong>s un sistema muy configurable y esa sola opción hace que sea elpreferido <strong>de</strong> los ámbitos académicos.El po<strong>de</strong>r tener el código fuente <strong>de</strong> cada punto <strong>de</strong> un sistema operativo funcional es un recurso invaluableque no se podía tener hasta no hace mucho. Pero no nos engañemos con que tenemos un sistemasolamente didáctico. GNU/Linux presenta un sin fin <strong>de</strong> aplicaciones que generan un ambiente por <strong>de</strong>más<strong>de</strong> estable para los negocios <strong>de</strong> hoy en día. Y este es un punto interesante ya que es en las empresas don<strong>de</strong>GNU/Linux tiene mayor entrada, <strong>de</strong>bido en gran parte al po<strong>de</strong>r contar con un sistema Un*x <strong>de</strong> bajo costototal <strong>de</strong> la propiedad (TCO por sus siglas en inglés) y sin las complicaciones <strong>de</strong> licencias que tienen otrosSO.Pongamos un ejemplo. Una empresa compra una distribución cualquiera por u$s 30, la instala en sus 120máquinas. Nada lo impi<strong>de</strong>, no es ilegal y sobre todas las cosas, tendrán una plataforma mucho más estableque con otros SO's. Dirán seguramente que GNU/Linux no cuenta con ningún soporte. Es un gran error.Primero que todo GNU/Linux cuenta con una gran comunidad dispuesta a ayudar y sobre todo, en esacomunidad se podrá contactar hasta a los mismos programadores que formaron parte <strong>de</strong>l proyecto. Talvez a una empresa no le interese el soporte a través <strong>de</strong> un contacto que supunen poco confiable. Lasempresas necesitan echarle la culpa a alguna organización si el servidor no funciona. Muy bien, empresascomo IBM, Hewllett-Packard y Compaq ya ven<strong>de</strong>n servidores con GNU/Linux preinstalados y congarantías y servicios técnicos similares a los que ofrecen con otras plataformas. Si eso no basta,numerosas empresas locales <strong>de</strong> servicio están entrando en la competencia <strong>de</strong> brindar asistencia y soporte aaquellas personas que ya posean un sistema GNU/Linux, sin importar si se lo han comprado a ellos. Porparte <strong>de</strong> las distribuciones, cuentan con soporte permanente, ya sea a través <strong>de</strong> la web o correoelectrónico, servicio que cuesta muchísimo en otros SO's y ni hablar <strong>de</strong> SO's Un*x.También <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l usuario final, la cantidad <strong>de</strong> software disponible es más quesuficiente para satisfacer las necesida<strong>de</strong>s en todos los campos. Veamos algunos ejemplos:Estación <strong>de</strong> trabajo InternetContamos en este área con una enorme variedad <strong>de</strong> clientes para los más diversos protocolos. Lasiguiente lista no intenta ser completa, solamente se listan los programas mas comunes en cadacampo:http (web): Navegadores en modo consola puro (lynx, links, w3c, emacs/w3c), en modoconsola con capacidad gráfica (links) y para X ( mozilla/netscape, konqueror, links, galeón,epiphany)correo y noticias: Clientes para consola (mutt, pine, slrn, tin) y para X (kmail, evolution,sylpheed, balsa, pan, kno<strong>de</strong>)ftp: Clientes <strong>de</strong> consola (ftp, con este nombre se agrupan varias versiones) y para X (gftp,konqueror).irc (chat): Clientes para consola (BitchX, epicII) y para X (XChat, KSirc, chatzilla)


Por que usar GNU/Linux y que nos ofrecehttp://www.ant.org.ar/cursos/curso_intro/porque.html2 <strong>de</strong> 3 07/09/2005 7:53im (mensajería instantánea): Existen una variedad <strong>de</strong> clientes, siendo la característica salienteque la mayoría suele ser cliente <strong>de</strong> varias re<strong>de</strong>s a la vez (jabber, icq, msn, aim, gadu-gadu,etc.). Hay tanto clientes <strong>de</strong> consola (centericq, pebrot) como para X (gaim, kopete, amsn,psi).Estación <strong>de</strong> trabajo <strong>de</strong> oficinaEncontraremos aquí una gran variedad <strong>de</strong> software <strong>de</strong>stinado tanto a crear como a transformar yvisualizar diferentes tipos <strong>de</strong> documentos. La siguiente lista es meramente orientativa:Procesadores <strong>de</strong> texto: Una gran cantidad <strong>de</strong> programas para X (OpenOffice Writer,Abiword, Ted, PW, Kword).Planillas <strong>de</strong> cálculo: Existen algunas para la consola (GNU Oleo, sc) y también para X(OpenOffice Writer, Gnumeric,Kcalc, abs, Siag).Bases <strong>de</strong> datos: Existen aplicaciones que van <strong>de</strong>s<strong>de</strong> algunas <strong>de</strong> gran calibre aplicables aservidores (PostgreSQL, MySQL) hasta mas pequeñas comparables con algunas bases <strong>de</strong>datos personales <strong>de</strong>l mundo Windows (Firefox, MiniSQL). Estas no proveen interfacesgráficas en general, sino conectividad con clientes. Algunos clientes <strong>de</strong>stacados son pgacces(interfaz gráfica para PostgreSQL) y el front-end <strong>de</strong> OpenOffice para MySQL y archivosDBF.Programas <strong>de</strong> presentaciones: Disponibles para X (OpenOffice Impress, Kpresenter).Imagenes vectoriales: Varias opciones disponibles para X (OpenOffice Draw, Xfig,Sodipodi).Imagenes raster (bitmap): Se cuenta con varias aplicaciones con diferentes grados <strong>de</strong>sofisticación (Gimp, Xpaint, Kpaint).Diseño 3d: Blen<strong>de</strong>r/Blen<strong>de</strong>r 3D, PovRay.Formateo <strong>de</strong> documentos: Esta sección podría <strong>de</strong>cirse que es casi <strong>de</strong>sconocida en el mundo<strong>de</strong> Windows y MacOS, si bien los programas que pertenecen a este grupo se <strong>de</strong>stacan por sugran portabilidad y tienen versiones nativas en los sistemas antes mencionados. La i<strong>de</strong>a esescribir en un archivo <strong>de</strong> texto (sin formato alguno) el texto intercalando instrucciones acerca<strong>de</strong> que función cumple el texto <strong>de</strong>ntro <strong>de</strong>l documento, si es un párrafo, un encabezado, unalista numerada, etc. Luego, el formateador procesa el archivo fuente y produce una salidaformateada que pue<strong>de</strong> ser impresa con una gran calidad, por ejemplo en formato pdf. Losformateadores <strong>de</strong> texto más comunes son, en or<strong>de</strong>n <strong>de</strong> popularidad:TeX-LaTeX: El formateador <strong>de</strong> Donald Knuth es el estándar <strong>de</strong> facto para salidas <strong>de</strong>gran calidad como libros y publicaciones científicas.Troff-Nroff-Groff: El abuelo <strong>de</strong> los formateadores, ha quedado un tanto <strong>de</strong>sfasadofrente a los <strong>de</strong>más, pero se <strong>de</strong>staca por ser el único que viene instalado en los sistemasbase <strong>de</strong> todas las distribuciones, ya que se utiliza para darle formato a las páginas man.Lout: Sistema similar a LaTeX, distinguiéndose por ser mucho más mo<strong>de</strong>rno yminimalista. Su salida es por <strong>de</strong>fecto postscript, por lo que pue<strong>de</strong> ser impreso enimpresoras que soporten este estándar directamente.Markup languages: Aquí se agrupan una serie <strong>de</strong> tecnologías bastante recientes,orientadas a la creación <strong>de</strong> documentos sobre todo <strong>de</strong> la rama informática. Unexponente <strong>de</strong>stacado <strong>de</strong> este grupo es DocBook, el cual se utilizó para la creación <strong>de</strong>


Por que usar GNU/Linux y que nos ofrecehttp://www.ant.org.ar/cursos/curso_intro/porque.html3 <strong>de</strong> 3 07/09/2005 7:53este documento.Estación <strong>de</strong> trabajo científicaGNU/Linux cuenta con software para el trabajo en distintas ramas <strong>de</strong> la ciencia y la tecnología.Sería muy largo enumerar la cantidad <strong>de</strong> software disponible en esta área. Sin dudas, los más<strong>de</strong>stacados son:Lenguaje <strong>de</strong> programación tipo Matlab: GNU Octave, Scilab, Euler.Programas para gráficas científicas: Gri (lenguaje), GNU Plotutils (consola, no interactivo),Gnuplot, xmgrace, SciGraphica.Programas <strong>de</strong> cálculo <strong>de</strong> elementos finitos: FreeFEM, CalculiX.GIS: Grass, Spring, GMT.Existen una gran cantidad <strong>de</strong> herramientas para cada rama <strong>de</strong> la ciencia. Si nuestro trabajo es <strong>de</strong>este tipo, sin dudas el software disponible llenará nuestras necesida<strong>de</strong>s.Ahora bien, GNU/Linux cuenta a<strong>de</strong>más con una serie <strong>de</strong> soportes para tecnologías heredadas comopodrían ser aplicaciones que corren en otro tipo <strong>de</strong> plataforma. Se cuenta con emuladores <strong>de</strong> DOS yWindows, estando siendo a<strong>de</strong>más portadas una gran cantidad <strong>de</strong> aplicaciones tanto <strong>de</strong> corriente principalcomo gran<strong>de</strong>s aplicaciones. Esto da la seguridad <strong>de</strong> no tener que cambiar el software por el que se pagóanteriormente, pero hay que <strong>de</strong>cir que este tipo <strong>de</strong> programas emuladores todavía tienen sus fallas, siendodifícil po<strong>de</strong>r ejecutar algunas aplicaciones poco conocidas.Existe una frase que habla por si misma: GNU/Linux lo tiene todo: Estabilidad, soporte y software.A<strong>de</strong>más en esta época <strong>de</strong> recortes GNU/Linux es la clave para mantener nuestro negocio competitivotanto tecnológica como económicamente.Anterior Inicio SiguienteLas distintas distribuciones Subir La documentación en GNU/Linux


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html1 <strong>de</strong> 6 07/09/2005 7:53Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a GNU/Linux SiguienteLas distintas distribucionesUno podría simplemente pensar, porque comprar una distribución si todo es gratuito. Tenemos que pensarque no todo el mundo tiene acceso a Internet y a<strong>de</strong>más que si tuviéramos que bajar todo los programasque podríamos tener en una distribución común, gastaríamos más dinero que si la compráramos, en lamayoría <strong>de</strong> los casos. Igualmente, y si se quiere, pue<strong>de</strong> bajarse todo el software con licencia GPL y elkernel <strong>de</strong> Linux totalmente gratis <strong>de</strong>s<strong>de</strong> Internet.Las empresas que están distribuyendo GNU/Linux actualmente son muchas y con variadas ofertas quecubren todas las necesida<strong>de</strong>s. Existen muchos puntos a tomar en cuenta para elegir una distribución yellos son claves para una buena selección.Boot Manager: El boot manager o administrador <strong>de</strong> inicio es una utilería que resi<strong>de</strong> en el sector <strong>de</strong>inicio maestro <strong>de</strong>l disco rígido (Master Boot Record o MBR). Este permitirá seleccionar entre elsistema GNU/Linux y otro que ya haya esta en el sistema anteriormente como Windows. Existenvarios administradores <strong>de</strong> inicio en el mercado como el GNU Grub, el System Coman<strong>de</strong>r <strong>de</strong> VCommunication o el Boot Manager pero GNU/Linux viene con su propio administrador <strong>de</strong> inicio,el LILO o LInux LOa<strong>de</strong>r y que se instala por omisión en la mayoría <strong>de</strong> las distribuciones. En lasdistribuciones que no es uilizado por <strong>de</strong>fecto se utiliza GNU Grub.Sistema X Window: X Window es el subsistema que soporta la interfaz <strong>de</strong> usuario gráfica. Uno <strong>de</strong>los servidores X más comunes es el XFree86. También existe un mo<strong>de</strong>lo comercial llamadosimplemente X <strong>de</strong> la empresa MetroLink. En los últimos tiempos, <strong>de</strong>bido a un problema <strong>de</strong> cambio<strong>de</strong> licencias en XFree86, surgió un <strong>de</strong>rivado llamado X.org, siendo adoptado por la mayoría <strong>de</strong> lasdistribuciones.Interfaz <strong>de</strong> usuario: La línea <strong>de</strong> comando es la interfaz por omisión <strong>de</strong> GNU/Linux, pero existenentornos gráficos como el KDE (Kool Desktop Environment) y el GNOME (GNU Network ObjectMo<strong>de</strong>l Environment). Existen otros, pero estos dos son los más populares y utilizados en elmomento.Servicio <strong>de</strong> conectividad: GNU/Linux tiene soporte <strong>de</strong> TCP/IP <strong>de</strong>s<strong>de</strong> sus comienzos y a<strong>de</strong>másposee programas servidores y clientes <strong>de</strong> todos los protocolos Internet comunes como DNS(Domain Name Service), HTTP (Hiper Text Transfer Protocol), SMTP (Simple Mail TransferProtocol, correo electrónico), NNTP (para foros <strong>de</strong> noticias) y PPP/SLIP para enlaces serie como eldial-up, y un largo etcétera.Servicios <strong>de</strong> Impresión y <strong>de</strong> Archivos: Estos servicios permiten al sistema acce<strong>de</strong>r a recursos <strong>de</strong> redy compartir archivos e impresoras con otros usuarios. Entre los servicios se encuentra el NFS(Network File System) para compartir archivos con otros sistemas Un*x, la suite <strong>de</strong> aplicaciónSamba, que hacen que GNU/Linux pueda utilizar recursos <strong>de</strong> una red Windows, y la suiteAppleTalk, que pue<strong>de</strong> comunicarse con el mundo Apple-Macintosh.Aplicaciones: Últimamente gran cantidad <strong>de</strong> empresas <strong>de</strong> software se están volcando a escribirprogramas para GNU/Linux, como hizo en su momento Netscape y hoy día hacen Oracle, SunMicrosystems y muchas otras. Pero hay un largo camino por seguir hasta que los fabricantes <strong>de</strong>hardware abran totalmente las puertas <strong>de</strong> sus arquitecturas lo que facilitará que se gestione softwaremas útil y con mayor calidad.Administración <strong>de</strong> Paquetes: El problema <strong>de</strong> la gestión <strong>de</strong> instalación <strong>de</strong> programas en las


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html2 <strong>de</strong> 6 07/09/2005 7:53distribuciones se ha resuelto <strong>de</strong> diversas maneras. Actualmente existen en la práctica tres sistemasen uso: paquetes RPM (Red Hat Package Manager), paquetes DEB (Para el administrador <strong>de</strong>paquetes <strong>de</strong> Debian) y TGZ o Tarballs. Los RPM fueron creados como una forma <strong>de</strong> distribuiraplicaciones por la empresa Red Hat y es una <strong>de</strong> las más usadas. Los paquetes DEB fueron creadospor el grupo que li<strong>de</strong>ra la distribución Debian y es otra forma muy eficiente <strong>de</strong> administración <strong>de</strong>paquetes. Y los TGZ son la forma primitiva como se distribuía el software en el mundo Un*x.Existen distribuciones <strong>de</strong> GNU/Linux muy usadas, como la Slackware, que todavía utilizan estesistema.Herramientas para el programador: Las distribuciones incluyen un sin fin <strong>de</strong> componentes yherramientas para el <strong>de</strong>sarrollo, a<strong>de</strong>más <strong>de</strong> lenguajes completos como el C, Python, Perl, TCL,Lisp, Fortran, Ada, C++ y un muy largo etcétera.Empresas como RedHat, Suse y el grupo <strong>de</strong> <strong>de</strong>sarrollo Debian, son lí<strong>de</strong>res en este mercado, cubriendocon sus distribuciones la mayoría <strong>de</strong> los nichos disponibles, tanto para las empresas como para losusuarios en el hogar. A continuación, analizaremos brevemente algunas <strong>de</strong> estas distribuciones en suultima versión, <strong>de</strong>tallando sus características, Para mas información visitar la página <strong>de</strong> DistroWatch.RedHat Linux - Fedora Core 1Para muchos el nombre <strong>de</strong> Red Hat equivale a Linux, ya que probablemente se trata <strong>de</strong> la compañía<strong>de</strong> linux más popular <strong>de</strong>l mundo. Fundada en 1995 por Bob Young y Marc Ewing, Red Hat Inc soloha mostrado beneficios recientemente gracias a otros servicios en lugar <strong>de</strong> a la distribución en si.Aun y así, Red Hat es la primera elección para muchos profesionales y parece que seguirá siendoun peso pesado durante mucho tiempo. Afortunadamente se resistieron a realizar ningún plan <strong>de</strong>rápida expansión durante el boom <strong>de</strong> las punto-com durante los años 1998 - 1999, concentrándoseen su negocio principal. Este tipo <strong>de</strong> gestión pru<strong>de</strong>nte si sigue así, es propensa a garantizarestabilidad y <strong>de</strong>pen<strong>de</strong>ncia.¿Qué hace a Red Hat Linux tan especial? Su curiosa mezcla <strong>de</strong> conservadurismo y paquetespunteros mezclados sobre muchas aplicaciones <strong>de</strong>sarrolladas en casa. Los paquetes no son los másactuales, una vez se anuncia una nueva versión beta, las versiones <strong>de</strong> los paquetes se mantienen,excepto para actualizaciones <strong>de</strong> seguridad. Como resultado se obtiene una distribución bienprobada y estable. El programa <strong>de</strong> betas y las facilida<strong>de</strong>s para enviar fallos están abiertas al públicoy hay un gran espíritu en las listas <strong>de</strong> correo públicas. Red Hat Linux se ha convertido en ladistribución linux dominante en servidores en todo el mundo.Otra <strong>de</strong> las razones <strong>de</strong>l éxito <strong>de</strong> Red Hat es la gran variedad <strong>de</strong> servicios populares que ofrece lacompañía. Los paquetes <strong>de</strong> software son fácilmente actualizables usando la Red Hat Network, unrepositorio oficial <strong>de</strong> software e información. Una larga lista <strong>de</strong> servicios <strong>de</strong> soporte son accesiblesen la compañía y, aunque no siempre baratos, tienes virtualmente asegurado un excelente soporte<strong>de</strong> personal altamente cualificado. La compañía ha <strong>de</strong>sarrollado incluso un programa <strong>de</strong>certificación para popularizar su distribución, el RHCE (Certificado <strong>de</strong> Ingeniería <strong>de</strong> Red Hat),aca<strong>de</strong>mias y centros examinadores están disponibles en el casi todas partes <strong>de</strong>l mundo. Todos estosfactores han contribuido a que Red Hat sea una marca reconocida en el mundo <strong>de</strong> la industria <strong>de</strong> lasTI.ProsAmpliamente usada, excelente soporte <strong>de</strong> la comunidad, muchas innovaciones.


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html3 <strong>de</strong> 6 07/09/2005 7:53ConsLimitada vida útil <strong>de</strong> la edición gratuita, soporte multimedia pobre.Sistema <strong>de</strong> paquetesRPMDescarga GratuitaSiSuSE LinuxDebianSuSE es otra compañía orientada a los escritorios, aunque una gran variedad <strong>de</strong> otros productospara empresas están disponibles. La distribución ha recibido buenas críticas por su instalador y laherramienta <strong>de</strong> configuración YaST, <strong>de</strong>sarrollada por los <strong>de</strong>sarrolladores <strong>de</strong> la propia SuSE. Ladocumentación que viene con las versiones comerciales, ha sido repetidas veces evaluada como lamás completa, útil y usable con diferencia a la <strong>de</strong> sus competidores. SuSE Linux 7.3 recibió elpremio "Producto <strong>de</strong>l año 2001" que entrega el Linux Journal. La distribución tiene un granporcentaje <strong>de</strong> mercado en Europa y América <strong>de</strong>l Norte, pero no se ven<strong>de</strong> en Asia y otras partes <strong>de</strong>lmundo. El <strong>de</strong>sarrollo <strong>de</strong> SuSE se realiza completamente a puerta cerrada, y no se lanzan betaspúblicas para probar. Siguen la política <strong>de</strong> no permitir <strong>de</strong>scargar el software hasta tiempo <strong>de</strong>spués<strong>de</strong> que salgan a la venta las versiones comerciales. A pesar <strong>de</strong> todo, SuSE no entrega imagenes ISO<strong>de</strong> fácil instalación <strong>de</strong> su distribución, usando el software empaquetado para la gran mayoría <strong>de</strong> subase <strong>de</strong> usuarios.ProsConsAtención profesional en cada <strong>de</strong>talle,herramienta <strong>de</strong> configuración <strong>de</strong> fácil uso (YaST).Solo disponible en algunas partes <strong>de</strong>l mundo en las tiendas <strong>de</strong> software o medianteinstalación FTP, incluye componentes propietarios, que no permiten su redistribución.Sistema <strong>de</strong> paquetesRPMDescarga gratuitaSuSE no proporciona imágnes ISO para <strong>de</strong>scraga, no obstante la versión Profesional <strong>de</strong> sudistribución es accesible para la instalación FTP normalmente 1 o 2 meses más tar<strong>de</strong> <strong>de</strong> laversión oficial. La instalación mediante FTP no es dificil, pero requiere una buena conexión.


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html4 <strong>de</strong> 6 07/09/2005 7:53Debian GNU/Linux inició su andadura <strong>de</strong> la mano <strong>de</strong> Ian Murdock en 1993. Debian es un proyectototalmente no-comercial; posiblemente el más puro <strong>de</strong> los i<strong>de</strong>ales que iniciaron el movimiento <strong>de</strong>lsoftware libre. Cientos <strong>de</strong> <strong>de</strong>sarrolladores voluntarios <strong>de</strong> alre<strong>de</strong>dor <strong>de</strong>l mundo contribuyen alproyecto, que es bien dirigido y estricto, asegurando la calidad <strong>de</strong> una distribución conocida comoDebian.En cualquier momento <strong>de</strong>l proceso <strong>de</strong> <strong>de</strong>sarrollo existen tres ramas en el directorioprincipal: "estable", "en pruebas" e "inestable" (también conocida como "sid"). Cuando aparece unanueva versión <strong>de</strong> un paquete, se sitúa en la rama inestable para las primeras pruebas, si las pasa, elpaquete se mueve a la rama <strong>de</strong> pruebas, don<strong>de</strong> se realiza un riguroso proceso <strong>de</strong> pruebas que duramuchos meses. Esta rama solo es <strong>de</strong>clarada estable tras una muy intensa fase <strong>de</strong> pruebas. Comoresultado <strong>de</strong> esto, la distribución es posiblemente la más estable y confiable, aunque no la másactualizada. Mientras que la rama estable es perfecta para servidores con funciones críticas, muchosusuarios prefieren usar las ramas <strong>de</strong> pruebas o inestable, más actualizadas, en sus or<strong>de</strong>nadorespersonales. Debian es también famosa por su reputación <strong>de</strong> ser dificil <strong>de</strong> instalar, a menos que elusuario tenga un profundo conocimiento <strong>de</strong>l hardware <strong>de</strong> la computadora. Compensando este falloestá "apt-get" un instalador <strong>de</strong> paquetes Debian. Muchos usuarios <strong>de</strong> Debian hacen bromas sobreque su instalador es tan malo por que solo lo han <strong>de</strong> usar una vez, tan pronto como Debian está enfuncionamiento, todas las actualizaciones, <strong>de</strong> cualquier tipo pue<strong>de</strong>n realizarse mediante laherramienta apt-get.ProsConsSlackware100% libre, web y recursos <strong>de</strong> la comunidad excelentes, bien probada, instalación <strong>de</strong>software sencillisima usando apt-get.Instalador arcaico, la versión estable no está actualizada.Sistema <strong>de</strong> paquetesDEBDescarga gratuitaSiCreada por Patrick Volkerding en 1992, Slackware Linux es la distribución más antigua quesobrevive hoy en día. No ofrece extras vistosos, y se mantiene con un instalador basado en texto, ysin herramientas <strong>de</strong> configuración gráfica. Mientras otras distribuciones intentan <strong>de</strong>sarrollarintarfaces fáciles <strong>de</strong> usar para muchas utilida<strong>de</strong>s comunes, Slackware no ofrece nada amistoso, ytoda la configuración se realiza mediante los archivos <strong>de</strong> configuración. Es por esto que Slackware


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html5 <strong>de</strong> 6 07/09/2005 7:53solo se recomienda a aquellos usuarios nuevos que <strong>de</strong>seen per<strong>de</strong>r el tiempo aprendiendo acerca <strong>de</strong>Linux. A pesar <strong>de</strong> todo, Slackware tiene una especie <strong>de</strong> aura mágica para muchos usuarios. Esextremadamente estable y segura, muy recomendada para servidores. Los administradores conexperiencia en Linux encuentran que es una distribución con pocos fallos, ya que usa la mayoría <strong>de</strong>paquetes en su forma original, sin <strong>de</strong>masiadas modificaciones propias <strong>de</strong> la distribución, que son unriesgo potencial <strong>de</strong> añadir nuevos fallos. Es raro que se produzcan lanzamientos <strong>de</strong> nuevasversiones (aproximadamente una al año), aunque siempre se pue<strong>de</strong>n encontrar paquetesactualizados para <strong>de</strong>scarrgar <strong>de</strong>spués <strong>de</strong>l lanzamiento oficial. Slackware es una buena distribuciónpara aquellos interesados en profundizar en el conocimiento <strong>de</strong> las entrañas <strong>de</strong> Linux. He oido que,posiblemente, la mejor característica <strong>de</strong> esta distribución es: si necesitas ayuda con tu sistema linux,encuentra un usuario <strong>de</strong> Slackware. Es más probable que resuelva el problema que otro usuariofamiliarizado con cualquier otra distribución.ProsConsMandrakeAlta estabilidad y ausencia <strong>de</strong> fallos, sigue fielmente los principios <strong>de</strong> UNIX.Toda la configuración se realiza mediante la edición <strong>de</strong> ficheros <strong>de</strong> texto, auto<strong>de</strong>tección <strong>de</strong>hardware limitada.Sistema <strong>de</strong> paquetesTGZDescarga gratuitaSiMandrake Linux, creada por Gaël Duval, es una distribución que ha experimentado un enormeaumento <strong>de</strong> popularidad <strong>de</strong>s<strong>de</strong> su primera versión <strong>de</strong> julio <strong>de</strong> 1998. Los <strong>de</strong>sarrolladores partieron <strong>de</strong>la distribución <strong>de</strong> Red Hat, cambiaron el entorno <strong>de</strong> escritorio pre<strong>de</strong>terminado por KDE, yañadieron un instalador fácil <strong>de</strong> usar rompiendo el mito <strong>de</strong> que linux es dificil <strong>de</strong> instalar. Lasherramientas <strong>de</strong> <strong>de</strong>tección <strong>de</strong> hardware <strong>de</strong> Mandrake y sus programas para el particionamiento <strong>de</strong>discos son consi<strong>de</strong>radas por muchos como las mejores <strong>de</strong> la industria, y muchos usuarios seencotraron usando Mandrake allí do<strong>de</strong> otras distribuciones no habían conseguido entregar lausabilidad necesaria.Des<strong>de</strong> entonces Mandrake Linux ha madurado y se ha convertido en unadistribución popular entre los nuevos usuarios <strong>de</strong> linux y aquellos hogares que buscan un sistemaoperativo alternativo. El <strong>de</strong>sarrollo <strong>de</strong> Mandrake es completamente abierto y transparente, conpaquetes nuevos que se aña<strong>de</strong>n al direcotrio llamado "cooker" a diario. Cuando una nueva versiónentra en fase beta, la primera beta se crea a partir <strong>de</strong> los paquetes que se encuentran en "cooker" enese momento. El proceso <strong>de</strong> pruebas <strong>de</strong> la beta solía ser corto e intensivo, pero <strong>de</strong>s<strong>de</strong> la versión 9.0ha pasado ha ser más largo y exigente. Las listas <strong>de</strong> correo sobre la versión beta suelen estarsaturadas, pero sigue siendo posible recibir una respuesta rápida sobre cualquier fallo o duda queenvíes.Como resultado <strong>de</strong> este tipo <strong>de</strong> <strong>de</strong>sarrollo se obtiene una distribución puntera y altamenteactualizada. Como contrapartida, los usuarios pue<strong>de</strong>n encontrarse con más fallos que en otrasdistribuciones. Mucha gente encuentra este 'pero' razonable para sus equipos, ellos obtienen lasúltimas versions <strong>de</strong> software y los cuelgues ocasionales <strong>de</strong> las aplicaciones es algo con lo quepue<strong>de</strong>n vivir. Tan pronto como el <strong>de</strong>sarrollo se completa el software se pone a la libre disposición


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html6 <strong>de</strong> 6 07/09/2005 7:53<strong>de</strong> la gente <strong>de</strong>s<strong>de</strong> réplicas en todo e mundo.ProsConsAmigable para el usario, herramientas <strong>de</strong> configuración gráfica, enorme soporte <strong>de</strong> lacomunidad, posibilidad <strong>de</strong> cambiar el tamaño <strong>de</strong> particiones NTFS.Algunas versiones contienen fallos, la compañía está pasando por problemas financieros.Sistema <strong>de</strong> paquetesRPMDescarga gratuitaSiAnterior Inicio SiguienteLas bases <strong>de</strong> GNU/Linux Subir Por que usar GNU/Linux y quenos ofrece


Las bases <strong>de</strong> GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/bases.html1 <strong>de</strong> 1 07/09/2005 7:52Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a GNU/Linux SiguienteLas bases <strong>de</strong> GNU/LinuxGNU/Linux es una reimplementación <strong>de</strong> la funcionalidad <strong>de</strong> Un*x <strong>de</strong> libre distribución. Como habíamosdicho, su núcleo o kernel fue <strong>de</strong>sarrollado en sus comienzos por Linus Torvalds. Fue un <strong>de</strong>sarrollo <strong>de</strong>muchos programadores <strong>de</strong> todo <strong>de</strong>l mundo, que gracias a Internet pudieron ir coordinando el proyecto.Una curiosidad es que a pesar <strong>de</strong> ser en un 95% compatible con la funcionalidad <strong>de</strong> UNIX, el kernelLinux no usa ni siquiera una línea <strong>de</strong>l UNIX <strong>de</strong> la empresa AT&T. Es más, como antes dijimos, muybuena parte <strong>de</strong>l software <strong>de</strong>l SO GNU/Linux esta bajo licencia GPL.Linus Torvalds se inspiró en otro sistema operativo <strong>de</strong>sarrollado por Andrew Tenenbaum, llamadoMINIX, un SO pensado con fines educativos y que Andy Tenenbaum explica muy bien en su LibroSistemas Operativos. La meta <strong>de</strong> Linus era mejorar este SO que presentaba sus limitaciones por ser unsistema pensado para enseñar, no para fines comerciales. El kernel Linux aprovecho en sus comienzos <strong>de</strong>las características que contaba <strong>de</strong> conmutación <strong>de</strong> tareas <strong>de</strong>l flamante Intel-386 y fue escrito en sutotalidad en ensamblador. La versión original, la 0.0.1, ni siquiera funcionó y se tuvo que esperar hasta el5 <strong>de</strong> octubre <strong>de</strong> 1991 cuando Linus anuncio la versión 0.0.2 don<strong>de</strong> ya se podía ejecutar el shell GNU Bashy el GCC (compilador <strong>de</strong> C <strong>de</strong> GNU). Luego <strong>de</strong> un muy corto tiempo <strong>de</strong> liberada la versión 0.0.3, se saltógracias a la ayuda <strong>de</strong> una comunidad <strong>de</strong> programadores que ayudaron en el proyecto, a la versión 0.10. Sealcanzó la versión 0.95 tras muchas revisiones hasta que en el año 1992 se logró la primer versión libre <strong>de</strong>errores, la 1.0.Hoy el Kernel se encuentra en una versión estable <strong>de</strong> la serie 2.4.x, la 2.5.x <strong>de</strong> la versión inestable y sigueevolucionando, adoptando a su paso toda una serie <strong>de</strong> nuevas tecnologías, que son probadas y arregladaspor los <strong>de</strong>sarrolladores y beta-testers antes <strong>de</strong> que salgan a las masas.Para enten<strong>de</strong>r algo más acerca <strong>de</strong> la versiones, hay que <strong>de</strong>cir que una versión con numero <strong>de</strong> subversiónpar es estable. Ej. 2.4.x, siendo x el número que indica el nivel <strong>de</strong> revisión o parche. En cambio unaversión con número <strong>de</strong> subversión impar Ej. 2.5.x, es una versión inestable que todavía no es 100%confiable.Hoy GNU/Linux se perfila como uno <strong>de</strong> los mejores SO que existen, compitiendo con SO's que fueronlí<strong>de</strong>res hasta el momento. Todo gracias a personas como Richard Stallman y Linus Torvalds que vieronque una empresa como esta era posible. También hay que agra<strong>de</strong>cer a Internet, ya que sin su existenciaesta tarea hubiera resultado mucho más difícil.Anterior Inicio SiguienteIntroducción a GNU/Linux Subir Las distintas distribuciones


Introducción a GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c178.html1 <strong>de</strong> 1 07/09/2005 7:52Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteIntroducción a GNU/LinuxHistoria <strong>de</strong> GNU/Linux y el copyrightMuchas personas creen que Linux es el primer SO que surge con las características <strong>de</strong> libre y con losfuentes a disposición, pero esto no es tan así. No podríamos hablar <strong>de</strong> la historia <strong>de</strong> Linux sin incluir aGNU ya que este proyecto <strong>de</strong> la Free Software Foundation fue el comienzo <strong>de</strong> lo que es Linux hoy en día.La FSF (Free Software Foundation), fue creada por Richard Stallman, quién una vez que entró en elM.I.T en 1971 comenzó a dar muestras <strong>de</strong> su gran habilidad para la programación. El proyecto GNU fueel precursor <strong>de</strong> lo que es el SO Linux <strong>de</strong> hoy en día.Este proyecto comenzó en el año 1984 dándole el nombre recursivo <strong>de</strong> GNU que significa GNU no esUNIX (GNU's not UNIX), para crear un sistema operativo compatible con UNIX. Este proyecto es elpadre <strong>de</strong> un sinnúmero <strong>de</strong> programas que actualmente forman parte <strong>de</strong> cualquier distribución <strong>de</strong> Linux ypor ello es correcto hablar <strong>de</strong> GNU/Linux en lugar <strong>de</strong> Linux a secas.Algunos <strong>de</strong> los programas que se crearon a partir <strong>de</strong>l proyecto GNU son el GCC, un compilador <strong>de</strong>lenguaje C, el GNU Emacs, un editor <strong>de</strong> textos, las librerías GNU <strong>de</strong> lenguaje C y a<strong>de</strong>más uno <strong>de</strong> losproyectos más gran<strong>de</strong>s como lo es el entorno gráfico GNOME.La i<strong>de</strong>a era simple; se podía tener todo un SO funcional, libre y gratuito. Pero no hay que engañarnos conel significado <strong>de</strong> libertad. La libertad <strong>de</strong>l software se basa en que uno es dueño <strong>de</strong>l programa que adquierey/o <strong>de</strong>sarrolla por ello tiene <strong>de</strong>recho a obtener sus fuentes y hacer lo que se quiera con él, cambiarlo,mejorarlo y hasta ven<strong>de</strong>rlo.Linux esta regido por lo que se <strong>de</strong>nomina Licencia Pública General <strong>de</strong> GNU, o GPL por General PublicLicense. La GPL fue <strong>de</strong>sarrollada por la FSF para el proyecto GNU y hace una serie <strong>de</strong> previsiones sobrela distribución y modificación <strong>de</strong>l software.Originalmente Linus Torvalds lanzó Linux con una licencia más restrictiva que la GPL que permitía quefuese distribuido libremente pero prohibía lucrar con él. Sin embargo la GPL autoriza a la gente a ven<strong>de</strong>rsu software, aunque no permite restringir el <strong>de</strong>recho que tiene el comprador <strong>de</strong> copiarlo y ven<strong>de</strong>rlo a suvez.Hay que aclarar que libre no significa <strong>de</strong> dominio público. El software <strong>de</strong> dominio público pertenece a lahumanidad y carece <strong>de</strong> copyright. El software regido por GPL si tiene copyright que pertenece al autor yesta protegido por estas leyes internacionales. El software GPL tampoco es shareware. El shareware espropiedad <strong>de</strong>l autor y exige a los usuarios que paguen cierta cantidad <strong>de</strong> dinero por usarlo y/o obtenermayores funcionalida<strong>de</strong>s. En cambio el software GPL pue<strong>de</strong> ser distribuído y usado sin pagar a nadie. LaGPL permite a los usuarios el modificar los programas y redistribuirlos. Sin embargo, cualquier trabajo<strong>de</strong>rivado <strong>de</strong> un programa bajo licencia GPL también se tendrá que regir por esta licencia.Cuando Linus Torvalds comenzó con el <strong>de</strong>sarrollo <strong>de</strong> Linux, mucho <strong>de</strong>l trabajo ya estaba hecho por elproyecto GNU, y el kernel que Linus Torvalds y un ejército <strong>de</strong> programadores pudo hacer, fue elpegamento que unió todo el sistema que hoy conocemos.Anterior Inicio SiguienteEl sistema operativo en capas Las bases <strong>de</strong> GNU/Linux


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...1 <strong>de</strong> 6 07/09/2005 8:07Curso <strong>de</strong> Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorGNU Free Document LicenseEsta es la GNU Free Document License (GFDL), versión 1.1 (<strong>de</strong> marzo <strong>de</strong> 2.000), que cubre manuales ydocumentación para el software <strong>de</strong> la Free Software Foundation, con posibilida<strong>de</strong>s en otros campos. Latraducción[1] no tiene ningún valor legal, ni ha sido comprobada <strong>de</strong> acuerdo a la legislación <strong>de</strong> ningúnpaís en particular. Vea el originalLos autores <strong>de</strong> esta traducción son:Igor Támara Pablo Reyes Revisión : Vladimir Támara P. Copyright © 2000Free Software Foundation, Inc. 59 Temple Place, Suite 330,Boston, MA 02111-1307 USASe permite la copia y distribución <strong>de</strong> copias literales <strong>de</strong> este documento <strong>de</strong> licencia, pero no se permitencambios.0. PreámbuloEl propósito <strong>de</strong> esta licencia es permitir que un manual, libro <strong>de</strong> texto, u otro documento escrito sea"libre" en el sentido <strong>de</strong> libertad: asegurar a todo el mundo la libertad efectiva <strong>de</strong> copiarlo yredistribuirlo, con o sin modificaciones, <strong>de</strong> manera comercial o no. En segundo término, estalicencia preserva para el autor o para quien publica una manera <strong>de</strong> obtener reconocimiento por sutrabajo, al tiempo que no se consi<strong>de</strong>ran responsables <strong>de</strong> las modificaciones realizadas por terceros.Esta licencia es una especie <strong>de</strong> "copyleft" que significa que los trabajos <strong>de</strong>rivados <strong>de</strong>l documento<strong>de</strong>ben a su vez ser libres en el mismo sentido. Esto complementa la Licencia Pública General GNU,que es una licencia <strong>de</strong> copyleft diseñada para el software libre.Hemos diseñado esta Licencia para usarla en manuales <strong>de</strong> software libre, ya que el software librenecesita documentación libre: Un programa libre <strong>de</strong>be venir con los manuales que ofrezcan lamismas liberta<strong>de</strong>s que da el software. Pero esta licencia no se limita a manuales <strong>de</strong> software; pue<strong>de</strong>ser usada para cualquier trabajo textual, sin tener en cuenta su temática o si se publica como libroimpreso. Recomendamos esta licencia principalmente para trabajos cuyo fin sea instructivo o <strong>de</strong>referencia.1. Aplicabilidad y <strong>de</strong>finicionesEsta Licencia se aplica a cualquier manual u otro documento que contenga una nota <strong>de</strong>l propietario<strong>de</strong> los <strong>de</strong>rechos que indique que pue<strong>de</strong> ser distribuido bajo los términos <strong>de</strong> la Licencia. El"Documento", en a<strong>de</strong>lante, se refiere a cualquiera <strong>de</strong> dichos manuales o trabajos. Cualquiermiembro <strong>de</strong>l público es un licenciatario, y será <strong>de</strong>nominado como "Usted".Una "Versión Modificada" <strong>de</strong>l Documento significa cualquier trabajo que contenga el Documento ouna porción <strong>de</strong>l mismo, ya sea una copia literal o con modificaciones y/o traducciones a otro


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...2 <strong>de</strong> 6 07/09/2005 8:07idioma.Una "Sección Secundaria" es un apéndice titulado o una sección preliminar al prólogo <strong>de</strong>lDocumento que tiene que ver exclusivamente con la relación <strong>de</strong> quien publica o, los autores <strong>de</strong>lDocumento o, el tema general <strong>de</strong>l Documento(o asuntos relacionados) y cuyo contenido no entradirectamente en este tema general. (Por ejemplo, si el Documento es en parte un texto <strong>de</strong>matemáticas, una Sección Secundaria pue<strong>de</strong> no explicar matemáticas.) La relación pue<strong>de</strong> ser unasunto <strong>de</strong> conexión histórica, o <strong>de</strong> posición legal, comercial, filosófica, ética o política con el temao la materia <strong>de</strong>l texto.Las "Secciones Invariantes" son ciertas Secciones Secundarias cuyos títulos son <strong>de</strong>nominadoscomo Secciones Invariantes, en la nota que indica que el documento es liberado bajo esta licencia.Los "Textos <strong>de</strong> Cubierta" son ciertos pasajes cortos <strong>de</strong> texto que se listan, como Textos <strong>de</strong> Portadao Textos <strong>de</strong> Contra Portada, en la nota que indica que el documento es liberado bajo esta Licencia.Una copia "Transparente" <strong>de</strong>l Documento, significa una copia para lectura en máquina,representada en un formato cuya especificación está disponible al público general, cuyoscontenidos pue<strong>de</strong>n ser vistos y editados directamente con editores <strong>de</strong> texto genéricos o (paraimágenees compuestas por pixeles) <strong>de</strong> programas genéricos <strong>de</strong> dibujo o (para dibujos) algún editorgráfico ampliamente disponible, y que sea a<strong>de</strong>cuado para exportar a formateadores <strong>de</strong> texto o paratraducción automática a una variedad <strong>de</strong> formatos a<strong>de</strong>cuados para ingresar a formateadores <strong>de</strong>texto. Una copia hecha en un formato <strong>de</strong> un archivo que no sea Transparente, cuyo formato ha sidodiseñado para impedir o dificultar subsecuentes modificaciones posteriores por parte <strong>de</strong> los lectoresno es Transparente. Una copia que no es "Transparente" es llamada "Opaca".Como ejemplos <strong>de</strong> formatos a<strong>de</strong>cuados para copias Transparentes están el ASCII plano sin formato,formato <strong>de</strong> Texinfo, formato <strong>de</strong> LaTeX, SGML o XML usando un DTD disponible ampliamente, yHTML simple que sigue los estándares, diseñado para modificaciones humanas. Los formatosOpacos incluyen PostScript, PDF, formatos propietarios que pue<strong>de</strong>n ser leídos y editadosunicamente en procesadores <strong>de</strong> palabras propietarios, SGML o XML para los cuáles los DTD y/oherramientas <strong>de</strong> procesamiento no están disponibles generalmente, y el HTML generado pormáquinas producto <strong>de</strong> algún procesador <strong>de</strong> palabras solo para propósitos <strong>de</strong> salida.La "Portada" en un libro impreso significa, la portada misma, más las páginas siguientes necesariaspara mantener la legibilidad <strong>de</strong>l material, que esta Licencia requiere que aparezca en la portada.Para trabajos en formatos que no tienen Portada como tal, "Portada" significa el texto cerca a laaparición más prominente <strong>de</strong>l título <strong>de</strong>l trabajo, precediendo el comienzo <strong>de</strong>l cuerpo <strong>de</strong>l trabajo.2. Copia literalPue<strong>de</strong> copiar y distribuir el Documento en cualquier medio, sea en forma comercial o no, siempre ycuando esta Licencia, las notas <strong>de</strong> <strong>de</strong>recho <strong>de</strong> autor, y la nota <strong>de</strong> licencia que indica que estaLicencia se aplica al Documento se reproduzca en todas las copias, y que usted no adicione ningunaotra condición a las expuestas en en esta Licencia. No pue<strong>de</strong> usar medidas técnicas para obstruir ocontrolar la lectura o copia posterior <strong>de</strong> las copias que usted haga o distribuya. Sin embargo, ustedpue<strong>de</strong> aceptar compensación a cambio <strong>de</strong> las copias. Si distribuye un número suficientementegran<strong>de</strong> <strong>de</strong> copias también <strong>de</strong>berá seguir las condiciones <strong>de</strong> la sección 3.También pue<strong>de</strong> prestar copias, bajo las mismas condiciones establecidas anteriormente, y pue<strong>de</strong>exhibir copias publicamente.3. Copiado en cantida<strong>de</strong>sSi publica copias impresas <strong>de</strong>l Documento que sobrepasen las 100, y la nota <strong>de</strong> Licencia <strong>de</strong>lDocumento exige Textos <strong>de</strong> Cubierta, <strong>de</strong>be incluir las copias con cubiertas que lleven en forma


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...3 <strong>de</strong> 6 07/09/2005 8:07clara y legible, todos esos textos <strong>de</strong> Cubierta: Textos Frontales en la cubierta frontal, y TextosPosteriores <strong>de</strong> Cubierta en la Cubierta Posterior. Ambas cubiertas <strong>de</strong>ben i<strong>de</strong>ntificarlo a Usted claray legiblemente como quien publica tales copias. La Cubierta Frontal <strong>de</strong>be mostrar el títulocompleto con todas las palabras igualmente prominentes y visibles. A<strong>de</strong>más pue<strong>de</strong> adicionar otromaterial en la cubierta. Las copias con cambios limitados en las cubiertas, siempre que preserven eltítulo <strong>de</strong>l Documento y satisfagan estas condiciones, pue<strong>de</strong> consi<strong>de</strong>rarse como copia literal.Si los textos requeridos para la cubierta son muy voluminosos para que ajusten legiblemente, <strong>de</strong>becolocar los primeros (tantos como sea razonable colocar) en la cubierta real, y continuar el resto enpáginas adyacentes.Si publica o distribuye copias Opacas <strong>de</strong>l Documento cuya cantidad exceda las 100, <strong>de</strong>be incluiruna copia Transparente que pueda ser leída por una máquina con cada copia Opaca, o entregar en ocon cada copia Opaca una dirección en red <strong>de</strong> computador publicamente-accesible conteniendo unacopia completa Transparente <strong>de</strong>l Documento, sin material adicional, a la cual el público en general<strong>de</strong> la red pueda acce<strong>de</strong>r a bajar anónimamente sin cargo usando protocolos <strong>de</strong> standard público. Siusted hace uso <strong>de</strong> la última opción, <strong>de</strong>berá tomar medidas necesarias, cuando comience ladistribución <strong>de</strong> las copias Opacas en cantidad, para asegurar que esta copia Transparentepermanecerá accesible en el sitio por lo menos un año <strong>de</strong>spués <strong>de</strong> su última distribución <strong>de</strong> copiasOpacas (directamente o a través <strong>de</strong> sus agentes o distribuidores) <strong>de</strong> esa edición al público.Se solicita, aunque no es requisito, que contacte a los autores <strong>de</strong>l Documento antes <strong>de</strong> redistribuircualquier gran número <strong>de</strong> copias, para permitirle la oportunidad <strong>de</strong> que le provean una versión <strong>de</strong>lDocumento.4. ModificacionesPue<strong>de</strong> copiar y distribuir una Versión Modificada <strong>de</strong>l Documento bajo las condiciones <strong>de</strong> lasseccions 2 y 3 anteriores, siempre que usted libere la Versión Modificada bajo esta misma Licencia,con la Versión Modificada haciendo el rol <strong>de</strong>l Documento, por lo tanto licenciando la distribución ymodificación <strong>de</strong> la Versión Modificada a quienquiera que posea una copia <strong>de</strong> este. En adición, <strong>de</strong>behacer lo siguiente en la Versión Modificada:A.B.C.Uso en la Portada (y en las cubiertas, si hay alguna) <strong>de</strong> un título distinto al <strong>de</strong>l Documento, y<strong>de</strong> versiones anteriores (que <strong>de</strong>berían, si hay alguna, estar listados en la sección <strong>de</strong> Historia<strong>de</strong>l Documento). Pue<strong>de</strong> usar el mismo título que versiones anteriores al original siempre quequién publicó la primera versión lo permita.Listar en la Portada, como autores, una o más personas o entida<strong>de</strong>s responsables por laautoría o las modificaciones en la Versión Modificada, junto con por lo menos cinco <strong>de</strong> losautores principales <strong>de</strong>l Documento (Todos sus autores principales, si hay menos <strong>de</strong> cinco).Estado en la Portada <strong>de</strong>l nombre <strong>de</strong> quién publica la Versión Modificada, como quienpublica.D.Preservar todas las notas <strong>de</strong> <strong>de</strong>rechos <strong>de</strong> autor <strong>de</strong>l Documento.E.F.G.Adicionar una nota <strong>de</strong> <strong>de</strong>recho <strong>de</strong> autor apropiada a sus modificaciones adyacentes a las otrasnotas <strong>de</strong> <strong>de</strong>recho <strong>de</strong> autor.Incluir, immediatamente <strong>de</strong>spués <strong>de</strong> la nota <strong>de</strong> <strong>de</strong>recho <strong>de</strong> autor, una nota <strong>de</strong> licencia dandoel permiso público para usar la Versión Modificada bajo los términos <strong>de</strong> esta Licencia, <strong>de</strong> laforma mostrada en la Adición (LEGAL)abajo.Preservar en esa nota <strong>de</strong> licencia el listado completo <strong>de</strong> Secciones Invariantes y en los Textos<strong>de</strong> las Cubiertas que sean requeridos como se especifique en la nota <strong>de</strong> Licencia <strong>de</strong>l


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...4 <strong>de</strong> 6 07/09/2005 8:07DocumentoH.Incluir una copia sin modificación <strong>de</strong> esta Licencia.I.Preservar la sección llamada "Historia", y su título, y adicionar a esta una secciónestableciendo al menos el título, el año,los nuevos autores, y quién publicó la VersiónModificada como reza en la Portada. Si no hay una sección titulada "Historia" en elDocumento, crear una estableciendo el título, el año, los autores y quien publicó elDocumento como reza en la Portada, añadiendo a<strong>de</strong>más un artículo <strong>de</strong>scribiendo la VersiónModificada como se estableció en el punto anterior.J.Preservar la localización en red, si hay , dada en la Documentación para acce<strong>de</strong>rpúblicamente a una copia Transparente <strong>de</strong>l Documento, tanto como las otras direcciones <strong>de</strong>red dadas en el Documento para versiones anteriores en las cuáles estuviese basado. Estaspue<strong>de</strong>n ubicarse en la sección "Historia". Se pue<strong>de</strong> omitir la ubicación en red para un trabajoque sea publicado por lo menos 4 años antes que el mismo Documento, o si quien publicaoriginalmente la versión da permiso explícitamente.K.L.En cualquier sección titulada "Agra<strong>de</strong>cimientos" o "Dedicatorias", preservar el título <strong>de</strong> lasección, y preservar en la sección toda la sustancia y el tono <strong>de</strong> los agra<strong>de</strong>imientos y/o<strong>de</strong>dicatorias <strong>de</strong> cada contribuyente que estén incluídas.Preservar todas las Secciones Invariantes <strong>de</strong>l Documento, sin alterar su texto ni sus títulos.Números <strong>de</strong> sección o el equivalente no son consi<strong>de</strong>rados parte <strong>de</strong> los títulos <strong>de</strong> la sección.M. Borrar cualquier sección titulada "Aprobaciones". Tales secciones no pue<strong>de</strong>n estarincluidas en las Versiones Modificadas.M.Borrar cualquier sección titulada "Aprobaciones". Tales secciones no pue<strong>de</strong>n estar incluidasen las Versiones Modificadas.N.No retitular ninguna sección existente como "Aprobaciones" o conflictuar con título conalguna Sección Invariante.Si la Versión Modificada incluye secciones o apendices nuevos o preliminares al prólogo quecalifican como Secciones Secundarias y contienen material no copiado <strong>de</strong>l Documento, pue<strong>de</strong>opcionalmente <strong>de</strong>signar algunas o todas esas secciones como invariantes. Para hacerlo, adicione sustítulos a la lista <strong>de</strong> Secciones Invariantes en la nota <strong>de</strong> licencia <strong>de</strong> la Versión Modificada. Talestítulos <strong>de</strong>ben ser distintos <strong>de</strong> cualquier otro título <strong>de</strong> sección.Pue<strong>de</strong> adicionar una sección titulada "Aprobaciones", siempre que contenga unicamenteaprobaciones <strong>de</strong> su Versión Modificada por varias fuentes--por ejemplo, observaciones <strong>de</strong> peritos oque el texto ha sido aprobado por una organización como un standard.Pue<strong>de</strong> adicionar un pasaje <strong>de</strong> hasta cinco palabras como un Texto <strong>de</strong> Cubierta Frontal, y un pasaje<strong>de</strong> hasta 25 palabras como un texto <strong>de</strong> Cubierta Posterior, al final <strong>de</strong> la lista <strong>de</strong> Textos <strong>de</strong> Cubiertaen la Versión Modificada. Solamente un pasaje <strong>de</strong> Texto <strong>de</strong> Cubierta Frontal y un Texto <strong>de</strong>Cubierta Posterior pue<strong>de</strong> ser adicionado por (o a manera <strong>de</strong> arreglos hechos por) una entidad. Si elDocumento ya incluye un texto <strong>de</strong> cubierta para la misma cubierta, previamente adicionado porusted o por arreglo hecho por la misma entidad, a nombre <strong>de</strong> la cual está actuando, no pue<strong>de</strong>adicionar otra; pero pue<strong>de</strong> reemplazar la anterior, con permiso explícito <strong>de</strong> quien publicóanteriormente tal cubierta.El(los) autor(es) y quien(es) publica(n) el Documento no dan con esta Licencia permiso para usarsus nombres para publicidad o para asegurar o implicar aprobación <strong>de</strong> cualquier VersiónModificada.


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...5 <strong>de</strong> 6 07/09/2005 8:075. Combinando documentosPue<strong>de</strong> combinar el Documento con otros documentos liberados bajo esta Licencia, bajo lostérminos <strong>de</strong>finidos en la sección 4 anterior para versiones modificadas, siempre que incluya en lacombinación todas las Secciones Invariantes <strong>de</strong> todos los documentos originales, sin modificar, ylistadas todas como Secciones Invariantes <strong>de</strong>l trabajo combinado en su nota <strong>de</strong> licencia.El trabajo combinado necesita contener solamente una copia <strong>de</strong> esta Licencia, y múltiples SeccionsInvariantes Idénticas pue<strong>de</strong>n ser reemplazadas por una sola copia. Si hay múltiples SeccionesInvariantes con el mismo nombre pero con contenidos diferentes, haga el título <strong>de</strong> cada una <strong>de</strong> estassecciones único adicionándole al final <strong>de</strong> este, en paréntesis, el nombre <strong>de</strong>l autor o <strong>de</strong> quien publicóoriginalmente esa sección, si es conocido, o si no, un número único. Haga el mismo ajuste a lostítulos <strong>de</strong> sección en la lista <strong>de</strong> Secciones Invariantes en la nota <strong>de</strong> licencia <strong>de</strong>l trabajo combinado.En la combinación, <strong>de</strong>be combinar cualquier sección titulada "Historia" <strong>de</strong> los varios documentosoriginales, formando una sección titulada "Historia"; <strong>de</strong> la misma forma combine cualquier secióntitulada "Agra<strong>de</strong>cimientos", y cualquier sección titulada "Dedicatorias". Debe borrar todas lassecciones tituladas "Aprobaciones."6. Colecciones <strong>de</strong> documentosPue<strong>de</strong> hacer una colección consistente <strong>de</strong>l Documento y otros documentos liberados bajo estaLicencia, y reemplazar las copias individuales <strong>de</strong> esta Licencia en los varios documentos con unasola copia que esté incluida en la colección, siempre que siga las reglas <strong>de</strong> esta Licencia para unacopia literal <strong>de</strong> cada uno <strong>de</strong> los documentos en cualquiera <strong>de</strong> todos los aspectos.Pue<strong>de</strong> extraer un solo documento <strong>de</strong> una <strong>de</strong> tales colecciones, y distribuirlo individualmente bajoesta Licencia, siempre que inserte una copia <strong>de</strong> esta Licencia en el documento extraido, y siga estaLicencia en todos los otros aspectos concernientes a la copia literal <strong>de</strong> tal documento.7. Agregación con trabajos in<strong>de</strong>pendientesUna recopilación <strong>de</strong>l Documento o <strong>de</strong> sus <strong>de</strong>rivados con otros documentos o trabajos separados oin<strong>de</strong>pendientes, en cualquier tipo <strong>de</strong> distribución o medio <strong>de</strong> almacenamiento, no como un todo,cuenta como una Versión Modificada <strong>de</strong>l Documento, teniendo en cuenta que ninguna compilación<strong>de</strong> <strong>de</strong>rechos <strong>de</strong> autor sea clamada por la recopilación. Tal recopilación es llamada un "agregado", yesta Licencia no aplica a los otros trabajos auto-contenidos y por lo tanto compilados con elDocumento, o a cuenta <strong>de</strong> haber sido compilados, si no son ellos mismos trabajos <strong>de</strong>rivados <strong>de</strong>lDocumento.Si el requerimiento <strong>de</strong> la sección 3 <strong>de</strong>l Texto <strong>de</strong> la Cubierta es aplicable a estas copias <strong>de</strong>lDocumento, entonces si el Documento es menor que un cuarto <strong>de</strong>l agregado entero, Los Textos <strong>de</strong>la Cubierta <strong>de</strong>l Documento pue<strong>de</strong>n ser colocados en cubiertas que enmarquen solamente elDocumento entre el agregado. De otra forma <strong>de</strong>ben aparecer en cubiertas enmarcando todo elagregado.8. TraducciónLa Traducción es consi<strong>de</strong>rada como una clase <strong>de</strong> modificación, Así que pue<strong>de</strong> distribuirtraducciones <strong>de</strong>l Documento bajo los términos <strong>de</strong> la sección 4. Reemplazar las SeccionesInvariantes con traducciones requiere permiso especial <strong>de</strong> los dueños <strong>de</strong> <strong>de</strong>recho <strong>de</strong> autor, peropue<strong>de</strong> incluir traducciones <strong>de</strong> algunas o todas las Secciones Invariantes adicionalmente a lasversiones originales <strong>de</strong> las Secciones Invariantes. Pue<strong>de</strong> incluir una traducción <strong>de</strong> esta Licenciasiempre que incluya también la versión Inglesa <strong>de</strong> esta Licencia. En caso <strong>de</strong> un <strong>de</strong>sacuerdo entre latraducción y la versión original en Inglés <strong>de</strong> esta Licencia, la versión original en Inglés prevalecerá.


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...6 <strong>de</strong> 6 07/09/2005 8:079. TerminaciónNo se pue<strong>de</strong> copiar, modificar, sublicenciar, o distribuir el Documento excepto por lo permitidoexpresamente bajo esta Licencia. Cualquier otro intento <strong>de</strong> copia, modificación, sublicenciamientoo distribución <strong>de</strong>l Documento es nulo, y serán automáticamente terminados sus <strong>de</strong>rechos bajo esalicencia. De todas maneras, los terceros que hayan recibido copias, o <strong>de</strong>rechos, <strong>de</strong> su parte bajo estaLicencia no tendrán por terminadas sus licencias siempre que tales personas o entida<strong>de</strong>s seencuentren en total conformidad con la licencia original.10. Futuras revisiones <strong>de</strong> esta licenciaAd<strong>de</strong>ndumNotasLa Free Software Foundation pue<strong>de</strong> publicar nuevas, revisadas versiones <strong>de</strong> la Licencia <strong>de</strong>Documentación Libre GNU <strong>de</strong> tiempo en tiempo. Tales nuevas versiones serán similares en espíritua la presente versión, pero pue<strong>de</strong>n diferir en <strong>de</strong>talles para solucionar problemas o intereses. Veahttp://www.gnu.org/copyleft/.Cada versión <strong>de</strong> la Licencia tiene un número <strong>de</strong> versión que la distingue. Si el Documentoespecifica que una versión numerada particularmente <strong>de</strong> esta licencia o "cualquier versiónposterior" se aplica a esta, tiene la opción <strong>de</strong> seguir los términos y condiciones <strong>de</strong> la versiónespecificada o cualquiera posterior que ha sido publicada(no como un borrador)por la FreeSoftware Foundation. Si el Documento no especifica un número <strong>de</strong> versión <strong>de</strong> esta Licencia, pue<strong>de</strong>escoger cualquier versión que haya sido publicada(no como un borrador) por la Free SoftwareFoundation.Para usar esta licencia en un documento que usted haya escrito, incluya una copia <strong>de</strong> la Licencia enel documento y ponga el siguiente <strong>de</strong>recho <strong>de</strong> autor y nota <strong>de</strong> licencia justo <strong>de</strong>spués <strong>de</strong>l título <strong>de</strong> lapágina:Derecho <strong>de</strong> Autor © Año Su Nombre.Permiso para copiar, distribuir y/o modificar este documento bajo los términos <strong>de</strong> la Licencia <strong>de</strong>Documentación Libre GNU, Versión 1.1 o cualquier otra versión posterior publicada por la FreeSoftware Foundation; con las Secciones Invariantes siendo LISTE SUS TÍTULOS, con los siendoLISTELO el texto <strong>de</strong> la Cubierta Frontal, y siendo LISTELO el texto <strong>de</strong> la Cubierta Posterior. Unacopia <strong>de</strong> la licencia es incluida en la sección titulada "Licencia <strong>de</strong> Documentación Libre GNU".Si no tiene Secciones Invariantes, escriba "Sin Secciones Invariantes" en vez <strong>de</strong> <strong>de</strong>cir cuáles soninvariantes. Si no tiene Texto <strong>de</strong> Cubierta Frontal, escriba "Sin Texto <strong>de</strong> Cubierta Frontal" en vez<strong>de</strong>"siendo LISTELO el texto <strong>de</strong> la Cubierta Frontal"; Así como para la Cubierta Posterior.Si su documento contiene ejemplos <strong>de</strong> código <strong>de</strong> programa no triviales, recomendamos liberar estosejemplos en paralelo bajo su elección <strong>de</strong> licencia <strong>de</strong> software libre, tal como la Licencia <strong>de</strong> PúblicoGeneral GNU, para permitir su uso en software libre.[1]N. <strong>de</strong>l T. Derechos Reservados en el sentido <strong>de</strong> GNU http://www.gnu.org/copyleft/copyleft.es.htmlAnterior InicioDetalle <strong>de</strong> comandos

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!