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

ggyma.geo.ucm.es

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

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


http://www.ant.org.ar/cursos/curso_intro/book1.html2 de 3 07/09/2005 8:09Sistema de archivosTutorial del ShellHablando con GNU/Linux a través del shellCaracterísticasPATHVariables de entornoExpresiones regulares y uso de metacaracteresInterpretación de comandosFuncionesCaracterísticas adicionalesDepuración de ScriptCreación de directorios múltiplesComo en UNIX también en GNU/LinuxPlomería en GNU/LinuxEntrada y salida estándarCanalización y redirecciónPermisos de archivos, sus dueños y gruposConceptosComo se interpretan los permisosDependenciasCambiando permisosCambiando grupos y usuariosPuntos adicionalesEnlaces de archivosEnlaces duros o hard linksEnlaces simbólicos o symbolic linksTareas y procesosPrimer y segundo planoComo parar y relanzar tareasProgramas de seguimiento (ps y top)Escritura de scripts de shellProgramas de edición de consolaEdición de textos en modo interactivo¿Porque es importante el uso de editores de consola?El editor ViEl editor emacsConceptos de editores fuera de líneaSedAwkAdministración básica del sistemaLa cuenta root y sus implicacionesGestión de usuariosBorrando usuariosGruposPoniendo reglas al sistemaIniciando el sistemaUtilizando un disquete de arranqueUtilizando LILOUtilizando LOADLINAcerca de 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 de 3 07/09/2005 8:09Actualización del sistemaActualizando el núcleoActualizando las bibliotecasActualizando gccEl sistema X-WindowOrígenes de XX - Puntos básicosRequisitos de HardwareConfiguración de Xfree86Configuración mediante xf86cfgEntornos gráficos de escritorioEl entorno KDEEl entorno GnomeDetalle de comandosDetalle de ComandosGNU Free Document LicenseSiguienteGNU/Linux, ese pequeño gigante


http://www.ant.org.ar/cursos/curso_intro/archivos.htmlde 2 07/09/2005 7:51Curso de 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 de 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 de esa manerautiliza los mismos métodos de apertura, escritura, lectura y cierre para todos ellos. La clase de archivos delos que estamos hablando se denomina archivo de dispositivo y es solo una de las clases de 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 puede llegar a ser ejecutable sin importar que extensión tenga.Los archivos ejecutables puede ser de dos clases: aquellos con formato binario ejecutable directamentepor el kernel, y aquellos que tienen lo que se denomina un magic cookie, el cual determina la manera enque el sistema ejecutará dicho archivo (script). Un ejemplo de este tipo de ejecutable son los scripts deshell, que recuerdan a losarchivos .bat del DOS, pero que son mucho más poderosos.Otro tipo de archivo es el de canalización. Esta clase de archivo sirve de canal donde los datos entran porun extremo y salen por el otro. Son creados por los procesos y desaparecen al morir el proceso, peromientras tanto están ocupando un lugar físico en el disco. Cuando se trate el tema de pipes y canalizaciónse entrará más en detalle.La forma en que se puede nombrar un archivo no esta limitada como en DOS a 8 letras seguido de 3caracteres de extensión. Los nombres pueden ser de 255 caracteres de longitud y pueden tener puntos,guiones y demás símbolos como separadores. Los únicos nombres que no están permitidos son los quecontienen la / en su nombre debido 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 de estos podrá contener texto.Los archivos que llevan un punto inicial, .nota.textual son denominados archivos de punto y el SO lospondrá de manera predeterminada como ocultos.Organizar los archivos en directorios es la forma más útil de 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 dentro de él.La forma de referenciar un archivo es ir poniendo los nombres de los subdirectorios seguido por una /, porejemplo /home/shrek/cartas/carta_fiona.A esto se le denomina ruta del archivo y establece una ruta única para determinado 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.htmlde 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 cartadel directorio /home/shrek/cartas, pero eso lo veremos luego.Uno puede moverse de arriba abajo en un árbol de directorio por medio del comando cd (cambio dedirectorio) que forma parte del shell. El SO llevará cuenta del directorio en que estamos paradosactualmente, denominado directorio de trabajo, cuando uno cambia de directorio, el SO verifica estaparte de memoria y si es posible efectúa el cambio actualizándola con el directorio de trabajo actual. Noimporta si nos movemos arriba o abajo del directorio de trabajo, solamente esta información es la quecambia para que tengamos la ilusión de que nos estamos moviendo a través del árbol de directorios.Los directorios tienen información que apunta hacia la ubicación de los archivos reales. Esta información,tanto en los archivos y directorios y junto con el nombre del creador, tamaño permisos, etc, es guardadaen lo que se denomina TABLA DE INODOS. Esta tabla se crea cuando se crea el sistema de archivos enGNU/Linux, comparable al formateo de una partición DOS. Se crea esta tabla que contendrá la mayoríade la información de los archivos. Entender lo que habíamos dicho en un principio de que todo es archivoen GNU/Linux puede resultar algo traumático, pero si vemos que esto resulta en un mejoramiento decómo el sistema accede 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 (stderr). 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 stderr.Anterior Inicio SiguienteProcesos Subir El sistema operativo en capas


Procesoshttp://www.ant.org.ar/cursos/curso_intro/procesos.html1 de 3 07/09/2005 7:51Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteProcesosPara poder entender bien el concepto de Proceso deberemos diferenciarlo en el lugar donde se encuentra.Un programa será un archivo cuando se encuentre en el disco rígido y será un proceso al encontrarse enmemoria; de esta forma se comprenderá 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 de SO que nos compete, con susfunciones de multiusuario y multitarea como lo son los SO Un*x.Cada programa cuenta con un conjunto de datos que usa para hacer su trabajo y en la mayoría de loscasos estos datos no forman parte del programa. Como ejemplo tomemos un programa de edición detextos. Los datos del archivos que el programa esta editando no forma parte del programa, pero si delproceso en memoria. Si alguna otra persona utilizara al mismo tiempo el mismo procesador de 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 del proceso del editor de 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 de ellos requerirá de la atención dela CPU en algún momento. El sistema llevará un control de los procesos que están funcionando en esemomento, en que terminal y a que usuario pertenece además de otros datos. Todo ello estará apuntado enuna tabla de procesos, en la cual el SO asignará el tiempo que tardará la CPU para atender cada proceso.Cuando uno entra a un sistema Un*x, generalmente obtiene accesos a lo que se denomina intérprete decomandos. La gente que haya utilizado DOS sabrá que esto, ya que el C:> es el indicador de shell de suinterprete de 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 del intérprete de comandos que esta corriendo en memoria.Al cargarse un programa desde el intérprete de comando (shell), este no es reemplazado por dichoproceso, sino que queda a la espera de algún otro mandato. Mientras tanto, para correr el programa, secrea un nuevo proceso, el del programa, que será hijo del proceso del shell. Un proceso tiene un solopadre pero puede tener múltiples hijos.


Procesoshttp://www.ant.org.ar/cursos/curso_intro/procesos.html2 de 3 07/09/2005 7:51Al iniciar una sesión en GNU/Linux el usuario será propietario de un único proceso, por ejemplo/bin/bash que es el intérprete de comandos mas usados y el que usaremos nosotros. Luego cada procesoque ejecute a partir del bash, se acomodará en el árbol de procesos como hijo del bash.El bash permanecerá atento a que se le de 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 de la CPU. Esto dará la ilusión al usuario de quees el único que tiene la atención del 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 del sistema ya que elkernel no podría recuperarse dado que el proceso tiene control absoluto de la CPU. Esto no ocurre enGNU/Linux dado que todos los procesos responden al kernel y es el kernel quien les da permiso de usar laCPU en el momento necesario.Supongamos que queremos guardar nuestro trabajo del editor de textos. Entonces, y con la combinaciónde teclas correctas, le damos la orden al proceso del editor de textos para que guarde el trabajo. Esto, paranosotros, se hace instantáneamente pero es solo otra ilusión. El proceso del editor de textos emite unapetición al kernel para escritura del disco, el kernel entonces escribirá el disco en bloques, dependiendode cuan libre este, mientras tanto guardara los datos en un espacio secundario de almacenamientodenominado "cache". Esto es beneficioso por varias razones. En caso de que los datos que estemosescribiendo en ese momento sean requeridos un momento después, estos estarían disponibles en el cachey se ahorraría un viaje al disco. También seria beneficioso por el lado de la eficiencia del sistema, ya queescribirá al disco solo cuando el procesador este ocioso, no ocasionando con el proceso de escritura que elsistema funcionara más lentamente. Suponiendo que alguna otra persona necesitara en ese momento undato del disco, el proceso de 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 de escritura y luego se le despertara ypodrá tomar su lugar para acceder al disco.Existe también otro tipo de eventos en los que la CPU repara para poder detener a un proceso en curso,estos son las interrupciones. Se ocasionan cuándo un dispositivo, léase mouse o teclado, requiere laatención de la CPU, es asi que se genera una interrupción que la CPU atenderá, mandando a dormir alproceso en curso. Por supuesto hay mas complicaciones que las expuestas aquí, entre ellas las prioridadesde los procesos que se verán cuando tomemos la parte de 6.7 de Tareas y Procesos. El tema de prioridadeslo maneja el kernel de acuerdo a varios aspectos, como el dueño del proceso, si es de sistema o no, etc.Los procesos de sistemas son utilizados para la administración de memoria y la calendarización de turnospara la CPU, etc. Estos procesos se los conoce como daemon (DEMONIOS) o programas servidores.Funcionan sin la intervención del usuario y sin que este los vea y hacen su trabajo esperando su turno


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


Unix como base de sistemas operativoshttp://www.ant.org.ar/cursos/curso_intro/unix.html1 de 1 07/09/2005 7:50Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteUnix como base de sistemas operativosComo dijimos antes, en 1969, algo maravilloso sucedió en el mundo de la informática: nació UNIX. Enprincipio como un trabajo solitario de Ken Thompson, de Bell Labs, y luego en conjunto con DennisRitchie (quien junto a Brian Kerningan desarrollaron el lenguaje de programación C) y otros miembrosdel Bell Labs que se fueron incorporando. Ritchie ya tenia experiencia dado que había trabajado en otroproyecto llamado MULTICS, el cual fue de gran influencia sobre el nuevo SO, como por ejemplo en laorganización básica del sistema de archivos, la idea de un intérprete de comando (el shell) como unproceso de usuario, etc.La primera versión de 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 demás de importante, la multiprogramación. Esto y la entrega de licenciasgratuitas con fines educativos extendieron su uso, desarrollo y la investigación en las universidades. Eluso de UNIX se fue ampliando a medida que se le fueron adicionando herramientas de software yentornos de programación, apoyo a protocolos de red Internet (TCP/IP), mejoras en el editor de texto(Vi), compiladores de C, PASCAL y LISP, mejora en el control de congestionamiento de redes y elrendimiento de TCP/IP. Al crecer la popularidad de UNIX, se a transportado a distintas plataformas dehardware (PC, MAC, ALPHA) y se han creado una gran cantidad de SO's UNIX y parecidos a UNIX(XENIX de Microsoft, AIX de IBM, SOLARIS de SunSoft).Las características principales de este SO es que se diseñó como un sistema de tiempo compartido. Estoquiere decir que varios usuarios estarán usando el sistema al mismo tiempo, sin notar la presencia de losdemás en su ámbito de trabajo, lo que logra el SO asignándole un tiempo de atención para el CPU a cadausuario.La interfaz estándar con el usuario (el shell) puede ser cambiada si se quiere. La mayoría del códigofuente original está disponible por lo que los usuarios podrán ajustar el SO a sus requerimientosespecíficos. Es multitarea, es decir que permite que se puedan ejecutar varios procesos al mismo tiempocompartiendo el uso de la CPU.Soporta el procesamiento en tiempo real (ejecución de procesos en intervalos de tiempo especificados sinretardo), el cual se utiliza en aplicaciones de robótica y base de datos.Los sistemas UNIX son esenciales para la Internet.Los sistemas de archivos con árboles multiniveles permiten que el SO trate tanto a directorios y archivoscomo simples secuencias de bytes.Posee distintos niveles de seguridad: password's de ingreso y permisos de archivos y directorios.Un proceso puede fácilmente generar otro, también es posible el manejo de procesos en determinadotiempo. Puede planearse la utilización de la CPU.El kernel y biblioteca del SO están preparados para que el SO pueda extenderse y crecer, lo que permitióa UNIX mantenerse siempre a la cabeza de 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 de 2 07/09/2005 7:50Curso de 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 de sistemas operativos en la que nos basaremos serán los denominados multiusuarios y demultiprogramación; es decir que varios usuarios podrán correr concurrentemente múltiples programas.Un SO es una parte importante de casi cualquier sistema informático. Para entender mejor esto veremosque un sistema informático puede separar en cuatro partes:El hardwareEl SOLos programas de aplicaciónLos usuariosEstas partes hacen de capas, cada una de las cuales acerca más al usuario a utilizar los recursos delhardware. El hardware (CPU, memoria y dispositivos) proporciona los recursos de computación básicossobre los que se agregaran estas capas sucesivas. Los programas de aplicación como los compiladores,juegos, aplicaciones de negocios, etc. definen la forma en que estos recursos se emplearán para solucionarlos problemas del usuario.Puede haber varias clases de usuarios usando el sistema, como ser personas, programas y otrascomputadoras, tratando de resolver diversos problemas. El SO controla y coordina el uso del hardwareentre los diversos programas de aplicación y los distintos usuarios, administrando todos los recursos comodisco, memoria, impresoras, monitor, etc. El SO determina los tiempos en que un determinado programautilizará un recurso dado.Al comienzo de la era informática, los sistemas no utilizaban SO's. Estas computadoras de 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 detuviera antes de lo esperado, se teníaque comenzar de nuevo con todo el proceso. Recordemos que en esa época no había muchascomputadoras en funcionamiento, así que el programador tenía que esperar de varios días hasta tenernuevamente su turno enfrente de la computadora. Los SO's existen porque son una solución razonable alproblema de crear un sistema informático útil. El objetivo fundamental de los sistemas informáticos esejecutar los programas de los usuarios y facilitar la resolución de sus problemas. Todo esto se hacía através de tarjetas perforadas que una persona encargada cargaba en la computadora y luego de algunashoras devolvía la salida impresa al programador.


¿Qué es un sistema operativo?http://www.ant.org.ar/cursos/curso_intro/sistop.html2 de 2 07/09/2005 7:50Al avanzar la tecnología informática, muchos de estos programas se cargaban en una sola cinta, otroprograma residente en la memoria de la computadora, cargaba y manipulaba los programas de esa cinta.Este es el ancestro de los SO's de hoy en día. En la década del 60 la tecnología de SO's avanzo mucho yse podían tener múltiples programas al mismo tiempo en la memoria. Así surgió el concepto demultiprogramació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í poder utilizar el 100% del poder deprocesamiento 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 de miles de dólares. Afinales de los 60's, en 1969, nació UNIX, SO que trataremos más adelante, y es la base de muchos de losSO's de hoy en día, aunque muchos no lo admitan.Definir que forma parte de un SO y que no sería difícil, dada la gran variedad existente, pero unadefinició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 deaplicación todo lo demás. En general un SO intenta incrementar la productividad de un recurso de procesotal como el hardware de la computadora, o de los usuarios de los sistemas informáticos. Ahora bien, en loreferente a la utilización eficiente de un sistema informático no siempre se puede lograr que un SO lologre. Casi siempre resulta contradictorio la comodidad y la eficiencia.Anterior Inicio SiguienteIntroducción a los SistemasSubirUnix como base de sistemasOperativosoperativos


Introducción a los Sistemas Operativoshttp://www.ant.org.ar/cursos/curso_intro/c63.html1 de 1 07/09/2005 7:49Curso de 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 de rutinas o extensiones de software delhardware. Consiste en rutinas de control que hacen funcionar una computadora y proporcionan un entornopara la ejecución de los programas. Existen otros programas que se apoyan en el SO para poder acceder alos recursos que necesitan. Esto se lleva a cabo a través de llamadas sistema operativo. También el SOdebe brindar una forma de que el usuario se pueda comunicar con él a través de una interfaz que le brindeuna vía de comunicación con el hardware del sistema informático.El objetivo principal del SO es lograr que el sistema informático es el lograr que el hardware de lacomputadora se emplee de modo eficiente, y el objetivo secundario se use de manera cómoda.El SO debe asegurar el correcto funcionamiento del sistema informático. Para lograr esto el hardwaredebe brindar algún mecanismo apropiado que impida que los usuarios intervengan en el funcionamientodel sistema y así mismo el SO debe poder utilizar este recurso de hardware de modo que esto se cumpla.El SO debe ofrecer servicios a los programas y sus usuarios para facilitar la tarea de programación.Anterior Inicio SiguienteAlgunas cuestiones legales ¿Qué es un sistema operativo?


Algunas cuestiones legaleshttp://www.ant.org.ar/cursos/curso_intro/x59.html1 de 1 07/09/2005 7:49Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior GNU/Linux, ese pequeño gigante SiguienteAlgunas cuestiones legalesHemos tratado de mantener la información volcada en este documento lo más fidedigna posible, lo cualno significa que pueda contener errores. Por lo tanto no nos haremos responsables de cualquier pérdida dedatos y/o daños de hardware que puedan ocurrir al seguir los procedimientos o recomendaciones de estemanual. El usuario corre con todos los riesgos implícitos por el sólo hecho de 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 de 1 07/09/2005 7:48Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior GNU/Linux, ese pequeño gigante SiguienteConvencionesA lo largo de este curso utilizaremos las siguientes convencionesCuando se muestre el contenido de la pantalla y/o el contenido de archivos, el mismo se mostraraen caracteres de ancho fijoeste es el contenido del archivoCuando se muestre la entrada que hace el usuario, se mostrará de la siguiente maneraprompt:$ entrada de usuarioUNIX representa al sistema operativo cuyo nombre está registrado. Cuando se hable de 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 de 2 07/09/2005 7:47Curso de 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 de los grandes paradigmas de nuestros tiempos: El sistema operativoGNU/Linux.El mismo plantea una contradicción a lo que es el modelo tradicional de negocios en la industria delsoftware. Antes de la aparición de GNU/Linux se pensaba que la única forma viable de hacer software decalidad -y que el mismo sea económicamente viable- era licenciando el uso del programa y manteniendoel código fuente del mismo en estricto secreto. Era impensable el hecho de publicar dicho código fuente:según el criterio impuesto, si los demás tenían acceso a él, el negocio se arruinaría.Pues bien, el software libre en general, y GNU/Linux en particular, han demostrado que la formatradicional de hacer negocios -y, por extensión, de desarrollar software- no es la única posible. Hoy existeun modelo que podríamos llamar colaborativo, según el cual varias personas (pueden ser una, cinco omiles) colaboran en el desarrollo de cierta pieza de software. Dicha colaboración no está limitada a laprogramación del mismo. También se inscribe dentro de esta idea de desarrollo colectivo el uso de dichosoftware, informando a los programadores sobre fallas que el mismo pueda tener, ideas y sugerenciassobre posibles mejoras y un sinfín de datos útiles para ir construyendo en torno a dicho programa unacomunidad de usuarios, los cuales obtienen mutuo beneficio de esta colaboración activa.También hay que tener en cuenta un dato adicional a lo expuesto hasta aquí: solamente puede tenerse unacomunidad activa en torno a un determinado programa o software si este resuelve las necesidades de sususuarios. Esto, aunque parezca una verdad de perogrullo, es la verdadera fuerza motriz que impulsa esteproceso. Además, es también la fuerza que guiará la evolución del mismo hacia donde la necesidad de lamayoría apunte.Aunque este modelo, en primera instancia, pueda parecer de rentabilidad escasa o nula a losdesarrolladores y profesionales del área informática, veremos que esto es solamente una impresióncausada por el contraste con la práctica común de trabajo.Pongamos un sencillo ejemplo. Supongamos que somos desarrolladores que vivimos de vender sistemas amedida a nuestros clientes. Esta es sin lugar a dudas la situación de la mayoría de los profesionales, yaque solamente un porcentaje muy bajo de ellos serán propietarios de una compañía que factura variosmiles de millones al año. Notemos un detalle en cuanto a nuestro modelo de negocios: lo que le vendemosa nuestro cliente no es en realidad el software que hemos desarrollado, sino la solución a un problemadeterminado. Con esto en mente, podemos optar por dos caminos. Uno es desarrollar nuestro propioconjunto de herramientas, las cuales mantendremos bajo estricto control para que no se hagan copias"ilegales" de ellas. La otra es buscar una herramienta ya desarrollada, la cual, dado que las necesidades demi 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 de nuestro sistema, sino que ademá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 deherramientas, las cuales tendré que mantener, extender y corregir a pedido del cliente, haciendo que luego


GNU/Linux, ese pequeño gigantehttp://www.ant.org.ar/cursos/curso_intro/f26.html2 de 2 07/09/2005 7:47sea muy difícil de readaptar a otras necesidades si consigo un nuevo cliente. Con la segunda opción, unconjunto de personas mantiene un núcleo de funcionalidades, y cada uno hace las extensiones particularespara sus clientes. Dicho núcleo cuenta con la ventaja de estar permanentemente auditado por los ojos devarios profesionales, lo que hace más fácil la detección y corección de errores. También existe unaventaja adicional para el cliente, el cual pocos tienen en cuenta, y es que si yo debo dejar de mantener susistema, otro profesional podrá hacerse cargo de él. Esto, que parece una desventaja, puede ser unargumento de peso a la hora de vender un sistema informático. Después de todo, estaremos cobrando pornuestro servicio, no por el sistema que hemos implementado.Con el ejemplo precedente he querido ejemplificar la idea que se esconde detrás del desarrollo delsoftware libre desde un punto de 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 del software libre. El mismo plantea que los usuarios tienen -o deberían tener- libertades almomento de usar su software, y que nada ni nadie puede ponerle límites a su libertad. Existen varias"corrientes" en cuanto a la filosofía del software libre, unas con tendencias más técnicas, otras másradicales. De todas maneras, todas ellas coinciden en tres puntos fundamentales:El usuario es libre de copiar, redistribuir y usar el programa, sin restricciones, para el propósito quecrea conveniente.El usuario es libre de estudiar como funciona el programa.El usuario es libre de modificar el programa para adaptarlo a sus necesidades, y de distribuir lasmodificaciones.Anterior Inicio SiguienteCurso de Introducción aConvencionesGNU/Linux


El sistema operativo en capashttp://www.ant.org.ar/cursos/curso_intro/capas.html1 de 1 07/09/2005 7:52Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a los Sistemas Operativos SiguienteEl sistema operativo en capasPodemos imaginar a Linux como una cebolla donde cada capa se comunica con la capa inferior. En laparte del centro se encuentra la capa de comunicación con el hardware. El SO la utiliza para podercontrolar los diversos aspectos del hardware. Sobre ella se encuentra la capa de dispositivos. Es unconjunto de funciones denominadas controladores de dispositivo que se encuentra dentro del kernel delSO. Ellas acceden directamente al hardware y hacen el trabajo de lectura, escritura, etc. Es un punto muysensible del sistema en donde cuando un error surge poco puede hacerse para detener el proceso. Sobre lacapa de dispositivos se encuentra la capa de administración, esta es un conjunto de funciones a las que sehace referencia como sistema operativo tomando la decisión de 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 de los procesos mismos, por ejemplo el shell del SO. Estos procesos reciben laordenes directamente del usuariou otros procesos y los traducen al lenguaje de maquina pasándoselos alSO para su ejecución. A partir del shell se podrán arrancar otrosprocesos, como programas, que forman lacapa superior de la cebolla.Estos se comunicaran con el shell para que el SO interprete sus órdenesAnterior Inicio SiguienteArchivos, directorios y diferencias Subir Introducción a GNU/Linux


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html1 de 12 07/09/2005 8:07Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteDetalle de comandosDetalle de ComandosDetallaremos los comandos básicos que son de mayor utilidad en GNU/Linux, tratando de detallar encada uno de ellos las opciones más utilizadas y las que necesitaremos más frecuentemente para un mejorfuncionamiento de nuestro sistema. Muchos de estos comando se encontraran complicados a esta partedel curso, pero más adelante se entenderá 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 descripciónpara poder utilizarlo. Las opciones en su amplia mayoría se le dan al comando luego de un signo "-", porejemplo ls -F. Además de las opciones con una sola letra, en muchas oportunidades nos encontraremoscon opciones indicadas con palabras completas. Estas se expondrán seguidas de un doble signo "-", de laforma cat --number que es equivalente a cat -n. Los archivos que irán como argumento del comando sereferenciaran de la forma . Para mayor información respectoa cada uno de estos comandos, se cuenta con las páginas de manual que nos mostraran todas lasposibilidades. La sintaxis para leer las páginas de manual es la común[shrek@pantano:~]$ man alias: Este comando nos mostrará la lista de alias que existe en nuestro sistema. Los alias son nombrescreados por los usuarios para ejecutar un comando o una serie de comando de manera más rápida. Estosestán definidos en /etc/bashrc y tienen permiso de escritura por el usuario root. Un ejemplo de la salidadel comando es el siguientealias fd='mount /dev/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 de programación que nos sirve para realizar búsquedas de patrones en archivos detextos. Entraremos en mayor detalle en el capítulo (reemplazar).cal: Este comando, sin argumentos, nos mostrará el calendario del mes actual en el corriente año. Algunode 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 del mes y el año en cuatro dígitos.[shrek@pantano:~]$ cal 8 2004agosto de 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 de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html2 de 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 de 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 de 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 de control.-A, --show-allEquivalente a -vET.-E, --show-endsMuestra un signo "$" inmediatamente después del final de línea.-T, --show-tabsMuestra los caracteres de tabulación (TAB), como '^I'.--helpMuestra un mensaje de ayuda para el comando.


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


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


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html5 de 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 del año (001..366)Mes del año (01..12)Número de semana del año donde el Domingo es el primer día (00..53)Número del día dentro de la semana (0..6) donde 0 corresponde al Domingo.Número de semana del año donde el Lunes es el primer día (00..53)Día en formato dd/mm/aaMuestra los dos últimos dígitos del año.Año en formato de 4 dígitos (1970 .. )El reloj del sistema también puede actualizar el reloj del sistema a través del modificador -d de lasiguiente forma:date -d mm/dd/yyCambia la fecha.date -d hh:mm:ssCambia la hora. La opción --help muestra un mensaje de ayuda mientras que --version Muestrainformación de 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 de Operadores: En esta descripción el argumento n es usado para identificar a un número decimal


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html6 de 12 07/09/2005 8:07entero donde +n es mayor que n y -n es menor que n y n es exactamente n. -fstype Verdadero si eltipo de archivo coincide con "tipo". Típicamente 4.2 o nfs. -name Verdadero si el archivo esigual a . Puede usarse los modificadores del shell como comodín donde "?" representa una solaletra y "*" representa toda una cadena. -size n Verdadero si el archivo es de n bloques de largo (512 bytespor bloque) -inum n Verdadero si el archivo tiene el inodo igual a n. Veremos los inodos en el capítulo8.5.3. -atime n Verdadero si el archivo fue accedido en n días. -mtime n Verdadero si el archivo fuemodificado en n días. -ctime n Verdadero si el archivo fue cambiado en n días. -exec command Verdaderosi la ejecución del "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 responder "Y" o "N". -print Siempre esverdadero, muestra el path donde esta buscando. -ls Siempre es verdadero, imprime además todos losdatos de un "ls" normal y más: número de inodo, tamaño en kilobytes (1024 bytes), modo de protección ynúmero de enlace duro, usuario, grupo, tamaño en bytes y tiempo de la última modificación. Si el archivoes un link simbólico, se mostrará hacia donde apunta con "->". -cpio device Siempre verdadero, escribe elarchivo en un dispositivo de cinta. -newer Verdadero si los archivos fueron modificados másrecientemente que el tiempo de modificación que tiene -xdev Siempre verdadero, no desciendea directorios que posean otro tipo de filesystem's FAST-FIND: Se trata de una base de datos alojada en/usr/lib/find que es actualizada periódicamente y es donde se van guardando las búsquedas anteriores. Sepuede actualizar con el comando siendo root con el comando updatedb que se encuentra en el mismodirectorio.cp: copia el contenido del archivo1 en el archivo2 con la sintaxis siguiente[shrek@pantano:~]$ cp ... donde archivo1, archivo2 hasta archivo[n] serán copiados a destino. Algunas opciones:-a, --archive-b, --backup-f, --forcePreserva la posible estructura y atributos del archivo a copiarRealiza un backup de los archivos copiados por si se renombran o son borradosBorra sin avisar el archivo de destino si este existe-i, --interactivePregunta por pantalla la confirmación de sobrescribir un archivo destinoOtra forma de utilizar el comando cp es haciendo una copia recursiva de 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 defecto muestra en pantalla todos los usuarios logeados incluyendo nombre de login, nombrecompleto, nombre de la terminal donde esta logeado, hora en que entro al sistema, hostname además deotros datos personales como los números de teléfono si es que existen.


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html7 de 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 de 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 de una "@" e inmediatamente después el nombre del host del que queremos saber quienesta logeado.[shrek@pantano:~]$ finger @farfaraway.comgrep: Imprimirá las líneas que coincidan con la expresión que coloquemos inmediatamente luego delcomando. Por ejemplo, si tiráramos por pantalla el archivo /var/log/messages tal vez tendríamosdemasiadas 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 de canalización "|" podríamos hacerque la salida del cat se procese con el comando grep para darnos la salida deseada.[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 de líneas que coinciden con el patrón.


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html8 de 12 07/09/2005 8:07Muestra antes que las líneas que coinciden, la cantidad de bytes que han pasado por el comandoluego de 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 de laspaginas de su manual.kill: Por defecto envía una señal de terminación (terminate 15) al proceso que se indique por medio delnumero de proceso (PID). Las señales que se le pueden 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 de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html9 de 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 de manual. De estas señalesindicaremos las más utilizadas. Estas son 9, 1 y 15. Para indicar el número de 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 deberá 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 de una.La diferencia sustancial con el more es que nos permite desplazarnos de abajo hacia arriba y de arribahacia debajo de la salida por pantalla. Permite a su vez que se utilicen una serie de comandos. Sumario decomandos básicos del less.h HMuestra la ayuda.q :q Q :Q ZZSalir.e ^E j ^N CRAdelante 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-vAdelante una pantalla (o N líneas).Atrás una pantalla (o N líneas).ESC-SPACE


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html10 de 12 07/09/2005 8:07Adelante una pantalla./ patrónBusca hacia adelante n's líneas en donde coincida el patrón.logout: Sale de la terminal.lpq: Muestra en pantalla el contenido de la cola de impresión. Si se quiere un reporte por cada usuario, elcomando deberá estar seguido del nombre del usuario.lpr: Genera un trabajo de impresión del archivo seleccionado. Si no se especifica archivo, lpr leerá losdatos desde la entrada estándar. Opciones: -Pprinter Envía la salida a la impresora printer. -#copiesProcede a crear "copies" copias del trabajo enviado a la cola de impresión.[shrek@pantano:~]$ lpr -#3 index.cTambién se podría realizar leyendo el archivo con el comando cat y enviarlo al comando lpr con lacantidad de copias que se requieren.[shrek@pantano:~]$ cat index.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 de manual.lprm: Remueve los trabajos de la cola de impresión. Sin argumentos, "lprm", borrara todos los trabajosactivos del usuario que invoco el programa. Puede ser removido un trabajo determinado utilizando elcomando lpq para saber el número de 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 1donde lp es el nombre de la impresora.ls: Lista todos los archivos del directorio que indiquemos.-a, --allLista todos los archivos, incluidos los archivos de punto (.archivo)-d, --directory-c-fLista solo los directorios.Lista los archivos ordenados desde la fecha más próxima a la del momento en que se ejecuta elcomando.No ordena los archivos, los muestra según la ubicación en el disco.


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html11 de 12 07/09/2005 8:07--full-timeMuestra los archivos con todos los datos de tiempo.-i, --inode--color=yesImprime el índice de inodos de cada archivo.Indica al comando ls que muestre los resultados en colores.Para mayor información, mirar las páginas de manual.man: Muestra las páginas de manual del comando o programa que se le pase como argumento. mail: Esun programa sencillo para el envió de e-mails, tanto en una red como en Internet. Siendo este un comandopor demás de auto explicativo y que en su mayoría solo se utilizara para realizar rápidos mensajes deemail, se recomienda la lectura de las páginas de manual para poder ver todos los alcances que tiene.mkdir: Crea directorios nuevos. Se deberá indicar luego del 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 de desplegar la información porpantalla. -d Mostrara los mensajes de 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 de un archivo. Supongamos que queremos cambiarel nombre del archivo1 a archivo2. Si archivo2 existe, este será borrado y en su lugar estarán los datos delarchivo1. La opcion 2 es que lo que se quiera mover sea un directorio. Solo se podrá hacer si el nuevonombre del directorio no existe. La tercera opción es cuando se quiere mover mas de un archivo a unaubicación particular. Existen para realizar esto las siguientes opciones:-f-iFuerza la ejecución del comando mv aunque se trate de un proceso restringido como el borrado deun directorio.Habilita el proceso interactivo. Se podrá especificar el archivo o directorio que se quiere renombraro mover.passwd: Cambia o pone la clave de paso a un usuario. Solo el root podrá cambiar el password de otrousuario. El usuario podrá cambiar su propia clave con este comando.ps: Mostrara información por pantalla de los procesos que están corriendo en ese comento. Opciones:-a-xOpción por defecto. Mostrará los procesos de los cuales el usuario es el dueño.


Detalle de comandoshttp://www.ant.org.ar/cursos/curso_intro/comand.html12 de 12 07/09/2005 8:07Mostrará absolutamente todos los procesos que se estén ejecutando.-fMostrará la jerarquía de los procesos mostrando los padres de cada uno y sus descendientes.pwd: Mostrará la ruta del directorio donde 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 de borrar cada archivo.-fFuerza el borrado de una archivo sin mostrar los mensajes de error.-rBorrado recursivo.rmdir: Borra directorios. Las opciones anteriores también se aplican.Anterior Inicio SiguienteEntornos gráficos de escritorio GNU Free Document License


Entornos gráficos de escritoriohttp://www.ant.org.ar/cursos/curso_intro/x3359.html1 de 3 07/09/2005 8:07Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteEntornos gráficos de escritorioExisten además de los WM mostrados anteriormente entornos de escritorios, los cuales proveen un WM,utilidades varias y un framework de desarrollo que nos permitirán desarrollar aplicaciones que se integrenal entorno perfectamente, compartiendo el look&feel del mismo y aprovechando servicios como arrastrary soltar, servicio de impresión centralizado, un portapapeles común, etc. Algunos de estos entornos sonKDE, Gnome, GNUStep y CDE. Hablaremos solamente de los dos primeros que son, sin lugar a dudas,los más populares. El tercero es un esfuerzo por reimplementar las especificaciones OPENStep de NeXT,y parece haber quedado estancado. El último nombrado fué durante muchos años el rey en los ambientesUNIX corporativos, pero ha quedado desfasado respecto a los dos primeros, además de no ser libre.El entorno KDEKDE ofrece para GNU/Linux un entorno gráfico de configuración por demás de sencilla y con unaapariencia homogénea entre las distintas aplicaciones. KDE es un proyecto de un grupo de programadoresque se formo en 1996 y que siguen trabajando en el proyecto junto con muchos otros que fueronincorporándose. Ofrece su propio administrador de ventanas llamado kwin y además una serie deaplicaciones para hacerlo mas cómodo como el konqueror que es un administrador de ficheros quepermite trabajar con ellos en una forma muy grafica a través de iconos.Figura 14. Aspecto que ofrece KDEConsta de gran cantidad de 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 de aplicaciones como lo sonun programa de correos, el kmail, block de notas, calculadora, y demás aplicaciones de utilidad. Poseetambién aplicaciones para Internet como un cliente para IRC y la posibilidad de realizar la conexión pordial-up de una forma por demás de sencilla a través del 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 puede acceder a una pagina HTML, a un archivo local o aun sentido a través del mismo visualizado.


Entornos gráficos de escritoriohttp://www.ant.org.ar/cursos/curso_intro/x3359.html2 de 3 07/09/2005 8:07Tiene la posibilidad de realizar Drag&Drop entre las distintas aplicaciones por ejemplo arrastrando unarchivo desde un lado a otro o al escritorio.KDE esta desarrollado 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 deprogramas 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 de KDE por cuestionesde licencias en algunas ditribuciones. Luego, la presión de la comunidad del software libre hicieron queestas se publicaran con una licencia dual, estando ahora bajo licencia GPL cuando se utilizan paradesarrollo de software libre. Esto sin duda terminó de popularizar este desarrollo tecnicamente excelente.La página del proyecto es http://www.kde.org donde puede encontrarse mucha información del mismo.El entorno GnomeGnome es un acrónimo de 'GNU Network Object Model Environment', entorno de trabajo en redorientado a objetos, por lo que Gnome forma parte del más amplio proyecto GNU. Gnome es un entornográfico (escritorio de trabajo) amigable que permite a los usuarios usar y configurar sus ordenadores deuna forma sencilla. Gnome incluye un panel (para arrancar aplicaciones y presentar el estado defuncionamiento), un escritorio ( donde se pueden situar los datos y las aplicaciones), un conjunto estándarde aplicaciones y herramientas de escritorio, y un conjunto de convenciones que facilitan la operación yconsistencia de las aplicaciones entre sí.Figura 15. Aspecto que ofrece GnomeLos usuarios de 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 desarrollado por cientos de programadores en todo el mundo.Gnome tiene una serie de ventajas para los usuarios. EL mismo facilita el uso y la configuración deaplicaciones sin usar interfaces puramente textuales (console). Es altamente configurable, permitiéndoleajustar su escritorio con el aspecto que desee.El gestor de sesiones de Gnome recuerda la configuración previa, de manera que una vez que hayaconfigurado las cosas a su gusto, las mantendrá así. Soporta muchos idiomas, y puede añadir más sincambiar el software. Soporta incluso varios protocolos de arrastrar y soltar para una máximainteroperabilidad con aplicaciones que no sean compatibles con Gnome.


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


Configuración de Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html1 de 5 07/09/2005 8:06Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior El sistema X-Window SiguienteConfiguración de Xfree86Por lo general, cuando instalemos GNU/Linux ya tendremos instalado el sistema XWindow yconfigurado. Sin embargo, si hemos instalado Debian o Slackware aun tendermos que configurarlo. Paraesto se debe de crear el archivo de configuración /etc/X11/XF86Config o /etc/X11/XF86Config-4. Estese puede crear a mano o con alguno de los siguientes programas: xf86config o xf86cfg. Antes de correralguno de los programas de configuración de XWindow se debe tener a la mano la siguiente información:marca, modelo y cantidad de memoria de la tarjeta de video; marca, modelo del monitor y frecuenciahorizontal y vertical del monitor; datos del 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 de correr este programa. Si no fuese así un mensaje les advertirá por pantalla de esto. Una vez quese ejecuta como root desde la consola el programa xf86cfg[root@pantano:~]# xf86cfgun cuadro de dialogo le preguntara si se quiere utilizar el archivo de configuración existente. Este archivose instala por defecto al instalarse los archivos de XFree, pero muy pocas veces funciona sinmodificaciones. Sirve para ejemplo y punto de 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íade las máquinas modernas. Si se detectan exitosamente todas nuestras configuraciones de hardware, sepodra ver una ventana similar a la que se muestra a continuación.Figura 6. Aspecto de la ventana de xf86cfgEn este momento estamos configurando el Layout del servidor, es decir la disposición física de losdiferentes dispositivos (Boton superior izquierdo, Configure Layout). Como podemos observar, lasconfiguraciones más importantes se dividen en cuatro secciones representados por los botones superiores,a saber mouse, teclado, tarjeta de video y monitor. El hardware detectado se muestra en la parte inferior,en el gráfico que une las "partes" de nuestra máquina. A continuación podremos efectuar lasmodificaciones que querramos, haciendo click con el botón derecho sobre el dispositivo a configurar yeligiendo la opción configure.


Configuración de Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html2 de 5 07/09/2005 8:06Si por casualidad nuestro mouse fué mal detectado (caso común cuando disponemos de un mouse seriepero nuestra máquina posee además bus ps2), podremos utilizar las teclas del teclado numérico paramover el puntero en pantalla tal como se muestra a continuación.Figura 7. Ayuda en caso de mouse mal detectado o ausenteEn caso de que la detección de video sea mal detectada y no pueda arrancar el modo gráfico, aun se puedeusar el programa de configuración en modo texto, con el comando xf86cfg -textmode, el cual nos abriráel mismo programa con menúes interactivos. También podemos 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 Identifier (sepuede dejar tal cual como está), y lo más importante, mouse device y mouse protocol.Figura 8. Menú de configuración del mouseEl primero se refiere al puerto físico que está conectado el mouse. Si se trata de un mouse serie el mismoserá seguramente /dev/ttyS0 o /dev/ttyS1. Si se trata de un mouse ps2 será /dev/psaux. En cuanto alprotocolo, puede dejarse en Auto la mayoría de las veces. Algunos protocolos pueden activarcaracterísticas especiales del mouse, por ejemplo la rueda. La opción Emulate 3 buttons permite queteniendo un mouse de dos botones, apretando los dos a la vez se comporte como un tercer botón.TecladoHay que configurar nuestro teclado de acuerdo a dos aspectos fundamentales: el idioma y el modelo. Acontinuación se muestra la pantalla de configuración del teclado.


Configuración de Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html3 de 5 07/09/2005 8:06Figura 9. Menú de configuración del tecladoLas opcion xkb rules debe ser xfree86. Los parámetros más importantes son Keyboard model, el cual enlos teclados comunes con "teclas muertas" (dead 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 de nuestro teclado, como que hacercon las teclas muertas, administrar el comportamiento de las teclas CapsLock-Shift, etc.Placa de VideoEste punto es crucial y por demás de complicado cuando no se tiene la documentación de la placa. Lomejor que puede uno hacer es leer los README que vienen con X para ver si existe compatibilidad connuestra placa de video. Si se sabe cual es el tipo de placa y esta aparece listada, es un procedimientoinmediato, pero si no se tendrá que probar con una placa genérica que supla los requerimientos de nuestraplaca de video. A continuación vemos la pantalla de configuración de la placa de video.Figura 10. Menú de configuración de la placa de videoSi nuestra placa no está listada por lo general la placa VESA es una buena opción. Si esta no funcionatambien se dispone de el controlador vga generic, el cual debería funcionar en casi cualquier hardware.Lo que se tiene que tener en cuenta es el chipset de 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 deREADME para configurar placas aceleradoras.MonitorLa configuración del monitor se basa en saber las frecuencias verticales y horizontales de trabajo delmismo, lo que se podrá obtener de la documentación provista o del sitio del fabricante.


Configuración de Xfree86http://www.ant.org.ar/cursos/curso_intro/x3258.html4 de 5 07/09/2005 8:06Figura 11. Menú de configuración del 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 accidentes. Elegiendo un monitor de 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 de xf86cfgseleccionamos Configure Screen, y el aspecto de la misma cambiará como se muestra a continuación.Figura 12. Configuración del aspecto de pantalla (screen)Haciendo click derecho sobre el monitor elegimos configure y podremos seleccionar la profundidad decolores y la resolución a la que querramos trabajar. Aqui vemos que se ha seleccionado 16 bits deprofundidad de colores (65536 colores) y dos resoluciones, 640x480 y 800x600. Puede alternarse entreestas dos resoluciones apretando la cambinación de teclas Ctrl-Alt-+ y Ctrl-Alt--


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


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


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


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


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


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


El sistema X-Windowhttp://www.ant.org.ar/cursos/curso_intro/c3185.html1 de 1 07/09/2005 8:05Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteEl sistema X-WindowOrígenes de XVamos a dar un concepto sencillo de 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 de los entornos gráficos para usuarios de Unix, pero no es solo eso, es uncompleto sistema para redes que permite ejecutar aplicaciones X desde una computadora en la otra partedel globo de donde se encuentra el servidor, a través de Internet.Primero lo primero. El consorcio de 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 de estos nombres es sinónimo del mismo software. X Window System TM es unamarca registrada de X Consortium, Inc.El X11 se desarrolló gracias a la cooperación entre DEC (Digital Equipment Corporation, luego adquiridapor Compaq) y el proyecto Athena del MIT (Massachussets Institute Of Technology). La primera versión,la X11R1, salió en septiembre de 1987. Desde la versión 6 (X11R6) la X Consortium Inc y desde 1996The Open Group continuaron con el desarrollo del X Window System.Existe una implementación libre del sistema X para sistemas Unix y se denomina XFree86. Este se siguedesarrollando 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 de un amplio público y contribuir con el desarrollo e investigaciones del sistema X Window.Es de esta manera que el sistema operativo GNU/Linux adopta esta distribución libre del sistema X parabrindar un entorno gráfico mas amigable.Anterior Inicio SiguienteActualización del sistema X - Puntos básicos


Actualización del sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html1 de 4 07/09/2005 8:05Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Administración básica del sistema SiguienteActualización del sistemaUna tarea que es muy importante para el administrador es la de mantener actualizado el sistema y lainstalación de nuevo software en él. Dado que el mundo de GNU/Linux se mueve muy rápidamente setendrán que tener los recaudos necesarios para que el sistema que se esta administrando no quede prontoobsoleto. Ahora esto no hay que confundirlo con que se tenga que estar pendiente de 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 de actualizar el sistema cada vez que una versión nueva de ladistribución que se esta usando sale, pero esto también es una perdida de tiempo ya que no todo el sistemacambia por lo que no se justifica la compra de una nueva distribución o el bajarse los 6 discos que lacomponen. Por esto, la mejor forma de realizar una actualización del sistema es haciéndola a mano, lo quetrataremos de ver con unos puntos clave del sistema como lo son el kernel, las bibliotecas y el softwareesencial para el funcionamiento óptimo del sistema.Actualizando el núcleoLa actualización del núcleo o kernel del sistema no es bajarse el código fuente de este y realizar unacompilación. Esto permite habilitar ciertas funciones que no vienen en los kernel pre-compilados o puededesactivar otras que no son necesarias.Los fuentes del kernel se pueden obtener de numerosos sitios de ftp. El más conocido es el de kernel.orgcuya página es http://www.kernel.org y el ftp es ftp://ftp.kernel.org . Los kernel se encuentran indexadospor el número de la versión (ej v2.4) donde se encontraran los sucesivos niveles de parche de 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 de compactación es mucho más eficiente que gz.El método para descomprimirlos es el habitual, se recomienda la lectura de las páginas de manual de cadauno de los métodos de compactación para efectuarlo. Se deberá realizar la descompresión en el directorio/usr/src donde se creara un directorio con el nombre de la versión del kernel y su nivel de parche.Existe un enlace que estará apuntando a los fuentes del kernel anterior denominado linux. Este enlacedeberá cambiarse para que apunte al código del 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 del kernel se deberá contar con los compiladoresnecesarios. Estos son el gcc y el g++ que son los compiladores de C y C++ que deberán estar instaladosen el sistema. Mas adelante veremos como podremos tener una versión reciente de estos.Una vez que nos sesionamos que tenemos todo lo necesario se procederá a ejecutar el programa deconfiguración del kernel. Existen 3 formas de 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 del kernel. Esta forma es por demás de tediosa y no la veremosaquí.Otra forma es realizarlo a través de 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 puede presentarseaquí es que no se cuente con los paquetes de desarrollo del lenguaje Tk que se utilizan para el programa


Actualización del sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html2 de 4 07/09/2005 8:05en X por lo que posiblemente no funcione en algunos sistemas.Una tercer forma es la de ejecutar make menuconfig que nos levantará un programa de configuraciónpero de consola y es la forma que funciona de forma más cómoda.La sugerencia es que se tome como punto de partida la configuración del kernel anterior. Esta puedetomarse 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 pueden generar a partir del programa de configuración del kernelanterior solicitándole que guarde la configuración en un archivo. Opción que aparece en la parte inferiorde la ventana de configuración en el menuconfig. Ahora se puede tomar con la opción de carga deconfiguración del kernel nuevo, la configuración anterior y modificarla según nuestros requerimientos.Una vez realizado los cambios de configuración necesarios se recomienda el guardar la configuración enun archivo, además de en el mismo kernel, para futuros cambios.Cuando se termina de configurar, se le instará al ejecutar make dep y make clean. Al hacer make dep seprepararán las dependencias necesarias para efectuar la compilación. Cuando acabe, hay que hacer unmake clean. Esto elimina ficheros objetos y demás de la versión anterior. No olvidar este paso.Después de preparar dependencias, puede ejecutar make zImage o make zdisk (esta es la parte que tardamás tiempo). make zImage compilará el núcleo y lo dejará comprimido en arch/i386/boot/zImage juntoa otros ficheros. Con make zdisk el nuevo núcleo se copiará además en el disquete que esté puesto en ladisquetera /dev/fd0. Esto es interesante para probar núcleos; si explota (o simplemente no hace nada) sequita el disquete de la disquetera y se podrá arrancar el núcleo antiguo. Además sirve para arrancar si seborró accidentalmente el núcleo del disco duro.Otra opción es efectuar la compactación del kernel con un método más eficiente dado que el LILO sepone nervioso con núcleos muy grandes. Por esto se podrá efectuar un make bzImage lo que compactaraaún mas el kernel. Un núcleo comprimido se descomprime automáticamente al ser ejecutado. Una vez quese tenga un nuevo núcleo que parezca funcionar como se desea, será el momento de instalarlo. Casi todoel mundo utiliza LILO (LInux LOader) para esto. Una forma muy cómoda de llevar todo el tema delLILO, si lo tenemos instalado, y las compilaciones, etc, es añadir lo siguiente en el /etc/lilo.conf...image=/vmlinuzlabel=ultimoroot=/dev/hd[loquesea]read-onlyappend = ""image=/vmlinuz.oldlabel=anteriorroot=/dev/hd[loquesea]read-onlyappend = ""Al compilar, si lo hacemos con la secuencia de comandos[root#pantano:/usr/src/linux]# make dep[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 del kernel a /vmlinuz.old, dejando la nueva como/vmlinuz, e instalará LILO, a continuación con lo cual lo hacemos todo automáticamente.La órdenes make modules; make modules_install compilarán los módulos que hayamos seleccionado,


Actualización del sistemahttp://www.ant.org.ar/cursos/curso_intro/x3092.html3 de 4 07/09/2005 8:05y los instalarán. No hay olvidar ejecutar depmod -a en cuanto hayamos arrancado con dicho núcleo. Encaso de que estemos compilando por segunda vez una misma versión de núcleo, y hayamos variado elnúmero de módulos a compilar, es posible que la ejecutar make dep nos encontremos con un mensaje deerror; esto se debe a que los antiguos módulos que no hayamos compilado ahora no son borrados. Puedenborrarse tranquilamente.Actualizando las bibliotecasLa mayor parte del software de GNU/Linux esta compilado para que utilice bibliotecas compartidas, poresto muchas veces se requieren juego de bibliotecas mas recientes para un determinado programa. Lasbibliotecas son compatibles en forma ascendente, es decir que un programa compilado para una versiónantigua de bibliotecas funcionará igual con una versión mas reciente de las mismas pero lo contrario no seaplicará.Las últimas versiones de las bibliotecas de GNU/Linux puede encontrarse en los servidores deftp://ftp.suncite.unc.edu. Los archivos de "versión" que se encuentran allí deberán explicar el proceso deinstalación. Se deben bajar los ficheros image-versión.tar.gz y inc-versión.tar.gz donde versión esla versión de las bibliotecas a instalar, por ejemplo 4.4.1. Son ficheros tar comprimidos con gzip; elfichero image contiene las imágenes de las bibliotecas a instalar en /lib y /usr/lib. El fichero inccontiene los ficheros de inclusión a instalar en /usr/include.El fichero release-versión.tar.gz debe explicar el método de instalación detalladamente (lasinstrucciones exactas varían para cada versión). En general, se necesita instalar los ficheros de bibliotecas.a y .sa en /usr/lib. Estas son las bibliotecas utilizadas en tiempo de compilación.Además, los ficheros imagen de las bibliotecas compartidas libc.so.version se instalan en /lib. Estasson las imágenes de las bibliotecas compartidas que son cargadas en tiempo de ejecución por losprogramas que utilizan las bibliotecas. Cada biblioteca tiene un enlace simbólico utilizando el número deversión mayor de la librería en /lib.Por ejemplo, la versión 4.4.1 de la librería libc tiene un número de versión mayor de 4. El fichero quecontiene la librería es libc.so.4.4.1. Existe un enlace simbólico del nombre libc.so.4 en /libapuntando a este fichero. Por ejemplo, cuando se actualiza de 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 dealguna forma borrase el enlace simbólico libc.so.4, los programas que dependen del enlace (incluyendoutilidades básicas como ls y cat) dejarán de 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 de la misma forma. Si se estáactualizando a una versión diferente de las bibliotecas, sustituya lo anterior con los nombres adecuados.La nota de la versión de la librería debe explicar los detalles. (Ver sección sobre enlaces simbólicos paramás información).Actualizando gccEl compilador de 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 de gcc se encuentra en los servidores FTP de 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 detallando qué ficheros se necesitan obtener y como instalarlos.


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


Acerca de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html1 de 7 07/09/2005 8:04Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Administración básica del sistema SiguienteAcerca de impresoras:Extraído del Printer HowTo de Grant Taylor y Brian McCauleyTodo sistema que se precie es capaz de gestionar una o varias impresoras, con uno o varios usuarios, queles envían distintas clases de documentos, más o menos dignamente. Un*x resuelve estos problemasmediante un conjunto de programas, los servidores de impresión, que gestionan los trabajos pendientes, ylos encauzan a las impresoras adecuadas, todo de manera completamente transparente al usuario. Elcamino más corto en Un*x (y GNU/Linux), es enviar los datos a imprimir directamente al dispositivoadecuado. El siguiente comando envía un listado del directorio a la impresora en puerto paralelo(hablando en DOS, LPT1:)[root#pantano:~]# ls > /dev/lp1El problema de este método es que no aprovecha las capacidades de multitarea de Linux, debido a que eltiempo que tarda el comando en completarse será el mismo que emplee la impresora en despachar eltrabajo. En una impresora lenta, o en una apagada o sin papel, puede prolongarse un poco. Podríamosejecutar el comando simplemente en segundo plano, pero no adelantaríamos mucho. Además, deberátener privilegios de root. Un remedio mejor es crear un área de spool, es decir, 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 incidencias que se presenten. Esencialmente, así funciona el sistema deimpresión en Linux. Para cada impresora, se define un área spool, donde cada trabajo pendiente sealmacena en un fichero. Un proceso en segundo plano (llamado el demonio de 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 de 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 de la "cola deimpresión".En el caso de impresión remota, los trabajos se gestionan localmente, como cualquier otro, pero eldemonio de impresión lo envía a través de la red hacia el ordenador o impresora destino. La informaciónque el demonio de impresión necesita para su trabajo (el dispositivo físico, el spool de datos, la máquina eimpresora remota, etc.) se almacenan en un fichero llamado /etc/printcap, que describiremos mástarde.En lo sucesivo, el término "impresora" se referirá a una máquina lógica definida en /etc/printcap. Elconcepto "impresora física", define la cosa que mancha papel. Es perfectamente posible describirmúltiples entradas en /etc/printcap que se refieren a una sola impresora física, pero por caminostortuosos. No nos preocupemos, lo aclararemos al describir printcap.Lo primero a tener en cuentaEl sistema de impresión de Linux se sustenta en cinco programas, que deberían estar donde aparecen en elsiguiente listado, propiedad de 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 de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html2 de 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 de impresión. /sbin/lpd es eldemonio de impresión. Hay páginas de manual que explican con detalle todas estas órdenes y que deberíaconsultar para ampliar información.Los directorios, permisos y propiedad de los ficheros pueden diferir a los de su sistema, aunque nodeberían ser MUY distintos.Es importante saber que, por defecto, lpr, lprm, lpc y lpq trabajan con una impresora llamada "lp". Sidefine la variable de entorno PRINTER con el nombre de una impresora, pasará a ocupar el valor pordefecto. Se puede indicar sobre la marcha una impresora distinta con la opción -P impresora en la línea deórdenes.Los directorios fundamentales.Realmente, sólo hay un directorio importante: el área de spool donde se almacenan los datos a la esperade que lpd decida qué hacer con ellos. Sin embargo, un sistema típico debería configurarse en variosdirectorios, uno para cada impresora, lo que facilita notablemente el mantenimiento. En la mayoría de 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, debería crear dos directorios, por ejemplo /var/spool/lpd/PJL-16-ps y/var/spool/lpd/PJL-16-hpgl.Los directorios temporales deberían pertenecer a root, grupo lp; user y group deben poder leer y escribir,y el resto, leer (permiso 0775). Para cada directorio de impresora, la orden adecuada 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 destinos, permisos y propietarios aquí indicados deben considerarse como indicativos, pues puedenvariar entre distintos sistemas e instalaciones.Además de los programas ya tratados, cada directorio temporal debe contener como mínimo cuatroficheros, .seq , errs , lock y status, y deberán tener permisos 0664. El fichero .seq contiene lasecuencia de trabajos enviados. status contiene el mensaje que devuelve "lpc stat". El fichero lockimpide al lpd imprimir al tiempo dos trabajos en la misma impresora, y errs guarda un registro de losfallos de la impresora. El fichero errs es actualmente potestativo, y ahora puede llamarse como leapetezca. Su nombre se especificará en /etc/printcap. Debe, sin embargo, existir un fichero que permitaa lpd registrar los mensajes de error./etc/printcap/etc/printcap es un fichero texto, modificable con su editor favorito. Su propietario debe ser root y


Acerca de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html3 de 7 07/09/2005 8:04debe tener permisos 0644.Aunque a golpe de vista parezca tan comprensible como la piedra Rosetta, su estructura es muy sencilla yasequible. Parte de la mala fama se debe a que algunas distribuciones no incluyen página de manual paraprintcap, y el hecho de que muchos printcap están generados por programas, o por gente cuya manera dedespreciar al género humano es omitir comentarios que ayuden a su comprensión. Desde aquí hacemos unllamamiento para que su fichero printcap sea tan legible como sea posible.Cada entrada de printcap describe una impresora. Mejor aún, cada entrada de printcap provee unadenominación lógica para un dispositivo físico, y describe cómo deben los datos ser enviados ymanejados por él.Por ejemplo, una entrada de printcap definirá qué puerto vamos a usar, qué directorio spool, qué procesodeben soportar los datos, qué clase de errores debemos notificar, qué volumen de datos se permiten enviarcomo máximo, o limitar el acceso de ciertos dispositivos.Además, podemos definir distintos modos de procesar datos para una misma impresora. Por ejemplo, unamisma impresora de HP puede manejar datos en formatos PostScript, HPGL y PCL, dependiendo de lasecuencia de órdenes que le enviamos al comienzo de cada trabajo. Tendría sentido definir los tres modosde trabajo como sendas impresoras, cada una de las cuales procesará los datos dependiendo del modo detrabajo. 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 puede incluso no enviar ningún dato al puerto.Un ejemplo típico de entrada en /etc/printcap podría ser# Ejemplo de printcap con dos alias impresoraHP|HP850C:\# lp es el dispositivo de impresión, en este caso,# la primera impresora:lp=/dev/lp1:\# sd indica el directorio spool:sd=/var/spool/lpd/HP850C:Como vemos, cada entrada de /etc/printcap se estructura en una serie de campos, encabezados por unaetiqueta, y limitados por dos puntos, a excepción del primer campo, que describe la impresora. Loscampos pueden tener tres tipos de valores: texto, lógico y numérico, en los que nos extenderemos másadelante. La primera línea de la entrada determina el nombre y alias de la impresora. La impresora pordefecto debería llamarse "lp"; por ejemplo, si la impresora del ejemplo anterior es la única que tenemos,la primera línea sería# Ejemplo para la impresora por defectolp|HP850C:\Sólo podemos tener una impresora llamada "lp".Podemos usar el nombre que nos apetezca como "La Picadora de papel del despacho de 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 de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html4 de 7 07/09/2005 8:04Campo Tipo Descripciónlp Texto Dispositivo de impresión (ej. /dev/lp1)sd Texto Nombre del directorio tampon de esta impresoralf Texto Fichero que almacena el registro de erroresif Texto Nombre del filtro de entradarm Texto Nombre del host de impresion remotarp Texto Nombre de la impresora remotash Lógico Suprime las páginas que separan los trabajossf Lógico Suprime las paginas en blanco al final del trabajomx Numérico Tamaño máximo del trabajo de impresión (enbloques)Veamos ahora estos campos con un poco más de detalle.lplfifrm y rpApunta al puerto/dispositivo de impresión. Si especificamos /dev/null como dispositivo, el resto delos procesos se ejecutan normalmente, pero los datos de salida van a parar al inodoro. No se utilizaa excepción de las pruebas de configuración del dispositivo. Cuando configure una impresoraremota con los campos rm y rp , debería poner ":lp=:" en /etc/printcap, indicando que no estáasignada a ningún dispositivo local.. No deje este campo en blanco a menos que use una impresoraremota, o el demonio de impresión se quejará amargamente, si no especifica un dispositivo deimpresión.Guarda un registro de los errores de impresión. Cualquier fichero que especifique deberá existirantes de su uso, o no se registrarán las incidencias.Indica el nombre del filtro de impresión a ejecutar. Los filtros son programas que reciben datos porla entrada estándar, y los devuelven procesados por la salida estándar. Un empleo típico es detectartexto llano y convertirlo en PostScript para imprimirlo en ese tipo de trastos. Son muy útiles, porejemplo, para eliminar el efecto escalera, o cambiar la página de códigos sin necesidad de cambiarla configuración de la impresora cada vez que la usemos entre UNIX y DOS. Cuando se especificaun filtro de entrada, el demonio de 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 de impresión como salida estándar.Controlan el destino de 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 de ser enviados, y que leejecutará cualquier filtro que especifique. Una entrada típica de /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 de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html5 de 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 de acceso.Portadillas y separadores. Salvo que haya mucha gente distinta usando su impresora,probablemente no estará interesado en las páginas separadoras de trabajos. Las páginas de fin detrabajo son particularmente molestas cuando se trabaja con procesadores de texto, que componenpáginas completas, por lo que si especificamos sf, tendremos al final de 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 de la impresión. Se puede presentar un problema sitenemos una impresora PostScript, al quedar residente el último tipo de letra utilizado. Con elcampo :tr: lo evitaremos. Es preferible en estos casos dejar :sh:, y que sean los filtros quienes seencarguen de generar las portadillas.Limita el tamaño del spool de datos, señalando una cantidad en bloques de 1 K ( 1024 bits ). Simx=0, el límite viene dado por el espacio disponible en disco. Recuerde que lo que limitamos es eltamaño del spool, no la cantidad de 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 accidentalmente pueden generar un volumen desproporcionado dedatos a imprimir (imágenes, por ejemplo); para impresoras ps, no suele tener mucho interés, puesun volumen pequeño de datos en formato ps pueden generar una notable cantidad de papel impreso.Podemos sustituir el límite de mx escribiendo en cada directorio spool un fichero llamado minfreeque contiene el espacio mínimo disponible que permita aceptar trabajos, en forma de fichero textocon el número de bloques mínimos disponibles. Normalmente, suele ser un enlace con el originalen /var/spool/lpd, ya que es inusual que cada impresora deba tener un mínimo diferente.Probemos ahora /etc/printcap con un ejemplo. El siguiente guión de shell es un filtro de entrada muysimple. Sólo encadena su entrada al final de un fichero en /tmp, tras una pancarta adecuada. Usaremoseste filtro en el campo if, y enviaremos los datos a /dev/null, ahorrándonos las quejas del demonioespecificando un dispositivo de impresión.#!/bin/sh# Este filtro debera colocarse en el directorio tampon,# con el nombre filtro_entrada, propiedad de 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 de continuación de línea "\" al final de cada una, excepto la última (dehecho, cada entrada en /etc/printcap es una sola línea)impre|PLJ-H1998:\


Acerca de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html6 de 7 07/09/2005 8:04:lp=/dev/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 deje 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 de lpr, lprm, lpc, lpq y lpd.Cree el directorio spool de su impresora: (recuerde que el propietario debe ser root, el grupo lp, ylos permisos 0775 con las órdenesmkdir /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 debidos 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 de entrada en el directorio spool. Use por ahora el filtro de 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 descrito 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 demonio de impresión al arrancar. De todos modos puedearrancarlo a mano con la orden lpd.Haga una prueba: cruce los dedos y tecleels -l | lpr -Pimpre9.10.Busque en /tmp un fichero llamado testlp.out. Debería contener un listado del directorio, con unencabezado.Si ha funcionado (y no dudamos que habrá sido así), edite /etc/printcap, y copie la entrada deprueba en el mismo fichero. En la primera entrada, cambie el nombre de la impresora a testlp, o elque usted prefiera, pero que no use como nombre real de impresora. En la segunda entrada (queahora será la de su impresora real), cambie el contenido de lp=/dev/null al del puerto de


Acerca de impresoras:http://www.ant.org.ar/cursos/curso_intro/x2879.html7 de 7 07/09/2005 8:04impresora (normalmente será /dev/lp1) de su ordenador, salvo que vaya a utilizar una impresoraremota, en cuyo caso deberá definir rm y rp. Cambie el nombre del filtro if si tiene ya unoprevisto, o suprímalo si no va a utilizar ninguno.11.Reinicie el sistema, o mate el demonio de 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 de printcap, con las modificacionespertinentes a cada dispositivo.Impresión remota e impresión localLa impresión remota nos permite enviar trabajos de impresión desde una máquina, hacia otra(computadora/impresora) conectada a una red; por ejemplo, nuestro equipo funciona de servidor en unared, o si una impresora asignada a nuestra máquina debe ser accesible por otros ordenadores.Imprimimos localmente cuando usuarios de 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, debe estar registrada encualquiera de los ficheros /etc/hosts.equiv o /etc/hosts.lpd, que son simples ficheros de texto, conun nombre de maquina por línea. Es preferible el segundo, reservando el primero para proporcionarmayores permisos de acceso, lo que debería ser evitado en lo posible.Puede 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. Puede 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=/dev/null\:rm=192.168.1.1:# Aquí puede ir también el nombre del#servidor de impresión.:rp=lp:\:sd=/var/spool/lpd/remote:\:mx#0:\:sh:Anterior Inicio SiguienteIniciando el sistema Subir Actualización del sistema


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


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


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


Administración básica del sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html1 de 5 07/09/2005 8:03Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteAdministración básica del sistemaEn este capítulo trataremos de ver los aspectos generales sobre la administración de nuestro sistemacontemplando algunas configuraciones que se tendrán que hacer, tomando como base un sistema pequeñocomo el de nuestro hogar o de una empresa con pocas máquinas interconectadas.Empezaremos reforzando el concepto de la cuenta root para comprender su alcance y que restricciones ylibertades podremos dar a los demás usuarios.Luego veremos varias maneras para poder arrancar nuestro sistema ejemplificando tres métodos: lautilización de un diskette, el uso del LILO o desde la aplicación para DOS LOADLIN.Nuestro sistema tendrá que tener la posibilidad de 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 delmismo, 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 de usuario root, es el más importante delsistema y además es quien tiene los privilegios más altos para interactuar con él. También sabemos, y estoa fuerza de malas experiencias en muchas ocasiones, que el ser root requiere responsabilidades y el estarconciente de lo que se hace con este tipo de cuentas ya que muchas veces un error cometido seráirreparable.Los usuarios del sistema están bastante restringidos en lo que pueden realizar, ya sea con los archivos deotros usuario o archivos de sistema, ya que no tienen los permisos necesarios para poder modificarlos oborrarlos e incluso en muchos casos leerlos. Todas estas limitaciones se terminan con la cuenta root yaque posee acceso a cada área del sistema pudiendo borrar, crear, modificar archivos de cualquier parte delsistema así como cambiar permisos y dueños de estos. Puede 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 privilegiosadecuados para poder forzar al sistema a realizar algo. La idea 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 de le ocurriese borrar los archivos que se encuentran en eldirectorio /boot el sistema no lo dejaría, en cambio si es el root quien lo pide, lo que este en /bootdesaparecerá muchas veces, de acuerdo a la configuración de GNU/Linux que se posea, cargándose alkernel completo con ellos.Para evitar cualquier accidente al utilizar la cuenta root es recomendable los siguientes pasos a seguir1.Pensarlo dos veces antes de apretar la tecla Enter en un comando que pueda causar algún daño. Porejemplo si se esta borrando algún archivo de configuración releer la línea del comando completo.


Administración básica del sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html2 de 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 de un usuario normal.3.Usar siempre un marcador distinto para un usuario normal y el root. Esto ya viene por defecto en lamayoría de 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 desconectarse tan prontocomo se haya terminado el trabajo. Cuando menos se use la cuenta root, menos posibilidades decometer un error habrá.Existen personas que son verdaderos hackers de 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 de conocimiento sobreUn*x y segundo que estas personas en algún momento han hecho algo que les a hecho perder suinformación.La cuenta root es poderosa en el sistema, y ese poder es peligroso muchas veces para el resto de losusuarios del sistema. La tendencia a la destrucción de un usuario con el poder de root es perjudicial parael resto del sistema ya que en sucesivas oportunidades se a sabido de casos en los que los administradoresdel sistema leen correo de otro usuarios o borran archivos sin avisar a nadie jugando con el sistemainformático como si fuesen niños y no como verdaderos administradores. Por ello se requiere cierto gradode madurez y responsabilidad además del conocimiento necesario para poder llegar a ser administrador deun sistema y es en nuestros sistemas que tendremos en el hogar o en la oficina con GNU/Linux dondetendremos que aprender a serlo.Gestión de usuariosEl sistema mantiene una cierta cantidad de información acerca de cada usuario. Dicha información seresume a continuación.nombre de usuarioclaveuser IDgroup IDEl nombre de usuario es el identificador único dado a cada usuario del sistema. Ejemplos denombres de usuario son: shrek, burro y fiona. Se pueden utilizar letras y dígitos junto a loscaracteres "_" (subrayado) y el punto. Los nombres de usuario se limitan normalmente a 8caracteres de longitud.El sistema también almacena la clave encriptada del usuario. El comando passwd se utiliza paraponer y cambiar las claves de los usuarios.El user ID, o UID, es un número único dado a cada usuario del sistema. El sistema normalmentemantiene la pista de la información por UID, no por nombre de usuario.El group ID, o GID, es la identificación del grupo del usuario por defecto.nombre completoEl nombre real o nombre completo del usuario se almacena junto con el nombre de usuario. Porejemplo, el usuario burro puede tener el nombre "Platero Equino" en la vida real.


Administración básica del sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html3 de 5 07/09/2005 8:03directorio inicialEl directorio inicial es el directorio en el que se coloca inicialmente al usuario en tiempo deconexión. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home.intérprete de comandoEl intérprete de comando del usuario es el intérprete de comandos que es arrancado para el usuarioen tiempo de conexión. Ejemplos pueden ser /bin/bash y /bin/tcsh.El archivo /etc/passwd contiene la información anterior acerca de losusuarios. Cada línea del ficherocontiene información acerca de un único usuario. El formato de cada línea esnombre:clave_encriptada:UID:GID:nombre completo:dir_inicio:intérpreteUn ejemplo puede sershrek:Xv8Q981g71oKK:102:100:Shrek Ogre:/home/shrek:/bin/bashEl primer campo , "shrek", es el nombre de 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 puede ser desencriptada. Esta forma de encriptación es bastante segura.Algunos sistemas utilizan "claves en sombra" (shadow) en la que la información de las claves se relega alfichero /etc/shadow. Puesto que /etc/passwd es legible por todo el mundo, /etc/shadow suministra ungrado extra de seguridad, puesto que éste no lo es. Las claves en sombra suministran algunas otrasfunciones como puede ser la expiración de claves; no entraremos a detallar estas funciones aquí.El tercer campo, "102", es el UID. Este debe ser único para cada usuario. El cuarto campo,"100", es elGID. Este usuario pertenece al grupo numerado 100. La información de grupos, como la información deusuarios, se almacena en el fichero /etc/group. El quinto campo es el nombre completo del usuario,"Shrek Ogre". Los dos últimos campos son el directorio inicial del usuario, /home/shrek y el intérpretede conexión /bin/bash, respectivamente. No es necesario que el directorio inicial de un usuario tenga elmismo nombre que el del nombre de usuario. Sin embargo, ayuda a identificar el directorio.Borrando usuariosAnteriormente vimos como podemos crear un usuario para empezar a utilizar el sistema, y este métodopuede emplearse para la creación de cualquier otro usuario. De forma parecida, borrar usuarios puedehacerse con los comandos userdel o deluser dependiendo del software instalado en el sistema.Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar lacuenta del usuario), se puede prefijar con un asterisco ("*") el campo de 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 de que haya creado un usuario, puede necesitar cambiar algún atributo de dicho usuario, como


Administración básica del sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html4 de 5 07/09/2005 8:03puede ser el directorio inicial o la clave. La forma más simple de 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 de burro. Sólo root puede cambiar la clave de otro usuario de ésta forma. Los usuariospueden 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 de nombre completo e intérprete de conexión. Si no, deben pedir al administrador desistemas que los cambie por ellos.GruposComo hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia realde las relaciones de grupo es la perteneciente a los permisos de ficheros, como dijimos anteriormente cadafichero tiene un "grupo propietario" y un conjunto de permisos de grupo que define de qué forma puedenacceder al fichero los usuarios del grupo. Hay varios grupos definidos en el sistema, como pueden ser bin,mail, y sys. Los usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos deficheros del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como users. Si sequiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soportey facultad.El fichero /etc/group contiene información acerca de los grupos. El formato de cada línea esnombre de grupo:clave:GID:otros miembrosAlgunos ejemplos de grupos pueden ser:root:*:0:users:*:100:fiona,burro,shrekinvitados:*:200:otros:*:250:shrekEl primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo,users, es para usuarios normales. Tiene un GID de 100. Los usuarios fiona y pedro tienen acceso a estegrupo. Recuérdese que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuariospueden pertenecer a mas de un grupo, añadiendo sus nombres de usuario a otras líneas de 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 puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces se utiliza para dar unaclave para acceder 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 de la clave a "*".Se pueden 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 de /etc/group.


Administración básica del sistemahttp://www.ant.org.ar/cursos/curso_intro/c2714.html5 de 5 07/09/2005 8:03Poniendo reglas al sistemaEl SO Un*x no fue diseñado desde sus principios pensando en la seguridad entre los usarios del 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 desarrollándose. El tener una actitud mano duracon los usarios no ayudará a que estos traten de saltarse las limitaciones que le podamos haber impuesto.Puede 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 de reglas que el usuario pueda seguir yque tienen que ir de acuerdo a las políticas del área donde se esta implementando el sistema informativo.Puede darse el caso de que existan reglas que estén en contra de las políticas o que no estén bienexplicadas por lo que será difícil de cumplir.También esta el caso de que si las reglas son por demás de restrictivas con el usuario éste tratará desaltarlas. Otro caso son los usarios que por desconocimiento de estas reglas realizan acciones prohibidas.Por ejemplo, envían mails de 20 MB por la red saturando la conexión dado que no se especificaclaramente que no pueden mandarse mails con adjuntos tan grandes. Si nadie se lo informa al usuario nopodemos pedirle que obedezca. Los motivos por los cuales las reglas se implementan deberá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 de editores fuera deIniciando el sistemalínea


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html1 de 7 07/09/2005 8:03Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Programas de edición de consola SiguienteConceptos de editores fuera de líneaExisten ocasiones en las que el uso de un editor de textos como el vi o emacs puede ser demasiado o nocumplen con lo que queremos realizar. Tal vez se tengan que hacer cambios repetitivos a archivos o tenerque procesar datos de una fuente y enviarlos a otro archivo en un orden correcto o tal vez solo queremosuna forma simple de hacer el trabajo desde un script o la línea de comandos. Es aquí donde entran atrabajar los editores fuera de línea y para nombrar solo 2 veremos el editor de flujo Sed y el lenguaje deprogramación Awk (por Alfred Aho,Peter Weinberg y Brian Kernighan). Lo especial de Awk es que es unlenguaje con todas las letras y muy poderoso, pero en ocasiones nos facilitará tareas tediosas deprocesamiento de información y por esto lo ponemos en el rango de un editor fuera de línea. Aunque estono quiere decir que es lo único que puede hacer. Para mayor información sobre Sed y Awk les sugierolean "Sed & AWK" de Dale Dougherty que trata el tema con una mayor profundidad.SedSed No es preciso detallar en demasía el uso de este editor fuera de línea dada que posee mucha similituden su uso al editor de textos vi pero si es bueno mostrar algunas de sus funciones y usos tanto en elprocesamiento desde un script o en la línea de 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 de cualquier tamaño cuando la secuencia de comandos de edición es muycomplicada para hacer el tipeado confortable en ambiente interactivo.Para usar múltiples funciones globales de edición eficientemente en un solo paso.Existen diferentes formas de realizar una edición con el Sed. Puede hacerse desde la línea de comando osimplemente guardándolos en un archivo para poder ser usado luego. Sed lee la entrada línea a línea yrealiza los cambios a estas de acuerdo a lo que se le especifique. Luego de hacer estos cambios dirige susalida hacia stdout, la cual puede 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 de funciones.Para definir una estructura de uso del Sed veremos 2 formas distintas. La primera es la utilizada en lalínea de comandos a través de una canalización y que tendrá esta estructura:primer_comando | sed A continuación veremos la segunda opción para su uso a partir de la línea de comandos:sed -f script_de_edición Con la opción "-f" le decimos a sed que a continuación le pasaremos un archivo donde encontrara lasreglas a aplicar en . Sed tiene mucho que ver con el editor vi en el área de búsqueda yreemplazo donde la estructura es la siguiente:[direccion1 [,direccion2]] descripción_de_la_edición [argumentos]


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html2 de 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 de ser posible los cambios en forma global. La descripción_de_la_edición indica a sed loscambios que tiene que hacer. Para esto, tema que veremos a continuación, pueden usarce variosargumentos. Es posible hacer varios cambios a una línea, sed los realiza de 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 de líneas que se va incrementando de acuerdo al número total de líneas leídas y no a laslíneas del archivo. Por esto si se editan dos archivos juntos de 50 líneas cada uno, la línea número 60 desed seria la línea 10 del segundo archivo. Esto es bueno para tener en cuenta a la hora de realizarediciones a múltiples archivos. Como dijimos antes cada comando de sed puede tener 0, 1, ó 2 direccionesy en caso de tener 0, se aplicara a todas las líneas de ser posible:/shrek/ s/entrada/salida/El comando "s" indica a sed que debe hacer una sustitución de los argumentos que son pasados. Estesimple comando, que puede estar en un archivo guardado para ser pasado al sed, sustituye la primeraaparición de "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 concuerde la primer dirección y se iraaplicando a todas las siguientes hasta que concuerde con la segunda dirección. Las dos direcciones seseparan con coma. Por ejemplo10,30 s/entrada/salida/hará una sustitución de "salida" por "entrada" a partir de 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 concuerden 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 del sed. Por ejemplo si quisiéramos mostrar por lasalida estándar las líneas de 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 concuerden con los argumentos pasados, dado que evitaque se impriman todos los demás. El comando "p" es para imprimir el patrón que encuentra sed. Yaestamos en condiciones de hacer un script rudimentario para imprimir líneas de 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 desde la línea 5 hasta la 15 inclusive de todos losarchivos del directorio /home/shrek/cartas. Existen veces que queremos tener partes de archivos queconcuerden con un patrón determinado, por ejemplo, si quisiéramos mandar todos los comentarios de unarchivo de shell_script a otro y sabemos que las líneas que lo son comienzan con "#" podemos usar uncomando en sed que haga el trabajo por nosotros de 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 decimos a sed que tieneque encontrar la dirección al principio de la línea. Y con la w le indicamos que escriba la salida alarchivo2. A continuación pondremos una tabla de los comando que se usan en sed. Se recomiendan que


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html3 de 7 07/09/2005 8:03practiquen con ellos y que observen los resultados obtenidos.Tabla 4. Comandos del editor SedCaracterabcdilnprswAwkAcciónañade texto al espacio patrónramifica a un rotulo, se emplea de forma similar a ungotoañade textoborra textoinserta textolista el contenido del espacio patrónañade una nueva línea al espacio patrónimprime el espacio patrónlee un archivosustituye patronesescribe a un archivoEL awk es un poderoso lenguaje de programación que en muchas ocasiones nos sacara de apuros a la horade tener que hacer script complejos de tratamiento de texto. El awk al igual que el sed lee las líneascompletas para realizar sus modificaciones. Uno de los aspectos mas útiles en relación al awk es que adiferencia del "sed", awk puede dividir las líneas en campos a través de un separador de campo indicadoen el script o en la línea de comandos. Si no se indica ninguno se tomara como separador de campo unespacio o tabulador. Usando la opción -F de la línea de comandos o la variable FS desde un programahecho en awk se puede especificar un nuevo separador de campo. Por ejemplo si lo que quisiéramos esver los nombres verdaderos 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 de 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 de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html4 de 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 de 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 de un campo a la vez,por ejemplo si queremos mostrar también el directorio home de cada uno de 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 del campo que queramosver ya que tenemos la posibilidad de hacer comparaciones a un campo de la misma manera que laharíamos a una variable en cualquier otro lenguaje. Por ejemplo si quisiéramos ver las líneas del/etc/passwd de 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 del 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 de grupo de usuariosmas bajo, por ejemplo 500 es el número que por defecto pone Red Hat a al grupo del primer usuario y vaincrementándose a medida que incorporamos usuarios. Tendríamos que mostrar todas las líneas que encampo donde esta el GUID, el número 4, del 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 poderoso al awk como lenguaje de programación. Si se quisieran comparacadenas, 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 ordena alfabéticamente la posición 4 el 7 y el 99 son mayores que 500. Los operadores


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html5 de 7 07/09/2005 8:03que awk puede manejar son los siguientes:Tabla 5. Operadores de 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 de 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 cadena "se" pero que no tengan antes la letra "U" y no les siga un espaciola orden 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 cadenas que tenemos que ignorar se preceden antes y después de la cadena 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 de 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 puede ver, pedimos que nos mostrara el nombre completo de l usuario y el nombre de 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 de la "%s" (string) iría una "%d" o "%i" (decimal).Para mas informaciónsobre el printf buscar en las páginas de manual del awk. Existen diferentes variables integradas, a partedel FS, que permiten llevar cuentas de distintos aspectos. Por ejemplo existe la variable NR que llevara lacuenta de los registros que mostremos. Por ejemplo supongamos que necesitamos obtener un listado largode un directorio, pero solo queremos ver los permisos, el nombre del archivo y el número de registro quea pasado por el awk.


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html6 de 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 de los registros que fueron pasandopor el awk. De esta forma se podrá decirle al awk que me muestre de los registros 5 al 10 solamente. scrExisten muchas más variables en el awk que son de 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óndel último campo o esta varia? Para esto esta la variable NF que lleva la cuenta de la cantidad de camposde cada registro. Por ello en lugar de 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 de campos que ese registro tiene. Alagregarle el signo $ se reemplazara con el número del último campo y ese campo el que será mostrado.Esto es así para todas las variables integradas. El awk puede 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 de comenzar la lectura y otra después. Para demarcar el código se utiliza los pares BEGIN-END.Todo lo que aparece después de la palabra BEGIN, pero en el mismo renglón, se realiza antes de quecomience el ciclo. Cualquier cosa que este después de END se realiza después de 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 de Usuario: %s\n",$1}{ printf"UID: %i,GUID: %i\n\n",$3,$4 }END { printf "\n\nTotal de 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 del /etc/passwd mas detalladamente. La forma deejecutarlo es a través del modificado "-f" donde le decimos al awk que a continuación le pasaremos unarchivo con el programa que tiene que usar para procesar el /etc/passwd.


Conceptos de editores fuera de líneahttp://www.ant.org.ar/cursos/curso_intro/x2553.html7 de 7 07/09/2005 8:03[shrek@pantano:~]$ awk -f awk.src /etc/passwdNombre Completo: root Nombre de Usuario: root UID: 0,GUID: 0Nombre Completo: bin Nombre de Usuario: bin UID: 1,GUID: 1Nombre Completo: daemon Nombre de Usuario: daemon UID: 2,GUID: 2Nombre Completo: adm Nombre de Usuario: adm UID: 3,GUID: 4. . .Nombre Completo: PostgreSQL Server Nombre de Usuario: postgres UID: 26,GUID: 26Nombre Completo: Shrek Ogre Nombre de Usuario: shrek UID: 500,GUID: 500Nombre Completo: Fiona Ogre Nombre de Usuario: fiona UID: 501,GUID: 501Total de usuarios: 22Para finalizar diremos que también se podrán hacer operaciones con estas variables, es decir, sumarlasrestarlas, multiplicarlas y dividirlas. Por ejemplo si quisiéramos saber en cuantos bloques de 4 líneaspodríamos formar con un archivo de texto dado podríamos hacer el siguiente programa:BEGIN {FS=":"}{ print $0 }FNR%4==0 { printf"\n" }END { printf "El archivo %s puede entrar en %i bloques enteros\de 4 lineas\n",FILENAME,NR/4}Existen un par de cosas nueva en el. Por ejemplo la variable "FNR" que cuenta el número de líneas. Enesta ocasión le estamos diciendo que si el modulo de FNR es igual a 4 "FNR%4" imprima un salto delinea "{ printf"\n" }". Y al finalizar el ciclo se mostrara el mensaje que nos informara cuantos bloques de4 líneas podremos tener. Para obtener el resultado se efectúa una división del numero total de registros"NR" por el número de 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 puede entrar en 5 bloques enteros de 4 lineasAnterior Inicio SiguienteProgramas de edición de consola Subir Administración básica del sistema


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


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html2 de 11 07/09/2005 8:02Al verlo por primera vez la gente tiene recuerdos de los primeros editores de textos de DOS, toscos y faltos demuchas características, pero una vez que se a aprendido a usarlo se encuentra uno ubicado en el sector de lagente que piensa que en verdad es un programa mágico.No es un programa muy difícil de usar, aunque parezca lo contrario en principio, es solo que el aprendizajeinicial suele costar mucho dado que no se contaran con menues descolgables o clic de mouse para ejecutar unafunción del programa y ni siquiera esta en colores en muchos casos. Para ir viendo algunas características que elVi posee y a modo de que vayan entrando en el sector de gentes antes mencionado, veremos características eneste editor que lo ponen como uno de los más completos. Pero tendremos que ver algunos conceptosfundamentales antes de poder hacer esto. Mientras se este usando el editor se estará en uno de tres posiblesmodos de operación. Estos modos son:1.Modo Comando2.3.Modo de InserciónModo de Ultima LíneaVi puede ser iniciado tanto llamándolo sin argumentos, con lo que se tendrá que establecer un nombre a la horade salir del programa, o con un nombre de archivo, con lo cual si el archivo existe lo abrirá y si no existe locreará. La sintaxis es la siguiente[shrek@pantano:~]$ vi Donde es el nombre del archivo a editar o crear. En caso que no se ponga ningún archivo, sepreguntara el nombre de este cuando queramos guardar o cuando salgamos del programa. Al iniciarse, lo haráen modo comando por lo que no se podrá ingresar texto directamente. Para pasar al modo de inserción, secuenta con un comando "i" (INSERT) o "a" (ADD). En ese momento nos encontraremos con la posibilidad deescribir el contenido del archivo a crear o a editar. Para volver al modo de 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 de la pantalla, de aquí su nombre. Por ejemplo, supongamos que quisiéramos salir del 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 después del comando.Para entender un poco estos conceptos trataremos de ejemplificar un poco el proceso de 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 de la pantalla con la línea como se vea continuación


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html3 de 11 07/09/2005 8:02Lo que mostrara el editor Vi al comenzar es una pantalla donde en la primera columna se verán repetidossímbolos de tilde (~). Esto indica que donde está el primero de estos tildes finaliza el archivo y que luego nohay nada más.En estos momentos estamos en modo de comandos. Para comenzar a trabajar necesitaremos ingresar al modo deinserción para así comenzar a escribir. Esto lo realizamos con el comando i (insert). A la hora de tener queagregar contenido podrá también pasar al modo de inserción a través del comando a (add). La diferencia con elcomando i es que con el comando a se comenzará a escribir después del cursor mientras que con el comando iesto se hará antes del cursor. Como en otro editores de 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 de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html4 de 11 07/09/2005 8:02Para moverse por el texto puede hacerse directamente con las teclas de cursor que nos llevará al lugar dondeestá el problema.Para reemplazar esta palabra lo que hicimos fue posicionarnos con el cursor encima de 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 de este y, enmodo comando, presionar la tecla x. Pero si lo quisiéramos es borrar una palabra de 5 letras, lo que haremos espresionar x 5 veces. Esto no es del todo practico. Si queremos borrar una palabra completa bastará conposicionarnos con el cursor en ella y presionar dw (delete 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 encimade la línea a borrar.


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html5 de 11 07/09/2005 8:02Las modificaciones que le podemos hacer al texto las vimos anteriormente con el comando R y r, pero tambiénpodremos hacer otro tipo de 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 poder mover el cursor de un lado a otro también se cuenta con 4 teclas que pueden 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 derecha. Con la tecla w el cursor se moverá al comienzo de cada palabra y con la tecla b se irá alcomienzo de la palabra anterior.


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html6 de 11 07/09/2005 8:02Con la orden 0 nos podremos mover al comienzo de la línea actual y con el $ al final de la línea actual.En ocasiones el texto que tenemos que editar es por demás de extenso y por ello tendremos que encontrar unmétodo mejor para ir moviéndonos a través de este. Dado que no contamos con una barra de desplazamientoque nos permita poder movernos por el documento tendremos que usar los métodos convencionales de conjuntode comandos. Para ello tenemos que pulsando Ctrl-F se avanzara el cursor una pantalla hacia delante y conCtrl-B lo llevaremos una pantalla hacia atrás. Si lo que queremos es llegar al final del documento tenemos elcomando G y si lo que en realidad se necesitaba es el llegar a una línea determinada tendremos que anteponer alcomando G el número de la línea a la que queremos ir. Por ejemplo si quisiéramos llegar a la línea 25 deldocumento teclearíamos, por supuesto en modo comando, 25G y el cursor parpadeara debajo de la primer letrade esa línea.Muy bien, el trabajo esta hecho y se necesita ahora guardarlo. Para esto tendremos que darle una orden desde 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 de que no hallásemos dado un nombre todavía, es decir 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 después de haber puesto los dos puntos y la letra w. (:w archivo), de esta formaahora cada vez que se ingrese el comando "w" desde el modo última línea, se guardara el documento en elnombre de archivo que indicamos. Si lo que quisiéramos es guardar y salir la forma de indicárselo es a travésdel comando "qw" (:qw) que guardara el archivo y saldrá del programa. Claro esta que si no indicamos unnombre se tendrá que proceder de igual forma que el caso anterior. Podremos hacer lo mismo desde el modocomando presionando dos veces la tecla Z. Para salir sin guardar existen dos formas de acuerdo a lo que se hayahecho. Si no se modifico el documento, bastara que desde el modo ultimo línea se presione la tecla q seguido deEnter.(:q) Si se modifico el documento, entonces deberemos forzar la salida con ayuda del símbolo ! de estaforma (:q!). Lo formidable que tiene este editor de texto en modo consola que otros no tienen, es la posibilidadde 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 del "vi" y arrancarlo con otro nombre de archivo como parámetro. Para estobastara solo con ingresar :e seguido del nombre del 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 de otro archivo, tenemos la orden :r. La forma deemplearlo es (:r archivo) y de esta forma todo el contenido de ese archivo será incluido en el documento queestamos editando actualmente.Existe una utilidad muy interesante del vi que nos permite ejecutar comandos del bash directamente y que losresultados se incorporen al texto que estamos editando. Con la misma orden :r! y seguido el comando que


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html7 de 11 07/09/2005 8:02queremos ejecutar, el comando será ejecutado y el resultado será incluido en el documento.Claro esta que se puede salir del interprete de comandos y ejecutar la orden directamente y una vez finalizadavolver al editor vi. Esto se logra con el símbolo "!". Por ejemplo: :! ls -l . También podremos salirtemporalmente del vi regresar al interprete de comandos. Para esto deberemos indicárselo con el comando:shell. Luego una vez que terminemos de usar el interprete de comandos, podremos poner exit yregresaremos al vi.Una utilidad interesante es la de repetir el último comando que se ejecutó. Para esto tenemos el comando punto"." que desde 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 de los comando que podamosejecutar desde el modo comando.Si quisiéramos buscar una palabra en especial dentro del texto, bastara solo con presionar la el comando "/" loque nos ubicará en la última línea para que ingresemos la cadena de texto a encontrar. Vi comenzara a buscardesde el punto donde se encuentre el cursor hasta el final del texto y cada vez que encuentra una coincidencianos lo indicara poniendo el cursor debajo de esta. Si queremos seguir buscando, bastara con presionar la tecla n(next) para que encuentre la próxima coincidencia.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 puede ser útil usando la diagonal "/" y luego lacadena que estamos buscado. Una vez que la encontramos solo tendremos que presionar "cw" lo que nospermitirá corregir la cadena, reemplazamos la cadena 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 coincidencia. En este punto en lugar de repetir lo anterior solo bastara con presionar el comando "."que repetirá el reemplazo efectuado anteriormente y así presionando "n" y "." sucesivamente podremosreemplazar todas las coincidencias.Claro esta que no es esto muy útil si se quiere reemplazar 100 coincidencias por lo que podremos hacerlo de unasola vez indicando en cuantas líneas se podrá encontrar esta cadena. Para ello se ingresan los ":" dos puntosseguido de la primera de 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 de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html8 de 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 deberá agregar el comando g (global) al final del comando.:1,200s/shrek/SHREK/gAhora bien si se quiere que vi nos pregunte antes de cambiar se deberá agregar el comando "c" al final, que nospregunte si se quiere realizar el cambio antes de cada una de las coincidencias:1,200s/shrek/SHREK/gcPara todo esto deberemos saber cuantas líneas tiene el documento, lo que podemos hacer es indicarle que lohaga desde donde nosotros queramos hasta el final del documento con la ayuda del 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 de 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 de las expresiones regulares también puede incluir el uso de metacaracteres como el "*" para indicarcualquier cantidad de 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 de "undo" el cual por supuesto seactiva con el comando "u". Existen muchísimos temas que se han dejado de ver aquí, por lo que se invita allector a buscar en la documentación del vi que lo guiara a toda la magia que este editor tiene para brindar.El editor emacsEn cuanto a poder se refiere, Emacs gana por varios cuerpos a sus competidores. Este desarrollo totalmenteGNU ha sabido cubrir el terreno de la edición de textos de alto nivel en los sistemas UNIX por muchos años, ysigue siendo un ejemplo del poder real que se puede obtener de este tipo de sistemas. Por supuesto, es un editormás poderoso que el pequeño "vi" y por ende la curva de aprendizaje es mucho mayor. Pero si lo que se quierees tener mas que un simple editor de textos y acercarse a lo que una suite de aplicaciones puede dar, Emacs es ellugar donde se tiene que buscar. Y es así de simple, no solo nos encontraremos con un fabuloso editor de textos,sino que tendremos una completa suite de aplicaciones de uso común, tales como edición, recepción y envió demails, programación en C, edición de HTML y SGML, programación en de macros en lenguaje LISP,corrección ortográfica en varios idiomas y muchas características más. Existe una diferencia en la forma detrabajar con respecto a vi, en lugar de tener que cambiar de modo para poder trabajar con una u otra función,modo comando, modo última línea y demás, emacs responde de acuerdo a la función que la combinación deteclas presionada tenga. Este es el mismo comportamiento que poseen otros editores de textos como elOpenOffice o el Word y por lo tanto se tendrán que saber las combinaciones posibles para poder trabajar


Programas de edición de consolahttp://www.ant.org.ar/cursos/curso_intro/c2120.html9 de 11 07/09/2005 8:02cómodamente.Al arrancar emacs puede hacerlo de dos formas distintas dependiendo en el ambiente donde se este trabajando.Si se esta trabajando en modo texto, emacs arrancara con lo que se denomina entorno de pantalla completa, esdecir se llena toda la pantalla.Si se ejecuta emacs en el entorno X, este lo entenderá y arrancará la versión de Xen lugar de la de texto.Versión X de Emacs: Por supuesto que si se quiere ejecutar la versión de texto en un entorno como X uno puedehacerlo, para ello basta con ejecutar emacs con los modificadores -nw (NO WINDOWS).[shrek@pantano:~]$ emacs -nwAhora bien, si lo ejecutamos con un nombre de archivo como argumento resultara de 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 de menús desplegables al igual que otros programas de X y así será más fácil llegar a lasopciones, y por ello solo trataremos de ver las opciones que se tienen, no todas, para ser usadas en un entorno detexto y luego podrán ser empleadas ya conociendo su funcionamiento en cualquiera de los dos entornos.Para poder usar los menú en modo texto, si presionamos la tecla F10 tendremos bajo la pantalla de edición losnombres de cada uno de los menús y al elegirlos y presionar Enter entraremos en su contenido y en las diversasordenes que tienen. Con F1 entraremos al modo de ayuda donde tendremos una reseña de los comandos deEmcas Ventana de ayuda Para salir de este cuadro bastara con presionar 3 veces la tecla Esc.Al comenzar, emacs esta en lo que se denomina modo "fundamental" que es uno de los modos en los que puedeencontrarse dependiendo del tipo de trabajo que se esta haciendo, determinando esto el comportamiento básicodel programa. Los otros modos sirven para efectuar las distintas tareas antes mencionadas como el leer correo,la edición de HTML y compilación de lenguaje C. La forma de saber en que modo se encuentra, es leyendo lalínea de estado.Para movernos dentro del documento tenemos as facilidades de las teclas de cursor o bien diciéndole haciadonde tiene que ir el curso mediante un comando. Por ejemplo si quisiera ir hacia adelante palabra a palabrateclearíamos Esc-f (f de forward) y nos iremos moviendo de esa manera. A modo inverso teclearemos Esc-bpara ir hacia atrás. Para moverse hacia arriba y hacia abajo podremos hacerlo por medio de Ctrl-v para ir unapantalla adelante 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 deberemos presionar la tecla Esc. A continuación mostraremosuna tabla básica de movimientos para emacs.Tabla 1. Reseña de teclas en emacs para movimientoCaracterCtrl-bCtrl-fEsc-bEsc-fCtrl-pCtrl-nCtrl-aCtrl-eCtrl-vEsc-vAcciónSe mueve atrás un caracterSe mueve adelante un caracterSe mueve atrás una palabraSe mueve adelante una palabraSe mueve a la línea anteriorSe mueve a la línea siguienteSe mueve al inicio de la líneaSe mueve al final de la líneaSe mueve hacia adelante una pantallaSe mueve hacia atrás una pantalla


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


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


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html1 de 6 07/09/2005 8:02Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEscritura de scripts de shellHemos llegado a un punto donde podemos realizar tareas más complejas a partir de los comandosaprendidos y es aquí donde radica el poder del intérprete de comandos bash. Como veremos acontinuación, el intérprete de comandos es un poderoso lenguaje para realizar script que permitan unirvarios comandos para realizar una tarea un poco más compleja (y es el este el poder principal de todoUn*x). El único requisito es tener nociones básicas de programación para poder sacar todo el provechoposible de esta característica del intérprete de comandos. En todo caso, con un poco de práctica y un buensentido de la lógica se podrán hacer también script poderosos para desarrollar las tareas que requerimos.Deberemos saber también que con la ayuda solamente de la conjunción de comandos no podremos hacerscript verdaderamente interesantes. Por esto se incorporan las construcciones de 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 de construcciones seriamejor revisar las páginas de manual del intérprete de comandos bash (man bash).Empezaremos viendo un uso sencillo de la construcción for-in que tiene la siguiente sintaxisfor var in word1 word2docommandosdonePara poder usar esto, podríamos realizar una lista de directorios que querramos nosotros de 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 del par do-done con el uso de llaves ({})for dir in /bin /etc /lib{ls -R $dir}Ya hemos visto anteriormente la idea de argumentos en la utilización de comandos y programas; perodeberemos ver como se realiza la codificación de un script para tomar estos argumentos. Como antesdijimos, los argumentos eran pasados a los programas para que estos lo utilizaran. En la construcción descript veremos lo que se llaman variables posicionales cuyo valor corresponde a la posición delargumento luego del nombre del script. Supongamos que tenemos un script que toma 3 argumentos. Elprimero será el nombre de un directorio, el segundo el nombre de un archivo y el tercero es una palabra abuscar. Este script buscará en todos los archivos del directorio, cuyo nombre incluya el nombre dearchivo que le pasamos como argumento, la palabra que también le estamos pasando. El script se llamara


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html2 de 6 07/09/2005 8:02miscript y estará compuesto del 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 de las variables posicionales. Como sepodrá apreciar el número de la variable, que esta precedido por un signo $, indica la posición delargumento cuando el script es llamado. Solamente se podrán usar 9 variables de este tipo sin tener queemplear un pequeño truco de corrimiento que veremos luego, dado que el 0 representa al nombre delscript mismo. Es decir que en este caso la variable posicional $0 valdrá "miscript". Como se puede ver sehan utilizado canalizaciones para poner más de un comando junto. Al final de 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 de una canalización con la instrucción read ARCHIVO. Es decir,mientras pueda leer el contenido de la variable $ARCHIVO, continuar. Esta variable $ARCHIVO contiene elresultado de lo que arrojo la canalización del listado con la salvedad de 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 de 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 de variable dentro de llaves podemos combinarlas. En este caso forman el nombre del directorio(${1}) y añadimos una / como separador del directorio, y seguido e nombre del archivo donde 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 entender mejor su uso.DIRECTORIO=$1ARCHIVO_BUS=$2PALABRA=$3ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep $PALABRA ${DIRECTRIO}/${ARCHIVO}doneEl número de las variables posicionales que pueden usarse en un script, como antes dijimos, se encuentrarestringido a 10. ¿Qué pasaría si tenemos más de 9 argumentos? Es aquí donde tenemos que usar lainstrucción shift. Esta instrucción mueve los argumentos hacia abajo en la lista de parámetrosposicionales. De esta manera podríamos tener una construcción con esta distribución de variables


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html3 de 6 07/09/2005 8:02DIRECTORIO=$1shiftARCHIVO_BUS=$1De esta manera podríamos asignar el valor de la primer variable posicional a la variable DIRECTORIO yluego el siguiente argumento que habíamos dado se tomara otra vez con el nombre de $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 de posición este seconvertirá en el noveno y se accederá por la variable posicional $9. Existe una forma también de pasarcomo argumento a la instrucción shift el número de posiciones que queremos correr. Por lo cual podemosusarshift 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 desaparecen si no se los asigno a una variableanteriormente. Podremos cambiar usar un nuevo parámetro que podrá contener mas de un parámetropasado al script. Este se denomina $* y contendrá el resto de los argumentos que se pasen al script luegode que se haya realizado un corrimiento determinado. Por ejemplo, si quisiera buscar una frase en lugarde 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 de haber asignado a variables los parámetros posicionales 1 y 2 lasvariables fueron desplazadas dos veces, eliminando los dos primeros argumentos. Luego asignamos losargumentos restantes a la variable PALABRAS. Para que sea tomado como una cadena, 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 de utilidad es el $# que lleva la cuenta de la cantidad de argumentos pasados alscript. De esta forma podríamos realizar un script que identificara si se le están pasando la cantidad depará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 donde el par if-fi marca el finalde 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 puede usarse se encuentran en las man page test (man test). Nosotros usaremos unasimple condición para contar argumentos, pero pueden ser usadas distintas condiciones como nombres dearchivos, permisos, si son o no directorios, etc. Para saber si la cantidad de argumentos que se nos a


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html4 de 6 07/09/2005 8:02pasado en el script es correcta, utilizaremos una opción aritmética que compare la cantidad de argumentospasados ($#) con un número que nosotros estipularemos, en este caso 3. Pueden usarse diferentesopciones con el formato arg1 OP arg2, donde OP será alguno de 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 de 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 de que la cantidad de argumentos sea menor, será informar de esto y de la forma de usarel script.DIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*if [ $# -ge 3 ]thenls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneelseecho "Número de argumentos insuficientes"echo "Use: $0 "fiOtra utilidad para del if, es la posibilidad de realizar lo que se denomina if anidados. De esta formapodríamos tener varias capas de 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ú de 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 demás de complicado seguir el esquema armado ysería demasiado código para lo que se trata de realizar. Es aquí es donde se necesita la estructuracase-esac. Como se podrá ver, al igual que en el if-fi aquí el inverso de case (esac) cierra laconstrucción. Veamos un ejemplo de una construcción con case


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html5 de 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 de 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 guarde enuna variable que se llamara ELECCION. Esto también será útil para el uso de otras construcciones ya que elread no es propiedad exclusiva de 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 de las mostradas debajo se ejecutedeterminado programa. (case $ELECCION in). La elección se debe terminar con un paréntesis ")" paraque se cierre las posibilidades. Podríamos poner más posibilidades para cada elección; lo único que hayque recordar es cerrar con un paréntesis. El punto y coma nos marca el final de un bloque, por lo quepodríamos agregar otro comando y se cerrara con punto y coma doble al último. El asterisco del final nosindica que se hará en caso de que no coincida lo ingresado con ninguna de las posibilidades. Un ejemplo,sería que nuestra construcción reconozca mayúsculas y minúsculas y además ejecute más de 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 de posibilidadesecho "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 deberáprimero dar los permisos pertinentes. Un par de cosas a tener en cuenta para la construcción de script sonla forma en que se quiere que ejecute éste y la captura de teclas. Al ejecutarse un script de shell, se estarácreando un bash hijo que lo ejecutará. Dado que las variables y funciones pertenecen al intérprete decomandos que las creó, al finalizar el script el proceso hijo del bash morirá y con el todos los seteos devariables y funciones. Por esto, si se quisiera que los cambios de las variables y las funciones que sedefinieron permanezcan para ser utilizables una vez que el script haya terminado, se deberá comenzar aejecutar el script con un punto "." seguido por un espacio antes del nombre de éste. De esta forma elproceso del intérprete de comando actual sera quien ejecute el script con lo que se conservaran todas lasvariables y funciones.


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html6 de 6 07/09/2005 8:02[shrek@pantano:~]$ . miscriptUn script puede dejar cosas sueltas antes de terminar si éste es finalizado bruscamente enviándole unaseñal de finalización [1] ya sea con la combinación de teclas Ctrl-C o con un kill -15. Para esto sedeberán capturar estas señales para poder hacer una limpieza, ya se de variables o archivos, antes definalizar. La forma de hacerlo es con el uso del comando trap; de 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 de limpieza. Para demostraresto haremos un pequeño script que servirá de menú. La llamada al script del menú podría estar en elarchivo .profile del usuario o en el .bash_profile. Si lo que no queremos es que el usuario salga delscript con usando la combinación de 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 de 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 del script se utiliza el comando trap que al captura la señal 2 (SIGINT) queproduce el Ctrl-C relanza el script. Al final del script se ve que se llama nuevamente dado que alejecutarse el comando de cada elección se quiere que el menú siga funcionando. Practicar con estasconstrucciones será de gran ayuda para entender el proceso de construcción de 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 de script, remitirse a las páginas de manual del intérprete decomandos, en este caso man bash.Notas[1]Para saber el nombre y número de señales teclear kill -lAnterior Inicio SiguienteTareas y procesos Subir Programas de edición de consola


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html1 de 5 07/09/2005 8:01Curso de 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 determinar 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. Además del nombre que el proceso recibe, que es el nombre del programa que esta corriendo,recibe también un número identificativo llamado PID (process ID, o ID de proceso). Si ejecutamos elcomando ps veremos los procesos que están ejecutando en este momento con nuestro UID, es decir queestamos corriendo nosotros mismos[shrek@pantano:~]$ psPID TTY STAT TIME COMMAND172 p0 S 0:00 -bash184 p0 R 0:00 ps[shrek@pantano:~]$Se puede ver que están corriendo dos procesos, el bash (que es el intérprete de comandos) y el proceso psque es el que estamos usando en este momento en una terminal determinada. Como se puede ver el primernúmero es el PID que el sistema le asigna al proceso y en la columna COMMAND se puede ver elnombre del 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 puede apreciar, están ambos procesosejecutándose al mismo tiempo, pero solo uno de ellos esta activo, el comando ps. Nos podemos darcuenta de esto ya que en la columna STAT aparece en la línea del bash la letra S de SLEEP, ya que enese momento el intérprete de comandos esta esperando a que el proceso ps termine. Y es aquí donde 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 del sistema cuando se utilizan los controles de tareas dadoque no todos los intérpretes de comandos soportan este tipo de control.Primer y segundo planoCualquier proceso puede 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 de parte nuestra, es decir queno nos podemos comunicar con él a través, por ejemplo, del teclado. La utilidad de enviar un programa asegundo plano esta dada por el hecho de que existen tareas que no requieren de nuestro control para quese ejecuten. Por ejemplo, bajar algún archivo de Internet, compilar el kernel u otro programa. Estas sontareas que pueden ser lanzadas tranquilamente en segundo plano. Para lanzar un proceso en segundoplano, tendremos que poner a continuación del comando el símbolo &. Para ejemplificar esto usaremos elcomando find y dejaremos que busque todos los archivos que existen en el disco[shrek@pantano:~]$ find / -name "*"Esto nos mostraría una lista bastante larga de archivos por pantalla y nos quedaríamos sin el control delintérprete de comandos mientras esta ejecutándose. Podríamos usar el dispositivo null, que si recuerdanera como un agujero negro donde todo lo que se enviaba a él desaparecía, para redirigir la salida y que nosaliera por pantalla


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html2 de 5 07/09/2005 8:01[shrek@pantano~]$ find / -name "*" > /dev/nullIgualmente así no contaríamos con la atención de nuestro interprete de comandos hasta que terminara eltrabajo el comando find. La forma de tener la atención del shell inmediatamente después de lanzar elproceso find es enviándolo en segundo plano[shrek@pantano:~]$ find / -name "*" > /dev/null &[1] 192[shrek@pantano:~]$Como se aprecia, regresó de inmediato al shell, pero antes envió un mensaje a la terminal. El [1]representa a un número de trabajo que el shell asigna a cada uno de los procesos que pasa a segundoplano. Inmediatamente después vemos el número de PID del proceso. Podremos identificar al proceso porcualquiera de los dos números mientras se encuentre en segundo plano. Para ver cuantos trabajos estánejecutándose en este momento podemos usar el comando jobs.[shrek@pantano:~]$ jobs[1]+ Running find / -name "*" >/dev/null &[shrek@pantano:~]$Podremos eliminar un proceso que se esta ejecutando con la ayuda del comando kill seguido bien sea delnúmero de trabajo precedido de un signo % o del número de PID. De esta forma estamos matando alproceso pero puede darse el caso de que este tarde en desaparecer 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 del sistema evitando así el mal funcionamiento del 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 de que serequiera contestar afirmativamente a las peticiones de un programa pudiéremos mediante una redireccióncontestarle con un y a cada pregunta. Si lo ejecutáramos sin redirigir la salida a /dev/null, nos llenaría lapantalla con una columna infinita de y. Por esto lo enviaremos a segundo plano redirigiendo la salida yluego lo mataremos con el comando kill.[shrek@pantano:~]$ yes > /dev/null &[1] 201[shrek@pantano:~]$ kill %1[shrek@pantano:~]$ jobs[1]+ Terminated yes > /dev/null &[shrek@pantano:~]$Como podrán ver, en el momento en que se mando el comando kill, no hubo ningún mensaje. Solodespués de ejecutar el comando jobs se nos informo que el trabajo número 1 había finalizado(TERMINATED). Podemos también hacer lo mismo empleando el número de PID con lo queobtendremos idénticos resultados.[shrek@pantano:~]$ kill 201Como parar y relanzar tareasLos procesos pueden ser suspendidos temporalmente hasta que nosotros dispongamos, para asírelanzarlos y que continúen ejecutando donde se habían quedado. Esto es de gran utilidad. Supongamos


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html3 de 5 07/09/2005 8:01que se esta trabajando con el editor de texto Vi y no queremos trabajar en otra consola, solo tenemos queenviar al programa Vi a dormir un rato y tendremos el intérprete de comandos a nuestra disposición. En lamayoría de los programas, se envía una señal de terminación utilizando las teclas Ctrl-C, para poderenviar un trabajo a dormir utilizaremos otra combinación de 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 donde estabahasta que sea despertado. Para ejemplificar esto, enviaremos al comando yes a segundo plano y luego lopondremos a dormir.[shrek@pantano:~]$ yes >/dev/null &[shrek@pantano:~]$ yes >/dev/nullAhora presionamos Ctrl-Z[shrek@pantano:~]$ yes >/dev/null &[shrek@pantano:~]$ yes >/dev/null[2]+ Stopped yes >/dev/null[shrek@pantano:~]$ jobs[1]- Running yes >/dev/null &[2]+ Stopped yes >/dev/nullComo pueden 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 despertarlo a cualquiera de los dos podemos usar el signo "%"seguido del número delproceso o bien el comando fg.[shrek@pantano:~]$ %1yes >/dev/null &Ahora presionamos Ctrl-Z[shrek@pantano:~]$ fg %1yes >/dev/nullPodremos enviar también un comando que esta durmiendo a que ejecute en segundo plano a través delcomando bg[shrek@pantano:~]$ jobs[1]- Stopped yes >/dev/null[shrek@pantano:~]$ bg %1[1]+ yes >/dev/null &[shrek@pantano:~]$ jobs[1]+ Running yes >/dev/null &Cabe decir que tanto fg como bg son comandos internos del intérprete de comando. Esto es así porque esel mismo intérprete quien hace el control de tareas. Puede darse el caso de que existan intérpretes decomandos que no tengan soporte para control de tareas.Programas de seguimiento (ps y top)Los sistemas GNU/Linux cuentan varios programas para efectuar el seguimiento de los procesos que se


Tareas y procesoshttp://www.ant.org.ar/cursos/curso_intro/x1845.html4 de 5 07/09/2005 8:01están ejecutando en el sistema. Entre los mas usados en la interfase de texto están los programas ps y top.psSin ninguna opción dará la lista de procesos que están corriendo desde la terminal donde 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 identifica la consola donde se estaejecutando el proceso. En este caso es una terminal local. La columna TIME nos indica la cantidad detiempo total que el proceso se ha estado ejecutando. Como se puede ver el tiempo es de 2 segundos.Aunque este horas el sistema encendido, el bash pasa su mayor parte del tiempo esperando que se leenvie algún comando para ejecutar, mientras tanto esta esperando dormido. Puede verse en la columnaSTAT en que estado se encuentra el programa. Por ejemplo, que vemos que el bash en el momento deejecutarse el comando ps esta dormido (S) y que el proceso ps esta activo (R). Si añadimos la opción ltendremos un listado largo del 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 de esta información esta la columna del UID que identifica el dueño del proceso. El PID delproceso y también el PPID que es el PID del proceso padre. Podemos apreciar que el padre del comandops l es el -bash. NI viene de nice y es un nivel que se otorga a un proceso para requerir cierto privilegio.En este caso tiene uno muy bajo por ende un proceso que tenga un valor mayor tendrá más tiempo deprocesador para trabajar. SIZE es el tamaño que tiene el proceso. RSS es la tamaño del proceso que seencuentra residente en la memoria. WCHAN es el nombre de la función del kernel donde el proceso estadurmiendo. Esta expresado en forma hexadecimal.Otra forma en la que podemos ver el padre de cada proceso es a través del 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 puede ver que el comando ps f depende del -bash.topAhora bien, el comando ps nos muestra una radiografía de 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 de los procesos que se están ejecutando en el sistema, ordenados por defectosegún el porcentaje la CPU que estén usando. Al ejecutarlo se podrá ver otra información adicional, comola cantidad de usuarios que están en el sistema, cuantos procesos están corriendo y de estos cuantos estasactivos, cuantos durmiendo, cuantos en proceso de terminar (ZOMBIE) y cuantos finalizados. Ademá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 de 5 07/09/2005 8:01podrá obtener la misma información de la memoria swap.Lo más importante es que esta información de ira actualizando automáticamente cada tanto tiempo, pordefecto 5 segundos, y que podremos ir alterando lo que va mostrando. Por ejemplo podemos hacer queordene los procesos de acuerdo a la cantidad de memoria que esta usando con solo presionar la tecla M. Uordenarlos de 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 de PID.El listado que nos mostrará contendrá el número de PID, el usuario que lo está ejecutando, la prioridaddel proceso (PRI), el valor nice (NI), el tamaño del proceso (SIZE), el tamaño total del proceso junto conlos datos que maneja (RSS), el tamaño usado por el proceso en la memoria (SHARE), el estado delproceso(STAT), el tamaño de las librerías del proceso (LIB), el porcentaje de CPU ( %CPU) y dememoria (%MEM) así como también el tiempo de ejecución (TIME) y el nombre del proceso(COMMAND).Anterior Inicio SiguienteEnlaces de archivos Subir Escritura de scripts de shell


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html1 de 6 07/09/2005 8:01Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEscritura de scripts de shellHemos llegado a un punto donde podemos realizar tareas más complejas a partir de los comandosaprendidos y es aquí donde radica el poder del intérprete de comandos bash. Como veremos acontinuación, el intérprete de comandos es un poderoso lenguaje para realizar script que permitan unirvarios comandos para realizar una tarea un poco más compleja (y es el este el poder principal de todoUn*x). El único requisito es tener nociones básicas de programación para poder sacar todo el provechoposible de esta característica del intérprete de comandos. En todo caso, con un poco de práctica y un buensentido de la lógica se podrán hacer también script poderosos para desarrollar las tareas que requerimos.Deberemos saber también que con la ayuda solamente de la conjunción de comandos no podremos hacerscript verdaderamente interesantes. Por esto se incorporan las construcciones de 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 de construcciones seriamejor revisar las páginas de manual del intérprete de comandos bash (man bash).Empezaremos viendo un uso sencillo de la construcción for-in que tiene la siguiente sintaxisfor var in word1 word2docommandosdonePara poder usar esto, podríamos realizar una lista de directorios que querramos nosotros de 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 del par do-done con el uso de llaves ({})for dir in /bin /etc /lib{ls -R $dir}Ya hemos visto anteriormente la idea de argumentos en la utilización de comandos y programas; perodeberemos ver como se realiza la codificación de un script para tomar estos argumentos. Como antesdijimos, los argumentos eran pasados a los programas para que estos lo utilizaran. En la construcción descript veremos lo que se llaman variables posicionales cuyo valor corresponde a la posición delargumento luego del nombre del script. Supongamos que tenemos un script que toma 3 argumentos. Elprimero será el nombre de un directorio, el segundo el nombre de un archivo y el tercero es una palabra abuscar. Este script buscará en todos los archivos del directorio, cuyo nombre incluya el nombre dearchivo que le pasamos como argumento, la palabra que también le estamos pasando. El script se llamara


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html2 de 6 07/09/2005 8:01miscript y estará compuesto del 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 de las variables posicionales. Como sepodrá apreciar el número de la variable, que esta precedido por un signo $, indica la posición delargumento cuando el script es llamado. Solamente se podrán usar 9 variables de este tipo sin tener queemplear un pequeño truco de corrimiento que veremos luego, dado que el 0 representa al nombre delscript mismo. Es decir que en este caso la variable posicional $0 valdrá "miscript". Como se puede ver sehan utilizado canalizaciones para poner más de un comando junto. Al final de 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 de una canalización con la instrucción read ARCHIVO. Es decir,mientras pueda leer el contenido de la variable $ARCHIVO, continuar. Esta variable $ARCHIVO contiene elresultado de lo que arrojo la canalización del listado con la salvedad de 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 de 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 de variable dentro de llaves podemos combinarlas. En este caso forman el nombre del directorio(${1}) y añadimos una / como separador del directorio, y seguido e nombre del archivo donde 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 entender mejor su uso.DIRECTORIO=$1ARCHIVO_BUS=$2PALABRA=$3ls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep $PALABRA ${DIRECTRIO}/${ARCHIVO}doneEl número de las variables posicionales que pueden usarse en un script, como antes dijimos, se encuentrarestringido a 10. ¿Qué pasaría si tenemos más de 9 argumentos? Es aquí donde tenemos que usar lainstrucción shift. Esta instrucción mueve los argumentos hacia abajo en la lista de parámetrosposicionales. De esta manera podríamos tener una construcción con esta distribución de variables


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html3 de 6 07/09/2005 8:01DIRECTORIO=$1shiftARCHIVO_BUS=$1De esta manera podríamos asignar el valor de la primer variable posicional a la variable DIRECTORIO yluego el siguiente argumento que habíamos dado se tomara otra vez con el nombre de $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 de posición este seconvertirá en el noveno y se accederá por la variable posicional $9. Existe una forma también de pasarcomo argumento a la instrucción shift el número de posiciones que queremos correr. Por lo cual podemosusarshift 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 desaparecen si no se los asigno a una variableanteriormente. Podremos cambiar usar un nuevo parámetro que podrá contener mas de un parámetropasado al script. Este se denomina $* y contendrá el resto de los argumentos que se pasen al script luegode que se haya realizado un corrimiento determinado. Por ejemplo, si quisiera buscar una frase en lugarde 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 de haber asignado a variables los parámetros posicionales 1 y 2 lasvariables fueron desplazadas dos veces, eliminando los dos primeros argumentos. Luego asignamos losargumentos restantes a la variable PALABRAS. Para que sea tomado como una cadena, 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 de utilidad es el $# que lleva la cuenta de la cantidad de argumentos pasados alscript. De esta forma podríamos realizar un script que identificara si se le están pasando la cantidad depará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 donde el par if-fi marca el finalde 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 puede usarse se encuentran en las man page test (man test). Nosotros usaremos unasimple condición para contar argumentos, pero pueden ser usadas distintas condiciones como nombres dearchivos, permisos, si son o no directorios, etc. Para saber si la cantidad de argumentos que se nos a


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html4 de 6 07/09/2005 8:01pasado en el script es correcta, utilizaremos una opción aritmética que compare la cantidad de argumentospasados ($#) con un número que nosotros estipularemos, en este caso 3. Pueden usarse diferentesopciones con el formato arg1 OP arg2, donde OP será alguno de 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 de 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 de que la cantidad de argumentos sea menor, será informar de esto y de la forma de usarel script.DIRECTORIO=$1ARCHIVO_BUS=$2shift 2PALABRAS=$*if [ $# -ge 3 ]thenls $DIRECTORIO | grep $ARCHIVO_BUS | while read ARCHIVOdogrep "$PALABRAS" ${DIRECTRIO}/${ARCHIVO}doneelseecho "Número de argumentos insuficientes"echo "Use: $0 "fiOtra utilidad para del if, es la posibilidad de realizar lo que se denomina if anidados. De esta formapodríamos tener varias capas de 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ú de 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 demás de complicado seguir el esquema armado ysería demasiado código para lo que se trata de realizar. Es aquí es donde se necesita la estructuracase-esac. Como se podrá ver, al igual que en el if-fi aquí el inverso de case (esac) cierra laconstrucción. Veamos un ejemplo de una construcción con case


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html5 de 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 de 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 guarde enuna variable que se llamara ELECCION. Esto también será útil para el uso de otras construcciones ya que elread no es propiedad exclusiva de 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 de las mostradas debajo se ejecutedeterminado programa. (case $ELECCION in). La elección se debe terminar con un paréntesis ")" paraque se cierre las posibilidades. Podríamos poner más posibilidades para cada elección; lo único que hayque recordar es cerrar con un paréntesis. El punto y coma nos marca el final de un bloque, por lo quepodríamos agregar otro comando y se cerrara con punto y coma doble al último. El asterisco del final nosindica que se hará en caso de que no coincida lo ingresado con ninguna de las posibilidades. Un ejemplo,sería que nuestra construcción reconozca mayúsculas y minúsculas y además ejecute más de 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 de posibilidadesecho "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 deberáprimero dar los permisos pertinentes. Un par de cosas a tener en cuenta para la construcción de script sonla forma en que se quiere que ejecute éste y la captura de teclas. Al ejecutarse un script de shell, se estarácreando un bash hijo que lo ejecutará. Dado que las variables y funciones pertenecen al intérprete decomandos que las creó, al finalizar el script el proceso hijo del bash morirá y con el todos los seteos devariables y funciones. Por esto, si se quisiera que los cambios de las variables y las funciones que sedefinieron permanezcan para ser utilizables una vez que el script haya terminado, se deberá comenzar aejecutar el script con un punto "." seguido por un espacio antes del nombre de éste. De esta forma elproceso del intérprete de comando actual sera quien ejecute el script con lo que se conservaran todas lasvariables y funciones.


Escritura de scripts de shellhttp://www.ant.org.ar/cursos/curso_intro/x1983.html6 de 6 07/09/2005 8:01[shrek@pantano:~]$ . miscriptUn script puede dejar cosas sueltas antes de terminar si éste es finalizado bruscamente enviándole unaseñal de finalización [1] ya sea con la combinación de teclas Ctrl-C o con un kill -15. Para esto sedeberán capturar estas señales para poder hacer una limpieza, ya se de variables o archivos, antes definalizar. La forma de hacerlo es con el uso del comando trap; de 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 de limpieza. Para demostraresto haremos un pequeño script que servirá de menú. La llamada al script del menú podría estar en elarchivo .profile del usuario o en el .bash_profile. Si lo que no queremos es que el usuario salga delscript con usando la combinación de 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 de 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 del script se utiliza el comando trap que al captura la señal 2 (SIGINT) queproduce el Ctrl-C relanza el script. Al final del script se ve que se llama nuevamente dado que alejecutarse el comando de cada elección se quiere que el menú siga funcionando. Practicar con estasconstrucciones será de gran ayuda para entender el proceso de construcción de 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 de script, remitirse a las páginas de manual del intérprete decomandos, en este caso man bash.Notas[1]Para saber el nombre y número de señales teclear kill -lAnterior Inicio SiguienteTareas y procesos Subir Programas de edición de consola


Enlaces de archivoshttp://www.ant.org.ar/cursos/curso_intro/x1811.html1 de 2 07/09/2005 8:00Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguienteEnlaces de archivosEn ocasiones es necesario dar a un mismo archivo distintos nombres o, para mantener la integridad de 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. Recordemos que los archivos se representan por el número de inodo en el disco y es el únicoidentificador que el sistema tiene del archivo. Si se quiere ver el inodo que representa un archivo bastasolo con agregar el modificador -i al comando ls. Existen dos tipos de 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 del 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 de 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 puede verse dado que el primernúmero del listado, 14438, es el número del inodo donde comienza el contenido del 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 de sus nombres. De esta formatambién podemos decir 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 de inodo. Se puede hacer una comparación con los "Accesos directos" de Windows95. Laorden ln -s genera un enlace simbólico.


Enlaces de archivoshttp://www.ant.org.ar/cursos/curso_intro/x1811.html2 de 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 deenlaces y los duros como que ya no están apuntando al mismo inodo. Además los bit de permisosaparecen todos encendidos dado que no son usados. Los permisos que se utilizan son los del archivo alque se esta apuntando. Si nos fijamos bien, en la primera posición de los permisos veremos una letra l.Esto nos indica que es un enlace simbólico. Otra particularidad es que se pueden crear enlaces simbólicosde archivos que no existen; pero lo mismo no es cierto para los enlaces duros. Con los enlaces simbólicosse puede 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 de archivos, sus dueñosSubirTareas y procesosy grupos


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html1 de 9 07/09/2005 8:00Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Como en UNIX también en GNU/Linux SiguientePermisos de archivos, sus dueños y gruposPara entender mejor el concepto de permisos se tendrá que tener en cuenta que cada usuario puedepertenecer 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 del sistema puede agregar al usuario a otros grupos.Estos grupos son necesarios para poder establecer una política de acceso más organizada dado que encualquier momento se podría dar a un archivo el acceso a personas de un grupo determinado. 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 de inodos, tema que abarcaremos en mayor detalle más adelante. Entre los datos que seguardan en esta tabla se encuentran la fecha de creación del archivo, modificación del archivo y la fechaen que se cambio el inodo. Pero además contiene los datos en los que se centra toda la seguridad en Un*x.Estos sonEl dueño de archivoEl grupo del archivoLos bits de modo o también llamados permisos de archivoEn este tramo nos centraremos en primer medida en entender los permisos y en establecer la forma en quepueden 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 determinado usuario y/o grupo. Estopermite, por ejemplo, que si existe un archivo creado por un usuario en particular, este será propiedad delusuario y también tendrá el grupo del usuario. Se permite que los archivos sean compartidos entreusuarios y grupos de usuarios. Por ejemplo si shrek quisiera puede prohibir los accesos a un archivodeterminado que le pertenezca a todos los usuarios que no pertenezcan a su grupo de usuarios.Los permisos están divididos en tres tipos: lectura, escritura y ejecución (rwx). Estos permisos puedenestar fijados para tres clases de usuario: el propietario del archivo, el grupo al que pertenece el archivo ypara todo el resto de los usuarios. El permiso de lectura permite a un usuario leer el contenido del archivoo en el caso de que el archivo sea un directorio, la posibilidad de ver el contenido del mismo. El permisode escritura permite al usuario modificar y escribir el archivo. En el caso de un directorio permite la crearnuevos archivos en él o borrar archivos existentes. El permiso de 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 poder interpretar los permisos de archivos nada mejor que utilizar el comando ls -la. Con estovemos un listado largo de un directorio.[shrek@pantano:~]$ ls -la


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html2 de 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 puede 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 de 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 delprimer símbolo de acuerdo al tipo de archivo.Tabla 1. Tipos de archivoContenidoSignificado- Archivo comúndDirectoriocDispositivo de caracteres (tty o impresora)bDispositivo de Bloque (usualmente disco rígido oCD-ROM)


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


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html4 de 9 07/09/2005 8:00de tres símbolos representa los permisos para todo el resto de los usuarios (other) en este caso es solo delectura.El número que sigue (1) representa el número de nombres que el archivo posee. Esto indica la cantidad deenlaces que existen a este archivo y lo veremos más adelante cuando tratemos el tema de enlacessimbólicos y duros.A continuación esta el nombre del dueño del archivo y del grupo al cual pertenece el archivo.El "337" representa el tamaño del archivo expresado en bytes.Lo siguiente es la fecha y hora de modificación del archivo e inmediatamente después esta el nombre delmismo.DependenciasLos permisos de los archivos también dependen del directorio donde estén guardados. En un ejemplocomún podríamos dar el caso de un archivo que posea todos los permisos, tanto para el usuario, grupo yotros pero no se podrá acceder a él si no se cuenta con permisos de lectura y ejecución en el directorioque los contiene.Esto funciona en el caso que se quiera restringir el acceso a un directorio determinado y a todos losarchivos que este contiene. En lugar de 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 del archivo. Es decir que no solo el último directorio, elcual lo contiene, tiene que tener los permisos necesarios, sino que todos los directorios que lo precedentambién.Cambiando permisosEn el el capítulo de nombre Empezando con GNU/Linux vimos la utilización del comando chmod, peroen este entraremos a explicar en mejor forma su utilización. Además trataremos el tema de otro forma derepresentar los permisos posibles, la representación octal, que es extremadamente útil a la hora deestablecer 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 demás (o). Existen símbolos para agregar (+) quitar (-) o dejarinvariantes los permisos (=). Además tendrán que usarse los símbolos característicos para cada tipo depermiso. Para el permiso de lectura (r), para el permiso de escritura (w) y para el permiso de ejecución(x). Solo el dueño del archivo puede cambiarlo con él; excepción del root que también lo puede hacer.Para ejemplificar un cambio de 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 de lectura. Algunos ejemplosmás[shrek@pantano:~]$ chmod u+r lista


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html5 de 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 derepresentación octal. El comando chmod permite establecer los permisos de un archivo por medio de unnúmero octal. Comúnmente nosotros usamos para contar una representación decimal (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 de 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 de identificación de usuario al ejecutarse SUID [a]Establece el número de identificación de grupo al ejecutarse SGID[a]Establece el bit adhesivo[a]Lectura por parte del dueñoEscritura por parte del dueñoEjecución por parte del dueñoLectura por parte del grupoEscritura por parte del grupoEjecución por parte del grupo


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html6 de 9 07/09/2005 8:00Número octalPermiso0004Lectura por parte de los otros0002Escritura por parte de los otros0001Ejecución por parte de los otrosNotas:a. Se verá al finalizar el temaPara dar un ejemplo de 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 del dueño+ 0200 Escritura por parte del dueño+ 0100 Ejecución por parte del dueño+ 0040 Lectura por parte del grupo+ 0010 Ejecución por parte del grupo-----------------------------------------0750 ResultadoDe esta forma si lo que quisiéramos es cambiar los permisos de 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 de lectura y escritura y que el grupo y otros solo tengan permisos de 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 de esta forma los permisos de archivos.Cambiando grupos y usuariosLo que nos queda por ver es el caso en que se quisiera cambiar el usuario o el grupo del archivo. Para estose usa el comando chown y su sintaxis es similar a la de chmod pero con la variante que se dan losnombres del usuario y del grupo. Si quisiéramos cambiar el nombre de usuario del 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 de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html7 de 9 07/09/2005 8:00Si se quisiera cambiar también el nombre del grupo, se tendría que poner un punto entre el nombre deusuario 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 delante del nombre del grupo, omitiendo poner el nombre del algún usuario. Osi se quiere, se podrá poner el nombre de 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 de gran utilidad para la seguridad de nuestrosistema.umaskEsta es la abreviatura de user file-creation mode mask o máscara del modo de creación de archivos deusuario y es un número octal de cuatro dígitos que se utilizan para fijar los permisos de los archivosrecién creados. Esto puede ocasionar confusión pero en realidad es una utilidad que permite el uso delsistema por múltiples usuarios sin que peligre la privacidad. En la mayoría de los Un*x los archivos queson creados por el usuario, poseen permisos 0666 que dan permiso de lectura y escritura a cualquierusuario. En relación con los programas, estos se crean con 0777 donde cualquier usuario puede leer,escribir y ejecutar el programa. Normalmente el administrador del sistema aplica una máscara al usuarioen el archivo .bash_profile y esta es usada para la creación de archivos haciendo una operación simple"AND" bit por bit con el complemento del valor umask bit por bit. La función umask esta integrada alintérprete de comandos. Para ejemplificar el proceso tomemos un archivo creado por el usuario.0666 Modo predeterminado de creación de archivos- 0022 Umask-------------------------------------------------------0644 Modo resultanteEl modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo solo delectura.0666 Modo predeterminado de creación de archivos- 0077 Umask-------------------------------------------------------0600 Modo resultante


Permisos de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html8 de 9 07/09/2005 8:00El modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo no tienenningún permiso. Una forma de darse cuenta de la forma en que funciona el umask es tener en cuenta queel valor 2 inhabilita el permiso de escritura mientras que el valor 7 inhabilita los permisos de lecturaescritura y ejecución. A continuación daremos una tabla con los valores comúnmente usados para elumask.Tabla 5. Valores usuales de la variable umaskUmask Accesos del usuario Accesos del grupo Accesos de 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 de privilegios. Unejemplo de esto es el uso del programa passwd para cambiar la contraseña. Sería un error darle a losusuarios los privilegios necesarios para que puedan ejecutar esta clase de programas ya que el usuariopodría cambiarse de grupo o crear una cuenta con privilegios de root. Para que esto no suceda, seimplemento en Un*x, un sistema por el cual un programa que cuente con SUID o SGID puede serejecutado con los privilegios del dueño y/o grupo del programa. Para que quede más claro se tiene quesaber que cada usuario esta identificado por el sistema con un número de identificación tanto para él,como para el grupo. Este número se denomina UID (user ID) para el caso de los usuarios y GID para elcaso de los grupos. Por ejemplo, un usuario podría tener un UID 100 y un GID 500. En el caso del root,este tiene UID 0 y GID 0. Más adelante sé verá esto en mayor detalle. Lo que se efectúa con el sistemaSUID es una adquisición temporal de un UID o GID distinto al propio cuando se está ejecutando elprograma. Cuando un programa cambia de UID se denomina SUID (set-UID: se establece UID) y cuandocambia de GID se denomina SGID (set-GID: se establece GID) Un programa puede 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 donde tendría que estar una x, que asigna permisos de 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 de archivos, sus dueños y gruposhttp://www.ant.org.ar/cursos/curso_intro/x1439.html9 de 9 07/09/2005 8:00Bit adhesivoEn los antiguos sistemas Un*x, la memoria era algo esencial y escasa dado su costo. Para poderaprovechar más esta, se empleo una tecnología que mantenía parte de programas esenciales en el áreaswap de 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 del programa que se guardaban en memoria también podían ser usadas por otros.Anterior Inicio SiguienteComo en UNIX también enSubirEnlaces de archivosGNU/Linux


Como en UNIX también en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c1369.html1 de 3 07/09/2005 7:59Curso de 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 de la interfase de comandos bash y comenzamos viendoel poder que posee Un*x para el manejo de 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 de 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 de particularidades 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 de los 3 archivos que el sistema abría en memoria al iniciarse, estos eran el stdin, elstdout y stderr. El intérprete de comandos configurará estos archivos para que apunten al teclado, en elcaso del stdin, y al monitor, en el caso del stdout y stderr. Existen numerosos comandos de 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 de 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 del 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 devuelta a la salida estándar.La entrada se termina presionando Ctrl-D que es el carácter de EOT (end of text) fin de texto.Canalización y redirecciónExiste la posibilidad de desviar la salida o la entrada a un comando para poder realizar funcionescomplejas u obtener los datos que saldrían por la pantalla directamente a otro archivo. Lo primero sedenomina canalización y lo segundo redirección. El símbolo que se utiliza para efectuar la canalización esel denominado pipe o símbolode canalización (|). Este símbolo permite que se pase la salida deunacomando o programa a la entrada de otro. Un ejemplo clásico de lautilización de este símbolo escuando se requiere listar un directorioque ocupa más de una pantalla. Se podrá entonces utilizar elcomandoclásico para listar ls y enviar su salida a otroprograma que lo muestre de a una página de pantallapor vez, por ejemplo el more.


Como en UNIX también en GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/c1369.html2 de 3 07/09/2005 7:59[shrek@pantano:~]$ ls -l | moreEsto servirá para realizar lo antedicho ya que la salida del comando ls será canalizada para que sea laentrada del comando more y este se encargara de mostrar los datos por pantalla. Lo que se esta utilizandoes la canalización de la entrada estándar y la salida estándar. La salida estándar del comando ls esredireccionada hacia la entrada estándar del 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 de o hacia un archivo. Por ejemplo, supongamos que necesitamos guardar en unarchivo llamado listado la salida del comando ls.[shrek@pantano:~]$ ls > listadoCon esto le indicamos al comando ls que redireccione la salida estándar hacia un archivo de nombrelistado. En caso de que el archivo exista, será reemplazado con la nueva información. Para agregarcontenido a un archivo, inmediatamente después del contenido que posea, se tendrá que poner el símbolode redirección dos veces[shrek@pantano:~]$ ls >> listadoEl uso de < es para redireccionar el contenido de un archivo hacia la entrada estándar de un comando oprograma. Supongamos que necesitamos ordenar el contenido de un archivo en orden alfabético, lo quelograremos con el comando sort. Podremos entonces redireccionar el contenido de un archivo a la entradadel comando sort para que éste lo ordene.[shrek@pantano:~]$ sort < nombresDe esta manera saldría por pantalla la lista de nombres ordenadas alfabéticamente. También se podráredireccionar el error estándar para que no salga en pantalla. Si quisieramos realizar un listado de undirectorio y, en caso de 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 (stderr) o como también se denomina,descriptor de 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 podemos hacerlo de esta manera[shrek@pantano:~]$ ls /bin 1>/tmp/salida 2>/tmp/error.lsLa redirección y la canalización pueden 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 del listado queanteriormente guardamos del directorio /bin. Para esto podríamos usar el comando head directamentepara que obtenga las 10 primeras líneas del archivo listado, pero para entender el uso combinado de lacanalización y la redirección lo haremos de otra forma


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


Características adicionaleshttp://www.ant.org.ar/cursos/curso_intro/x1341.html1 de 1 07/09/2005 7:59Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Tutorial del Shell SiguienteCaracterísticas adicionalesDepuración de ScriptEs posible depurar un script si se escribe set -x antes de ejecutarlo. De esta forma cada comando semostrará en pantalla antes de ejecutarse con sus correspondientes argumentos. Se desactiva ingresandoset +x. Si lo que se quiere es mandar la salida a un archivo se tendrá que tener en cuenta que la salida delset -x no vá hacia la salida estándar (stdout) sino hacia el error estándar stderr. 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 depurar el script myscript y mandar la salida a un archivo, se tendrá queingresar lo siguient luego del set -x.[shrek@pantano:~]$ myscript 2>archivo_salidaEsto indica que se debe mandar el descriptor de archivo 2 (stderr) al archivo archivo_salida.Creación de 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 del modificador -p del comando mkdirde 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 de 2 07/09/2005 7:59Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Tutorial del Shell SiguienteFuncionesUno de las mayores utilidades que posee una shell es el permitirnos crear funciones para realizar tareasrepetitivas fácilmente. El funcionamiento de estas funciones es parecido al que posee cualquier lenguajede programación, en el cual se agrupan conjunto de comandos y se los llama por un nombre. El formatode las funciones es el siguientenombre_funcion(){primero_a_realizarsegundo_a_realizar}Estas funciones pueden ser definidas en cualquier lugar, incluso en la misma línea de comandos. Lo quehabrá que recordar que hechas de esta forma se borraran de la memoria una vez que se a salido del shell.Una forma de hacer que queden disponibles en forma permanente es incorporarla en el archivo de iniciodel 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 de una funciónsimple[shrek@pantano:~]$ que_tal()> {> echo "Hola $1, como estás?"> }[shrek@pantano:~]$ que_tal shrekHola shrek, como estás?Aquí podemos ver dos factores en la creación de funciones. Primero se nombra a la función, seguida deun par de paréntesis "( )" con lo cual se indica al shell que lo que viene a continuación deberá ser tomadocomo una función. Inmediatamente después de los paréntesis se abrirá una llave "{", con lo que se indicaque comienzan los comandos de la función. Al terminar se cierra la llave "}".El otro punto es el reemplazo que efectúa el shell de las variables. Aquí la variable se asigna directamentey es un número que vendrá después del signo "$". Este número indica el número del argumento de 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 de este tipo que serán tomadas de acuerdo a su valor numérico como el número delargumento.[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, donde los límites entre las funciones y los procedimientos esta dada deacuerdo a la función que se esta cumpliendo, en el caso de las funciones del shell varía de acuerdo dondese encuentren guardadas. Una función está en memoria y puede ser cargada por el shell a partir de un


Funcioneshttp://www.ant.org.ar/cursos/curso_intro/x1299.html2 de 2 07/09/2005 7:59archivo como el .bash_profile que es leído por él al iniciarse. En caso de que se creará un archivoaparte con permisos de ejecución, esta función pasaría a ser un script pero se necesitaría que se llame a lafunción desde dentro del mismo script. Volveremos a esto al tratar el tema de script de shell pero daremosun ejemplo para que se entienda mejor. Supongamos que creamos un archivo llamado saludo.sh y ledamos permisos de 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 puede crear un archivoA continuación se ingresa la funciónAhora la función es llamada desde dentro del script. Al finalizar se presionan las teclas Ctrl-DLe damos los permisos de 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 del Shell Subir Características adicionales


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


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html2 de 12 07/09/2005 7:57Esto el intérprete de 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 puede observarse también nos es útil si se sabe como comienza el archivo pero no como termina.Lo que nuestro intérprete de comando esta haciendo es sustituir el "*" con cualquier combinación posibleque coincida con los archivos que tenemos en el directorio donde 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 de ejecutar el comando ls solo[shrek@pantano:~]$ ls *hola heart texto.form manti.formEste proceso es llamado "expansión de comodines" y lo efectúa el intérprete de comandos. Esto es muyimportante ya que los comandos como el ls nunca ven el "*" en su lista de parámetros, es el intérprete decomandos quien expande los comodines para incluir todos los nombres de archivos que se adapten. Esdecir que luego que se da la orden[shrek@pantano:~]$ ls h*es expandida para obtener[shrek@pantano:~]$ ls hola heartOtro comodín es el "?". Este carácter comodín solo expande un único carácter. Luego ls ? mostrarátodos los nombres de archivos con un carácter de longitud. En cambio la orden 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 de un archivo al mismo tiempo y en conjunto conlos comandos ya aprendidos, podrán ser de gran utilidad para realizar nuestras tareas de forma más fácil.Ejecución de comandos uno detrás del otroSupongamos que se necesita ejecutar un comando e inmediatamente despué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 de hacerlo y es utilizando el carácter ";" inmediatamente después delprimer 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 del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html3 de 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 de empezar a ver características de alias y script para no tenercomplicaciones y confusiones. En GNU/Linux existen tres tipos de 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 de hoy. Entonces teclearíamos el comando[shrek@pantano:~]$ date +%d15Ahora bien, cada vez que quisiéramos ver el día de hoy tendríamos que ingresar este comandonuevamente. Si le asignamos a una variable de 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 del signo "=" y luego lo que queramos ponerle dentro. En cambio para mostrarla tendremos queanteponer el signo de dólar "$". Esto seria igual a poner[shrek@pantano:~]$ DIAHOY=15Lo único que el shell hace es expandir el comando para que solo se guarde el resultado de éste.El otro tipo de 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 cadena 'date +%d' a la variable DIAHOY.El ultimo tipo de comillas son las dobles, este tiene casi la misma funcionalidad que las comillas simplespero con la salvedad de que lo que se incluya dentro de estas estará sujeto a expansión por parte del shell,


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html4 de 12 07/09/2005 7:57siendo los caracteres con significado especial los tics inversos (`) el signo de 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 de alias nos da la capacidad de poder referenciar a un comando con otro nombre. Ladiferencia sustancial que podemos encontrar con los script de shell, es que los script para ejecutarseprimero lanzaran a un subshell como un proceso hijo del shell que esta ejecutando en ese momento. Encambio un alias funciona en el proceso del shell siendo ejecutado en forma interna con la subsiguientevelocidad que esto otorga al no tener que crearse un nuevo proceso o de buscar en el disco rígido. Porsupuesto que pueden usarse un conjunto de comandos para crear otro más complejos. Con los scripts sepuede realizar lo mismo y lo veremos más adelante, 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 de 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 del sistema se perderán. Para que cada vez que entremos al sistema los alias sigan funcionandodeberemos agregarlos a un archivo, que aparece en forma oculta en el directorio de cada usuario,denominado .bashrc o en caso de 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 de comandos.Completado de líneaSe puede hacer que el shell complete la línea de 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 determinado.Supongamos que dentro del 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 de un directorio quecomenzará con "shr", el shell anunciaría con una señal audible, "bip", que existen más de unacoincidencia, y al presionar nuevamente la tecla Tab mostraría una lista de todos los directorios queposeen "shr" al comienzo. Si dicha lista excediera la catidad de lineas a motrar en la consola, nospreguntará primero si es que queremos ver la cantidad "X" de posibilidades. Como ejemplo de estopodríamos citar el autocompletado de comandos. Si se oprime la tecla Tab sin haber introducido nadaantes, el shell nos mostraría primero que existe un número "X" de posibilidades y al presionarnuevamente nos mostraría un listado de todos los comandos que son alcanzables.


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html5 de 12 07/09/2005 7:57PATHMuchas veces ocurre que al tratar de introducir un comando nos damos cuenta de que no tiene efecto ynos da un error en él intérprete de comandos. Tal vez se haya ingresado mal, pero tal vez no se posea eldirectorio que contiene dicho comando en la "ruta de búsqueda" o PATH. EL PATH es una variable deentorno que contiene un grupo de directorios predefinidos 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 de que el directorio no figure en el PATH, no podráejecutar el programa hasta que le demos la ruta exacta en donde se encuentre.Esta variable de entorno llamada PATH, es inicializada con un valor predeterminado en el archivo/etc/profile que es sólo modificable por el "root" y funciona como una referencia para todos losusuarios. Además cada usuario posee en un archivo oculto denominado .bash_profile o .profile,donde se le asigna además del PATH inicial, cualquier otra modificación exclusiva para él. Tambiénpuede modificarse totalmente esta variable.Volviendo a la especificación de la ruta completa, anteriormente dijimos que los archivos sereferenciaban de esta forma, pero los programas también podrán referenciarse de la misma forma. Si ledamos la ruta completa podremos ejecutar el programa, si es que se cuenta con los permisos adecuados,independientemente del valor de 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 de ejecutar el programa, y es haciendo referencia a su ruta relativa, que es la ruta conrelación al directorio donde estamos parados actualmente. Para esto debemos saber que la forma dereferenciar 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 de 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 de 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, deberá 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 donde 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 de la ruta, primero seejecutara el que se encontré en el /bin en lugar que el que esté en el directorio actual. Igualmente parapoder 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 donde estamos paradosactualmente[shrek@pantano:~]$ ./holaHola amigos !!!


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html6 de 12 07/09/2005 7:57No busquen el programa "hola" en su sistema, no lo he distribuido aún ya que esta en desarrollo :^).Variables de entornoIndependientemente de shell que estemos usando, se contará con lo que se denomina "variable deentorno" o "variable de ambiente". Estas variables son como las que encontraremos en cualquier lenguajede programación. Esto es tan esta forma que también podría ser accedidas desde los scripts que creemos.Para distinguir de los comando, la variables se ponen en letra mayúscula. Cuando uno entra al sistema,existen ciertas de estas variables ya están asignadas. Para ver estas variables y su contenidos se cuentacon el comando "set", y para ver el contenido de una de estas variables solo tenemos que usar el comando"echo" seguido del nombre de la variable con el signo "$" antepuesto. Ej. echo $LOGNAME, con loobtendremos el nombre del usuario.Siguiendo con la ruta de 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 de la ruta es el directorio actual que habíamos indicado en el puntoanterior sobre "ruta de búsqueda". Como se puede observar cada uno de 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 de caracteres queaparecen justo antes de lo que ingresamos en la interfase de comandos. El entorno bash dispone de 4prompt's, "PS1", "PS2", "PS3" y "PS4". Estas variables tienen un porqué. La denominació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 defecto es ">". Se puede 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" de la interfase de comandos. El "PS4" aparece cuando seefectúa el seguimiento de un comando. El prompt y la mayoría de las variables de entorno pueden sermodificados con el comando "export", con el podremos modificar el contenido de las variables.[shrek@pantano:~]$ export SECONDS=0[shrek@pantano:~]$ echo $SECONDS0La variable $SECONDS cuenta la cantidad de segundos desde que entramos al sistema; con este mandatola seteamos a "0". Existen variables que no pueden ser cambiadas, como UID, EUID o PPID, (se muestraun detalle de las variables más útiles en la tabla 2). Volviendo al prompt, este puede ser cambiado paraque, por ejemplo, nos muestre el nombre de usuario seguido de una "@" y el nombre del sistema, con laayuda de caracteres especiales.[shrek@pantano:~]$ export PS1='[\u@\h:\w]\$ 'Se muestra en la tabla los caracteres especiales del prompt.Tabla 1. Caracteres especiales de la variable PROMPTCaracterQue representa\t La Hora actual en formato HH:MM:SS.


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html7 de 12 07/09/2005 7:57CaracterQue representa\d La fecha en formato "Día de la Semana Mes Fecha", como por ejemplo, "Sun Feb4".\n Salto de línea.\s Nombre delshell.\w El directorio actual.\W El nombre base del directorio actual. Por ejemplo, del directorio /home/shrek, elnombre base es shrek.\u Nombre de usuario.\h Nombre de máquina.\# Número de comando del comando actual.\! Posición en el historial de comandos del 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 de caracteres no imprimibles, como los caracteres deescape o las secuencias de control. Estos caracteres pueden ser usados para definircolores.\] Fin de la secuencia de caracteres no imprimibles.Tabla 2. Variables más comunesVariablePPIDPWDOLDPWDREPLYUIDEUIDBASHBASH_VERSIONSHLVLRANDOMDefiniciónNúmero de identificación del proceso padre de la interfaz decomandos.Directorio de trabajo actual, establecido por el comando cd.Anterior directorio de trabajo, establecido por el comando cd.Cuando se usa el comando read de bash sin argumentos,estavariable recoge el contenido de la línea leída.Número identificativo (ID) del usuario, establecida en el arranquedel shell.ID eficaz de usuario, inicializada en el arranque del shell.Nombre completo, incluida la ruta, del archivo que se ejecutó paralanzar el shell.Número de versión de Bash.Nivel del shell. Incrementa su valor en una unidad cada vez que selanza una nueva interfaz de comandos.Cada vez que se invoca a esta variable se obtiene un número enteroaleatorio. La secuencia de números aleatorios proporcionadas porRAMDOM se puede inicializar simplemente asignándole un nuevo


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


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


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html10 de 12 07/09/2005 7:57de esta clase de caracterespara que el shell los expanda a fin de que coincidan con cualquiercarácter, en elcaso de "?", y con cualquier cadena de caracteres, en elcaso de "*". La utilización de estos ya la definimosanteriormente ysolo nos queda mostrar su utilización en función de las expresiones regulares.La expresiones regulares son una serie de reglas que de cumplirsese expanden para poder ser utilizadas.Para esto se utiliza también otrotipo de metacaracteres "[]" donde los caracteres que se introduzcandentroserá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 puede ser utilizado la serie de números del 1 al 5 encerrados dentro de loscorchetes ([]).[shrek@pantano:~]$ vi carta.*Con esto editaríamos todos los archivos desde carta.1 a carta.5.[shrek@pantano:~]$ vi carta.[12345]Con esta expresión, el intérprete de comandos expandirá a cadauno de los caracteres encerrados entre loscorchetes para que tome ellugar que corresponde en el nombre del 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 de un solo paso, pero si podremos usar la expresión regular de esta forma[shrek@pantano:~]$ vi carta.[125]Con esto, y dado que el intérprete de comandos solo interpreta deun carácter por vez, se editaransolamente los archivos carta.1, carta.2y carta.5. Los números serán tomados dentro de los corchetescomocaracteres individuales.La utilidad de las expresiones regulares es muy grande, y existencasos que es solamente con su utilizaciónque puede realizarse untrabajo. Las expresiones regulares podrán ser usadas, junto con otroscomandos,también para identificar grupos de 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ábuscardentro de un texto una cadena 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 devolverá las líneas que posean la palabra carta, aun aquellas que tengan entre sus letras ungrupo de 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 de 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 del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html11 de 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 dedocumentos 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 de entorno) que en las expresiónesregulares, colocado al final, indica que esta tendrá que ser buscada al final de 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 de lasdos funciones del símbolo $[shrek@pantano:~]$ VAR=^[Cc]arta[shrek@pantano:~]$ grep $VAR$ documentosExplicamos el uso de expresiones regulares solo con el comando grep, pero existe un sin número deoportunidades para usarlas con los comandos. Se verá más adelante que pueden ser muy utilizadas en eleditor Vi y nos harán muy fácil el trabajo con éste.Interpretación de comandosHemos podido apreciar la utilización de una serie de comandosjunto con aplicaciones comunes de estos,pero es de necesidad poderentender el método por el cual estos comandos son interpretados por elshell,para tener un poco más de entendimientos a la hora de elaborarnuestros propios script y programas. Loprimero que se nos puede ocurrir averiguar, es el orden en que son interpretados los comandos.Partiremos de la base que se pueden ejecutar más de 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 denomina "tokens". Cada token esun comando, junto con sus argumentos, a ejecutar. Una vez que el shell puede saber cuantos tokens hay,determina su sintaxis. Si existe un error en este punto, ninguno del os tokens se ejecutará y el shell nosadvertirá de un posible error de sintaxis. Si la sintaxis es correcta, comienza la interpretación de loscomandos. A partir de aquí el shell trata de ver si alguno de los tokens es en realidad una función del


Tutorial del Shellhttp://www.ant.org.ar/cursos/curso_intro/c920.html12 de 12 07/09/2005 7:57propio shell. Si existe, esta será expandida antes de ser ejecutada. Luego, se expanden los alias. Si algunode los tokens es en realidad un alias, ya sea creado por el usuario o no, este se expandirá antes deejecutarse. Si el alias llama a otro alias, este también se expandirá antes de 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 de archivo o comandoque concuerde de acuerdo a las reglas antedichas. Ahora, aunque está la mayor parte del comandoevaluado, el shell tendrá todavía que ver si el primero de los tokens corresponde a un comando del shell oa un programa externo. Si esto ocurriera, se tendrá que consultar la ruta de búsqueda. Luego evaluará siexiste algún tipo de redirección o canalización, tem que veremos más en detalle en el próximo capítulo,por el cual la entrada o salida de un comando este redirigida a otro lugar. Una vez que se ha podidoanalizar todo el comando o conjunto de comandos a su mínima expresión, el shell efectuará una copia desi mismo, a través de la llamada a sistema fork() para poder ejecutar el script. Esta copia es un hijo delshell y que depende del shell que lo originó. Luego de esto, el shell hijo, usará una llamada a sistemadenominada exec() para poder ejecutar el binario correspondiente. Aunque quien lo ejecuta es en realidadel shell hijo, hay que recordar que el padre todavía se encuentra en memoria esperando la finalización delproceso hijo.Puede darse el caso que se desee que quien ejecute el comando o script sea el propio shell y no un shellhijo. Esto se logra con la utilización del comando "." punto. Al anteponer un punto al comando o script ydejando un espacio entre ellos, el shell entenderá que es el mismo quién debe interpretar este comando oscript.[shrek@pantano:~]$ . myscriptEste script será interpretado sin que se genere un sub-shell hijo.Esta es una simplificación de la ejecución de un comando tipo, no quiere ser una explicación total de loque puede ocurrir dado la grancantidad de variantes que intervienen, pero servirá como base deentendimiento de lo que el shell realiza una vez que se ha presionado la tecla Enter.Anterior Inicio SiguienteSistema de archivos Funciones


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


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


Sistema de archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html3 de 4 07/09/2005 7:57muchos programas. En lugar de que cada programa contenga una copia propia de 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 de ficheros virtual". Los ficheros que contiene realmente residen en memoria, no enun disco. Hacen referencia a varios procesos que corren en el sistema, y le permiten obtenerinformación acerca de que programas y procesos están corriendo en un momento dado.Muchos programas tienen la necesidad de 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 de subdirectorios que contienen a su vezalgunos de los más importantes y útiles programas y ficheros de configuración usados en el sistema.Los directorios descritos arriba son esenciales para que el sistema esté operativo, pero la mayoríade 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 de los paquetes grandes deprogramas y sus ficheros de configuración./usr/X11R6/usr/bin/usr/etccontiene el sistema XWindow si se ha instalado. El sistema X Window es un entorno gráficogrande y potente el cual proporciona un gran número de utilidades 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 de XWindow, ficheros de configuración y de soporte. Esto será cubierto con másdetalle en la Sección 9.es el almacén real de programas del sistema Un*x. Contiene la mayoría de los programas queno se encuentran en otras partes como /bin.Como /etc contiene diferentes ficheros de configuración y programas del sistema, /usr/etccontiene incluso más que el anterior. En general, los ficheros que se encuentran aquí no sonesenciales para el sistema, a diferencia de los que se encuentran en /etc, que si lo son./usr/include/usr/libcontiene los ficheros de cabacera para el compilador de C. Estos ficheros (la mayoría de loscuales terminan en .h, de "header") declaran estructuras de datos, subrutinas y constantesusados en la escritura de programas en C. Los ficheros que se encuentran en/usr/include/sys son generalmente usados en la programación de en Un*x a nivel desistema. Si se está familiarizado con el lenguaje de programación C, aquí encontrarán losficheros de cabecera , como por ejemplo stdio.h, el cual declara funciones como printf().


Sistema de archivoshttp://www.ant.org.ar/cursos/curso_intro/filesystem.html4 de 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 de la librería. Además,varios programas guardan ficheros de 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 de su sistema esto es, el directorio /usr/local difiere bastanteentre sistemas Un*x. Aquí encontrará programas grandes como TeX (sistema de formateo dedocumentos) y Emacs (gran y potente editor), si se los instala.Este directorio contiene las páginas de manual. Hay dos subdirectorios para cada página"sección" de las páginas (use la orden man man para más detalles). Por ejemplo,/usr/man/man1 contiene los fuentes (es decir, los originales por formatear) de las páginas demanual de la sección 1, y /usr/man/cat1 las páginas ya formateadas de la sección 1.contiene el código fuente (programas por compilar) de varios programas de su sistema. Elmás importante es /usr/src/linux, el cual contiene el código fuente del Núcleo de Linux.contiene directorios que a menudo cambian su tamaño o tienden a crecer. Muchos de estosdirectorios solían residir en /usr, pero desde que estamos tratando de dejarlo relativamenteinalterable, los directorios que cambian a menudo han sido llevados a /var. Algunos de estosdirectorios son:/var/logcontiene varios ficheros de interés para el administrador del sistema, específicamentehistóricos del sistema, los cuales recogen errores o problemas con el sistema. Otros ficherosguardan las sesiones de 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 de llegada será almacenado en /var/spool/mail hasta que lolea o lo borre. Artículos nuevos de las "news" tanto salientes como entrantes puedenencontrarse en /var/spool/news, etc.En algunas distribuciones como la RedHat, es donde se guardaran los emails que nos llegueny mandemos.Anterior Inicio SiguienteConceptos básicos de entornoSubirTutorial del Shellshell


Conceptos básicos de entorno shellhttp://www.ant.org.ar/cursos/curso_intro/shellbasics.html1 de 2 07/09/2005 7:57Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteConceptos básicos de entorno shellAl hablar de un SO Un*x nos ponemos a pensar en un entorno de texto. ¿Pero que hay entre lo que vemosy lo que es realmente? ¿Qué es este entorno de texto que se habla tanto? Este entorno se maneja a travésde lo que se denomina un interprete de comandos. De la misma forma que DOS posee su interprete decomandos, el COMMAND.COM. Un*x y GNU/Linux posee los suyos. A través de estos podremosefectuar una comunicación entre nosotros y el sistema dándole órdenes a través de comando que elinterprete de comandos descifrara para que el sistema haga lo que le pedimos.Anteriormente ubicamos al interprete de comandos dentro de las capas con la que nos podremos encontraren un sistema. El interprete de comandos bash es solo una interfase de las muchas que posee Un*x oGNU/Linux. Dentro de este tipo de interpretes de comando al que nos estamos refiriendo, existen muchasotras variantes.Tan pronto se entra al sistema, se iniciara él interprete de comando que tengamos configurando, en lamayoría de los casos será el bash y es en el que nos ocuparemos nosotros. En este momento, podremosteclear las ordenes que necesitemos o que tengamos ganas de 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 del interprete de comandos, [shrek@pantano:~]$ indicándonos que esta listo pararecibir ordenes.Tratemos de decirle al sistema que realice algo interesante[shrek@pantano:~]$ make loveBueno, si estamos muy enamorados de nuestro sistema puede resultar lógico que nos sintamos así, pero elsistema no pensara lo mismo de nosotros y nos devolverá un mensaje de error indicándonos que no puedeejecutar 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 órdenes? ¿Qué esta ocurriendo cuando tecleamos make love? El programa makerealmente existe en el sistema pero no puede interpretar lo que le estamos pidiendo que realice.La primera palabra de la orden, make, es el nombre de la orden a ejecutar. El resto de la orden es tomadocomo argumento de la orden. Veamos un ejemplo


Conceptos básicos de entorno shellhttp://www.ant.org.ar/cursos/curso_intro/shellbasics.html2 de 2 07/09/2005 7:57[shrek@pantano:~]$ cal 10 2004 octubre de 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 de la orden es cal y los argumentos que le hemos dado son 10 y2004.Cuando una orden se ingresa al sistema, el intérprete de comando efectúa varias operaciones. Primero quetodo, busca el nombre de la orden y comprueba si es una orden interna, propiedad del mismo intérprete decomandos y que este sabe ejecutar por si mismo, existen numerosas de estas órdenes. El interprete decomandos también comprueba si la orden es un "alias" o nombre sustituto de otra orden. Si no cumple conninguno de estos requisitos, él interprete de comandos busca el programa y lo ejecuta pasándole losargumentos especificados en la línea de comandos. En el ejemplo del make que es un comando que sirvepara poder compilar, el intérprete de comandos ve que no es una orden 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 puede encontrar un objetivo de ese nombre, falla enviando un mensaje de errory devolviendo el control al intérprete de comandos.Para que el intérprete de comandos pueda encontrar los programas a ejecutar, se basa en lo que sedenomina path. Este path o ruta es cargado como una variable de entorno, la carga el mismo interprete enmemoria desde un archivo de configuración central llamado /etc/profile y agregándole además laspropias configuraciones de path que cada usuario posea en su directorio personal, en el caso del interpretebash, será ~/.bash_profile, además de ~/.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 rutadefinida[shrek@pantano:~]$ besame-bash: besame: command not found[shrek@pantano:~]$Si no se encuentra el programa con el nombre de la orden que indicamos (en este caso besame), semostrará un mensaje de error que deberá explicar bien ese problema.Anterior Inicio SiguienteConsolas Subir Sistema de archivos


Consolashttp://www.ant.org.ar/cursos/curso_intro/consolas.html1 de 1 07/09/2005 7:56Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteConsolasLa consola del sistema es el monitor y teclado conectado directamente al sistema. Como GNU/Linux esun sistema operativo multiusuario, puede tener otros terminales conectados a puertos serie del sistema,pero estos serán consolas físicas y no el tipo que trataremos ahora. GNU/Linux, como otras versiones deUn*x, proporciona acceso a lo que se denominan consolas virtuales o VC's, las cuales permitirán tenermás de una sesión de trabajo abierta desde consola a la vez. Para poder ver esto una vez que estemosdentro del 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 poder 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 desde Alt-F1 a Alt-F6. Enalgunas distribuciones se podrán contar con 8 o más activas al inicio, pero esto se puede aumentar hasta12 VC's, una por cada tecla de función.El uso de estas consolas es extremadamente potente ya que nos permite tener varias aplicacionescorriendo al mismo tiempo y hasta, lo que veremos en la sección de Xwindow, podremos tener corriendo elentorno gráfico en una consola y otra aplicación en otra VC. El uso de las VC's, por defecto 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 deSubirConceptos básicos de entornocuentasshell


Entrando al sistema y creación de cuentashttp://www.ant.org.ar/cursos/curso_intro/entrando.html1 de 3 07/09/2005 7:56Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Empezando con GNU/Linux SiguienteEntrando al sistema y creación de cuentasPara empezar a ver las características de que GNU/Linux posee debemos dar algunas pautas generalessobre los usuarios que se ampliarán mas adelante.Pondremos algunas pautas. Nuestro sistema tendrá un nombre que lo identificará en la red y este será"pantano". Y aparecerá ante cualquier comando que pongamos como indicativo del sistema con la forma[usuario@pantano:/directorio_actual]{símbolo}donde directorio_actual será el directorio donde estamos parados actualmente. Tendremos que tenerdos usuarios mínimos de ejemplo para poder interactuar, que ya bautizaremos shrek y fiona. Dosindicativos que nos dirán con que tipo de usuario estamos trabajando en el lugar de {símbolo},se usará él"#" para el usuario root y "$" para el usuario común. Por supuesto que esto puede configurarse de maneradistinta. Esta es solo una muestra de posibilidades 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 del 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 denomina súperusuario. Para esta sección basta decir que el root es quien tiene poder absoluto sobre el sistema. Es quienpuede 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 deberá usar esta cuenta lo menos posible, solo en el caso de tenerque utilizar algún comando privilegiado o para mantenimiento del sistema. Sí, cuanto más tiempo estemostrabajando como root, tendremos más posibilidades de 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 de usuario a través de la palabra login:Bienvenido. Este sistema es Linux 2.4.26pantano login:Poniendo nuestro nombre de 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 alrededores de su sistema, por ello se deberá teclearcuidadosamente


Entrando al sistema y creación de cuentashttp://www.ant.org.ar/cursos/curso_intro/entrando.html2 de 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 deberá intentar de nuevo. Una vez introducido correctamente el nombre de usuario y el passworduno es libre de empezar a trabajar con el sistema. Lo primero que se deberá hacer al entrar al sistemarecién instalado, si no es que se hizo durante la instalación, es crearnos una cuenta de usuario común. Paraesto podemos utilizar dos script que vienen por defecto en la mayoría de las distribuciones adduser yuseradd. Ambos realizan el mismo trabajo pero se han nombrado diferente en distintas distribuciones. Enmuchos casos uno es un enlace del otro. Para la creación de una cuenta, se deberá entrar al sistema comorootpantano login: rootpassword:Last login: Sun Mar 26 19:23:32 on tty1Luego introduciremos uno de estos comandos seguido por el nombre de usuario que se quiera agregar alsistema.[root@pantano:~]# adduser shrek[root@pantano:~]#Este comando creará una entrada en el archivo /etc/password donde la clave estará en blanco, yaveremos por qué, y un subdirectorio en el directorio /home o /usr/home según se haya instalado. Laentrada de 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 deAdministración Básica de Sistemas, las diferentes posibilidades que se pueden llegar a tener para lagestión de usuarios. Con el comando passwd seguido del nombre del 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 de claves para los usuarios es que muchasveces estos no la cambian durante mucho tiempo. Este es un gran problema de seguridad, por lo que


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


Empezando con GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/empezando.html1 de 1 07/09/2005 7:55Curso de 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 temade GNU/Linux pero ninguno de ellos puede cubrir en total profundidad todo los temas que este SO tienepara dar. Este parte del curso no tratara de ahondar en detalles 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 dehacer es ganar conceptos fundamentales para el mejor funcionamiento de esta clase de SO por lo queempezaremos con UNIX. Para ello pasaremos a ver los interpretes de comando y algunos comandossimples pero solo a modo de que se tenga una pequeña noción para comenzar a trabajar. Luego seprofundizará en cada uno de estos puntos con mayor detalle. Expondremos el concepto de árbol dedirectorios y su distribución así como también una lista del comando más utilizados.Conceptos básicos de Un*xComo antes vimos, GNU/Linux posee un 95 % de compatibilidad con el SO UNIX, es por esto veremosque la mayoría de las posibilidades de este se aplican. UNIX posee las características de cualquier sistemaoperativo multiusuario y multitarea. Esto significa que puede existir más de una persona usando lacomputadora a la vez, cada uno de ellos ejecutando un programa diferente. Esta sensación la da el SOjunto con las características del procesador ya que nos asigna tiempos para cada usuario y cada programahaciéndonos pensar que contamos con un procesador solo para nosotros.El sistema de archivos es un árbol multinivel que permite a los usuarios crear sus propios subdirectorios.Tanto los programas escritos por los usuarios, como los del sistema normalmente se ejecutan por mediode un intérprete de comandos, que en Un*x o en GNU/Linux es un proceso de usuario como cualquierotro, al cual se le denomina shell. Aunque el shell es un programa, lo podemos observar como tres entesdistintos: como programa, como proceso y como ambiente de trabajo.El shell que se tomaba anteriormente como estándar era el Bourne Shell llamado simplemente sh escritopor el desarrollador Steven Bourne. Pero el paso del tiempo a dado lugar a un nuevo estándar, el bash, yse usará de aquí en adelante para referirse al shell dado su gran aceptación en todos los sistemas UNIX yderivados.Anterior Inicio SiguienteProceso post-instalación yEntrando al sistema y creación deresolución de problemascuentas


Proceso post-instalación y resolución de problemashttp://www.ant.org.ar/cursos/curso_intro/x592.html1 de 1 07/09/2005 7:55Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Instalación SiguienteProceso post-instalación y resolución deproblemasMuy bien, el SO esta instalado y se nos pide reiniciar la computadora. Al cabo de un instante lacomputadora se reinicia y ... nada. El sistema no arranca y para peor el anterior SO que teníamosinstalado tampoco. Puede presentarse este y otros problemas una ves terminada la instalación y muchasveces se debe a que el LILO no esta bien instalado. Tal vez algún aspecto de la configuración de este no sehizo bien o se cuenta con un SO anterior que no permite que se cambie el MBR de disco rígido. El LILOpuede ser interpretado como un virus por programas como el Norton Antivirus de Windows. Esto se debea que este programa monitoriza cualquier cambio en el MBR y al momento de que lo encuentra, rescribeel MBR sobreescribiendo el LILO.Si se cuelga el sistema durante el arranque se debe tomar nota de todos los mensajes que aparezcan paraasí determinar 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 deconfiguración por software y muchas veces originan conflictos con otros dispositivos. En este punto y condestornillador en mano se tendrá que proceder a ir quitando cada uno de los dispositivos y comenzar conuna máquina casi pelada. Solo placa de video, memoria, rígido, teclado y monitor. Solo lo esencial paraque el sistema arranque. Si no arranca, el problema esta en alguno de los cinco puntos anteriores, lo quees muy difícil ya que la mayoría de los problemas se debe a tarjetas mal configuradas. Si arranco, sedeberá ir instalando placa por placa hasta encontrar cual es la que trae problemas.Los errores que pueden generarse por la RAM del sistema se debe en su mayoría a falta de esta (aunquese han visto casos de kernel panic originados por memorias descompuestas o que se encuentranmezcladas en los slots). En muchos casos si no se cuenta con la cantidad de RAM necesaria, el sistema senegara a encender ya que GNU/Linux necesita suficiente RAM para crear un sistema de archivos raíz enmemoria.Los discos SCSI son muy buenos pero ocasionan grandes problemas. Hay que procurar leer toda ladocumentación que se encuentre sobre estos y la forma de 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 de 2 07/09/2005 7:55Curso de 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 puede tenerpocos problemas. En todo caso se tendrá que empezar el proceso de instalación desde el comienzo perono perderemos 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 desaprovechar esta oportunidad.No se trataran el tema de instalación a partir de cada una de las distribuciones ya que en cada una de ellasexiste la documentación para poder hacerlo. Lo que se tratara es la instalación a partir de un sistema quetenga Windows instalado, que será la mayoría de las ocasiones.Los pasos a seguir son los siguientes:1.2.3.4.Como antes habíamos visto, el recabar información del sistema ayudara a una buena instalación. Laforma más sencilla de hacerlo es imprimir la información que nos proporciona las Propiedades delSistema en el panel de control.Luego de que inicie la instalación a través del método que se haya elegido, CD-ROM, diskette oNFS, GNU/Linux intentara detectar el hardware del sistema. Si no puede 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 de un disco yaparticionado con el fdisk del DOS, se podrá cambiar el tipo de partición con la utilería fdisk deGNU/Linux. En otras distribuciones existe otra aplicación como el DiskDruid de Red Hat que haráel trabajo por ustedes.La configuración de la interfase gráfica es todo un tema. Existen diversos ambientes gráficos deentre los cuales se puede escoger. En muchos casos la instalación se hará exclusivamente en unentorno gráfico preconfigurado pero en otras se tendrá que configurar para poder utilizarlo. Setendrá que ingresar información sobre mouse, teclado, monitor incluyendo velocidades de refrescoe intervalo de barrido además de la tarjeta de video disponible. Veremos este punto más en detalleen la sección de X. En este punto tal vez se pida crear un disco de booteo o rescate. Hay quehacerlo, rotularlo y guardarlo en un lugar seguro. Servirá en caso de fallas o que el sistema noarranque al reiniciar la computadora.5.6.El arranque del 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 encender la computadora. Con GNU/Linux se utiliza un programaque reside en el MBR de disco rígido llamado LILO (LInux LOader) el cual administra en quepartición se encuentra cada SO y uno puede elegir, presionando la tecla Tab, con cual SO se quiereiniciar.Ahora ya estará dentro, se iniciara el sistema y se pedirá que ingrese una clave para el root (que esel súper - usuario, lo trataremos mas adelante).


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


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


Proceso pre-instalaciónhttp://www.ant.org.ar/cursos/curso_intro/preinst.html2 de 3 07/09/2005 7:54información sobre los problemas de 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 denominan A: y B:,mientras que las particiones del disco rígido de denominan C:, D:,etc.Bajo GNU/Linux esto difiere dado que los dispositivos son manejados por controladores que están en eldirectorio /dev. 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 puede acceder a él a través del dispositivo /dev/mouse, el cual es un enlace simbólico al dispositivo delpuerto serie donde este conectado, /dev/ttyS0 o /dev/ttyS1. Las disqueteras, discos rígidos y particionestienen controladores propios y se acceden a través de archivos de dispositivo. Nos preocuparemos porellos mas adelante pero veamos como se denominan cada uno.Tabla 1. Nombres de 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/dev/fd0/dev/fd1/dev/hda/dev/hda1/dev/hda2/dev/hda3/dev/hda4/dev/hda5/dev/hda6/dev/hdb/dev/hdb1/dev/sda/dev/sda1/dev/sdb/dev/sdb1Como puede verse además, los discos rígidos SCSI se nombran de diferente manera. Los discosIDE,MFM y RLL se acceden a través de los dispositivos /dev/hda, /dev/hdb, etc. Las particiones sedividen a su vez en /dev/hda1, /dev/hda2, etc. Sin embargo los discos rígidos SCSI se nombran como/dev/sda, /dev/sdb y sus particiones como /dev/sda1, /dev/sd2, etc.Veamos un ejemplo práctico que servirá para ilustrar un sistema que este configurado ya con DOS oalguna clase de Windows.Primera disquetera (A:)Primera partición MS-DOS (C:)Segunda partición MS-DOS (d:)/dev/fd0/dev/hda1/dev/hda2


Proceso pre-instalaciónhttp://www.ant.org.ar/cursos/curso_intro/preinst.html3 de 3 07/09/2005 7:54Particion ExtendidaPrimera partición lógicaSegunda partición lógicaCD_ROM esclavo/dev/hda3/dev/hda5/dev/hda6/dev/hdbComo verán se salto a la partición /dev/hda4 ya que esta pertenece a la cuarta partición primaria. Cadatipo de 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 de 2 07/09/2005 7:53Curso de 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 de todo software es un tema muy preocupante. Las distintas distribuciones comercialesde GNU/Linux poseen documentación en formato impreso. Pero el mismo no cubre la totalidad defuncionalidades y programas del SO, sino solamente lo que corresponde a su implementación particular,quedando en manos de los usuarios el adquirir documentación más específica. Sin embargo, existe tantoen la misma distribución como en Internet infinidad de documentación que puede 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 de las llamadas aservicio técnico se deben 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 de 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 de todos los aspectos del sistema.Desde sus inicios los desarrolladores 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 del sistema y sus aplicaciones. Uno de los proyectos más conocidos es el LDP (Proyecto deDocumentación de Linux), que se alza como una entidad centralizadora de documentación. Esto es buenopara tener un solo lugar en donde buscar toda la información necesaria.GNU/Linux cuenta con gran cantidad de documentación en varios formatos y uno de los desarrolladospor el LDP son los HOWTO que están disponibles muchas veces con la misma distribución o a través deInternet. 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 denomina MINI-HOWTO, que son guías rápidas para la prontaimplementación de un servicio o un programa, sin detenerse en aspectos que no se utilizarán o seutilizarán rara vez. Se pueden 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 dedocumentación del proyecto LUCAS (LinUx en CAStellano), en el cual se podrán encontrar la mayoríade ellos.Uno de las formas de documentación más populares y simples de acceder es el uso de las man-pages.Estas páginas de manual vienen en todas las distribuciones y cubren con notable detalle el uso decomandos o programas. Además los programas nuevos que se instalen traerán en su mayoría man-pagesque se podrán acceder de igual manera que a las propias del sistema.Se accede a ellas con el comandoshrek@pantano$ man Existen varias opciones que se pueden utilizar y se pueden buscar tecleandoshrek@pantano$ man mancon lo que aparecerán las páginas de manual del comando man.Muchas veces las páginas de manual indican un número luego del comando Ej. ls(1). Esto indica que lainformación del comando ls puede 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 de 2 07/09/2005 7:53man-pages de los sistemas Un*x venían en libros impresos que se dividían en secciones donde seabordaba el tema de un comando de acuerdo a su aplicación. También se puede contar con las páginas deINFO de cada comando, utilizando el comandoshrek@pantano$ info donde se encontrara información menos detallada que en las man-pages pero de pronta utilización.Un lugar donde buscar cuando se instale un nuevo programa es los archivos README. Estos explicantodo el proceso de instalación así como también los requerimientos necesarios. Ademá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 del kernel también poseen unagran cantidad de información sobre aspectos generales del SO y su funcionamiento, siendo una muybuena fuente de información al momento de meter mano al sistema, abundando los comentarios técnicosy los jocosos, dirigidos por los distintos desarrolladores a sus pares. Existen además muchísimas guíasque cubren aspectos muy importantes y de alta complejidad del SO y sus aplicaciones. Cabe destacar quemucha de esta información se encuentra en español pero existe un número mucho mayor que esta eninglés. Proyectos como LuCAS tratan de que se revierta esto, aportando con su trabajo un aporteinvaluable para toda la comunidad hispanoparlante. Por todo lo expuesto hasta aquí, puede decirse queGNU/Linux es uno de los sistemas con mayor cantidad de documentación que existe, tanto librementecomo en forma de libros impresos por editoriales de 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 de 3 07/09/2005 7:54Curso de 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 de su computadora menos problemas tendrá en lainstalación de GNU/Linux. Se tendrán que tener a mano una serie de información elemental que le seránrequeridas en el momento de la instalación tales como el idioma del teclado y la zona del tiempo donde seencuentra. Aunque parezca elemental, es aquí donde la mayoría se paraliza o pone mal los datos, lo quetraerá futuros dolores de cabeza.Hemos visto anteriormente las distribuciones más importantes que existen y la mayoría se instala enforma estándar de manera similar. Pero antes de proceder a informar como es la instalación de alguna deestas, procederemos a ver algunos aspectos generales a tener en cuenta a la hora de realizar dichainstalación.Antes de comenzar a instalar se tendrán que revisar nuestro sistema siendo lo primero a revisar elhardware de éste y verificar que el mismo esté soportado. Para ello se cuenta con un HOWTO especialdenominado Hardware HOWTO en el que se detalla una lista de hardware soportado por GNU/Linux.Cuando se habla de soportado significa que existe un controlador para ese dispositivo de hardware. Elnúmero de dispositivos soportados crece continuamente por ello esta lista esta en constante actualización.Si un dispositivo no es soportado, se puede recurrir a la empresa que vende la distribución que se estainstalando. Ellos saben a quien contactar para encontrar los controladores adecuados para ese dispositivo.Una afirmación incorrecta que se hace es que si funciona en DOS funciona en GNU/Linux. Esto no essiempre cierto, debido a que el DOS accede al hardware a través de la BIOS y esta es dejada atrás porGNU/Linux cuando esta en funcionamiento. Linux toma control de cada parte del sistema y de todos losdispositivos, por ello estos deberán funcionar de una forma estándar para que Linux los pueda utilizar.Otra afirmación es que solo el hardware de marca es soportado. Eso no es tan así. Existe una grancantidad de dispositivos clónicos que funcionan en GNU/Linux, pero como siempre uno es el responsablede lo que pueda ocurrir.Ocurre en ocasiones que cierto hardware funciona en otro sistema con GNU/Linux y no en el nuestro.Esto puede deberse 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 sucederse entre distintos dispositivos ya queGNU/Linux permite que estos funcionen con los valores predeterminados.La forma de instalar GNU/Linux puede ser variada, por ello se tienen que tener los recaudos necesariospara poder instalarlo de la forma en que queremos. Si nuestro sistema no permite el arranque a través delCD-ROM, se tendrán que crear discos de instalación para lo que se cuenta con aplicaciones que hacenesto.En un directorio del CD-ROM se encontrara un directorio /dosutils, por supuesto la ubicación de esteestará supeditada a la que le dé cada uno de los distribuidores, donde hay un programa llamadoRAWRITE.EXE. Es un programa de DOS que sirve para escribir una imagen de disco en un diskette. Tambiénse encontrara un directorio llamado /image donde se encontraran las imágenes que necesitemos. En ladocumentación de la distribución se indicara cual imagen tiene el soporte para la clase de dispositivo ausar para la instalación, así si queremos instalarlo desde un CD-ROM tendremos que usar una imagen quetenga soporte para el CD-ROM que se posee o en otra imagen de diskette se contaran con una serie dedriver's para el manejo de dispositivos variados como placas de red, tarjetas PCMCIA, discos rígidos


Instalaciónhttp://www.ant.org.ar/cursos/curso_intro/instalacion.html2 de 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 de la red,si es que se cuenta con un servidor que nos provea la instalación por medio de NFS (Network FileSystems) con lo cual deberían saber correctamente la configuración adecuada de la placa de red que seposee y la dirección del servidor y el directorio donde la instalación reside. Para poner un ejemplo,supongamos que hemos montado el cd de 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 directoriodonde se encuentra la distribución a /mnt/cdrom.Cuando se instala un sistema GNU/Linux se podrán elegir, en la mayoría de las distribuciones, diferentesformas de instalación, desde una completamente automática hasta una completamente configurable.Es de suponer que aquellos administradores expertos elegirán la opción que les permite la configuracióntotal del sistema, además con ello pueden saber a cada momento que es lo que se esta instalando y donde.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 de unos 20minutos, tendrán un sistema funcionando sin mas que un par de preguntas que el sistema les hará; hasta lamisma instalación se encarga de particionar el disco rígido por si solo, tema que hablaremos másadelante.Requisitos de 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 de 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 de por lo menos 500 MB con almenos 8 MB de 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 de RAMadicional por usuario en modo texto y 2 MB para modo grafico que aunque parezca demasiado, cuando secuenta con 100 usuarios usando el entorno gráfico se vera que la memoria se evapora como agua en eldesierto.Si el trabajo a realizar requiere de un entorno gráfico como el KDE o el GNOME y el uso de aplicacionesofimáticas como el OpenOffice, los requerimientos serán mayores debido a que estos requiere por lomenos de 128 MB para su correcto funcionamiento y de un Pentium de por lo menos 450 MHZ.Un servidor sencillo de páginas WEB puede funcionar correctamente con 16 MB de RAM en un 486 conun disco de 1 GB. Aunque la instalación del servidor WEB requiere de menos de 65 MB, el espaciorestante es para que se cuente con espacio suficiente para las páginas WEB que en un futuro seincorporaran. Igualmente depende de lo que se quiera poner en el servidor.Un tema interesante es la capacidad de almacenamiento. Existen distribuciones con herramientas muybásicas que ocupan menos de 20 MB de espacio en disco, pero también hay distribuciones completas queocupan más de 1 GB de disco para todos sus programas, y el número de estos va creciendo de distribuciónen distribución.Habíamos hablado antes de las compatibilidades con el hardware del sistema. Antes de comenzar ainstalar se tendrá que armar una libreta o apuntador con todo el Hardware de nuestro sistema, con suscorrespondientes interrupciones y DMA así como también las características que vienen puestas defábrica; con esta lista se buscara en el Hardware-HOWTO si es soportado y este será el detalle queseguiremos cada vez que se tenga que agregar un dispositivo nuevo. De esta manera estarán seguros deque comprar y como instalarlo antes de que nos demos cuenta que no funciona en nuestro sistema.


Instalaciónhttp://www.ant.org.ar/cursos/curso_intro/instalacion.html3 de 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 de 3 07/09/2005 7:53Curso de 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 necesidades. Tal vez la curiosidad los ha llevado abuscar en GNU/Linux, pero es bueno saber que la elección no solamente puede satisfacer dichacuriosidad.Como estudiantes, tendrán ante ustedes un sistema muy configurable y esa sola opción hace que sea elpreferido de los ámbitos académicos.El poder tener el código fuente de cada punto de 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 de aplicaciones que generan un ambiente por demásde estable para los negocios de hoy en día. Y este es un punto interesante ya que es en las empresas dondeGNU/Linux tiene mayor entrada, debido en gran parte al poder contar con un sistema Un*x de bajo costototal de la propiedad (TCO por sus siglas en inglés) y sin las complicaciones de 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 impide, 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 del proyecto. Talvez a una empresa no le interese el soporte a través de 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 venden 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 de servicio están entrando en la competencia de brindar asistencia y soporte aaquellas personas que ya posean un sistema GNU/Linux, sin importar si se lo han comprado a ellos. Porparte de las distribuciones, cuentan con soporte permanente, ya sea a través de la web o correoelectrónico, servicio que cuesta muchísimo en otros SO's y ni hablar de SO's Un*x.También desde el punto de vista del usuario final, la cantidad de software disponible es más quesuficiente para satisfacer las necesidades en todos los campos. Veamos algunos ejemplos:Estación de trabajo InternetContamos en este área con una enorme variedad de 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, knode)ftp: Clientes de 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 de 3 07/09/2005 7:53im (mensajería instantánea): Existen una variedad de clientes, siendo la característica salienteque la mayoría suele ser cliente de varias redes a la vez (jabber, icq, msn, aim, gadu-gadu,etc.). Hay tanto clientes de consola (centericq, pebrot) como para X (gaim, kopete, amsn,psi).Estación de trabajo de oficinaEncontraremos aquí una gran variedad de software destinado tanto a crear como a transformar yvisualizar diferentes tipos de documentos. La siguiente lista es meramente orientativa:Procesadores de texto: Una gran cantidad de programas para X (OpenOffice Writer,Abiword, Ted, PW, Kword).Planillas de cálculo: Existen algunas para la consola (GNU Oleo, sc) y también para X(OpenOffice Writer, Gnumeric,Kcalc, abs, Siag).Bases de datos: Existen aplicaciones que van desde algunas de gran calibre aplicables aservidores (PostgreSQL, MySQL) hasta mas pequeñas comparables con algunas bases dedatos personales del mundo Windows (Firefox, MiniSQL). Estas no proveen interfacesgráficas en general, sino conectividad con clientes. Algunos clientes destacados son pgacces(interfaz gráfica para PostgreSQL) y el front-end de OpenOffice para MySQL y archivosDBF.Programas de 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 desofisticación (Gimp, Xpaint, Kpaint).Diseño 3d: Blender/Blender 3D, PovRay.Formateo de documentos: Esta sección podría decirse que es casi desconocida en el mundode Windows y MacOS, si bien los programas que pertenecen a este grupo se destacan por sugran portabilidad y tienen versiones nativas en los sistemas antes mencionados. La idea esescribir en un archivo de texto (sin formato alguno) el texto intercalando instrucciones acercade que función cumple el texto dentro del documento, si es un párrafo, un encabezado, unalista numerada, etc. Luego, el formateador procesa el archivo fuente y produce una salidaformateada que puede ser impresa con una gran calidad, por ejemplo en formato pdf. Losformateadores de texto más comunes son, en orden de popularidad:TeX-LaTeX: El formateador de Donald Knuth es el estándar de facto para salidas degran calidad como libros y publicaciones científicas.Troff-Nroff-Groff: El abuelo de los formateadores, ha quedado un tanto desfasadofrente a los demás, pero se destaca por ser el único que viene instalado en los sistemasbase de 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 moderno yminimalista. Su salida es por defecto postscript, por lo que puede ser impreso enimpresoras que soporten este estándar directamente.Markup languages: Aquí se agrupan una serie de tecnologías bastante recientes,orientadas a la creación de documentos sobre todo de la rama informática. Unexponente destacado de este grupo es DocBook, el cual se utilizó para la creación de


Por que usar GNU/Linux y que nos ofrecehttp://www.ant.org.ar/cursos/curso_intro/porque.html3 de 3 07/09/2005 7:53este documento.Estación de trabajo científicaGNU/Linux cuenta con software para el trabajo en distintas ramas de la ciencia y la tecnología.Sería muy largo enumerar la cantidad de software disponible en esta área. Sin dudas, los másdestacados son:Lenguaje de 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 de cálculo de elementos finitos: FreeFEM, CalculiX.GIS: Grass, Spring, GMT.Existen una gran cantidad de herramientas para cada rama de la ciencia. Si nuestro trabajo es deeste tipo, sin dudas el software disponible llenará nuestras necesidades.Ahora bien, GNU/Linux cuenta además con una serie de soportes para tecnologías heredadas comopodrían ser aplicaciones que corren en otro tipo de plataforma. Se cuenta con emuladores de DOS yWindows, estando siendo además portadas una gran cantidad de aplicaciones tanto de corriente principalcomo grandes aplicaciones. Esto da la seguridad de no tener que cambiar el software por el que se pagóanteriormente, pero hay que decir que este tipo de programas emuladores todavía tienen sus fallas, siendodifícil poder ejecutar algunas aplicaciones poco conocidas.Existe una frase que habla por si misma: GNU/Linux lo tiene todo: Estabilidad, soporte y software.Además en esta época de 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 de 6 07/09/2005 7:53Curso de 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 ademá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 de los casos. Igualmente, y si se quiere, puede bajarse todo el software con licencia GPL y elkernel de Linux totalmente gratis desde Internet.Las empresas que están distribuyendo GNU/Linux actualmente son muchas y con variadas ofertas quecubren todas las necesidades. 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 de inicio es una utilería que reside en el sector deinicio maestro del 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 de inicio en el mercado como el GNU Grub, el System Comander de VCommunication o el Boot Manager pero GNU/Linux viene con su propio administrador de inicio,el LILO o LInux LOader y que se instala por omisión en la mayoría de las distribuciones. En lasdistribuciones que no es uilizado por defecto se utiliza GNU Grub.Sistema X Window: X Window es el subsistema que soporta la interfaz de usuario gráfica. Uno delos servidores X más comunes es el XFree86. También existe un modelo comercial llamadosimplemente X de la empresa MetroLink. En los últimos tiempos, debido a un problema de cambiode licencias en XFree86, surgió un derivado llamado X.org, siendo adoptado por la mayoría de lasdistribuciones.Interfaz de usuario: La línea de comando es la interfaz por omisión de GNU/Linux, pero existenentornos gráficos como el KDE (Kool Desktop Environment) y el GNOME (GNU Network ObjectModel Environment). Existen otros, pero estos dos son los más populares y utilizados en elmomento.Servicio de conectividad: GNU/Linux tiene soporte de TCP/IP desde sus comienzos y ademásposee programas servidores y clientes de 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 de noticias) y PPP/SLIP para enlaces serie como eldial-up, y un largo etcétera.Servicios de Impresión y de Archivos: Estos servicios permiten al sistema acceder a recursos de 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 de aplicaciónSamba, que hacen que GNU/Linux pueda utilizar recursos de una red Windows, y la suiteAppleTalk, que puede comunicarse con el mundo Apple-Macintosh.Aplicaciones: Últimamente gran cantidad de empresas de 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 dehardware abran totalmente las puertas de sus arquitecturas lo que facilitará que se gestione softwaremas útil y con mayor calidad.Administración de Paquetes: El problema de la gestión de instalación de programas en las


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


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html3 de 6 07/09/2005 7:53ConsLimitada vida útil de la edición gratuita, soporte multimedia pobre.Sistema de paquetesRPMDescarga GratuitaSiSuSE LinuxDebianSuSE es otra compañía orientada a los escritorios, aunque una gran variedad de otros productospara empresas están disponibles. La distribución ha recibido buenas críticas por su instalador y laherramienta de configuración YaST, desarrollada por los desarrolladores de 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 de sus competidores. SuSE Linux 7.3 recibió elpremio "Producto del año 2001" que entrega el Linux Journal. La distribución tiene un granporcentaje de mercado en Europa y América del Norte, pero no se vende en Asia y otras partes delmundo. El desarrollo de SuSE se realiza completamente a puerta cerrada, y no se lanzan betaspúblicas para probar. Siguen la política de no permitir descargar el software hasta tiempo despuésde que salgan a la venta las versiones comerciales. A pesar de todo, SuSE no entrega imagenes ISOde fácil instalación de su distribución, usando el software empaquetado para la gran mayoría de subase de usuarios.ProsConsAtención profesional en cada detalle,herramienta de configuración de fácil uso (YaST).Solo disponible en algunas partes del mundo en las tiendas de software o medianteinstalación FTP, incluye componentes propietarios, que no permiten su redistribución.Sistema de paquetesRPMDescarga gratuitaSuSE no proporciona imágnes ISO para descraga, no obstante la versión Profesional de sudistribución es accesible para la instalación FTP normalmente 1 o 2 meses más tarde de 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 de 6 07/09/2005 7:53Debian GNU/Linux inició su andadura de la mano de Ian Murdock en 1993. Debian es un proyectototalmente no-comercial; posiblemente el más puro de los ideales que iniciaron el movimiento delsoftware libre. Cientos de desarrolladores voluntarios de alrededor del mundo contribuyen alproyecto, que es bien dirigido y estricto, asegurando la calidad de una distribución conocida comoDebian.En cualquier momento del proceso de desarrollo existen tres ramas en el directorioprincipal: "estable", "en pruebas" e "inestable" (también conocida como "sid"). Cuando aparece unanueva versión de un paquete, se sitúa en la rama inestable para las primeras pruebas, si las pasa, elpaquete se mueve a la rama de pruebas, donde se realiza un riguroso proceso de pruebas que duramuchos meses. Esta rama solo es declarada estable tras una muy intensa fase de pruebas. Comoresultado de 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 de pruebas o inestable, más actualizadas, en sus ordenadorespersonales. Debian es también famosa por su reputación de ser dificil de instalar, a menos que elusuario tenga un profundo conocimiento del hardware de la computadora. Compensando este falloestá "apt-get" un instalador de paquetes Debian. Muchos usuarios de Debian hacen bromas sobreque su instalador es tan malo por que solo lo han de usar una vez, tan pronto como Debian está enfuncionamiento, todas las actualizaciones, de cualquier tipo pueden realizarse mediante laherramienta apt-get.ProsConsSlackware100% libre, web y recursos de la comunidad excelentes, bien probada, instalación desoftware sencillisima usando apt-get.Instalador arcaico, la versión estable no está actualizada.Sistema de 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 de configuración gráfica. Mientras otras distribuciones intentan desarrollarintarfaces fáciles de usar para muchas utilidades comunes, Slackware no ofrece nada amistoso, ytoda la configuración se realiza mediante los archivos de configuración. Es por esto que Slackware


Las distintas distribucioneshttp://www.ant.org.ar/cursos/curso_intro/distros.html5 de 6 07/09/2005 7:53solo se recomienda a aquellos usuarios nuevos que deseen perder el tiempo aprendiendo acerca deLinux. A pesar de todo, Slackware tiene una especie de 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 depaquetes en su forma original, sin demasiadas modificaciones propias de la distribución, que son unriesgo potencial de añadir nuevos fallos. Es raro que se produzcan lanzamientos de nuevasversiones (aproximadamente una al año), aunque siempre se pueden encontrar paquetesactualizados para descarrgar después del lanzamiento oficial. Slackware es una buena distribuciónpara aquellos interesados en profundizar en el conocimiento de las entrañas de Linux. He oido que,posiblemente, la mejor característica de esta distribución es: si necesitas ayuda con tu sistema linux,encuentra un usuario de Slackware. Es más probable que resuelva el problema que otro usuariofamiliarizado con cualquier otra distribución.ProsConsMandrakeAlta estabilidad y ausencia de fallos, sigue fielmente los principios de UNIX.Toda la configuración se realiza mediante la edición de ficheros de texto, autodetección dehardware limitada.Sistema de paquetesTGZDescarga gratuitaSiMandrake Linux, creada por Gaël Duval, es una distribución que ha experimentado un enormeaumento de popularidad desde su primera versión de julio de 1998. Los desarrolladores partieron dela distribución de Red Hat, cambiaron el entorno de escritorio predeterminado por KDE, yañadieron un instalador fácil de usar rompiendo el mito de que linux es dificil de instalar. Lasherramientas de detección de hardware de Mandrake y sus programas para el particionamiento dediscos son consideradas por muchos como las mejores de la industria, y muchos usuarios seencotraron usando Mandrake allí dode otras distribuciones no habían conseguido entregar lausabilidad necesaria.Desde entonces Mandrake Linux ha madurado y se ha convertido en unadistribución popular entre los nuevos usuarios de linux y aquellos hogares que buscan un sistemaoperativo alternativo. El desarrollo de Mandrake es completamente abierto y transparente, conpaquetes nuevos que se añaden al direcotrio llamado "cooker" a diario. Cuando una nueva versiónentra en fase beta, la primera beta se crea a partir de los paquetes que se encuentran en "cooker" enese momento. El proceso de pruebas de la beta solía ser corto e intensivo, pero desde la versión 9.0ha pasado ha ser más largo y exigente. Las listas de 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 de este tipo de desarrollo se obtiene una distribución puntera y altamenteactualizada. Como contrapartida, los usuarios pueden encontrarse con más fallos que en otrasdistribuciones. Mucha gente encuentra este 'pero' razonable para sus equipos, ellos obtienen lasúltimas versions de software y los cuelgues ocasionales de las aplicaciones es algo con lo quepueden vivir. Tan pronto como el desarrollo se completa el software se pone a la libre disposición


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


Las bases de GNU/Linuxhttp://www.ant.org.ar/cursos/curso_intro/bases.html1 de 1 07/09/2005 7:52Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnterior Introducción a GNU/Linux SiguienteLas bases de GNU/LinuxGNU/Linux es una reimplementación de la funcionalidad de Un*x de libre distribución. Como habíamosdicho, su núcleo o kernel fue desarrollado en sus comienzos por Linus Torvalds. Fue un desarrollo demuchos programadores de todo del mundo, que gracias a Internet pudieron ir coordinando el proyecto.Una curiosidad es que a pesar de ser en un 95% compatible con la funcionalidad de UNIX, el kernelLinux no usa ni siquiera una línea del UNIX de la empresa AT&T. Es más, como antes dijimos, muybuena parte del software del SO GNU/Linux esta bajo licencia GPL.Linus Torvalds se inspiró en otro sistema operativo desarrollado por Andrew Tenenbaum, llamadoMINIX, un SO pensado con fines educativos y que Andy Tenenbaum explica muy bien en su LibroSistemas Operativos. La meta de 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 delas características que contaba de conmutación de tareas del 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 de octubre de 1991 cuando Linus anuncio la versión 0.0.2 donde ya se podía ejecutar el shell GNU Bashy el GCC (compilador de C de GNU). Luego de un muy corto tiempo de liberada la versión 0.0.3, se saltógracias a la ayuda de una comunidad de 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 deerrores, la 1.0.Hoy el Kernel se encuentra en una versión estable de la serie 2.4.x, la 2.5.x de la versión inestable y sigueevolucionando, adoptando a su paso toda una serie de nuevas tecnologías, que son probadas y arregladaspor los desarrolladores y beta-testers antes de que salgan a las masas.Para entender algo más acerca de la versiones, hay que decir que una versión con numero de subversiónpar es estable. Ej. 2.4.x, siendo x el número que indica el nivel de revisión o parche. En cambio unaversión con número de 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 de los mejores SO que existen, compitiendo con SO's que fueronlíderes 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 agradecer 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 de 1 07/09/2005 7:52Curso de Introducción a GNU/Linux: Historia, Filosofía, Instalación y Conceptos BásicosAnteriorSiguienteIntroducción a GNU/LinuxHistoria de GNU/Linux y el copyrightMuchas personas creen que Linux es el primer SO que surge con las características de libre y con losfuentes a disposición, pero esto no es tan así. No podríamos hablar de la historia de Linux sin incluir aGNU ya que este proyecto de la Free Software Foundation fue el comienzo de 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 de su gran habilidad para la programación. El proyecto GNU fueel precursor de lo que es el SO Linux de hoy en día.Este proyecto comenzó en el año 1984 dándole el nombre recursivo de GNU que significa GNU no esUNIX (GNU's not UNIX), para crear un sistema operativo compatible con UNIX. Este proyecto es elpadre de un sinnúmero de programas que actualmente forman parte de cualquier distribución de Linux ypor ello es correcto hablar de GNU/Linux en lugar de Linux a secas.Algunos de los programas que se crearon a partir del proyecto GNU son el GCC, un compilador delenguaje C, el GNU Emacs, un editor de textos, las librerías GNU de lenguaje C y además uno de losproyectos más grandes como lo es el entorno gráfico GNOME.La idea era simple; se podía tener todo un SO funcional, libre y gratuito. Pero no hay que engañarnos conel significado de libertad. La libertad del software se basa en que uno es dueño del programa que adquierey/o desarrolla por ello tiene derecho a obtener sus fuentes y hacer lo que se quiera con él, cambiarlo,mejorarlo y hasta venderlo.Linux esta regido por lo que se denomina Licencia Pública General de GNU, o GPL por General PublicLicense. La GPL fue desarrollada por la FSF para el proyecto GNU y hace una serie de previsiones sobrela distribución y modificación del 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 vendersu software, aunque no permite restringir el derecho que tiene el comprador de copiarlo y venderlo a suvez.Hay que aclarar que libre no significa de dominio público. El software de dominio público pertenece a lahumanidad y carece de 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 del autor y exige a los usuarios que paguen cierta cantidad de dinero por usarlo y/o obtenermayores funcionalidades. En cambio el software GPL puede ser distribuído y usado sin pagar a nadie. LaGPL permite a los usuarios el modificar los programas y redistribuirlos. Sin embargo, cualquier trabajoderivado de un programa bajo licencia GPL también se tendrá que regir por esta licencia.Cuando Linus Torvalds comenzó con el desarrollo de Linux, mucho del trabajo ya estaba hecho por elproyecto GNU, y el kernel que Linus Torvalds y un ejército de programadores pudo hacer, fue elpegamento que unió todo el sistema que hoy conocemos.Anterior Inicio SiguienteEl sistema operativo en capas Las bases de GNU/Linux


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...1 de 6 07/09/2005 8:07Curso de 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 (de marzo de 2.000), que cubre manuales ydocumentación para el software de la Free Software Foundation, con posibilidades en otros campos. Latraducción[1] no tiene ningún valor legal, ni ha sido comprobada de acuerdo a la legislación de ningúnpaís en particular. Vea el originalLos autores de 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 de copias literales de este documento de licencia, pero no se permitencambios.0. PreámbuloEl propósito de esta licencia es permitir que un manual, libro de texto, u otro documento escrito sea"libre" en el sentido de libertad: asegurar a todo el mundo la libertad efectiva de copiarlo yredistribuirlo, con o sin modificaciones, de manera comercial o no. En segundo término, estalicencia preserva para el autor o para quien publica una manera de obtener reconocimiento por sutrabajo, al tiempo que no se consideran responsables de las modificaciones realizadas por terceros.Esta licencia es una especie de "copyleft" que significa que los trabajos derivados del documentodeben a su vez ser libres en el mismo sentido. Esto complementa la Licencia Pública General GNU,que es una licencia de copyleft diseñada para el software libre.Hemos diseñado esta Licencia para usarla en manuales de software libre, ya que el software librenecesita documentación libre: Un programa libre debe venir con los manuales que ofrezcan lamismas libertades que da el software. Pero esta licencia no se limita a manuales de software; puedeser 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 dereferencia.1. Aplicabilidad y definicionesEsta Licencia se aplica a cualquier manual u otro documento que contenga una nota del propietariode los derechos que indique que puede ser distribuido bajo los términos de la Licencia. El"Documento", en adelante, se refiere a cualquiera de dichos manuales o trabajos. Cualquiermiembro del público es un licenciatario, y será denominado como "Usted".Una "Versión Modificada" del Documento significa cualquier trabajo que contenga el Documento ouna porción del 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 de 6 07/09/2005 8:07idioma.Una "Sección Secundaria" es un apéndice titulado o una sección preliminar al prólogo delDocumento que tiene que ver exclusivamente con la relación de quien publica o, los autores delDocumento o, el tema general del Documento(o asuntos relacionados) y cuyo contenido no entradirectamente en este tema general. (Por ejemplo, si el Documento es en parte un texto dematemáticas, una Sección Secundaria puede no explicar matemáticas.) La relación puede ser unasunto de conexión histórica, o de posición legal, comercial, filosófica, ética o política con el temao la materia del texto.Las "Secciones Invariantes" son ciertas Secciones Secundarias cuyos títulos son denominadoscomo Secciones Invariantes, en la nota que indica que el documento es liberado bajo esta licencia.Los "Textos de Cubierta" son ciertos pasajes cortos de texto que se listan, como Textos de Portadao Textos de Contra Portada, en la nota que indica que el documento es liberado bajo esta Licencia.Una copia "Transparente" del Documento, significa una copia para lectura en máquina,representada en un formato cuya especificación está disponible al público general, cuyoscontenidos pueden ser vistos y editados directamente con editores de texto genéricos o (paraimágenees compuestas por pixeles) de programas genéricos de dibujo o (para dibujos) algún editorgráfico ampliamente disponible, y que sea adecuado para exportar a formateadores de texto o paratraducción automática a una variedad de formatos adecuados para ingresar a formateadores detexto. Una copia hecha en un formato de un archivo que no sea Transparente, cuyo formato ha sidodiseñado para impedir o dificultar subsecuentes modificaciones posteriores por parte de los lectoresno es Transparente. Una copia que no es "Transparente" es llamada "Opaca".Como ejemplos de formatos adecuados para copias Transparentes están el ASCII plano sin formato,formato de Texinfo, formato de 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 pueden ser leídos y editadosunicamente en procesadores de palabras propietarios, SGML o XML para los cuáles los DTD y/oherramientas de procesamiento no están disponibles generalmente, y el HTML generado pormáquinas producto de algún procesador de palabras solo para propósitos de salida.La "Portada" en un libro impreso significa, la portada misma, más las páginas siguientes necesariaspara mantener la legibilidad del 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 del título del trabajo, precediendo el comienzo del cuerpo del trabajo.2. Copia literalPuede copiar y distribuir el Documento en cualquier medio, sea en forma comercial o no, siempre ycuando esta Licencia, las notas de derecho de autor, y la nota de 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 puede usar medidas técnicas para obstruir ocontrolar la lectura o copia posterior de las copias que usted haga o distribuya. Sin embargo, ustedpuede aceptar compensación a cambio de las copias. Si distribuye un número suficientementegrande de copias también deberá seguir las condiciones de la sección 3.También puede prestar copias, bajo las mismas condiciones establecidas anteriormente, y puedeexhibir copias publicamente.3. Copiado en cantidadesSi publica copias impresas del Documento que sobrepasen las 100, y la nota de Licencia delDocumento exige Textos de Cubierta, debe 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 de 6 07/09/2005 8:07clara y legible, todos esos textos de Cubierta: Textos Frontales en la cubierta frontal, y TextosPosteriores de Cubierta en la Cubierta Posterior. Ambas cubiertas deben identificarlo a Usted claray legiblemente como quien publica tales copias. La Cubierta Frontal debe mostrar el títulocompleto con todas las palabras igualmente prominentes y visibles. Además puede adicionar otromaterial en la cubierta. Las copias con cambios limitados en las cubiertas, siempre que preserven eltítulo del Documento y satisfagan estas condiciones, puede considerarse como copia literal.Si los textos requeridos para la cubierta son muy voluminosos para que ajusten legiblemente, debecolocar los primeros (tantos como sea razonable colocar) en la cubierta real, y continuar el resto enpáginas adyacentes.Si publica o distribuye copias Opacas del Documento cuya cantidad exceda las 100, debe 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 de computador publicamente-accesible conteniendo unacopia completa Transparente del Documento, sin material adicional, a la cual el público en generalde la red pueda acceder a bajar anónimamente sin cargo usando protocolos de standard público. Siusted hace uso de la última opción, deberá tomar medidas necesarias, cuando comience ladistribución de las copias Opacas en cantidad, para asegurar que esta copia Transparentepermanecerá accesible en el sitio por lo menos un año después de su última distribución de copiasOpacas (directamente o a través de sus agentes o distribuidores) de esa edición al público.Se solicita, aunque no es requisito, que contacte a los autores del Documento antes de redistribuircualquier gran número de copias, para permitirle la oportunidad de que le provean una versión delDocumento.4. ModificacionesPuede copiar y distribuir una Versión Modificada del Documento bajo las condiciones de 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 del Documento, por lo tanto licenciando la distribución ymodificación de la Versión Modificada a quienquiera que posea una copia de este. En adición, debehacer lo siguiente en la Versión Modificada:A.B.C.Uso en la Portada (y en las cubiertas, si hay alguna) de un título distinto al del Documento, yde versiones anteriores (que deberían, si hay alguna, estar listados en la sección de Historiadel Documento). Puede 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 entidades responsables por laautoría o las modificaciones en la Versión Modificada, junto con por lo menos cinco de losautores principales del Documento (Todos sus autores principales, si hay menos de cinco).Estado en la Portada del nombre de quién publica la Versión Modificada, como quienpublica.D.Preservar todas las notas de derechos de autor del Documento.E.F.G.Adicionar una nota de derecho de autor apropiada a sus modificaciones adyacentes a las otrasnotas de derecho de autor.Incluir, immediatamente después de la nota de derecho de autor, una nota de licencia dandoel permiso público para usar la Versión Modificada bajo los términos de esta Licencia, de laforma mostrada en la Adición (LEGAL)abajo.Preservar en esa nota de licencia el listado completo de Secciones Invariantes y en los Textosde las Cubiertas que sean requeridos como se especifique en la nota de Licencia del


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...4 de 6 07/09/2005 8:07DocumentoH.Incluir una copia sin modificación de 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 además un artículo describiendo 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 accederpúblicamente a una copia Transparente del Documento, tanto como las otras direcciones dered dadas en el Documento para versiones anteriores en las cuáles estuviese basado. Estaspueden ubicarse en la sección "Historia". Se puede 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 "Agradecimientos" o "Dedicatorias", preservar el título de lasección, y preservar en la sección toda la sustancia y el tono de los agradeimientos y/odedicatorias de cada contribuyente que estén incluídas.Preservar todas las Secciones Invariantes del Documento, sin alterar su texto ni sus títulos.Números de sección o el equivalente no son considerados parte de los títulos de la sección.M. Borrar cualquier sección titulada "Aprobaciones". Tales secciones no pueden estarincluidas en las Versiones Modificadas.M.Borrar cualquier sección titulada "Aprobaciones". Tales secciones no pueden 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 del Documento, puedeopcionalmente designar algunas o todas esas secciones como invariantes. Para hacerlo, adicione sustítulos a la lista de Secciones Invariantes en la nota de licencia de la Versión Modificada. Talestítulos deben ser distintos de cualquier otro título de sección.Puede adicionar una sección titulada "Aprobaciones", siempre que contenga unicamenteaprobaciones de su Versión Modificada por varias fuentes--por ejemplo, observaciones de peritos oque el texto ha sido aprobado por una organización como un standard.Puede adicionar un pasaje de hasta cinco palabras como un Texto de Cubierta Frontal, y un pasajede hasta 25 palabras como un texto de Cubierta Posterior, al final de la lista de Textos de Cubiertaen la Versión Modificada. Solamente un pasaje de Texto de Cubierta Frontal y un Texto deCubierta Posterior puede ser adicionado por (o a manera de arreglos hechos por) una entidad. Si elDocumento ya incluye un texto de cubierta para la misma cubierta, previamente adicionado porusted o por arreglo hecho por la misma entidad, a nombre de la cual está actuando, no puedeadicionar otra; pero puede reemplazar la anterior, con permiso explícito de 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 de cualquier VersiónModificada.


GNU Free Document Licensehttp://www.ant.org.ar/cursos/curso_intro/gnu-free-documentation-licen...5 de 6 07/09/2005 8:075. Combinando documentosPuede combinar el Documento con otros documentos liberados bajo esta Licencia, bajo lostérminos definidos en la sección 4 anterior para versiones modificadas, siempre que incluya en lacombinación todas las Secciones Invariantes de todos los documentos originales, sin modificar, ylistadas todas como Secciones Invariantes del trabajo combinado en su nota de licencia.El trabajo combinado necesita contener solamente una copia de esta Licencia, y múltiples SeccionsInvariantes Idénticas pueden ser reemplazadas por una sola copia. Si hay múltiples SeccionesInvariantes con el mismo nombre pero con contenidos diferentes, haga el título de cada una de estassecciones único adicionándole al final de este, en paréntesis, el nombre del autor o de quien publicóoriginalmente esa sección, si es conocido, o si no, un número único. Haga el mismo ajuste a lostítulos de sección en la lista de Secciones Invariantes en la nota de licencia del trabajo combinado.En la combinación, debe combinar cualquier sección titulada "Historia" de los varios documentosoriginales, formando una sección titulada "Historia"; de la misma forma combine cualquier secióntitulada "Agradecimientos", y cualquier sección titulada "Dedicatorias". Debe borrar todas lassecciones tituladas "Aprobaciones."6. Colecciones de documentosPuede hacer una colección consistente del Documento y otros documentos liberados bajo estaLicencia, y reemplazar las copias individuales de esta Licencia en los varios documentos con unasola copia que esté incluida en la colección, siempre que siga las reglas de esta Licencia para unacopia literal de cada uno de los documentos en cualquiera de todos los aspectos.Puede extraer un solo documento de una de tales colecciones, y distribuirlo individualmente bajoesta Licencia, siempre que inserte una copia de esta Licencia en el documento extraido, y siga estaLicencia en todos los otros aspectos concernientes a la copia literal de tal documento.7. Agregación con trabajos independientesUna recopilación del Documento o de sus derivados con otros documentos o trabajos separados oindependientes, en cualquier tipo de distribución o medio de almacenamiento, no como un todo,cuenta como una Versión Modificada del Documento, teniendo en cuenta que ninguna compilaciónde derechos de 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 de haber sido compilados, si no son ellos mismos trabajos derivados delDocumento.Si el requerimiento de la sección 3 del Texto de la Cubierta es aplicable a estas copias delDocumento, entonces si el Documento es menor que un cuarto del agregado entero, Los Textos dela Cubierta del Documento pueden ser colocados en cubiertas que enmarquen solamente elDocumento entre el agregado. De otra forma deben aparecer en cubiertas enmarcando todo elagregado.8. TraducciónLa Traducción es considerada como una clase de modificación, Así que puede distribuirtraducciones del Documento bajo los términos de la sección 4. Reemplazar las SeccionesInvariantes con traducciones requiere permiso especial de los dueños de derecho de autor, peropuede incluir traducciones de algunas o todas las Secciones Invariantes adicionalmente a lasversiones originales de las Secciones Invariantes. Puede incluir una traducción de esta Licenciasiempre que incluya también la versión Inglesa de esta Licencia. En caso de un desacuerdo entre latraducción y la versión original en Inglés de 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 de 6 07/09/2005 8:079. TerminaciónNo se puede copiar, modificar, sublicenciar, o distribuir el Documento excepto por lo permitidoexpresamente bajo esta Licencia. Cualquier otro intento de copia, modificación, sublicenciamientoo distribución del Documento es nulo, y serán automáticamente terminados sus derechos bajo esalicencia. De todas maneras, los terceros que hayan recibido copias, o derechos, de su parte bajo estaLicencia no tendrán por terminadas sus licencias siempre que tales personas o entidades seencuentren en total conformidad con la licencia original.10. Futuras revisiones de esta licenciaAddendumNotasLa Free Software Foundation puede publicar nuevas, revisadas versiones de la Licencia deDocumentación Libre GNU de tiempo en tiempo. Tales nuevas versiones serán similares en espíritua la presente versión, pero pueden diferir en detalles para solucionar problemas o intereses. Veahttp://www.gnu.org/copyleft/.Cada versión de la Licencia tiene un número de versión que la distingue. Si el Documentoespecifica que una versión numerada particularmente de esta licencia o "cualquier versiónposterior" se aplica a esta, tiene la opción de seguir los términos y condiciones de 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 de versión de esta Licencia, puedeescoger 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 de la Licencia enel documento y ponga el siguiente derecho de autor y nota de licencia justo después del título de lapágina:Derecho de Autor © Año Su Nombre.Permiso para copiar, distribuir y/o modificar este documento bajo los términos de la Licencia deDocumentació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 de la Cubierta Frontal, y siendo LISTELO el texto de la Cubierta Posterior. Unacopia de la licencia es incluida en la sección titulada "Licencia de Documentación Libre GNU".Si no tiene Secciones Invariantes, escriba "Sin Secciones Invariantes" en vez de decir cuáles soninvariantes. Si no tiene Texto de Cubierta Frontal, escriba "Sin Texto de Cubierta Frontal" en vezde"siendo LISTELO el texto de la Cubierta Frontal"; Así como para la Cubierta Posterior.Si su documento contiene ejemplos de código de programa no triviales, recomendamos liberar estosejemplos en paralelo bajo su elección de licencia de software libre, tal como la Licencia de PúblicoGeneral GNU, para permitir su uso en software libre.[1]N. del T. Derechos Reservados en el sentido de GNU http://www.gnu.org/copyleft/copyleft.es.htmlAnterior InicioDetalle de comandos

More magazines by this user
Similar magazines