Вы находитесь на странице: 1из 351

ndice de contenido

Captulo 1 Introduccin...............................................................................................................7

1. Descripcin del Captulo.......................................................................................................9 2. Historia de Unix...................................................................................................................10 3. Movimiento Open Source....................................................................................................15 Definicin de Open Source................................................................................................15 3.1 GNU..............................................................................................................................18 3.2 FSF (Free Software Foundation)...................................................................................19 3.3 GPL (GNU General Public License) 'copyleft'............................................................20 3.4 Tipos de Licencias en Linux..........................................................................................20 4. Orgenes de Linux...............................................................................................................24 5. Caractersticas de Linux......................................................................................................26 6. Distribuciones mas conocidas.............................................................................................28 Mandrake............................................................................................................................28 RedHat................................................................................................................................29 LGIS Linux..........................................................................................................................29 Knoppix...............................................................................................................................29 Gentoo................................................................................................................................29 Debian.................................................................................................................................30 Slackware............................................................................................................................30 SuSE...................................................................................................................................30 Lycoris Desktop/LX.............................................................................................................31 Lindows...............................................................................................................................31 Xandros...............................................................................................................................31 Linux From Scratch.............................................................................................................31 Fedora Core........................................................................................................................31 7. Estndares..........................................................................................................................32 Linux Standard Base ( LSB )...............................................................................................32 Filesystem Hierarchy Standard (FHS).................................................................................34 Li18nux................................................................................................................................35 8. Ambientes...........................................................................................................................36 8.1 Shells............................................................................................................................37 8.2 Grficos.........................................................................................................................39 Capacidades...............................................................................................................40 Caractersticas ms notorias......................................................................................40 9. Acceso al sistema...............................................................................................................42 Evaluacin Captulo................................................................................................................43

FundamentosdeLinux

Captulo 2 Manipulacin de Archivos......................................................................................47

Conceptos...............................................................................................................................49 Tipos de archivos................................................................................................................50 2.2 Estructura bsica .........................................................................................................52 2.3 Nombres de archivos....................................................................................................55 3 Manejo de directorios...........................................................................................................57 3.1 Comandos bsicos........................................................................................................57 3.2 Home directory..............................................................................................................62 3.3 Directorio actual............................................................................................................63 3.4 Ruta absoluta................................................................................................................64 3.5 Ruta relativa..................................................................................................................65 4. Visualizacin y manejo de archivos.....................................................................................67 4.1 Creacin y organizacin de archivos............................................................................67 4.2 Visualizacin de archivos de texto................................................................................72 4.3 Visualizacin de archivos de datos...............................................................................75 4.4 Caracteres de expansin de nombres..........................................................................77 4.5 Bsqueda de archivos...................................................................................................79 4.6 Comparacin de archivos .............................................................................................81 Evaluacin Captulo................................................................................................................84 Captulo 3 Edicin de Archivos................................................................................................87

1 Descripcin del captulo.......................................................................................................89 2 Editores de texto..................................................................................................................90 2.1 Uso................................................................................................................................90 2.2 Editores de texto comunes en Linux ............................................................................91 Vi & Vim..................................................................................................................................94 3.1 Iniciando vi....................................................................................................................94 3.2 Modos de operacin......................................................................................................94 3.3 Terminacin de vi y salvado de archivos .....................................................................96 3.4 Comandos para movimiento del cursor ........................................................................97 3.5 Comandos para insercin de texto................................................................................99 3.6 Editando texto (cambiando, borrando)........................................................................101 3.7 Copiado y pegado de texto ........................................................................................103 3.8 Bsqueda de texto .....................................................................................................104 3.9 Opciones de configuracin..........................................................................................105 Evaluacin Capitulo...............................................................................................................107

FundamentosdeLinux

Captulo 4 Linea de comandos...............................................................................................109

1 Descripcin del captulo.....................................................................................................111 2 Interfaces linea de comando..............................................................................................112 2.1 Definicin de CLI y/o SHELL.......................................................................................112 2.2 Shells en Unix y Linux.................................................................................................114 2.3 Bash shell....................................................................................................................118 Evaluacin Captulo..............................................................................................................141 Captulo 5 Interfaces Grficas................................................................................................145

1 Descripcin del captulo.....................................................................................................147 2 Introduccin........................................................................................................................148 2.1 Conceptos bsicos......................................................................................................148 2.2 Evolucin GUI's...........................................................................................................150 3 X Window ..........................................................................................................................152 3.1 Funcin.......................................................................................................................152 3.2 Arquitectura.................................................................................................................152 3.3 Implementaciones.......................................................................................................159 3.4 Inicio de X Window......................................................................................................160 3.5 Archivos y Herramientas de Configuracin.................................................................164 4 KDE....................................................................................................................................166 4.1 Descripcin.................................................................................................................166 4.2 Iniciando KDE.............................................................................................................166 4.3 Componentes..............................................................................................................166 4.4 Herramientas de Configuracin...................................................................................170 5 GNOME..............................................................................................................................171 5.1 Descripcin.................................................................................................................171 5.2 Iniciando GNOME.......................................................................................................171 5.3 Componentes..............................................................................................................171 5.4 Herramientas de Configuracin...................................................................................173 Captulo 6 Impresin de Archivos..........................................................................................175

1 Descripcin del capitulo......................................................................................................177 2 Sistemas de impresin ......................................................................................................178 2.1 LPD.............................................................................................................................179 2.2 LPRNG........................................................................................................................180 2.3 CUPS..............................................................................................................................180 3 Impresin de Archivos........................................................................................................184 Evaluacin Final....................................................................................................................191

FundamentosdeLinux

Captulo 7 Manejo de Permisos..............................................................................................193

1 Descripcin del captulo.....................................................................................................195 2 Usuarios y grupos en Linux................................................................................................196 2.1 Descripcin.................................................................................................................196 2.2 Atributos .....................................................................................................................196 2.3 Archivo /etc/passwd....................................................................................................199 2.4 Archivo /etc/shadow....................................................................................................201 2.5 Archivo /etc/group.......................................................................................................203 3 Permisos sobre archivos....................................................................................................204 3.1 Propietarios.................................................................................................................204 3.2 Permisos.....................................................................................................................207 4 Evaluacin del captulo......................................................................................................215 Captulo 8 Manejo de entrada/salida......................................................................................219

1 Descripcin del captulo.....................................................................................................221 2 Conceptos..........................................................................................................................222 2.1 Descriptores de archivos.............................................................................................222 2.2 Entrada estndar (standard input) ..............................................................................223 2.3 Salida estndar (standard output)...............................................................................224 2.4Error estndar (standard error)....................................................................................224 2 Redireccionamiento............................................................................................................225 4 Tuberas (Pipes).................................................................................................................231 5 Comando tee......................................................................................................................232 6 Evaluacin del capitulo.......................................................................................................234 Captulo 9 Procesamiento de Archivos de texto con filtros................................................237

1 Descripcin del captulo.....................................................................................................239 2 Definicin de filtros.............................................................................................................240 3 Extraccin de informacin..................................................................................................242 4 Formateo de archivos.........................................................................................................248 5 Combinacin de archivos...................................................................................................252 6 Sustitucin de texto............................................................................................................259 7 Ordenamiento.....................................................................................................................261 8 Otros comandos.................................................................................................................264 Evaluacin Captulo..............................................................................................................268

FundamentosdeLinux

Captulo 10 Uso de Expresiones regulares..........................................................................271

1 Descripcin del captulo.....................................................................................................273 Definicin de expresin regular.............................................................................................274 3 Cmo se construye una expresin regular.........................................................................276 Metacaracteres.................................................................................................................276 Clases...............................................................................................................................278 Literales.............................................................................................................................279 Cuantificadores.................................................................................................................279 Anclajes.............................................................................................................................280 Alternativas.......................................................................................................................280 Expresiones regulares extendidas........................................................................................281 4. Bsqueda de texto (grep)..................................................................................................282 5. Procesamiento de flujo de texto........................................................................................285 Editor de lineas ed............................................................................................................285 Comando sed....................................................................................................................289 6. Uso de expresiones regulares en vi..................................................................................295 7. Evaluacin del captulo.....................................................................................................301 Captulo 11 Control de Procesos...........................................................................................305

1 Descripcin del captulo.....................................................................................................307 2 Definicin de proceso ........................................................................................................308 3 Ciclo de vida.......................................................................................................................309 4 Estados de un proceso.......................................................................................................311 5 Visualizacin de procesos..................................................................................................313 6 Control de procesos...........................................................................................................316 6.1 Procesos en Foreground y Background.................................................................316 6.2 Envo de seales.........................................................................................................321 6.4 Manejo de prioridades.................................................................................................324 7 Programacin de procesos para su ejecucin posterior.....................................................327 9. Programacin de procesos para ejecucin peridica........................................................332 Evaluacin Captulo..............................................................................................................334

FundamentosdeLinux

Captulo 12 Documentacin...................................................................................................337

1 Descripcin del captulo.....................................................................................................339 2 Ayuda del Sistema.............................................................................................................340 2.1 Comando man.............................................................................................................340 2.2 Comandos apropos y whatis.......................................................................................345 2.3 Configuracin del man................................................................................................346 3. Acceso a documentos en el sistema.................................................................................348 4. Documentacin en Internet...............................................................................................350

FundamentosdeLinux

Captulo1Introduccin

Captulo 1 Introduccin

FundamentosdeLinux

Captulo1Introduccin

DESCRIPCIN
Historia de Unix Qu es OpenSource? FSF, GNU y GPL Tipos de Licencias Orgenes de Linux Caractersticas de Linux Distribuciones Estndares Interfaces y acceso al Sistema

Introduccion

FundamentosdeLinux

Captulo1Introduccin

1. Descripcin del Captulo


En el presente captulo se introduce al alumno a los antecedentes e historia de Linux y Unix, y se describen los trminos mas importantes del Vocabulario de Linux. Al terminar el captulo el alumno conocer la historia de Unix y Linux as como los trminos de OpenSource, GNU, GPL, FSF, y licenciamientos existentes en Linux, conocer tambin las interfaces del Sistema y como acceder a este. Los tpicos a ver son:

Historia de Unix Que es OpenSource? Qu signfica GNU, FSF y GPL? y su importancia en Linux. Tipos de Licencias en Linux. Orgenes e Historia de Linux. Caractersticas principales de Linux. Distribuciones de Linux mas conocidas. Estandares utilizados en Linux. Interfaces de Linux y acceso al Sistema.

FundamentosdeLinux

Captulo1Introduccin

Historia de Unix

HistoriayLineadeTiempo

LosOrgenesMulticsylosLaboratoriosBell UnicsaUnix Creadores:Ritchie,ThompsonyKernighan AT&T BSD OpenGroupyevolucindeestndares

Introduccion

2. Historia de Unix
En los aos '60, un proyecto estaba bajo la linea del Instituto Tecnolgico de Massachusetts (MIT), para mejorar el uso de habilidades con software de tiempo compartido. El MIT, los laboratorios Bell, y General Electric fueron colaboradores en esta aventura. En 1966, un grupo de investigadores de los Laboratorios Bell desarroll un sistema operativo experimental llamado MULTICS (Informacin multiplexada y Sistema de Computacin). Fue diseado como sistema operativo interactivo para una computadora General Electric GE 645, permitiendo compartir informacin al mismo tiempo que daba seguridad. Sin embargo, hubieron muchos retrasos en el desarrollo y las versiones resultaron lentas y con mucha necesidad de memoria. Por esto y otras razones, los laboratorios Bell abandonaron el proyecto, pero sus ideas innovadoras seran ocupadas ms adelante. En 1969, Ken Thompson, uno de los investigadores del MULTICS, dise un juego para la GE llamado SPACE TRAVEL, que simulaba el sistema solar y una nave espacial, pero no le 10 FundamentosdeLinux

Captulo1Introduccin result. Con la ayuda de Dennis Ritchie, Thompson volvi a escribirlo, ahora para el PDP-7 de DEC ( Digital Equipment Corporation ), aprovechando para escribir un sistema operativo, con un sistema de archivo diseado por Thompson, Ritchie y Rudd Canaday. Ellos crearon un sistema operativo multitarea, con sistema de archivos, intrprete de rdenes y algunas utilidades para el PDP-7, y luego se revis el juego SPACE TRAVEL para ejecutarlo sobre l. Se le llam al sistema con el nombre de UNICS (Informacin Uniplexada y Sistema de Computacin), pues poda soportar dos usuarios simultneamente. Ese nombre, un juego de palabras sobre MULTICS, es atribuido a Brian Kernighan. En 1970, el nombre se cambi a Unix. El grupo de Investigacin en Informtica quera trasladar el Unix a una mquina ms grande. Thompson y Ritchie adquirieron un DEC PDP-11/20 para aadir procesamiento de texto al Unix. Este sistema, con el programa de procesamiento de texto runoff, fueron llevados al PDP11/20 en 1970. Este sistema de procesamiento de texto, consistente en Unix, un editor de texto y el runoff fueron adoptados por el departamento de patentes de Bell como procesador de texto; runoff evolucion a troff, que adems tiene capacidad de composicin tipogrfica, y es usado an en nuestros das.

FundamentosdeLinux

11

Captulo1Introduccin

Historia de Unix

Timeline:

Introduccion

En 1972 haban 10 computadoras con Unix y se esperaban ms. En 1973, Ritchie y Thompson escribieron el ncleo de Unix en C, un lenguaje de programacin de alto nivel, a diferencia de la mayora de los sistemas, escritos generalmente en ensamblador. Thompson pens en escribir Unix en Fortran, pero encontr dificultades con ese lenguaje, debido a su falta de portabilidad. El Unix en C se poda mantener ms fcilmente, y poda trasladarse a otras mquinas casi sin problemas. El Unix se hizo muy popular por sus innovaciones y por estar escrito en lenguaje de alto nivel modificable de acuerdo a preferencias personales. Y sus conceptos siguieron creciendo: Se incorporaron los redireccionamientos estndar (redireccin de entrada y salida entre dos o ms programas, denotada con el smbolo | (pipe)), sugeridos por Doug Mc. Llory y desarrollados por Thompson a principios de los '70, haciendo posible el desarrollo de la filosofa Unix. En 1974 empez a usarse en Bell la cuarta edicin de Unix. En 1977 salieron la quinta y sexta ediciones con muchas ms herramientas. En 1978 ya eran ms de 600 las mquinas con Unix en Bell y en las Universidades. La sptima edicin de Unix sali en 1979. 12 FundamentosdeLinux

Captulo1Introduccin El sistema III de Unix se convirti en 1982 en la primera versin comercial del sistema Unix de AT&T. Este sistema III y las versiones experimentales se distribuyeron en universidades y otros laboratorios de investigacin, los que modificaron bastante las versiones que adquirieron, hasta el punto de perderse compatibilidad entre versiones distintas. Para solucionar el problema, AT&T introdujo el Unix sistema V versin 1 en 1983 (el sistema IV slo existi en AT&T como versin interna). Con este sistema, comenzara a mantenerse la compatibilidad con otras versiones de Unix. Incorpor algunas caractersticas de BSD, el Unix desarrollado en la Universidad de California en Berkeley, como el editor vi y la biblioteca de manejo de pantalla curses. La versin 2 sali en 1985, con proteccin de archivos y registros para uso exclusivo por un programa, control de trabajos y administracin ampliada del sistema. La versin que sali de Unix a finales de los '80, es la versin 4, que fusiona las versiones ms populares del Unix y los sistemas BSD, Xenix y SunOS, ajustndose a los estndares importantes definidos para el sistema por diversas organizaciones como el IEEE, el ANSI, el NIST, etc. Para ello fue necesario redefinir partes de su estructura, como el sistema de archivos, tratando de mantener compatibilidad con versiones anteriores del sistema V de Unix. Las ltimas versiones son: BSD fue 4.4BSD-Lite release 2 publicada por el CSRG, SunOS SunOS 5.7 El conjunto de rdenes del SVR4 se construy fusionando el conjunto de rdenes del sistema V versin 3.2 con las rdenes populares de BSD, XENIX y SunOS, aadiendo nuevas rdenes y actualizando algunas antiguas. Hubieron, eso s, algunos problemas con rdenes que tenan el mismo nombre, aunque eran de distintas versiones y hacan cosas distintas. Para solucionar ese problema se crearon paquetes de compatibilidad para que los usuarios de estas versiones pudieran usarlas. La versin 4 soporta cuatro intrpretes de rdenes, o shells. Como shell por omisin, tiene una versin ampliada del sistema V estndar.(Bourne Shell) Adems, como ya dije, existen otros tres shells:

El Shell Korn, creado por David Korn, ofrece un superconjunto de las caractersticas del shell del sistema V, incluyendo historia de rdenes, edicin de lnea de comandos y caractersticas ampliadas de programacin.

FundamentosdeLinux

13

Captulo1Introduccin

El Shell C, procedente del sistema BSD y desarrollado por Bill Joy, comparte capacidad de control de trabajos, historia de rdenes, capacidad de edicin, etc.

En 1992 es lanzada la versin 4.2 del sistema V de SVR y en diciembre de 1994 Novell libera SVR4.2MP, que es el lanzamiento final para el sistema V. En 1995 X/Open introduce UNIX 95 programa para la implementacin de Single UNIX Specification, Novell vende la linea UnixWare a SCO. En 1997 Open Group lanza la versin 2 de Single UNIX Specification que incluye la ayuda en tiempo real, para procesadores de 64 bits y ms grandes. En 1998 Open Group introduce UNIX 98 en la familia de la marca incluyendo la base del sistema, las estaciones de trabajo y los servidores, los primeros productos registrados fueron para Sun, IBM and NCR. En 1999 Open Gruop y la IEEE desarrollan en comn la revisin de POSIX y de Single UNIX Specification, lanzando en 2001 la versin 3 unido a IEEE POSIX, en ese mismo ao se lanz el ncleo de Linux 2.4 En 2003 se aprueban la base de la versin 3 de Single UNIX Specification como estndar internacional y se lanza el ncleo de Linux 2.6. Ms informacin al respecto de Estndares Unix se puede ver en http://www.unix.org.

14

FundamentosdeLinux

Captulo1Introduccin

Movimiento OpenSource

OpenSourcey/CdigoAbierto CaractersticasdelOpenSource

LibreRedistribucin Accesoalcdigofuente ProteccinTrabajosDerivados Integridaddelcdigofuente Nodiscriminacindepersonas,grupos,uso UsoycaractersticasdelicenciasOpenSource EjemplosdeLicencias

Introduccion

3. Movimiento Open Source Definicin de Open Source


Cdigo abierto (open source en ingls) es el trmino por el que se conoce al software distribuido y desarrollado de tal forma que puede ser compartido abiertamente entre desarrolladores y usuarios finales con el fin de que todos aprendan de todos. Este trmino empez a utilizarse en 1998 por algunos usuarios de la comunidad del software libre, tratando de usarlo como reemplazo al ambiguo nombre original del software libre (free software). En ingls, "free software" puede significar diferentes cosas. Por un lado, permite pensar en "software por el que no hay que pagar", y se adapta al trmino de forma igualmente vlida que el significado que se pretende (software que posee ciertas libertades). Open source no slo significa acceso al cdigo fuente. Las condiciones de distribucin de un programa open-source deben cumplir con el siguiente criterio:

FundamentosdeLinux

15

Captulo1Introduccin 1. Libre Redistribucin La licencia no debe restringir a nadie vender o entregar el software como un componente de una distribucin de software que contenga programas de distintas fuentes. La licencia no debe requerir royalty ni ningun tipo de cuota por su venta. 2. Cdigo Fuente El programa debe incluir el cdigo fuente, y se debe permitir su distribucin tanto como cdigo fuente como compilado. Cuando de algn modo no se distribuya el cdigo fuente junto con el producto, deber proveerse un medio conocido para obtener el cdigo fuente sin cargo, a travs de Internet. El cdigo fuente es la forma preferida en la cual un programador modificar el programa. No se permite el cdigo fuente deliberadamente confundido (obfuscation). Tampoco se permiten formatos intermedios, como la salida de un preprocesador, o de un traductor. 3. Trabajos Derivados La licencia debe permitir modificaciones y trabajos derivados, y debe permitir que estos se distribuyan bajo las mismas condiciones de la licencia del software original. 4. Integridad del Cdigo Fuente del Autor. La licencia puede restringir la distribucin de cdigo fuente modificado slo si se permite la distribucin de "patch files" con el cdigo fuente con el propsito de modificar el programa en tiempo de construccin. La licencia debe permitir explcitamente la distribucin de software construido en base a cdigo fuente modificado. La licencia puede requerir que los trabajos derivados lleven un nombre o nmero de versin distintos a los del software original. 5. No Discriminar Personas o Grupos. La licencia no debe hacer discriminacin de personas o grupos de personas. 6. No Discriminar Campos de Aplicacin. La licencia no debe restringir el uso del programa en un campo especfico de aplicacin. Por ejemplo, no puede restringir su uso en negocios, o en investigacin gentica.

16

FundamentosdeLinux

Captulo1Introduccin 7. Distribucin de la Licencia. Los derechos concedidos deben ser aplicados a todas las personas a quienes se redistribuya el programa, sin necesidad de obtener una licencia adicional. 8. La Licencia No Debe Ser Especfica a un Producto. Los derechos aplicados a un programa no deben depender de la distribucin particular de software de la que forma parte. Si el programa es extrado de esa distribucin y usado o distribuido dentro de las condiciones de la licencia del programa, todas las personas a las que el programa se redistribuya deben tener los mismos derechos que los concedidos en conjuncin con la distribucin original de software. 9. La Licencia No Debe Contaminar Otro Software. La licencia no debe imponer restricciones sobre otro software que es distribuido junto con el. Por ejemplo, la licencia no debe insistir en que todos los dems programas distribuidos en el mismo medio deben ser software open-source. 10. Ejemplos de Licencias. Las licencias GNU GPL, BSD, X Consortium, y Artistic son ejemplos de licencias que consideramos que cumplen con la definicin de Open Source. Tambin la licencia MPL cumple con la definicin.

FundamentosdeLinux

17

Captulo1Introduccin

Movimiento OpenSource

FreeSoftwareFoundationyGNU

RichardStallman:Fundador ProtegerydistribuirSoftwareLibre(OpenSource) GNUOperatingSystem GNUPublicLicense PrincipalymasimportantelicenciadeOpenSource

GPL

Freeware,Shareware,Adware OpenSource,Apache,FreeBSD

Introduccion

3.1 GNU
El Proyecto GNU es una campaa para difundir el Free Software. Fue iniciada por Richard Stallman en 1984 y pretende implantar la tendencia hacia el desarrollo de software sin lmites de derechos de autor y bajo precio. El proyecto GNU ha desarrollado un sistema completo de software libre llamado GNU (GNU No es Unix) que es compatible con Unix. El documento inicial de Richard Stallman sobre el proyecto GNU se llama Manifiesto GNU. Se escogi como nombre GNU porque era un acrnimo recursivo de GNU No es Unix. La palabra libre se refiere a libertad, no a precio. Puedes o no pagar un precio por obtener software GNU. De cualquier manera, una vez que obtienes el software, tienes tres libertades especficas para usarlo. Primera, la libertad de copiar el programa y darlo a tus amigos o compaeros de trabajo; segunda, la libertad de cambiar el programa como desees, por tener acceso completo al cdigo fuente; tercera, la libertad de distribuir una versin mejorada 18 FundamentosdeLinux

Captulo1Introduccin ayudando as a construir la comunidad (si redistribuyes software GNU, puedes cobrar una cuota por el acto fsico de efectuar la copia, o bien puedes regalarla). El proyecto GNU fue concebido en 1983 como una forma de devolver el espritu cooperativo que prevaleca en la comunidad computacional en das pasados---hacer la cooperacin posible al eliminar los obstculos impuestos por los dueos de software privativo. En 1971, cuando Richard Stallman comenz su carrera en el MIT (Instituto de Tecnologa de Massachusetts), trabaj en un grupo que usaba software libre exclusivamente. Incluso compaas informticas frecuentemente distribuan software libre. Los programadores eran libres de cooperar unos con otros, y frecuentemente lo hacan. En los 80, casi todo el software era privativo, lo cual significa que tena dueos que prohiban e impedan la cooperacin entre usuarios. Esto hizo necesario el Proyecto GNU. Cada usuario de computadoras necesita un sistema operativo; si no existe un sistema operativo libre, entonces no puedes ni siquiera comenzar a usar una computadora sin recurrir a un software privativo. As que el primer elemento en la agenda del software libre es un sistema operativo libre. Un sistema operativo no es slo el ncleo; sino que tambin incluye compiladores, editores, formateadores de texto, software de correo y muchas otras cosas. Por todo esto, escribir un sistema operativo completo es un trabajo bastante grande. Se necesitaron muchos aos. El objetivo inicial de un sistema operativo libre parecido al Unix ha sido alcanzado. En los 90, ya se haba encontrado o escrito los componentes principales, excepto uno: el ncleo. Entonces Linux, un ncleo libre, fue desarrollado por Linus Torvalds. Combinando Linux con el ya casi completo sistema GNU se consigui un sistema operativo completo: un sistema GNU basado en Linux. Se estima que hay cientos de miles de personas que ahora usan sistemas GNU basados en Linux, incluyendo Slackware, Debian, Red Hat y otros.

3.2 FSF (Free Software Foundation)


La Fundacin para el Software Libre (FSF) est dedicada a eliminar las restricciones sobre el copiado, redistribucin, entendimiento, y modificacin de programas de computadoras. FundamentosdeLinux 19

Captulo1Introduccin Promocionando el desarrollo y uso del software libre en todas las reas de la computacin, pero muy particularmente, ayudando a desarrollar el sistema operativo GNU. Muchas organizaciones distribuyen cualquier software libre que este disponible. En cambio, la Fundacin para el Software Libre se concentra en desarrollar nuevo software libre, y en hacer de este software un sistema coherente, el cual puede eliminar la necesidad de uso del software privativo. Adems de desarrollar GNU, FSF distribuye copias de software GNU y manuales por un costo de distribucin, y acepta donaciones deducibles de impuestos (en los Estados Unidos), para apoyar el desarrollo de software GNU. Muchos de los fondos de la FSF provienen de los servicios de distribucin.

3.3 GPL (GNU General Public License) 'copyleft'


GPL es un tipo de licencia sobre la propiedad intelectual en la cual nicamente se exige que aquellos desarrollos hechos con material licenciado bajo GPL sean a su vez GPL. Se trata de proteger la no ocultacin de cdigo. La licencia GPL se aplica al software de la FSF (Free Software Foundation) y el proyecto GNU y otorga al usuario la libertad de compartir el software y realizar cambios en l. Dicho de otra forma, el usuario tiene derecho a usar el programa, modificarlo y distribuir las versiones modificadas pero no tiene permiso de realizar restricciones propias con respecto a la utilizacin de ese programa modificado. La licencia GPL o copyleft (contrario a copyright) fue creada para mantener la libertad del software y evitar que alguien quisiera apropiarse de la autora intelectual de un determinado programa.

3.4 Tipos de Licencias en Linux


La licencia de software es una especie de contrato, en donde se especifican todas las normas y clusulas que rigen el uso de un determinado programa, principalmente se estipulan los alcances de uso, instalacin, reproduccin y copia de estos productos.

20

FundamentosdeLinux

Captulo1Introduccin En el momento en que usted decide descargar, instalar, copiar o utilizar un determinado SOFTWARE, implica que usted acepta las condiciones que se estipulan en la LICENCIA que trae ese programa. Adems de las licencias mencionadas en la seccin anterior esta el FreeBSD y APACHE. El propsito de FreeBSD es el de proporcionar software a cualquier para cualquier propsito sin obligaciones. En base al tipo de licenciamiento y restricciones / derechos que nos proporcionan stas tenemos las siguientes categoras de software. Free Software La palabra anglosajona free traducida al espaol tiene dos aceptaciones: libre y gratis. Cuando hablamos de free software tenemos la tendencia a creer que se trata solamente de programas que el usuario puede utilizar sin pagar un peso y que normalmente se encuentran gratis en Internet. Pero free software es mucho mas que eso. Segn Richard Stallman, fundador del proyecto GNU, el trmino software libre ha sido mal interpretado, pues no tiene nada que ver con el precio, tiene que ver con libertad. Open Source Es necesario aclarar que Open Source y Free Software son esencialmente lo mismo, la diferencia radica en que los defensores del Free Software no estn ciento por ciento de acuerdo con que las empresas disfruten y distribuyan Free Software ya que, segn ellos, el mercado corporativo antepone la utilidad a la libertad, a la comunidad y a los principios y por ende no va de la mano con la filosofa pura detrs del Free Software. Open Source es el software que puede ser compartido abiertamente entre desarrolladores y usuarios finales de tal forma que todos aprendan de todos. Tal es el caso de Linux, que espera juntar a desarrolladores de todo el mundo, profesionales y aficionados a la espera del despegue definitivo de la tecnologa bajo licencia Open Source.

FundamentosdeLinux

21

Captulo1Introduccin Software de Dominio Publico El software de dominio pblico no est protegido por las leyes de derechos de autor y puede ser copiado por cualquiera sin costo alguno. Algunas veces los programadores crean un programa y lo donan para su utilizacin por parte del pblico en general. Lo anterior no quiere decir que en algn momento un usuario lo pueda copiar, modificar y distribuir como si fuera software propietario. As mismo, existe software gratis protegido por leyes de derechos de autor que permite al usuario publicar versiones modificadas como si fueran propiedad de este ltimo. Freeware Es software que el usuario final puede bajar totalmente gratis de Internet. La diferencia con el Open Source es que el autor siempre es dueo de los derechos, o sea que el usuario no puede realizar algo que no est expresamente autorizado por el autor del programa, como modificarlo o venderlo. Un ejemplo de este tipo de software es el traductor Babylon, Quintessential, BSPlayer, etc. Shareware Es software que se distribuye gratis y que el usuario puede utilizar durante algn tiempo. El autor requiere que despus de un tiempo de prueba el usuario pague por el software, normalmente a un costo bastante bajo, para continuar usando el programa. Algunas veces el programa no deja de funcionar si el usuario no paga, pero se espera que este ltimo pague una suma de dinero y se registre como usuario legal del software para que adems del programa reciba soporte tcnico y actualizaciones. El usuario puede copiar el software y distribuirlo entre sus amigos pero se espera que que estos ltimos paguen por el programa despus de culminado su perodo de prueba. El 'bajo costo' del shareware se debe a que el producto llega directamente al cliente (Internet), evitando as los costos de empaque y transporte. (Por ejemplo. WinRar). A menudo el software shareware es denominado como software de evaluacin. Hay tambin software shareware que deja de funcionar despus de un periodo de prueba, los llamados Try Out.

22

FundamentosdeLinux

Captulo1Introduccin Adware Como ya sabemos, existen varios tipos de programas gratuitos: shareware, programas de prueba, normalmente de 30 das, freeware, programas gratuitos sin lmite de uso, ahora ha salido una nueva clase demoninada "Adware", que no son mas que programas financiados con publicidad. Es decir, el software es gratuito en su uso a cambio de tener un banner de publicidad visible en todo momento mientras utilizamos el programa. Se supone que ste es el nico precio que debemos pagar por usar este tipo de aplicaciones, al menos eso nos dicen. Pero, en ocasiones, estos programas aprovechan que tienen que estar conectados a la Red para descargarse la publicidad y pueden enviar algunos datos personales.

FundamentosdeLinux

23

Captulo1Introduccin

Origenes de Linux

CreadoporLinuxTorvalds PrimeraVersinLiberado:

0.02el5deOctubrede1991

Linux1.0liberadoel15deMarzode1994 Versinactual(enero2005):2.6.10 LinuxserefierealncleodelSistemaOperativo (kernel) SecomplementaconSoftwareyherramientas variasdeOpenSource

Introduccion

4. Orgenes de Linux
Linux, el ncleo o kernel de GNU/Linux, se desarroll originalmente como un proyecto que Linus Torvalds emprendi en su tiempo libre. Se inspir en Minix, un sistema Unix bsico desarrollado por Andy Tannenbaum. Las primeras discusiones acerca del ncleo Linux tuvieron lugar en el grupo de noticias de Usenet comp.os.minix. Estas discusiones se centraban sobre todo en el desarrollo de un sistema pequeo y acadmico de Unix para usuarios de Minix que queran algo ms. El primitivo desarrollo del ncleo Linux se centr en las caractersticas multitarea del interfaz en modo protegido del 80386, escrito en cdigo ensamblador. Nunca se hizo un anuncio de la versin 0.01. Las fuentes del 0.01 ni siquiera eran ejecutables. Contenan slo los rudimentos bsicos de las fuentes del ncleo y daban por supuesto que se tena acceso a una mquina con Minix para compilarlas y experimentar con ellas. El 5 de octubre de 1991 Linus Torvalds anunci la primera versin oficial'' del ncleo Linux, la 24 FundamentosdeLinux

Captulo1Introduccin versin 0.02. En este punto, Linus poda ejecutar bash (el GNU Bourne Again Shell) y gcc (el compilador C GNU) pero no mucho ms. De nuevo, estaba pensado como un sistema para hackers. La orientacin principal fue el desarrollo del ncleo; el soporte de usuarios, la documentacin y la distribucin todava no haban sido atendidos. Despus de la versin 0.03 Torvalds dio el salto a la versin 0.10, segn empez a trabajar ms gente en el sistema. Despus de varias revisiones posteriores, Linus increment el nmero de versin a la 0.95 en marzo de 1992 para reflejar su impresin de que el sistema estaba preparado para un inminente lanzamiento oficial (Generalmente a un programa no se le numera con la versin 1.0 hasta que no est en teora completo, o libre de errores). Casi ao y medio despus, a finales de diciembre de 1993, el ncleo de estaba todava en la versin 0.99, acercndose rpidamente a la versin 1.0. Torvalds ha continuado liberando nuevas versiones del ncleo, consolidando aportes de otros programadores y haciendo cambios por su cuenta. Todas las versiones de Linux que tienen el nmero de sub-versin (el segundo nmero) par, pertenecen a la serie "estable", por ejemplo: 1.0.x, 1.2.x, 2.0.x, 2.2.x, 2.4.x y actualmente 2.6.x, mientras que las versiones con sub versin impar, como la serie 2.5.x, son versiones de desarrollo, es decir que no son consideradas de produccin. Adems de estas versiones "oficiales" del ncleo, es posible obtener versiones "alternativas" en otras fuentes. Los encargados de las Distribuciones de Linux, normalmente mantienen sus propias versiones del ncleo, que a veces incluyen por ejemplo, controladores que no han sido incorporados a la versin oficial. La versin mas reciente es la 2.6.10, que sali el 24 de diciembre del 2004.

FundamentosdeLinux

25

Captulo1Introduccin

Caractersticas de Linux

TipoUnix(NoUnix) Multiusuario Multitarea Confiable MltiplesArquitecturassoportadas OpenSource

Introduccion

5. Caractersticas de Linux
Es un sistema operativo multitarea y multiusuario, como lo son todas las otras versiones de UNIX. Esto significa que muchos usuarios pueden autenticarse en el sistema y ejecutar programas, y hacerlo de forma simultnea. Incluyen control de tareas POSIX (que se usa en los shells csh y bash), las pseudo-terminales (dispositivos tty), y soporte para teclados nacionales o personalizados que se cargan dinmicamente. soporta consolas virtuales que le permiten cambiar entre sesiones de login en una nica consola del sistema. El sistema operativo soporta varios sistemas de ficheros para almacenar los datos, como el sistema de ficheros ext2. Hay soporte para los sistemas de ficheros de Xenix y UNIX System V, as como los sistemas de ficheros de MS-DOS y el VFAT de Windows entre muchos otros. El sistema de ficheros de CD-ROM ISO 9660 tambin est soportado.

26

FundamentosdeLinux

Captulo1Introduccin Proporciona una implementacin completa del software de redes TCP/IP. Incluidos controladores de dispositivo para muchas tarjetas Ethernet habituales, y tambin SLIP (Serial Line Internet Protocol) y PPP (Point-to-Point Protocol), que proporcionan acceso a una red TCP/IP a travs de una conexin serie, PLIP (Parallel Line Internet Protocol), y NFS (Network File System - Sistema de Ficheros de Red). Tambin est soportada toda la gama de clientes y servicios TCP/IP, lo que incluye FTP, telnet, NNTP, SMTP, etc.. Algunas caractersticas tcnicas importantes son: el ncleo soporta ejecutables con paginacin por demanda, comparticin de las pginas de memoria de los ejecutables mediante la tcnica copy-on-write. Implementa tambin la paginacin de disco. Puede reservarse en el disco hasta un Gigabyte de espacio de intercambio en hasta 8 particiones de 128 megas cada una, entre muchas otras.

FundamentosdeLinux

27

Captulo1Introduccin

Distribuciones

UnaDistribucineselempaquetamientoy seleccindeSoftwarequeunacompaao individuorealizaalrededordeunkerneldeLinux Distribucionesconocidas


RedHat SuSe Gentoo Mandrake Debian etc.

Introduccion

6. Distribuciones mas conocidas


Una distribucin es un conjunto de aplicaciones y herramientas de instalacin y configuracin, las cuales operan en conjunto con el ncleo de Linux. Existe una amplia variedad de distribuciones de Linux, algunas estn enfocadas a propsitos muy especficos (e.g. seguridad, servidores de alto rendimiento) y otras a propsitos generales (e.g. una computadora de escritorio). Listar todas las distribuciones existentes de Linux es una tarea difcil, www.linux.org tiene listadas aproximadamente 340 distribuciones diferentes. Para hacerlo ms sencillo, te presentamos a continuacin la lista de las distribuciones ms populares.

Mandrake
MandrakeSoft fue creado en 1998 con el propsito de hacer Linux ms fcil de usar para cualquiera. Naci como una distribucin basada en RedHat, aadiendo algunas caractersticas 28 FundamentosdeLinux

Captulo1Introduccin que no estaban integradas, como el entorno grfico KDE y un instalador grfico simple y sencillo de usar. Mandrake es ideal para usuarios nuevos que no desean involucrarse con profundos conocimientos tcnicos, debido a su facilidad de uso.

RedHat
RedHat es la distribucin ms conocida y usada en el mundo, la compaa fue fundada en 1994 y adems de dedicarse a la produccin de la distribucin ofrece otros servicios como lo son: Red Hat Network o las certificaciones como RHCE (Red Hat Certified Engineer). Es por esto que Red Hat es ampliamente aceptada en la industria de la tecnologa informtica (TI).

LGIS Linux
LGIS GNU/Linux 9 es una versin modificada de RedHat 9 (Shrike). LGIS GNU/Linux 9 es una distribucin orgullosamente mexicana la cual surge de la necesidad de contar con la ltima versin de la distribucin ms utilizada a nivel mundial, con todas sus actualizaciones, adems de la inclusin del Escritorio Ximian Desktop 2 (XD2) con todos los productos libres (Evolution, RedCarpet, etc.) lo que permite entre otras cosas mantener el sistema actualizado al 100% y manipular toda la informacin personal con la mejor herramienta para ello (Evolution), adems, la versin "Ximian" de OpenOffice la Suite de Oficina libre que est reemplazando a sus contrapartes propietarias.

Knoppix
Knoppix es una distribucin basada en Debian que tiene una caracterstica muy especial, la cual es que se ejecuta directamente del CD sin necesidad de instalarlo en el disco duro. Puede ser usado como una herramienta de recuperacin o bien para echarle un vistazo a Linux antes de instalarlo.

Gentoo
Gentoo Linux es una distribucin de reciente creacin basada en cdigo fuente, es decir provee, en conjunto con su sistema de paquetes, una jerarqua de instrucciones que automatiza la descarga, compilacin, actualizacin y empaquetado de software en tu mquina. Esto te permite optimizar, configurar y mantener al da tu computadora, a tu manera y sin restricciones FundamentosdeLinux 29

Captulo1Introduccin con las ltimas versiones de software. Esta distribucin es ideal tanto para novatos que deseen conocer su sistema Linux a fondo como administradores de red, programadores y usuarios de Slackware o Linux from Scratch.

Debian
El proyecto Debian naci en 1993 como una organizacin de individuos que tienen como causa comn crear un sistema operativo 100% libre. Debian Linux es una distribucin completamente libre alejada de todo tipo de asociacin comercial y software propietario. Su desarrollo por parte de programadores de todo el mundo es uno de los ms grandes llevados a acabo por la comunidad de software libre. Ms all del aspecto tcnico Debian es acerca de libertad.

Slackware
Slackware fue la primera distribucin de Linux como las conocemos hoy en da. Su filosofa es mantener absolutamente todo sencillo (KISS) tomando muchas ideas de los UNIX originales, tales como el sistema de arranque. Muchos usuarios prefieren Slackware precisamente por esa sencillez, la instalacin es basada en texto y es tan sencilla que un columnista de la Linux Journal Magazine coment que podra completar una instalacin de Slackware sin un monitor conectado a la computadora. Parte de esta sencillez es la carencia de sistemas automatizados de configuracin, sin embargo incluye un sencillo sistema de paquetes. Excelente como puente entre Linux y sistemas BSD tanto para usuarios avanzados como para novatos.

SuSE
SuSE se enfoca al mercado de los escritorios y servidores, y es famoso por ser muy fcil de instalar y por su herramienta de configuracin llamada YaST. El desarrollo de SuSE es un tanto cerrado ya que no proveen versiones beta de su distribucin y adems no colocan imgenes ISO para descargar la distribucin desde Internet.

30

FundamentosdeLinux

Captulo1Introduccin

Lycoris Desktop/LX
Destkop/LX es un sistema operativo basado en Linux hecho por la compaa Lycoris la cual proclama ser el proveedor lder de Linux especficamente orientado al mercado del escritorio.

Lindows
Lindows es una distribucin dirigida al consumidor, con un look and feel al de Microsoft Windows XP o Apple MacOS X, lo cual incluye soporte para ejecutar aplicaciones de Microsoft Windows como Microsoft Office. Esta distribucin no es de libre acceso, pues tiene un costo por licencia.

Xandros
Xandros es una distribucin canadiense basada en Corel Linux que se enfoca en crear una solucin de escritorio que combina lo mejor de las tecnologas de cdigo abierto con una atencin corporativa hacia el soporte y facilidad de uso, as como compatibilidad con software de Microsoft Windows.

Linux From Scratch


Linux From Scratch (LFS) es un proyecto que consiste en proveer los pasos necesarios para construir desde cero tu propia distribucin. Una de las mejores maneras de conocer como funciona un sistema Linux por dentro, as como conocer la relacin entre los componentes del sistema.

Fedora Core
Fedora Core es el nuevo proyecto creado por la empresa Red Hat, creadora de una de las distribuciones de Linux ms importantes y utilizadas que existen. Este nuevo proyecto surge debido a que RedHat Linux pas a llamarse RedHat Enterprise Linux y ser solo distribuida con soporte tcnico y por tanto, de pago. Pero Red Hat es consciente de que no puede dejar de ofrecer una distribucin libre y es por ello que ha creado el proyecto Fedora.

FundamentosdeLinux

31

Captulo1Introduccin

Estndares

LinuxStandardBase(LSB) FileHierachyStandard(FHS) LinuxInternationalizationSpecification(Li18nux) Posix Otros

Introduccion

7. Estndares Linux Standard Base ( LSB ).


Linux Standard Base, (acrnimo LSB), es un proyecto en conjunto de varias distribuciones Linux bajo la organizacin estructural de The Free Standards Group para disear y estandarizar la estructura interna de sistemas operativos basados en Linux. LSB est basado en la especificacin POSIX, la especificacin SUS y otros estndares abiertos, pero los extiende en ciertas reas. Linux Standard Base (LSB) es una especificacin creada para armonizar y uniformizar el funcionamiento y compatibilidad de las diferentes distribuciones existentes en el mercado. Lo que se pretende es evitar que vuelva a pasar lo mismo que en su da le ocurri al Unix: debido a la falta de concreciones en su sistema de licenciamiento, diversas empresas hicieron sus propias versiones del sistema, llegando a la situacin que tenemos hoy en da, con Unix fragmentado y diversas versiones en el mercado totalmente incompatibles entre si a nivel de 32 FundamentosdeLinux

Captulo1Introduccin binarios. El objetivo de LSB es desarrollar y promover un grupo de estndares que incrementarn la compatibilidad entre las distribuciones Linux y permitir que las aplicaciones se ejecuten en cualquier sistema que cumpla con los estndares. Adicionalmente, LSB ayudar a coordinar esfuerzos para recluir fabricantes de software para portar y escribir productos para Linux. El LSB ha sido criticado por no tomar en cuenta aportaciones de proyectos externos a los miembros de la esfera de la compaa, ms notablemente del proyecto Debian. por ejemplo, LSB especifica que las paquetes de software deberan ser entregados en el formato RPM de Red Hat, que fue inventado mucho despus que el formato de paquete "deb" de Debian, y los desarrolladores de Debian no quieren cambiar su formato, el cual naturalmente consideran superior. Algunos dicen que esto no es un gran problema ya que el formato RPM especificado por el LSB es bien soportado por el programa "alien" de Debian que puede ser usado para importar paquetes almacenados en otros formatos binarios. La lista de individuos y organizaciones que participan en el esfuerzo de la LSB o aprueban la LSB incluye:

Linux Hardware Solutions, Inc. Red Hat Software, Inc. S.u.S.E. GmbH Software in the Public Interest El proyecto Debian VA Research. The China Electronics Standardization Institute Gelato Federation Japan Linux Association Linux International 33

FundamentosdeLinux

Captulo1Introduccin

Linux Professional Institute (LPI) OSDL The Open Group PC Open Architecture Developers' Group (OADG) Software in the Public Interest (SPI) Software Liberty Association of Taiwan (SLAT) USENIX Association University of Wisconsin

Si quiere conocer mas a fondo de este estndar visite la pagina: http://www.linuxbase.org/

Filesystem Hierarchy Standard (FHS).


El Filesystem Hierarchy Standard (Estndar de Jerarqua de Sistema de Ficheros) o FHS define los directorios principales y sus contenidos en Linux y otros sistemas de la familia Unix. Se dise originalmente en 1994 para estandarizar el sistema de archivos entre distribuciones Linux, basndose en la tradicional organizacin de directorios de sistemas Unix. En 1995 se ampli el mbito del estndar a cualquier Unix que se adhiriese voluntariamente. Todos los archivos y directorios aparecen bajo el directorio raz /, aunque se encuentre en distintos dispositivos fsicos. Ejemplos de directorios definidos por FHS incluyen:

/bin/ Comandos esenciales binarios para todos los usuarios (cat, ls, cp...) /dev/ dispositivos esenciales /home/ Directorios de programa de los usuarios /etc/ Archivos de configuracin del sistema /lib/ Bibliotecas esenciales para los binarios de /bin y /sbin

34

FundamentosdeLinux

Captulo1Introduccin

/var/ Archivos de variables, como logs y ficheros temporales /opt/ Paquetes de programas de aplicaciones estticos /sbin/ Binarios de superusuario esenciales (init, route, ifup..) /proc/ Sistema de Archivos que documenta el estado del ncleo (kernel), principalmente Archivos de texto (tiempo, red...)

/mnt/ Sistemas de Archivos montados temporalmente especificaciones sobre este estndar se encuentran en la pgina:

Las

http://www.pathname.com/fhs/

Li18nux
El estndar li18nux establece las especificaciones globales para que el sistema Unix sea compatible internacionalmente. En la pgina oficial (http://www.li18nux.org) se encuentran dichas especificaciones.

FundamentosdeLinux

35

Captulo1Introduccin

Ambientes

ShellsoLineasdeComandos

Bash Zsh Tcsh Xfree86 GNOME KDE etc.

GUI(GraphicalUserInterface)

Introduccion

8. Ambientes
Al contrario que otros sistemas operativos, por defecto el trabajo con Linux no se realiza de una forma grfica, sino introduciendo comandos de forma manual. Linux dispone de varios programas que se encargan de interpretar los comandos que introduce el usuario y realiza las acciones oportunas en respuesta. Estos programas denominados shell son el modo tpico de comunicacin en todos los sistemas Unix incluido Linux. Para muchas personas el hecho de tener que introducir los comandos de forma manual les puede parecer intimidante y difcil, aunque como se ver ms adelante los comandos de Linux son relativamente simples y muy poderosos. No obstante, casi todas las distribuciones ms recientes incluyen el sistema X Window, el cual es el encargado de controlar y manejar la interfaz de usuario. X Window es mucho ms poderoso que otros entornos similares como Microsoft Windows, puesto que permite que el usuario tenga un control absoluto de la representacin de los elementos grficos.

36

FundamentosdeLinux

Captulo1Introduccin

8.1 Shells
Este modo se basa en la ejecucin de una serie de comandos, que son interpretados por un programa o shell. Linux dispone de varios de estos programas pero el ms habitual es conocido como bash o Bourne Again Shell. Bash shell se trata de una shell de Linux compatible con POSIX que implementa parte de los comandos de C shell y toda la sintaxis de Bourne Shell. En BASH podemos utilizar variables que, normalmente, sern todas en maysculas. Existen tanto variables de lectura, como variables de lectura-escritura. Las variables de lectura "simplemente" nos darn informacin sobre el estado del shell o del sistema, sin embargo, las de lectura-escritura nos van a permitir cambiar el comportamiento de bash. El shell bash cuando recibe una orden (por ejemplo, un comando pasado por teclado) lo primero que hace es ver si la orden est dentro de sus rdenes internas (como return, exit...), luego mira en los alias, y despus busca el comando en el $PATH. El shell zsh es similar al ksh, pero incluye muchas caractersticas del csh, combina la programacin y la sintaxis del shell Korn con las caractersticas tiles del shell C, fue escrito en 1990 por Paul Falstad. El shell tcsh se basa en csh, pero tambin contiene la edicin de linea de comandos, un mecanismo de historiales y otras caractersticas que no se encuentran en csh. Si Linux se ha arrancado en modo texto el sistema arranca de forma directa el shell y queda a la espera de introduccin de nuevos comandos. Si se ha arrancado en modo grfico se puede acceder al shell de dos formas: Se puede acceder al shell del sistema presionando alguna de las siguientes combinaciones de teclas: <ctrl>+<alt>+<F1> <ctrl>+<alt>+<F2>

FundamentosdeLinux

37

Captulo1Introduccin <ctrl>+<alt>+<F3> <ctrl>+<alt>+<F4> <ctrl>+<alt>+<F5> <ctrl>+<alt>+<F6> Esto hace que el sistema salga del modo grfico y acceda a alguna de las seis consolas virtuales de Linux, a las cuales tambin se puede acceder cuando se arranca en modo de texto. Para volver al modo grfico hay que presionar <ctrl>+<alt>+<F7> o <ctrl>+<alt>+<F8>. La segunda forma es ms cmoda y menos radical permitiendo acceder al shell desde el mismo entorno grfico. Para esto hay que abrir un programa llamado terminal o consola, por ejemplo: kconsole (en el entorno KDE), xterm, gnome-terminal ( en GNOME), etc como se ha visto anteriormente. Existen una serie de nociones bsicas que hay que tener en cuenta a la hora de introducir los comandos. En primer lugar citaremos las siguientes:

Los comandos hay que teclearlos exactamente. Las letras maysculas y minsculas se consideran como diferentes.

En su forma ms habitual (los shells de Bourne o de Korn), el sistema operativo utiliza un signo de $ como prompt para indicar que est preparado para aceptar comandos, aunque este carcter puede ser fcilmente sustituido por otro u otros elegidos por el usuario. En el caso de que el usuario acceda como administrador este signo se sustituye por #. Cuando sea necesario introducir el nombre de un fichero o directorio como argumento a un comando, Linux, permite escribir las primeras letras del mismo y realiza un autorrellenado al presionar la tecla del tabulador. Si no puede distinguir entre diversos casos rellenar hasta el punto en el que se diferencien.

38

FundamentosdeLinux

Captulo1Introduccin

8.2 Grficos
X Window es el entorno grfico habitual de los sistemas Unix. El sistema X Window se compone de dos parte principales el servidor X y el programa para la gestin de las ventanas. El servidor X es el programa que se encarga realmente de dibujar en la pantalla. Por el contrario el gestor de ventanas como su nombre indica es el encargado de crear las ventanas y gestionar su apariencia. Debido a este modelo, la apariencia de las aplicaciones vara segn se use uno u otro gestor de ventanas, entre los que destacan por su sencillez de uso los entornos GNOME y KDE. Al instalar Linux el sistema puede preguntar si se desea arrancar Linux en modo texto o en modo grfico. Si se ha seleccionado esta ltima opcin Linux arrancar directamente X Window, en caso contrario en la linea de comandos hay que escribir startx con lo cual se arranca el modo grfico. 8.2.1 GNOME El proyecto Gnome es uno de los ms grandes avances que pudieron impulsar a Linux no slo como el sistema operativo consentido de los usuarios expertos de PC, y una seria amenaza para Windows 2000, predecesor de Windows NT, como sistema operativo de redes, sino tambin como un serio competidor en el campo de la PC de escritorio. La historia de Gnome se remonta hacia mediados de 1997 cuando el mexicano Miguel de Icaza y un grupo de amigos concluyeron que en Linux haca falta una interfaz grfica de usuario fcil de utilizar, adems de una interfaz que permitiese al desarrollador de software trabajar con la misma comodidad con la que se haca en otros sistemas operativos. Fue as que junto con Federico Mena y otros colaboradores dio inicio Gnome. Se trata de un ambiente grfico de ventanas que se ejecuta en X Window, o modo grfico que utilizan los sistemas operativos basados sobre Unix. Permite al usuario trabajar cmodamente administrando archivos o carpetas de un modo similar al utilizado en Windows. Su aspecto esttico, por otro lado, es sumamente agradable y con la capacidad de poderse personalizar y aplicar mejoras al gusto del usuario.

FundamentosdeLinux

39

Captulo1Introduccin
Capacidades.

Recordar la configuracin del escritorio. Soporte para varios lenguajes humanos, de modo que que si se desea, pueden agregarse ms sin necesidad de cambiar el software.

Soporta varios protocolos de "Drag & Drop" (arrastra y suelta) para una mxima interaccin con aplicaciones no desarrolladas para Gnome.

Posibilidad de utilizar varios escritorios virtuales, e incluso con configuraciones distintas, que permiten una mejor organizacin de las aplicaciones en uso.

Caractersticas ms notorias.

Un panel, desde donde se se inician las aplicaciones. Un escritorio, en donde se pueden colocar las aplicaciones y los datos. Un conjunto de herramientas estndar para el escritorio y aplicaciones. Un conjunto de caractersticas que hace fcil para las aplicaciones el poder cooperar y coexistir entre si.

El sitio web de gnome donde se puede obtener mas informacin y actualizaciones es: http://www.gnome.org 8.2.2 KDE KDE es un ambiente grfico que posee una coleccin de herramientas de configuracin simple, un administrador de archivos y un ambiente de estilos que har ms fcil y agradable su vida con Linux. Este captulo incluye las referencias para la instalacin, la descripcin de la interfaz del usuario y cmo adaptarlas a las preferencias personales de trabajo. Instalando la interfaz KDE que viene con , usted tiene a su disposicin una interfaz de usuario y otra de administrador personalizadas de acuerdo con la funcin, con las aplicaciones ms utilizadas diariamente. Vale la pena usarlas!

40

FundamentosdeLinux

Captulo1Introduccin KDE atiende a todos los niveles de usuarios: a aqullos que no tienen inters en aprender tecnologas nuevas, como tambin a los usuarios ms avanzados que necesiten algunas funciones adicionales. El ambiente KDE contiene:

Un ambiente de ventanas agradable y fcil de usar; Un administrador de archivos poderoso y de uso simplificado; Ayuda en lnea que le dar apoyo en cualquier situacin. Una interfaz consistente con sus aplicaciones, ya presenta un modelo estndar para las funciones Un emulador de terminales que no ocupa toda la memoria cuando se abren simultneamente muchas ventanas.

El sitio web de KDE donde se puede obtener mas informacin y detalles de KDE es: http://www.kde.org

FundamentosdeLinux

41

Captulo1Introduccin

Acceso al Sistema

Shell
Welcome to Linux (i586) - Kernel 2.4.19-64GB-SMP (0). zeus login: root Password: #

Introduccion

9. Acceso al sistema
Para acceder al sistema se debe ser un usuario vlido, esto es, un usuario que se dio de alta por el administrador del equipo anteriormente, al usuario le fue asignado un nombre de cuenta y un password. Si es el superusuario (root) es preferible que cree otra cuanta de usuario normal para no realizar cambios accidentalmente en el sistema. Se puede ingresar al sistema en modo grfico o modo linea de comandos.

42

FundamentosdeLinux

Captulo1Introduccin

Evaluacin Captulo
1. Qu es Open Source?

2. Qu es GNU?

3. Para que fue creado y qu advierte la GNU General Public Licence?

4. Diferencia entre free software y Open Source?

5. Qu es software de Dominio Pblico?

FundamentosdeLinux

43

Captulo1Introduccin 6. Diferencias entre freeware, shareware y adware.

7. Quin es el creador de Linux?

8. Qu versiones de Linux se consideran estables?

9. Mencione dos caractersticas de Linux que estn presenten en las versiones de UNIX.

10.Qu es una Distribucin?

44

FundamentosdeLinux

Captulo1Introduccin 11. Mencione tres distribuciones de Linux

12.Qu es LSB?

13.Qu es FHS?

14.El sistema que maneja el entorno grfico de Linux se llama?

15.Mencione dos entornos grficos para Linux

FundamentosdeLinux

45

Captulo1Introduccin 16.Mencione 3 condiciones de distribucin de un programa Open Source

17.Cules son las tres libertades especficas cuando se obtiene software GNU?

18.Cul es la funcin de la FSF?

46

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Captulo 2 Manipulacin de
Archivos

FundamentosdeLinux

47

Captulo2ManipulacindeArchivos

Descripcion
TiposDeArchivos estructura Estructuradedirectorios ManejodeDirectorios(navegar,listar,crear,etc) Directoriosdetrabajo VisualizacinyManejodeArchivos CaracteresdeexpansindeNombres BusquedadeArchivos Comparacindearchivos
Manipulacin de Archivos

48

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Conceptos
Los tres conceptos esenciales para el manejo de archivos son:

Tipo de Archivos en Linux Estructura jerrquica de directorios Creacin y nombres de archivos

FundamentosdeLinux

49

Captulo2ManipulacindeArchivos

Tipos de Archivos

Elusodeextensiones(.jpg,.tar,.txt)para identificacindearchivos,parafacilidaddelas personasoaplicaciones EnLinuxsemanejanbasicamentetrestiposde archivos


Ordinarios Directorios Dedispositivo

Manipulacin de Archivos

Tipos de archivos
Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de archivos empleando una serie de caracteres al final del nombre que indiquen el tipo de archivos del que se trata. As, los archivos de texto, HTML, las imgenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente. Pese a esto Linux slo distingue tres tipos de archivos:

Archivos o archivos ordinarios, son los mencionados anteriormente. Directorios (o carpetas), es un archivo especial que agrupa otros archivos de una forma estructurada.

Archivos especiales o de dispositivo, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir informacin en ese archivo equivale a enviar informacin a la

50

FundamentosdeLinux

Captulo2ManipulacindeArchivos impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. Dentro de este tipo de archivos se encuentran los denominados de caracter y los de bloque:

Dispositivos de caracter. Es el tipo ms generico de driver de dispositivos que permiten la transferencia de entrada/salida de cualquier tamao, dependiendo de las capacidades del dispositivo mismo. Los dispositivos que utilizan esta interfaz son: las terminales, impresoras y ratones.

Dispositivo de bloque. Es un driver de dispositivo que utiliza la instalacin automtica del buffer donde se realizan las transferencias de entrada-salida de tamao de hasta 1 Kbyte. Los dispositivos que incluye esta interfaz son: los discos duros, las unidades de disco y la RAM.

FundamentosdeLinux

51

Captulo2ManipulacindeArchivos

Estructura de directorios

bin boot dev etc home lib mnt opt proc root sbin tmp usr var

Manipulacin de Archivos

2.2 Estructura bsica


La estructura de un archivo contiene dos aspectos fundamentales, los inodos y los datos:

Los inodos son un ndice de nodo que contiene la informacin sobre el archivo, como son permisos del archivo, el propietario y el tamao del archivo.

Los datos son el contenido actual del archivo, puede estar vaco o tener un tamao muy grande.

La estructura de archivos es jerrquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. El sistema de archivos de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homognea con el resto de los sistemas Unix. 52 FundamentosdeLinux

Captulo2ManipulacindeArchivos Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no est ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:\, d:\ o m:\. En los sistemas Unix, y por lo tanto en Linux, existe una nica raz llamada / de la que cuelgan todos los archivos y directorios, y que es independiente de que dispositivos estn conectados al ordenador. Estos archivos se organizan en distintos directorios cuya misin y nombre son estndar para todos los sistema Unix.

Raz del sistema de archivos. Contiene archivos del sistema representando los dispositivos que estn fsicamente Este directorio esta reservado para los archivos de configuracin del sistema. En este

/dev /etc

instalados en el ordenador.

directorio no debe aparecer ningn archivo binario (programas). Bajo este deben aparecer otros dos subdirectorios:

/etc/X11 /etc/skel

Archivos de configuracin de X Window Archivos de configuracin bsica que son copiados al directorio del usuario

cuando se crea uno nuevo.

/lib /proc /sbin /usr

Contiene las bibliotecas necesarias para que se ejecuten los programas que residen Contiene archivos especiales que o bien reciben o envan informacin al kernel del Contiene programas que son nicamente accesibles al superusuario o root. Este es uno de los directorios ms importantes del sistema puesto que contiene los

en /bin (no las bibliotecas de los programas de los usuarios).

sistema (Se recomienda no modificar el contenido de este directorio y sus archivos).


programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente:

/usr/X11R6 /usr/bin /usr/doc /usr/etc /usr/include

Contiene los programas para ejecutar X Window. Programas de uso general, lo que incluye el compilador de C/C++. Documentacin general del sistema. Archivos de configuracin generales. Archivos de cabecera de C/C++ (.h). 53

FundamentosdeLinux

Captulo2ManipulacindeArchivos

/usr/info /usr/lib /usr/man /usr/sbin /usr/src

Archivos de informacin de GNU. Bibliotecas generales de los programas. Manuales accesibles con el comando man. Programas de administracin del sistema. Cdigo fuente de programas.

Existen adems de los anteriores otros directorios que se suelen localizar en el directorio /usr, como por ejemplo las carpetas de los programas que se instalen en el sistema.

/var

Este directorio contiene informacin temporal de los programas (lo cual no implica que

se pueda borrar su contenido).

54

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Nombres de Archivo

Todoslosarchivoscuentanconunnombrede acuerdoalosiguiente:

De1a255caracteres Cualquiercarcterexcepto/ Noserecomiendaelusodeloscaracteresespeciales paraelshell:\,?,*,[],(),^,,',`,!,&,~,<,> Maysculasyminsculassondiferentes

Manipulacin de Archivos

2.3 Nombres de archivos


La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo pede contener cualquier tipo de informacin, desde una imagen en formato PNG o JPEG a un texto o una pgina WEB en formato HTML, etc. El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene.

Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas:

Un nombre de archivo puede tener entre 1 y 255 caracteres.

FundamentosdeLinux

55

Captulo2ManipulacindeArchivos

Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = \ ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear archivos con estos caracteres o espacios hay que introducir el nombre del archivo entre comillas.

Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas y minsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt carta.Txt

56

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Manejo de Directorios

Navegandoentredirectorios

cd,pwd,.,.. Ls Mkdir,rmdir,rm

Listadodedirectorios

CreadoyBorradodeDirectorios

Manipulacin de Archivos

3 Manejo de directorios
En esta seccin se vern los comandos bsicos para entrar, salir, crear directorios asi como listar los archivos contenidos en estos.

3.1 Comandos bsicos


Por lo general cada orden Linux puede tomar una serie de opciones definidas en forma de argumentos. Estos usualmente comienzan con el carcter "-". a) Navegando En primer lugar para saber como movernos entre los distintos directorios es importante saber en donde estamos localizados, esto se logra con el comando pwd. El comando pwd indica el camino absoluto del directorio en el cual nos encontramos actualmente. Su sintaxis es:
# pwd

FundamentosdeLinux

57

Captulo2ManipulacindeArchivos y despliega informacin sobre la pantalla como la siguiente:


/home/alumno/pruebas

Una vez que ya se sabe donde se est localizado se puede empezar a mover por la estructura de los directorios, para esto se utiliza el comando cd, abreviacin de "cambio de directorio". La sintaxis de esta comando es:
# cd <directorio>

este comando nos posiciona dentro del directorio que se especifica. Al entrar al sistema se comienza en el directorio home del usuario con el que se entr al sistema, si un usuario alumno quiere entrar a una subcarpeta documentos debe ejecutar:
alumno@curso1:~/alumno> cd documentos alumno@curso1:~/documentos>

Ahora alumno est en el subdirectorio documentos, para volver al directorio padre de este, usar la orden:
alumno@curso1:~/documentos> cd .. alumno@curso1:~>

Dese cuenta del espacio entre "cd" y "..". Cada directorio tiene una entrada de nombre ".." la cual se refiere al directorio padre. De igual forma, existe en cada directorio la entrada "." la cual se refiere a si mismo. As que el comando
alumno@curso1:~/documentos> cd . alumno@curso1:~/documentos>

nos deja donde estamos. Tambin pueden usarse nombres con el camino absoluto en la orden cd. Para ir al directorio de instructor con cd, introduciremos la siguiente orden.
alumno@curso1:~/documentos> cd /home/instructor alumno@curso1:~/instructor>

58

FundamentosdeLinux

Captulo2ManipulacindeArchivos Tambin, usando cd sin argumentos nos llevar a nuestro directorio de origen.
alumno@curso1:~/instructor> cd alumno@curso1:~/alumno>

b) Listado (ls y variantes) Ahora que ya sabe como moverse por los directorios necesitamos el comando ls, que despliega la lista de archivos y directorios, por defecto los del directorio activo. Su sintaxis es: # ls [opciones] [directorios] Por ejemplo:
alumno@curso1:~/alumno> ls documentos imagenes tareas alumno@curso1:~/alumno>

Aqu podemos ver que alumno tiene tres entradas en su directorio actual: documentos, tareas e imgenes. Algunas opciones que toma este comando son:

-F

clasifica los archivos desplegados en la pantalla, al final de cada archivo coloca un

caracter que identifica de que tipo es;


/ indica que es un directorio, * indica que es un archivo ejecutable, @ indica que es una liga, si no tiene ningun caracter al final indica

que es un archivo ordinario.

ls -a Muestra todos los archivos incluyendo algunos que ordinariamente estn ocultos para

FundamentosdeLinux

59

Captulo2ManipulacindeArchivos el usuario (aquellos que comienzan por un punto). Se recuerda que el archivo punto . indica el directorio actual y el doble punto .. el directorio padre, que contiene, al actual.

ls -l Esta es la opcin de lista larga: muestra toda la informacin de cada archivo incluyendo: protecciones, tamao y fecha de creacin o del ltimo cambio introducido.

ls --color ls -t ls -r

Muestra el contenido del directorio coloreado.

Muestra ordenando por da y hora de modificacin. Muestra el directorio y lo ordena en orden inverso.

ls -R Muestra directorios recursivos. ls -k Muestra el tamao del archivo en kilobytes. ls -s Muestra el tamao del archivo en bloques. ls -x Lista en columnas.

El comando ls admite los caracteres de sustitucin o metacarcteres (*) y (?). El caracter * representa cualquier conjunto o secuencia de caracteres. El caracter ? representa cualquier caracter, pero slo uno. c) Creacin y borrado (mkdir,rmdir y rm) El comando que se utiliza para la creacin de archivos es mkdir, su sintaxis es:
# mkdir [opciones] directorio.

Sus opciones son:


-m modo - establece los permisos de los directorios creados. -p - crea los directorios padre que falten para cada argumento directorio

Pruebe lo siguiente:
alumno@curso1:~/alumno> mkdir musica

60

FundamentosdeLinux

Captulo2ManipulacindeArchivos
alumno@curso1:~/alumno> ls -F documentos/ imagenes/ musica/ tareas/ alumno@curso1:~/alumno> cd musica alumno@curso1:~/musica> ls alumno@curso1:~/musica>

Acaba de crear un directorio nuevo y moverse a l. Para borrar un archivo se usa el comando rm. ("rm" viene de "remove"), su sintaxis es :
# rm [opciones] <archivos | directorios>

las opciones son:


-r - borra recursivamente un directorio. -f - borra forzosamente en caso de que no se tenga permiso de escritura en forma directa. -i - ejecuta el comando de forma interactiva.

Un ejemplo de le ejecucin de este comando es:


alumno@curso1:~/tarea> rm resumenlibro alumno@curso1:~/tarea> ls -F investigacion tareas_ingles/ alumno@curso1:~/tarea>

Ntese que rm por defecto no preguntar antes de borrar un archivo, sea cuidadoso. Una orden relacionada con rm es rmdir. Esta orden borra un directorio, pero slo si est vacio. Su sintaxis es:
# rmdir directorio

Si el directorio contiene archivos o subdirectorios, rmdir se quejar.

FundamentosdeLinux

61

Captulo2ManipulacindeArchivos

Directorios predeterminados

HomeDirectory

Directoriodetrabajopordefectodecadausuario Directorioenelqueseestaactualmente(.) Directoriosuperiordeldirectorioactual(..)

Directorioactual

DirectorioPadre

Manipulacin de Archivos

3.2 Home directory


El Home Directory es el directorio personal para cada usuario dado de alta en el sistema, este directorio de encuentra sobre /home/usuario, es el directorio de inicio al prender la mquina y en donde se guarda la informacin de dicho usuario.
alumno@curso1:~/alumno> pwd /home/alumno alumno@curso1:~/alumno>

Contiene subdirectorios, datos y archivos de configuracin de su entorno de trabajo. Una vez que te encuentres en tu home directory puedes desplazarte entre otros directorios de otros usuarios, si se tienen los permisos necesarios.
alumno@curso1:~/alumno> cd /home/instructor bash: cd: /home/instructor/: Permission denied

Nos podemos referir al propio home directory con el metacaracter ~ de la siguiente manera:
alumno@curso1:~/alumno> cd /home/alumno/tarea alumno@curso1:~/alumno> cd ~/tarea

62

FundamentosdeLinux

Captulo2ManipulacindeArchivos

3.3 Directorio actual


En cualquier momento, las rdenes que teclee al intrprete de comandos son dadas en trminos de su directorio de trabajo actual. Puede pensar en su directorio actual de trabajo como en el directorio en el que actualmente est "situado". Cuando entra en el sistema, su directorio de trabajo se inicializa a su directorio home_/home/usuario . En cualquier momento que referencie a un archivo, puede hacerlo en relacin a su directorio de trabajo actual, en lugar de especificar el camino completo del archivo. Vemos un ejemplo. Juan tiene el directorio tareas, y tareas contiene el archivo investigacin. Si Juan quiere echar un vistazo a ese archivo, puede usar la orden
/home/Juan# more /home/Juan/tareas/investigacion

La orden more simplemente muestra el archivo, pantalla a pantalla. Pero, como el directorio de trabajo actual de Juan es /home/Juan, podra haberse referido al archivo de forma relativa a su directorio de trabajo actual. La orden sera
/home/Juan# more tareas/investigacion

FundamentosdeLinux

63

Captulo2ManipulacindeArchivos

Rutas Absolutas

RutaAbsoluta

Cuandosehacereferenciaaundirectoriodesdelaraiz sehabladerutaabsoluta. ej.$cd/usr/local/bin Elcomandopwddespliegalarutaabsolutadeldirectorio actual Cuandosehacereferenciaadirectoriosapartirdel directorio

RutaRelativa

Manipulacin de Archivos

3.4 Ruta absoluta


Todos los archivos tienen una nica direccin absoluta que es hecha con la concatenacin de todos los nombres de directorios bajo la jerarqua, empezando desde el directorio root hasta el archivo. Los nombres de los directorios estn separdos por /. Una ruta absoluta siempre empieza con /, que representa el directorio root. Usando la ruta absoluta es fcil accesar a los archivos de arriba del directorio actual de trabajo. Otro trmino para referirse a la ruta absoluta es ruta completa El comando pwd despliega la ruta absoluta de tu directorio de trabajo actual.

64

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Rutas Relativas

Rutarelativa

Cuandoreferenciamosdirectoriosapartirdelactual
mariog@venus:~>pwd /home/mariog mariog@venus:~>cdtemp mariog@venus:~/temp>pwd /home/mariog/temp mariog@venus:~/temp>

Ousando.y..

Cd.. ./a.out

Manipulacin de Archivos

3.5 Ruta relativa


Una ruta relativa especifica un archivo con una ruta que es relativa a tu directorio actual de trabajo. Para acceder a archivos en el directorio de trabajo actual o cualquiera de los subdirectorio, se puede usar la ruta relativa. Por ejemplo, si est sobre el directorio /home/Juan/# , para listar un archivo en el directorio /home/Juan/tareas/tareas_ingles/tarea1, use:
#ls -l tareas/tareas_ingles/tarea1

Una ruta relativa no empieza con / Se pueden utilizar los directorios especiales punto (.) y punto-punto (..)en rutas relativas para acceder a archivos dentro del directorio de trabajo actual. Por ejemplo , si est en el directorio / home/Pedro y quiere listar el directorio /home/Juan/tareas, debe teclear el comando:

FundamentosdeLinux

65

Captulo2ManipulacindeArchivos
#ls ../Juan/tareas

Recuerde que el directorio punto-punto esta en todos los directorios y hace referencia al directorio padre . En el ejemplo el directorio padre de /home/Pedro es /home.

66

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Creacin y Organizacin de Archivos

CopiadeArchivos

cp ln mv touch

Enlacesaarchivos

TrasladoyrenombredeArchivos

CreaciondeArchivos(vacios)

Manipulacin de Archivos

4. Visualizacin y manejo de archivos


Se vern los comandos bsicos para la manipulacion de archivos.

4.1 Creacin y organizacin de archivos


Copia de archivos. Comando cp Este comando tiene la siguiente sintaxis:
cp [opciones] <fuente> <destino>

y hace una copia de fuente y le llama destino. Si destino no exista, lo cre con los mismos atributos de fuente. Si destino exista antes, su contenido queda destruido y es sustituido por el de fuente. El archivo destino estar en el mismo directorio que fuente. Tanto fuente como destino indican el nombre de un archivo, que puede incluir la ruta al mismo si alguno de ellos no se encuentra en el directorio actual.

FundamentosdeLinux

67

Captulo2ManipulacindeArchivos Algunas opciones de este comando son:

-p - si es posible preserva los atributos (dueo, grupo y permisos) de los archivos originales en las copias.

-d - preserva los enlaces simblicos en lugar de copiar los archivos a los que estos apuntan. Actualmente es as por defecto.

-L - no preserva los enlaces simblicos, o sea copia los archivos a los que estos apuntan. -R - copia recursvamente un directorio. -a - es equivalente a las opciones -dpR. -i - utiliza una forma interactiva (pregunta antes de sobrescribir el destino). -l - hace enlaces fuertes a los archivos fuentes en lugar de copiarlos.

Otra posibilidad es:


cp fuente1 fuente2 destino

que hace copias de fuente1 y fuente2 en el directorio destino. Enlaces a archivos. Comando ln En Linux un mismo archivo puede estar repetido con ms de un nombre, ya que con el comando cp se pueden realizar cuantas copias se desee del archivo. Pero, a veces, es ms prctico tener un mismo archivo con varios nombres distintos, y lo que es ms importante, poder acceder a l desde ms de un directorio. En Linux esto recibe el nombre de enlaces mltiples a un archivo. El ahorro de espacio de disco es importante al poder compartir un archivo con ms de un usuario. Estos enlaces son muy prcticos a la hora de utilizar archivos que pertenecen a directorios distintos. Gracias a los enlaces se puede acceder a muchos archivos desde un mismo directorio, sin necesidad de copiar en ese directorio todos esos archivos. La sintaxis de este comando es,

68

FundamentosdeLinux

Captulo2ManipulacindeArchivos
# ln [opciones] origen destino

A partir de este momento el archivo origen tiene dos nombres: origen y destino. A diferencia de los comandos cp y mv, este comando toma ms precauciones, ya que advierte previamente si el nombre destino est ocupado, y en este caso no se ejecuta. Las opciones ms comunes de este comando son:

-d - permite al super-usuario (root) hacer enlaces rgidos a directorios. -s - crear enlace simblico (ligas suaves). -f - borrar los archivos de destino que ya existen.

Los archivos enlazados a otro se borran como los archivos normales. Si se borra el archivo original permanece su contenido en los archivos enganchados. Existen ligas fuertes y ligas sueves (opcin -s) la diferencia entre estas dos tipos de ligas es que las primeras realizan una copia del archivo al archivo original, hasta llegar a confundir cal es cal, y cada archivo creado con ligas fuertes tiene un i-nodo diferente, el i-nodo es un nmero que identifica al archivo, cuando se crean ligas suaves, el i-nodo se conserva, el concepto de liga suave es muy similar a un acceso directo en Windows, ya que no ocupa espacio en disco duro. Traslado y cambio de nombre de archivos. Comando mv Este comando mueve un archivo de un directorio a otro. Este comando tiene una sintaxis similar al comando cp:
# mv [opciones] fuente destino

El comando mv realiza la misma funcin que el cp pero adems destruye el archivo original. En definitiva traslada el contenido de fuente a destino; a efectos del usuario lo que ha hecho es cambiar el nombre a fuente, llamndole destino. Algunas opciones de este comando son:

FundamentosdeLinux

69

Captulo2ManipulacindeArchivos

-i - ejecuta el comando de forma interactiva, o sea, pregunta ante de sobrescribir el destino si existiera.

-u - actualiza (upgrade) el destino con el fuente solo si este es ms reciente.

Hay que recalcar que el comando mv sirve as mismo para cambiar el nombre de los archivos. Borrado de archivos. Comando rm Este comando tiene la sintaxis siguiente:
# rm [opciones] archivo

Este comando elimina uno o ms archivos de un directorio en el cual tengamos permiso de escritura. Con este comando resulta facilsimo borrar archivos intiles, y desgraciadamente, tambin los tiles.Por eso es conveniente y casi imprescindible emplear lo opcin -i, de la forma siguiente:
# rm -i archivo

Con esta opcin, Linux pedir confirmacin para borrar cada archivo de la lista, de si realmente se desea su destruccin o no. Se recomienda usar siempre este comando con esta opcin para evitar el borrado de archivos tiles. Por ejemplo, si se teclea,
# rm -i superfluo

aparecer en pantalla el aviso siguiente:


remove superfluo?

y habr que contestar y (yes) o n (not). En este comando se pueden utilizar los caracteres de sustitucin (* y ?), como por ejemplo,
#rm fich*

que borrara todos los archivos del directorio actual que comiencen por fich. El comando rm * borrar todos los archivos del directorio actual, mientras que

70

FundamentosdeLinux

Captulo2ManipulacindeArchivos
#rm -i *

realiza una labor anloga, pero con previa confirmacin. Crear archivos. Comando touch Puede crear archivos nuevos usando el comando touch, que crear un archivo vaco que puede usar para aadir textos o datos. Este comando tiene la sintaxis siguiente
# touch file

FundamentosdeLinux

71

Captulo2ManipulacindeArchivos

Visualizacin de archivos

Texto

cat,moreyless tailyhead od strings

Datos

Manipulacin de Archivos

4.2 Visualizacin de archivos de texto


Comando cat Este comando permite visualizar el contenido de uno o ms archivos de forma no formateada. Tambin permite copiar uno o ms archivos como apndice de otro ya existente. La sintaxis de este comando es la siguiente:
# cat [opciones] file

Las opciones que toma este comando son:


-n - numera las lneas -s - elimina las lneas en blanco

Algunas formas de utilizar este comando son las siguientes,

72

FundamentosdeLinux

Captulo2ManipulacindeArchivos
# cat file

Saca por pantalla el contenido del archivo filename.


# cat file1 file2...

Saca por pantalla, secuencialmente y segn el orden especificado, el contenido de los archivos indicados.
# cat file1 file2 >file3

El contenido de los archivos file1 y file2 es almacenado en file3.


# cat file1 file2 >>file3

El contenido de file1 y file2 es aadido al final de file3.


# cat >file1

Acepta lo que se introduce por el teclado y lo almacena en file1 (se crea file1). Para terminar se emplea <ctrl>d Comandos more y less Estos comandos permiten visualizar un archivo pantalla a pantalla. El nmero de lineas por pantalla es de 23 lneas de texto y una ltima linea de mensajes, donde aparecer la palabra more. Cuando se pulsa la barra espaciadora (el espacio en blanco), se visualizar la siguiente pantalla. Para salir de este comando se pulsa <ctrl>d o q. La sintaxis es:
# more [opciones] file

Las opciones son:


-c - edita pantalla a pantalla -d - nmero de lineas que se van a editar +nmero de lneas - nmero de la lnea a partir de la cual se va a editar.

El comando less es muy similar al anterior pero permite el desplazamiento a lo largo del texto FundamentosdeLinux 73

Captulo2ManipulacindeArchivos empleando las teclas de cursores pudiendo desplazarse hacia arriba o abajo de un archivo. Su sintaxis es:
# less file

Comandos head y tail Estos dos comandos funcionan como filtros. Puede utilizar el comando head en caso de que desee ir al inicio de un archivo. El comando es:
#head [opciones] file

Las opciones que toma este comando son:


-c N - escribe los primeros N bytes. -n N - escribe las primeras N lineas en vez de las primeras 10 (que es el valor predeterminado).

Head puede ser muy til, pero como est limitado a las primeras lneas, no podr ver el largo del archivo. El contrario de head es tail. Usando tail, puede volver a ver las diez ltimas lineas de un archivo. Esto puede ser muy til para ver las ltimas lineas de un archivo de registro y as ver los mensajes importantes del sistema. Tambin puede usar tail para vigilar cmo se actualizan los archivos de registro (log). Usando la opcin -f, tail imprimir automticamente los nuevos mensajes desde un archivo abierto a la pantalla en tiempo real. El camando es:
# tail [opciones] file

Sus opciones son:


-c N - escribe los ltimos N bytes -n N - escribe las ltimas N lneas. -f - escribir la ltima parte del archivo a medida que va creciendo. Esta opcin es muy til para monitorear archivos de registro que van creciendo con el tiempo.

74

FundamentosdeLinux

Captulo2ManipulacindeArchivos Por defecto, slo puede leer las ltimas diez lneas de un archivo, aunque puede cambiar este nmero especificndolo, como en el comando a continuacin:
#tail -20 file

4.3 Visualizacin de archivos de datos


Comando od El comando od (Octal Dump), nos permite ver byte a byte el contenido de un archivo. Su sintaxis es:
# od [opciones] file

Las opciones posibles de este comando son:


-b - interpreta los bytes como nmeros octales -c - interpreta los bytes como caracteres -h - interpreta los bytes como nmeros hexadecimales

od -cb archivo nos muestra los caracteres, y debajo de cada caracter el nmero octal del byte. Cuando se ejecuta este comando la primera columna es la direccin de cada lnea que vemos. od nos muestra el contenido del archivo expresado en nmeros octales, generalmente tomados de a dos bytes. Comando strings El comando strings busca secuancias de cuatro a mas caracteres imprimibles en un archivo binario y lo imprime en la salida estndar. Su sintaxis es:
# strings [opciones] file

Las opciones que toma son:

-a explora archivos en su totalidad

FundamentosdeLinux

75

Captulo2ManipulacindeArchivos

-n num especifica el mnimo de la longitud de la cadena a reportar, el valor por default es 4. -t formato escribe cada cadena precedida por su compensacin de byte en el archivo. El formato a usar para la compensacin son: d (decimal), o (octal) y x (hexadecimal).

76

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Expansin de nombres

Metacaracteresdeexpansiondenombres,permiten lasustituciondenombresycaracterescuandose hacereferenciaavariosarchivos


* ? [] [^]

Manipulacin de Archivos

4.4 Caracteres de expansin de nombres


Los smbolos * y ? son denominados metacaracteres ya que se pueden utilizar para sustituir caracteres a la hora de ejecutar varios comandos. EL * puede ser sustituido por un nmero indeterminado de cualquier combinacin de caracteres.
alumno@curso1:~/etc> ls pas* passwd passwdpasswd.lock

El ? slo representa a un caracter cualquiera.


alumno@curso1:~/etc> ls pas?wd passwd

Los rangos, expresados con corchetes "[ ]", son metacaracteres de posicin y reemplazan todos los caracteres que estn dentro del rango definido. Los rangos que pueden definirse son letras FundamentosdeLinux 77

Captulo2ManipulacindeArchivos minsculas, letras maysculas y nmeros del 0 al 9. Un rango no puede ir desde la "a" minscula hasta la "Z" mayscula. Existen formas de definir estos rangos, pero hay que usar "rangos combinados".

78

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Busqueda de Archivos

Medianteusodebasededatosindexada

Updatedb Locate find[camino][opciones]

Medianteunabusquedaexplicitayporpatrones

Manipulacin de Archivos

4.5 Bsqueda de archivos


Comando locate El comando locate busca en una base de datos, actualizada peridicamente, todos los paths en la jerarqua de archivos que contengan una cadena determinada. Su sintaxis es:
# locate

El programa updatedb actualiza la base de datos de locate. Explora por completo el sistema de archivos (incluidos otros sistemas de archivos que se encuentren montados a no ser que se le indique lo contrario) e inserta todos los directorios y archivos que encuentre en la base de datos que usa locate para recuperar dicha informacin. La sintaxis de este comando es:
# updatedb

FundamentosdeLinux

79

Captulo2ManipulacindeArchivos Comando find El comando find es uno de los ms poderosos en un sistema Linux. Permite buscar de forma recursiva en un directorio a todos los archivos que cumplan ciertas condiciones. Las condiciones pueden estar relacionadas con el nombre de los archivos, el tamao, los permisos, el tipo, las fechas de acceso y modificacin, etc. La sintaxis es:
# find [camino] [opciones]

Algunas opciones:

-name <expresin> : permite especificar patrones para los nombres de los archivos a buscar. -type <tipo> : permite indicar el tipo de archivo a buscar. Este puede ser d para directorios, f para archivos regulares, l para enlaces simblicos, b para dispositivos de bloque, c para dispositivos de caracter, p para tuberas y s para sockets.

-size +/-<n> : permite indicar el tamao mximo y/o mnimo de los archivos a buscar. Por defecto el tamao se expresa en bloques de 512 bytes, pero si se precede este por un caracter c se referir a bytes, k a kilobytes, w a palabras de dos bytes y b a bloques.

-perm [+|-]<modo> : permite referirse a aquellos archivos cuyos permisos sean exactamente modo, incluya todos los de modo (signo -) o incluya alguno de los de <modo> (signo +). El valor de <modo> se expresa en forma numrica.

-nouser/-nogroup : permite referirse a aquellos archivos o directorios que no posean dueo o grupo asociado.

-inum <n> : permite referirse a los archivos a travs de su nmero de i-nodo. -exec <comando>: permite definir un comando a ejecutarse para cada resultado de la bsqueda. La cadena {} se sustituye por el nombre de los archivos encontrados. El caracter ; permite indicar la finalizacin del comando.
# find /etc -name '*.conf' -->busca en /etc todos los archivos con extensin conf

80

FundamentosdeLinux

Captulo2ManipulacindeArchivos

Comparacin y verificacin de Archivos

Comparacin

cmp diff sum md5sum

Verificacinmediantealgoritmosdechecksum

Manipulacin de Archivos

4.6 Comparacin de archivos


Comando diff El comand diff fu creado para comparar el contenido de dos archivos cualesquiera y mostrar en una lista las lneas en las que se hayan detectado diferencias. La sintaxis es:
# diff [opcion)] file1 file2

-q - indica tan slo si existen diferencias entre el contenido de los dos archivos seleccionados.

-b - hace que se ignoren los espacios en blanco tanto finales como tratados en grupo.

FundamentosdeLinux

81

Captulo2ManipulacindeArchivos Comando cmp El comando cmp compara el contenido de dos archivos, imprimiendo en pantalla por defecto la primera diferencia encontrada (si existe). Esta orden recibe como parmetro los dos nombres de los archivos a comparar. Su sintaxis es:
# cmp [opciones] file1 file2

Las opciones son:


-l - muestra un listado completo de todas las diferencias. -s - el comando devuelve un valor de comparacin que ser:

0 si los archivos son idnticos. 1 si los archivos son diferentes. 2 si ha habido un error en la ejecucin del comando.

Comando sum El comando sum calcula e imprime en la salida estndar la suma de las palabras de un archivo, ademas de imprimir el numero de bloques del archivo. Si no se especifica un nombre de archivo se utiliza la salida estndar. La sintaxis es:
# sum [opciones] file

Las opciones pueden ser:


-r usa el algoritmo sum BSD, usa bloques de 1K -s usa el algoritmo sum del sistema V, usa bloques de 512 bytes

Comando md5sum El comando md5sum es similar al comando sum, con la diferencia de que utiliza el algoritmo de la suma md5.

82

FundamentosdeLinux

Captulo2ManipulacindeArchivos Las sumas MD5, tambin llamadas digests o hashes, son cadenas obtenidas mediante la aplicacin de un algoritmo de cifrado llamado MD5 a una entrada. MD5 (Message Digest Algorithm #5), es un algoritmo de cifrado que realiza la comprobacin de la integridad de archivos binarios, mediante la generacin de cdigos de control llamados "hashes", una clase de huella digital nica.

FundamentosdeLinux

83

Captulo2ManipulacindeArchivos

Evaluacin Captulo
1. Cules son los tipos de archivo que maneja Linux?

2. Qu es un archivo de dispositivo de caracter y de dispositivo de bloque?

3. Mencione los aspectos fundamentales de la estructura de un archivo

4. Mencione las caractersticas de la estructura de archivos en Linux

84

FundamentosdeLinux

Captulo2ManipulacindeArchivos 5. Describa el Contenido de: /usr /var /etc /usr/lib.

6. Qu es un archivo?

7. Cules son las reglas que debe cumplir el nombre de un archivo?

8. Qu es el Home Directory?

FundamentosdeLinux

85

Captulo2ManipulacindeArchivos 9. Mencione la diferencia entre ruta absoluta y ruta relativa.

10.Mencione la diferencia entre liga fuerte y liga suave .

86

FundamentosdeLinux

Captulo3EdicindeArchivos

Captulo 3 Edicin de Archivos

FundamentosdeLinux

87

Captulo3EdicindeArchivos

Descripcin
UsoyEditoresdetextoenLinux VI Modosdeoperacin Terminacin Navegacin Insercinyedicindetexto copiadoypegadodetexto Bsqueda Configuracin

Edicin de Archivos

88

FundamentosdeLinux

Captulo3EdicindeArchivos

1 Descripcin del captulo.


En este captulo se introduce al alumno a una de las tareas bsicas del sistema operativo y de las ms importantes que es la edicin de archivos de texto, los cuales pueden ser programas, archivos de configuracin u otros, enfocndose principalmente en el editor VI.Los puntos que se describen son: Uso y editores de texto en Linux Editor VI Modos de operacin de VI Terminacin de VI Navegando en VI Insercin y Edicin de texto en VI Copiado y pegado de Texto Bsqueda de Texto en VI Configuracin del Editor VI

FundamentosdeLinux

89

Captulo3EdicindeArchivos

Uso y editores comunes

EdicinyModificacindearchivosdetexto

Cartas Programas(C,Fortran,Java,etc.) Archivosdeconfiguracin VIoVim Emacs Pico Otros(Joe,etc.)

Editorescomunes:

Edicin de Archivos

2 Editores de texto.
Un editor de texto es simplemente un programa usado para la edicin de archivos que contienen texto, como una carta, un programa en C, o un archivo de configuracin del sistema.

2.1 Uso
Los editores de texto se utilizan principalmente para la edicin de archivos de configuracin y la creacin de shell.

2.2 Editores de texto comunes en Linux


a) Vi & Vim. VI es un editor de texto visual, de pantalla completa, basado en el editor de lnea ed. Es un editor que se puede encontrar en cualquier sistema UNIX, desde antiguas estaciones Sun Solaris o HP-UX hasta las ms recientes distribuciones de GNU/Linux o FreeBSD, OpenBSD, 90 FundamentosdeLinux

Captulo3EdicindeArchivos etc. Por otro lado existe VIM (VI Improved, VI Mejorado) es el editor de texto VI de toda la vida, pero con una serie de mejoras y aadidos que lo hacen an mejor:

es bastante ms amigable que VI, ya que permite un uso ms intuitivo incorpora coloreado de sintaxis para casi todos los lenguajes de programacin y ficheros de configuracin que puedas encontrar en Linux/UNIX.

la posibilidad de utilizar un interfaz grfico

VI es adems un editor muy potente, que permite hacer complicadas operaciones en grandes archivos con unos pocos comandos, por lo que su aprendizaje puede ahorrarnos mucho tiempo. Otra ventaja de VI es que al ser tan comn suele encontrarse incluso en disquetes de rescate. Para ejecutar este editor se corre el comando vi para utilizar VIM se corre simplemente vim, en algunas distribuciones de Linux vi y vim suelen ser el mismo comando. . Si quieres utilizar la interfaz grfica de VIM ejecuta gvim. En el resto del tema conservaremos el nombre de VI aunque estemos trabajando con VIM. Este comando admite varias opciones que se le pueden pasar como parmetros, p. ej. el nombre del archivo que queremos editar:
# vi file

Tambin puedes especificar la linea en la que quieres empezar con el parmetro +n. Por ejemplo para empezar en la lnea 12:
# vi file +12

en la pgina http://www.vim.org/ puede encontrar mas informacin sobre este editor b)Emacs Emacs, junto con VI, ha sido uno de los primeros editores de texto para UNIX. Visualmente presenta un interfaz similar al de un editor de texto corriente, lo cierto es que tiene muchsimas FundamentosdeLinux 91

Captulo3EdicindeArchivos posibilidades que no atribuiras a un editor de texto para consola. Por ejemplo, el indentado automtico de cdigo Pascal, Java, C, o cualquier lenguaje para el que haya escrito un mdulo para Emacs de asistencia a la programacin, nos ofrece posibilidades de trabajar con CVS, enviar correo electrnico, y un largo etctera de posibilidades. Existen cientos de combinaciones de teclas en Emacs que nos permiten hacer cualquier cosa sin ver un men. Los usuarios expertos de Emacs valoran esta posibilidad, pues a la hora de escribir con prisas, un men puede ser algo muy incmodo. Pero para los que estn empezando la tecla F10 nos da acceso a todos los mens de Emacs, men, archivo, edicin, cambio entre las distintas ventanas de edicin de texto, etc.
# emacs file

Si desea ms informacin consulte la pgina http://www.gnu.org/software/emacs/emacs.html c) Pico Pico es un editor simple orientado a pantalla de texto, basado en el compositor de sistemas de mensajes 'Pine'. Al igual que Pine, las rdenes se muestran al pie de la pantalla, y se suministra ayuda sensible al contexto. Los caracteres se insertan de forma inmediata en el texto al teclearlos. Para interactuar con el editor hay que utilizar una combinacin de teclas del tipo:

control-letra (^ letra abreviado):


^X sale del editor ^O guarda los cambios ^W busca una cadena ^K corta texto ^U pega texto cortado previamente ^G obtienes ayuda

92

FundamentosdeLinux

Captulo3EdicindeArchivos
# pico file

Para mas informacin visite la pgina de pico http://www.nano-editor.org/ d) Joe El primer editor que suele aprenderse en Linux es Joe, por ser muy sencillo y rpido. Puede usarse para editar cualquier fichero. Todos estos ficheros pueden editarse con ms comodidad con editores ms potentes como Emacs o VIM pero para ello es necesario aprender a usarlos primero, lo cual puede no resultar tan sencillo como aprender Joe. El manejo de Joe se basa en combinaciones de teclas con la tecla Control. Denotaremos por Ctrl-x y a la combinacin de teclas que se obtiene al pulsar la tecla Control, seguidamente (sin soltar la primera) pulsar la tecla x y despus (soltando las teclas anteriores) pulsar la tecla y.
# joe file

FundamentosdeLinux

93

Captulo3EdicindeArchivos

VI y modos de Operacin

VI(visualeditor)

Basadoende EditorcomunenUnix Insercin Comandos Edicinenlinea(ed)


#vi [opciones] archivo1 [archivo2 ...]

SusmodosdeOperacin

Inicio:

Edicin de Archivos

Vi & Vim 3.1 Iniciando vi


La sintaxis de vi es:
# vi file

donde file es el nombre del archivo que desea editar.

3.2 Modos de operacin


Mientras se usa vi, en cualquier momento estar en uno de tres posibles modos de operacin. Estos modos son conocidos como modo comandos, modo insercin y modo ltima lnea. Cuando inicia vi, est en el modo comando. Este modo le permite usar ciertas rdenes para

94

FundamentosdeLinux

Captulo3EdicindeArchivos editar archivos o cambiar a otros modos. Por ejemplo, tecleando "x" mientras est en el modo rdenes, borra el carcter que hay debajo del cursor. Las teclas del cursor mueven el cursor por el fichero que estamos editando. Generalmente, las rdenes usadas en este modo son slo de uno o dos caracteres de longitud. Habitualmente insertar o editar texto desde el modo insercin. Usando vi, probablemente dedicar la mayor parte del tiempo en este modo. Inicia el modo de insercin al usar una orden como "i" (para "insertar") desde el modo de rdenes. Una vez en el modo de insercin, ir insertando texto en el documento desde la posicin actual del cursor. Para salir del modo de insercin y volver al de rdenes, pulse | esc |. Modo ltima lnea es un modo especial usado para proporcionar ciertas rdenes extendidas a vi. Al usar esos comandos, aparecen en la ltima lnea de la pantalla (de ah el nombre). Por ejemplo, cuando teclea ":" desde el modo de rdenes, entrar en el modo ltima lnea, y podr usar rdenes como "q!" (para salir de vi sin guardar los cambios). El modo de ltima lnea es habitualmente usado por rdenes vi mayores de un carcter. En el modo de ltima lnea, introduce una orden de una sola lnea y pulsa <enter> para ejecutarla.

FundamentosdeLinux

95

Captulo3EdicindeArchivos

Terminacin de Vi

ModoComandos

ZZ: :wq :q :q! :w

Modode

Edicin de Archivos

3.3 Terminacin de vi y salvado de archivos


Al pulsar ":", el cursor se desplazar a la ltima linea de la pantalla; est en modo ltima linea. En el modo de ltima lnea hay disponibles una serie de rdenes extendidas.

La orden :q!, la cual permite salir de vi sin guardar los cambios. La orden :wq salva el archivo y sale de vi. La orden ZZ (desde el modo de comandos, sin ":") es equivalente a :wq. Para salvar el fichero sin salir de vi, simplemente use :w.

Recuerde que debe pulsar <enter> despus de introducir la orden para que esta se ejecute en el modo ltima linea.

96

FundamentosdeLinux

Captulo3EdicindeArchivos

Movimiento del Cursor

Movimientoscomunes:

h(),j(),k(),l() w(iniciosiguientepalabra),b(iniciopalabraanterior,0 (iniciodelinea),$(findelinea) H(iniciotextoenpantall),M(mitadtextoenpantalla),L (finaltextoenpantalla) <CTRLf>avance,<CTRLb>retroceso

Enlalinea:

Enpantalla:

Porpginas

Edicin de Archivos

3.4 Comandos para movimiento del cursor


Para desplazarse por el documento, adems de las teclas del cursor existen otras opciones tales como:

h para mover el cursor a la izquierda j para mover el cursor hacia abajo k para mover el cursor hacia arriba l para mover el cursor a la derecha w mueve el cursor al comienzo de la siguiente palabra b lo lleva al comienzo de la palabra anterior 0 (cero) mueve el cursor al comienzo de la lnea actual 97

FundamentosdeLinux

Captulo3EdicindeArchivos

Movimiento del cursos (Cont.)

PosicionesEspecficas

Galfinaldelarchivo NGalalineaN :NalalineaN

Enmodode

Edicin de Archivos

$ lo lleva al final de la lnea. <ctrl-F> avanza el cursor una pantalla hacia adelante <ctrl-B > lo lleva una pantalla atrs. H Inicio pantalla actual M Mitad pantalla actual L Final Pantalla actual G. para llevar el cursor al final del archivo, Puede tambin desplazarse a una linea arbitraria; por ejemplo, pulsando la orden 10G llevar el cursor a la linea 10 del fichero. Para desplazarse al comienzo, use 1G.

98

FundamentosdeLinux

Captulo3EdicindeArchivos

Insercin Texto

Enmodocomandopodemosejecutarvarios comandosparainsertartexto,lainsercindura hastateclear<ESC>


Insercindetextoapartirdelaposicinactual(i) Insercindetextodelantedelcarcteractual(a) Insercindenuevalineadelantedelcursor(o) InsercindeNuevalineaenlaposicindelcursor(O) Insercininiciodelinea(I) Insercinalfinaldelinea(A)

Edicin de Archivos

3.5 Comandos para insercin de texto


Al iniciar Vi se encuentra en modo comandos para poder insertar texto en el archivo, pulse | i | (lo que le har entrar en modo insercin). Mientras inserta texto, puede escribir tantas lineas como desee (pulsando <return> despus de cada una, por supuesto), y puede corregir los errores con la tecla de borrado de caracter. Para salir del modo de insercin y volver al modo de rdenes, pulse <esc>. Hay muchas formas de insertar texto a parte de la orden i:

a inserta texto comenzando detrs de la posicin actual del cursor, en lugar de la posicin actual del cursor.

o para comenzar a insertar texto en la lnea de debajo de la actual s borra el carcter en la posicin del cursor y comienza a insertar texto. 99

FundamentosdeLinux

Captulo3EdicindeArchivos

I comienza a insertar texto al principio de la lnea. A Comienza a insertar texto al final de la lnea. O Comienza a insertar texto en una nueva lnea encima del cursor.

100

FundamentosdeLinux

Captulo3EdicindeArchivos

Edicin de texto

Comandosquepermitencambiar,Substituiry Borrartexto

Reemplazodetexto:

RReemplazohastateclear<ESC> r(caracteractual,porotro)

Cambiodetexto:c,(cw,cb,c^,c$) Substitucin

s(similaraR) Ssubstituyetodalalinea ~minusculaspormayusculasyviceversa

Borradodetextox,d(dw,db,d^,d$dd),D

Edicin de Archivos

3.6 Editando texto (cambiando, borrando)


Para borrar el texto se utiliza el modo de comandos, los comandos son:

x borra el carcter debajo del cursor. dd borrar lineas enteras (es decir, pulse | d | dos veces en una fila). dw borra la palabra sobre la que se encuentra el cursor R sustituye secciones de texto. El uso de R para editar texto es bastante parecido al uso de las rdenes i y a, pero R sobreescribe texto en lugar de insertarlo.

r sustituye un nico carcter situado debajo del cursor. ~ cambia de maysculas a minsculas o viceversa la letra sobre la que se encuentra el cursor.

FundamentosdeLinux

101

Captulo3EdicindeArchivos

s Substitucin de texto S Substitucin del texto hasta el final de la linea c Cambio de texto (c$ cw c^)

Es importante el hecho de que borrar no slo borra, sino que mantiene lo ltimo borrado en un buffer temporal, que servir para pegarlo en otro sitio.

102

FundamentosdeLinux

Captulo3EdicindeArchivos

Copiar y Pegar

Copiar

Comandoy(yw,yb,y$,y^) Comandoyy(yy,NyydondeNindicanumerodelineas) Delantedelcursor:p,

Pegar

npdondennumerodevecesapegartexto nPdondennumerodevecesapegartexto

Posiciondelcursor:P

Buffers

[az]comando

Edicin de Archivos

3.7 Copiado y pegado de texto


El comando para el copiado de texto es y, el comando necesita una orden de desplazamiento despus de la orden, para saber hasta cundo realizar el trabajo.

Y copia la linea completa, es decir, es equivalente a y$, esto tambin se hace con yy. p, el cual pegar el texto despus del cursor P que pegar antes del cursor.

Se pueden utilizar registros para guardar varias lineas por separado y poder utilizarlas despus, la sintaxis para esto es <letra>yy donde <letra> debe estar entre a y z, estos mismos registros se utilizan para pegar <letra>p. Es importante que cuando se utiliza buffer se debe anteponer las comillas antes de la letra y comando de copiado, borrado o pegado.

FundamentosdeLinux

103

Captulo3EdicindeArchivos

Bsqueda de Texto

Busquedadeunpatron

/patron ?patron //?? Siguiente(n) Siguienteensentidocontrarioaloriginal(N)

Busquedahaciaatrsdelarchivo

Repeticinbusqueda

Ocurrencias

Edicin de Archivos

3.8 Bsqueda de texto


Con el caracter especial "/" (slash) podemos realizar bsquedas. Se introduce la "/" y a continuacin se teclea el patrn que se desea localizar: /patrn El patrn podr ser una palabra cualquier otra secuencia de caracteres.

?patrn busca la ocurrencia del patrn recorriendo el fichero hacia atrs. ?? o // repetir la ltima bsqueda. n buscar la siguiente ocurrencia y N repetir la ltima bsqueda pero cambiando el sentido de bsqueda.

104

FundamentosdeLinux

Captulo3EdicindeArchivos

Opciones de Configuracin

Comandoset

setopcion[=valor]

Setall Setnumber Settabstop=5

Archivo.exrc

Edicin de Archivos

3.9 Opciones de configuracin


Para realizar un configuracin mas amigable del editor Vi se utilizan las opciones set, estas opciones se pueden fijar de dos formas distintas:

Desde la propia sesin del editor vi con el comando :set. Mediante el fichero .exrc

Para especificar las opciones desde dentro del editor vi utilice el comando set directamente. Las abreviaturas entre parntesis podran ser utilizadas. Sintaxis:

:set <opcin> <parmetro> (si se espera <parmetro>) Se pueden especificar mltiples opciones en una misma lnea.

:set <opcin>? visualiza el valor de <opcin> :set all visualiza el valor de todas las opciones.

Las opciones mas comunes son: FundamentosdeLinux 105

Captulo3EdicindeArchivos

all Presenta una lista de todas las opciones del editor en la pantalla. Autoindent (abrev. ai, valor por defecto noai) Comienza cada nueva linea de texto de la misma columna como la linea anterior (til para los programadores).

Ignorecase (abrev. ic, valor por defecto moic) Hace que vi haga caso omiso de las maysculas y minsculas durante las bsquedas.

Number ( abrev. nu, valor por defecto nonu) Numera cada lnea de texto. Readonly (valor por defecto noreadonly) Activa la proteccin contra escritura en el archivo que est en proceso de modificacin. Esto impide que se cambie o destruya accidentalmente el contenido del archivo.

Showmatch ( abrev. sm, valor por defecto nosm) Muestra el parntesis o corchete de apertura cuando se escribe el correspondiente parntesis o corchete de cierre. Esta opcin resulta til cuando se escriben expresiones matemticas o se redactan programas en un lenguaje que utilice parntesis o corchetes.

Showmode (valor por defecto noshowmode) Muestra un mensaje como MODO DE ENTRADA o MODO DE SUSTITUCIN en la parte inferior de la pantalla siempre que se est en alguno de los dos modos.

Wrapmargin (abrev. wm, valor por defecto 0(cero)) Cambia el margen derecho. n es igual al nmero de espacios que hay en el margen derecho. Por ejemplo, si utiliza un terminal de 80 columnas, :set wm=8 configura el margen derecho en la columna 72.

El archivo que se encarga de guardar la configuracin de Vi es .exrc, localizado en el home directory, este archivo no se crea por defecto. Cualquier comando que pueda ser utilizado en el modo de entrada de comandos (comandos :), puede ser utilizado en el fichero .exrc, el cual ser cargado automticamente cada vez que inicies vi. Adems, el comando fuente, abreviaciones y las macros pueden ser usadas. No pueden existir lineas en blanco en el fichero .exrc. Los comentarios de especifican comenzando la linea con .

106

FundamentosdeLinux

Captulo3EdicindeArchivos

Evaluacin Capitulo
1. Mencione los editores de texto comunes en Linux

2. Cules son los tres modos de operacin de vi ?

3. Que hacen las siguientes rdenes de vi ESC i EC :q! ESC :qw!

4. Mencione 3 rdenes en vi para el borrado de texto

FundamentosdeLinux

107

Captulo3EdicindeArchivos 5. Mencione 3 rdenes en vi para cambiar texto

6. Qu hacen las siguientes ordenes de vi ? Y p P

7. Explique como se busca texto en vi

8. Con cuales opciones se configura el ambiente de vi?

108

FundamentosdeLinux

Captulo4Lineadecomandos

Captulo 4 Linea de comandos

FundamentosdeLinux

109

Captulo4Lineadecomandos

Descripcin
DefinicindeShelllineadecomandos ShellsenUnix/Linux Bash ExpansindelineadeOrdenes Historiadecomandos Variables Aliases ArchivosdeConfiguracin

Linea de comandos

110

FundamentosdeLinux

Captulo4Lineadecomandos

1 Descripcin del captulo


En el presente captulo se describir el uso de la interfaz de comandos o shell, que es la principal y mas poderosa forma de interactuar con el sistema. Se describirn los siguientes puntos:

Definicin de Shell. Shells utilizados comnmente en Linux y Unix Descripcin de Bash Shell. Expansin de Linea comandos Historia de Comandos Manejo de Variables de Shell Definicin de Aliases Archivos de Configuracin de bash shell.

FundamentosdeLinux

111

Captulo4Lineadecomandos

Definicin

Shell:

Programaqueinterpretayejecutalasordenesconforme seproporcionandesdelaterminal Interpretacinguionesdelshell Expansindecaracterescomodines Manejodeentrada/salidadecomandos RecuperacindeOrdenesprevias Programacinscripting(condicionales,ciclos,variables, etc)

Caractersticas

Linea de comandos

2 Interfaces linea de comando 2.1 Definicin de CLI y/o SHELL


Un shell o interfaz de linea de comando es un programa que interpreta y ejecuta las rdenes conforme se proporcionan desde la terminal. No se requiere ningn privilegio especial para ejecutar un shell; para el sistema operativo UNIX un shell es como cualquier otro programa. Entre las caractersticas ms comunes de un shell estn:

la interpretacin de guiones de shell la expansin de comodines en nombres de archivos la combinacin de rdenes para formar interconexiones la recuperacin de rdenes previas

112

FundamentosdeLinux

Captulo4Lineadecomandos

las construcciones condicionales y los ciclos las variables para crear abreviaturas

FundamentosdeLinux

113

Captulo4Lineadecomandos

Shells comnes

Unix

Sh Ksh Csh Bash Zsh tcsh

Linux

Linea de comandos

2.2 Shells en Unix y Linux


a) Sh (shell Bourne)
El shell Bourne, sh, escrito por Steve Bourne en 1979, es el primero de los shells principales. Los shells ms recientes son ms fciles de usar, porque ofrecen recursos de los que carece el shell Bourne, como la edicin de las lneas de rdenes, la recuperacin de rdenes emitidas previamente, y los alias para las rdenes de uso comn. Entre los recursos importantes que ofrece sh estn los siguientes:

Operadores para la ejecucin en segundo plano, o ejecucin condicional de rdenes. Enunciados para repetir la ejecucin de rdenes, incluida la iteracin a lo largo de una secuencia de valores que pueden asignarse a una variable de iteracin.

Variables substituibles. FundamentosdeLinux

114

Captulo4Lineadecomandos

Exportacin de variables especficas a un proceso hijo. Tres formas de entrecomillado. Ejecucin de rdenes en subshells. Notificacin automtica de la llegada de correo. Inclusin de datos de entrada para una orden en un guin de shell como parte del guin. Captura de seales, y ejecucin de rdenes especficas cuando ocurre una seal determinada.

Ejecucin de rdenes en archivos de iniciacin antes de leer cualquier entrada. Estos archivos de iniciacin pueden servir para adecuar sh a las necesidades propias.

b) csh (shell C) El shell C, disponible a travs de la orden csh, se desarroll como parte de BSD UNIX. A pesar de su nombre el shell C no es mucho ms parecido a C que el Bourne. Algunas de las caractersticas del shell C que no se incluyen en el Bourne son:

La posibilidad de recuperar rdenes previas mediante un mecanismo de historia. La capacidad de conmutar entre procesos y controlar su avance (control de trabajos). Formas ms flexibles de sustitucin de variables. Operadores adicionales, de sintaxis similar a la de C. Alias para rdenes de uso frecuente, sin tener que usar guiones.

En csh se puede interrumpir la mayora de las rdenes si se presiona ctrl-c, con lo cual se vuelve al indicador de csh. c) Ksh (shell Korn) El shell Korn, ksh, ofrece una sntesis de las caractersticas de los shells Bourne y C, adems de otras propias. Fue desarrollado por David Korn, de ATT Bell Laboratories, en 1982, FundamentosdeLinux 115

Captulo4Lineadecomandos presentando versiones mejoradas en 1986 y 1988. El shell Korn sigue de cerca los convencionalismos del shell Bourne, y casi todos los guiones escritos para el primero funcionan con el segundo. Las caractersticas principales que se adoptaron del shell C son:

Listas histricas para la recuperacin de rdenes previas. Control de trabajos, con la capacidad para pasar trabajos especficos al primer o segundo plano.

Alias para los nombres de rdenes. Empleo de ~ para representar el directorio base del usuario, o, al combinarse con un nombre de usuario, el de otro usuario.

Capacidad para calcular expresiones numricas generales, y asignar el resultado a una variable.

Algunas de las caractersticas nuevas de ksh son:

Edicin interactiva de la lnea de rdenes, incluida la complementacin de nombres de fichero con las mismas caractersticas de csh y la posibilidad de editar la lista histrica.

Mejores definiciones de funciones, que ofrecen variables locales y permiten escribir funciones recursivas.

Comparacin extendida de patrones para nombres de ficheros y otras construcciones, parecidas a la de egrep.

Capacidad para extraer la porcin de una cadena especificada por un patrn. Capacidad para cambiar fcilmente de un directorio a otro.

d) Bash El Bourne Again shell (mejor conocido como Bash) fue creado con la finalidad de utilizarlos en el proyecto GNU. La intencin fue que este fuera el intrprete de comandos estndar en el 116 FundamentosdeLinux

Captulo4Lineadecomandos sistema GNU. El Bourne Again shell "naci" oficialmente un domingo, 10 de enero de 1988. El responsable de las primeras versiones de Bash fu Brian Fox y que posteriormente continu actualizndolo hasta 1993. En los inicios de 1989, Chet Ramey comenz a ayudar a Brian y fu el responsable de muchos arreglos en el cdigo y nuevas caractersticas. Hoy en da el mantenedor oficial de bash es Chet Ramey. e) tcsh (shell C mejorado) El shell tcsh es una versin mejorada del shell C, que ha adquirido mucha popularidad. Algunos de los recursos adicionales que ofrece son:

Capacidad para editar la lnea de rdenes interactivamente. Llamada sencilla de rdenes ejecutadas con anterioridad, las cuales se pueden editar. Complementacin interactiva de nombres de archivos y rdenes. Consulta de la documentacin sobre una orden cuando es tecleada. Capacidad para programar la ejecucin peridica de una orden. Marcas de la hora en la lista histrica.

FundamentosdeLinux

117

Captulo4Lineadecomandos

Bash

Bash(BourneAgainshell)

VariantedeBorneShellcompatible GNU Compatibleconsh,kshyconcaractersticasadicionales

Linea de comandos

2.3 Bash shell


La Bourne Again Shell GNU (bash) es una variante de la Bourne Shell que incluye muchas caractersticas avanzadas como el control de tareas, el historial de rdenes, conclusin de rdenes y nombres de ficheros. a) Caractersticas Las caractersticas principales que ofrece el shell Bash son:

Variables de entorno La variable PATH Archivos de configuracin Alias

118

FundamentosdeLinux

Captulo4Lineadecomandos

Control de la entrada y la salida Expansin de nombres de ficheros

FundamentosdeLinux

119

Captulo4Lineadecomandos

Expansin e Historia de Comandos


ExpansindeArchivos ComandoHistory

#history 487cd/home/ 484cdDesktop/ 485ls 486history !485

Accesoaloscomandodehistoria

Linea de comandos

b) Expansin e historia de linea comandos El intrprete bash puede adivinar el archivo u orden que intenta escribir y completarlo de forma automtica por usted. Slo tiene que teclear el principio de la orden o del nombre de fichero y pulsar Tabulador. Si bash encuentra una nica coincidencia, completar la palabra y pondr un espacio tras ella. Si encuentra mltiples posibilidades, completar la palabra hasta la parte comn a todas las posibilidades, y emitir una alarma. Puede seguir escribiendo lo que le falta a la palabra para ser nica, y pulsar Tabulador de nuevo. Si no encuentra ninguna coincidencia, se limitar a pitido. Shell Bash tiene un historial que graba todos los comandos realizados desde que se inici el equipo. Para acceder al historial de comandos se utiliza el comando history, ste mostrar un historial enumerado de los ltimos comandos digitados.
# history 487 cd /home/

120

FundamentosdeLinux

Captulo4Lineadecomandos
484 cd Desktop/ 485 ls 486 history

para hacer uso de alguno de los comandos desplegados, es posible llamarlos utilizando el signo de admiracin (!) seguido del nmero del comando digitado en el historial, por ejemplo:
# !484 cd Desktop/ /Desktop$

FundamentosdeLinux

121

Captulo4Lineadecomandos

Acceso a comandos (Historia)

!!comandoprevio !NcomandonmeroNenlalsta !Nnsimocomandoanterioralacutual !cadenacomandomasrecientequeempiezaconcadena !?cadena?comandomasrecientequecontengacadena !?cadena?%comandomasrecientecuyoargumentocontengacadena !$ultimoargumentodelcomandoanterior !#elcomandoactualarribadeestepunto !!cadenacomandoprevio,seagregacadena !NcadenacomandoN,seagregacadena !{c1}c2elcomandomasrecientequeempiesaconcadenac1,seleagregala cadenac2

Linea de comandos

Adems del signo de admiracin para llamar los comandos de la lista desplegada por history existen otras opciones como:

!! comando previo !N comando nmero N en la lista !-N ensimo comando anterior al actual !cadena comando mas reciente que empieza con cadena !?cadena? comando mas reciente que contenga cadena !?cadena?% comando mas reciente cuyo argumento contenga cadena !$ ltimo argumento del comando anterior !# el comando actual arriba de este punto FundamentosdeLinux

122

Captulo4Lineadecomandos

!!cadena comando previo, se agrega cadena !N cadena comando N, se agrega cadena !{c1}c2 el comando mas reciente que empieza con cadena c1, se le agrega la cadena c2 ^viejo^nuevo^ sustitucin rpida, cambia la cadena viejo por nuevo en el comando previo

FundamentosdeLinux

123

Captulo4Lineadecomandos

Acceso a comandos (Historia) (Cont.)

^viejo^nuevo^sustitucinrapida,cambialacadenaviejopornuevoenel comandoprevio VARIABLES

HISTCMD HISTFILE HISTSIZE HISTFILEZISE

Linea de comandos

Existen variables globales que tienen valores que especifican el funcionamiento de bsico de este comando, estas variables son:

HISTSIZE El nmero de rdenes a recordar en la historia de rdenes. El valor predeterminado es 500.

HISTFILE El nombre del fichero en el que se guarda la historia de rdenes. El valor predeterminado es ~/.bash_history. Si no est definido, no se guarda la historia de rdenes cuando se acaba un shell interactivo.

HISTFILESIZE El nmero mximo de lineas contenidas en el archivo de historia. Cuando se asigna un valor a esta variable, el fichero de historia se trunca, para contener no ms de ese nmero de lneas. El valor predeterminado es 500. El fichero de historia se trunca tambin a este tamao tras escribir en l cuando un shell interactivo termina.

HISTCMD El nmero de "historia", o ndice en la lista "histrica", de la orden actual. Si

124

FundamentosdeLinux

Captulo4Lineadecomandos HISTCMD no est definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido.

FundamentosdeLinux

125

Captulo4Lineadecomandos

Edicin de Comandos

EdicionenLinea

Modovi:Usodecomandosdeviparalaediciony ejecuccindecomandosdelaHistoria ModoEmacs:Usodecomandosdeviparalaediciny ejecuciondecomandosdelaHistoria $setomodo<Dondemodo=viemacs fcl

Comandofc

Linea de comandos

Los comandos mostrados en la lista desplegado por history se pueden modificar usando:

modo de edicin de lnea comando fc

El modo de edicin de linea emula los rasgos de los editores de texto vi o emacs, el modo por defecto es emacs, para cambiarlo a vi ejecute:
# set -o vi # export EDITOR=vi

Para poder ejecutar el modo de edicin de linea en vi se requiere que antes se presione <Esc>.

126

FundamentosdeLinux

Captulo4Lineadecomandos En la siguiente tabla se listan los comandos que se ejecutan en este modo: vi k j /scadena h l b w X x dw db xp Emacs Ctrl-P Ctrl-N Ctrl-R cadena Ctrl-B Ctrl-F Esc B Esc F Del Ctrl-D Esc D Esc H Ctrl-T Resultado Busca el comando anterior Busca el comando siguiente Busca el comando anterior que contenga cadena Moverse un caracter atras. Moverse un caracter adelante. Moverse atrs una palabra Moverse adelante una palabra Eliminar el caracter anterior Eliminar un caracter Eliminar la palabra de adelante. Eliminar la palabra de atrs Transporta dos caracteres

El comando fc tiene la siguiente sintaxis:


# fc opciones

donde las opciones son:


-l despliega la lista de los comandos -e -. edita el comando anterior en un editor de texto.

FundamentosdeLinux

127

Captulo4Lineadecomandos

Variables

Comandoset

setvariablevalor set setoopcion

Comandounset ej.
$set
PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/l ocal/sbin:/usr/sbin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ '

Linea de comandos

d) Variables Comando set Su sintaxis es:


# set nombre_variable valor

Este comando nos devuelve el valor de nombre_variable. Si valor es especificado, entonces set da el valor de nombre_variable a valor, creando una nueva variable si esta no existe con anterioridad, devolviendo as su valor. Si nombre_variable comienza con un parntesis abierto ( y termina con uno cerrado ), entonces se refiere a un elemento del arreglo: antes del primer caracter del parntesis abierto es el nombre del arreglo, y los caracteres entre el parntesis son el ndice dentro del arreglo. Si no, nombre_variable se referir a una variable escalar. El comando set por defecto nos muestra todas las variables de entorno actualmente definidas y

128

FundamentosdeLinux

Captulo4Lineadecomandos sus respectivos valores. Un extracto de una configuracin de comandos set sera mas o menos as:
# set PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash

El comando set puede tomar algunas opciones, tales como:


-a marcar variables creadas o modificadas para exportar -b notifica la terminacin del trabajo inmediatamente -h recuerda la localizacin de comandos mientras se mira arriba -n lee comandos pero no los ejecuta -m permite el control de trabajos

Comando unset Su sintaxis es:


# unset nombre_variable nombre_variable ...

Este comando remueve una o varias variables. Cada nombre_variable es el nombre de la variable, especificado en cualquiera forma aceptable por el comando set. Si un nombre_variable se refiere a un elemento de un arreglo entonces este elemento es removido sin afectar el resto de los dems arreglos. Si un nombre_variable consiste en un nombre de

FundamentosdeLinux

129

Captulo4Lineadecomandos arreglo sin un ndice como parntesis, entonces el arreglo entero es borrado. El comando unset devuelve como resultado un comienzo de cadena. Generalmente se utilizara unset as:
# unset nombre_variable

130

FundamentosdeLinux

Captulo4Lineadecomandos

Variables de Ambiente

Creacinyaccesoavariables:

VAR=hola Echo$VAR

Variablesdeambientecomunes:

PS1 $EDITOR $$ $HOME $PATH $MAIL $HISTORY

Visualizacion(env,set)yexportarvariables

Linea de comandos

e) Variables de ambiente comunes Las variables de entorno o ambiente contienen ciertos parmetros del sistema, como puede ser el intrprete de comandos que se est usando, u otros. Para acceder a las variables de entorno hay que escribir un smbolo dlar ($), seguido del nombre de la variable. Los nombres de las variables de entorno en Linux se suelen escribir en todo maysculas por convenio, pero no tiene por qu ser as. Incluso se pueden poner variables de entorno con mezclas de maysculas y minsculas. Hay algunas variables que el usuario no puede establecer, y otras que s. Las variables de entorno se establecen de la siguiente manera: se escribe el nombre de la variable, seguido por un signo igual (=), seguido de un texto, que va entrecomillado si es ms de una palabra.

FundamentosdeLinux

131

Captulo4Lineadecomandos Aqu hay una lista de las variables ms interesantes:


$PS1: contiene la forma del smbolo del sistema $EDITOR: contiene el editor de texto que se usar por omisin. Suele ser vi $: valor devuelto por el comando anterior $HOME: la ruta absoluta hasta el directorio inicial del usuario actual $PATH: las rutas a los programas que hay establecido para el usuario actual. Cuando se ejecuta un comando, se buscar en estos directorios

$MAIL: contiene la ruta hacia el directorio que se usar para guardar el correo del usuario $HISTORY: la ruta hacia el fichero que contiene el histrico de comandos (un fichero que contiene los ltimos comandos que has escrito en la consola

Comando env El comando env permite visualizar la lista de variables creadas en nuestro sistema. La sintaxis es:
# env

Comando export El comando export se utiliza para que el valor asignado a una variable sea conocido por todos los procesos hijos del proceso padre.
# APF=/opt/apf/bin

Si a continuacin ejecutamos un guin shell que use la variable APF, fallar ya que no la conoce.
# APF=/opt/apf/bin # export APF

132

FundamentosdeLinux

Captulo4Lineadecomandos Todos los procesos hijos heredan las variables exportadas del proceso padre. Si el comando export se ejecuta sin ningn parmetro despliega las variables de entorno que se exportan, la salida de este comando se muestra a continuacin:
# export declare -x COLORTERM="" declare -x DISPLAY=":0.0" declare -x GDMSESSION="Default" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x INPUTRC="/etc/inputrc" declare -x KDE_MULTIHEAD="false" declare -x KONSOLE_DCOP="DCOPRef(konsole-12272,konsole)" declare -x KONSOLE_DCOP_SESSION="DCOPRef(konsole-12272,session-1)" declare -x LANG="en_US.UTF-8" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"

FundamentosdeLinux

133

Captulo4Lineadecomandos

Aliases

Asociaciondeunnombrealternoauncomando(s)y susargumentos,parafacilitarsuejecucincontinua.

alias[nombre[=valor]...] $aliascls='clear' unaliascls

Linea de comandos

f) Aliases Las funciones permiten definir subrutinas programadas usando el lenguaje de Bash y los alias, asociar nombres a comandos con ciertas opciones y argumentos de forma ms nemotcnica o abreviada. El comando alias permite asignarle otros nombres a los comandos. De esta forma se pueden abreviar o llamarlos de forma ms nemotcnica. Sintaxis:
# alias [nombre[=valor]...]

Sin argumentos muestra todos los alias definidos por el usuario actual. Para deshabilitar un alias se emplea el comando unalias. Ejemplos:

134

FundamentosdeLinux

Captulo4Lineadecomandos
# alias alias c='clear'

FundamentosdeLinux

135

Captulo4Lineadecomandos

Ambiente y Configuracin Bash

Controladoporlossiguientesarchivos:

ANivelGlobal

/etc/profile /etc/bashrc .bash_profile .bashrc .bash_logout

AnivelUsuario

Elambientesedefinemediantevariablesy comandosdentrodelosarchivosmencionados

Linea de comandos

g) Archivos de configuracin Para cada usuario existen tres ficheros muy importantes que permiten definir en gran medida las caractersticas del shell durante la interaccin con este. Estos constituyen shells scripts y se conocen como ficheros perfiles o profiles:

.bash_profile: se ejecuta siempre que se abra una nueva sesin en el sistema. Cada vez que un usuario se conecte al sistema se ejecutar el script .bash_profile, en el caso de que se utilice a bash como shell. Para ser compatible con sus versiones anteriores, bash en caso de que no existiera .bash_profile, ejecuta .bash_login, o sino, .profile. En este fichero se pueden colocar las asignaciones a las variables del entorno siendo debidamente exportadas a travs de export. Existe adems un profile general ubicado en /etc/profile que se ejecuta tambin siempre que un usuario inicia una sesin en el sistema antes de su profile particular.

.bash_logout: se ejecuta al terminar una sesin de trabajo. Puede contener comandos para salvar lo hecho durante la sesin.

136

FundamentosdeLinux

Captulo4Lineadecomandos

.bashrc: se ejecuta siempre que se invoque un nuevo shell. Por lo general en l se colocan las definiciones de funciones y los alias de comandos. El fichero .bashrc que posee cada usuario por defecto ejecuta primero a /etc/bashrc.

Cuando se crea un nuevo usuario se le colocan en su directorio base estos tres ficheros cuyos patrones estn el directorio /etc/skel.

FundamentosdeLinux

137

Captulo4Lineadecomandos

Comandos Internos

Comandosproporcionadosporelpropioshell,que solosonreconocidosporelshell,yllegana anteponerseacomandosdelsistema

bash,:,.,[,alias,bg,bind,break,builtin,cd,command,compgen,
complete,continue,declare,dirs,disown,echo,enable,eval,exec,exit, export,fc,fg,getopts,hash,help,history,jobs,kill,let,local,logout,popd, printf,pushd,pwd,read,readonly,return,set,shift,shopt,source,suspend, test,times,trap,type,typeset,ulimit,umask,unalias,unset,wait

Linea de comandos

Comandos Internos Cada shell tiene ciertos comandos que solo pueden ser identificados por l y que en algunos casos se anteponen a los comandos del sistema, estos comandos se conocen como comandos interno, algunos de estos comandos que reconoce bash son:

alias [-p] [nombre[=valor] ...] Alias sin argumentos o con la opcin -p muestra la lista de alias en la forma alias nombre=valor en la salida estndar. Cuando se dan argumentos, se define un alias para cada nombre cuyo valor se da.

cd [-LP] [dir] Cambia el directorio de trabajo en curso a dir. echo [-neE] [arg ...] Repite los args, separados por espacios, seguidos por un salto de lnea. El estado de retorno es siempre 0. Si se especifica -n, se suprime el salto de lnea final. Si se da la opcin -e, se activa la interpretacin de los caracteres de escape (con barra inversa). La opcin -E desactiva la interpretacin de estos caracteres de escape.

138

FundamentosdeLinux

Captulo4Lineadecomandos

export [-fnp] [nombre[=palabra]] ... Los nombres suministrados se marcan para exportacin automtica al entorno de rdenes que se ejecuten de ah en adelante. Si la opcin -f se da, los nombres se referirn a funciones. Si no se dan nombres, o si se da la opcin -p, se muestra una lista de todos los nombres que estn exportados en este shell. La opcin -n hace que la propiedad de exportacin se quite de las variables nombradas; o sea, que se quiten del entorno. export devuelve un estado de salida de 0 a menos que se encuentre una opcin invlida, uno de los nombres no sea un nombre vlido de variable del shell, o que se d -f no siendo nombre una funcin.

kill [-s nombre-seal | -n numseal | -nombre-seal] [pid | espectrab] ... kill -l [nombre-seal | status_salida] Enva la seal especificada por nombre-seal o numseal a los procesos nombrados por pid o espectrab. nombre-seal es o bien un nombre de seal como SIGKILL o un nmero de seal; numseal es un nmero de seal. Si nombre-seal es un nombre de seal, ste puede darse con o sin el prefijo SIG. Si nombre-seal no est presente, entonces se supone SIGTERM. Un argumento de -l lista los nombres de seales. Si se suministran ms argumentos cuando se da -l, se listan los nombres de las seales correspondientes a los argumentos, y el estado de retorno es 0.

pwd Muestra el nombre de fichero absoluto del directorio de trabajo en curso. set Sin opciones, se muestra el nombre y valor de cada variable del shell en un formato que puede ser reutilizado como entrada. La salida se clasifica segn la localizacin en curso. Cuando se dan opciones, se establecen o quitan atributos del shell.

umask La mscara de creacin de ficheros del usuario se establece a modo.

Existen otros comandos los cuales pueden ser consultados con e manual del sistema.

FundamentosdeLinux

139

Captulo4Lineadecomandos
#man bashbuiltins BASH_BUILTINS(1) BASH_BUILTINS(1)

NAME bash, echo, printf, ulimit, :, ., [, alias, bg, bind, break, builtin, cd, com disown, eval, exec, exit, export, fc, fg, getopts, pwd, read, readonly, return, set, shift, typeset, mand, compgen, complete, continue, declare, dirs, enable, pushd, umask,

hash, help, history, jobs, kill, let, local, logout, popd, shopt, source, suspend, test, times, trap, type, mands, see bash(1) BASH BUILTIN COMMANDS Unless otherwise noted, each builtin command documented in this section as accepting options preceded by - accepts -to signify the end of the options. . . .

unalias, unset, wait - bash built-in com

140

FundamentosdeLinux

Captulo4Lineadecomandos

Evaluacin Captulo
1. Cul es la definicin de Shell?

2. Liste tres shells comunes en Linux

3. Cules son las caractersticas principales de Bash?

4. Qu realiza el comando history?

5. Describa tres secuencias de instrucciones para acceder algn comando de la historia de FundamentosdeLinux 141

Captulo4Lineadecomandos comandos

6. Cmo redefinira el archivo en el que se guarda la historia de comandos a: $HOME/.mis_comandos y que el nmero comandos guardados sea de 1000?

7. Cmo podemos modificar los comandos guardados en la historia de comandos?

8. Cules son las funciones del comando set?

9. Explique que definen las siguientes variables de ambiente:

142

FundamentosdeLinux

Captulo4Lineadecomandos 1. HOME 2. PATH 3. MAIL 4. PS1 5. EDITOR 10.Qu realiza el comando export?

11.Cules son los tres principales archivos de configuracin de bash y en que momento se ejecutan estos?

12.Qu es un comando, y como podemos determinar si un comando a ejecutar es interno o

FundamentosdeLinux

143

Captulo4Lineadecomandos ejecutable del sistema?

144

FundamentosdeLinux

Captulo5InterfacesGrficas

Captulo 5 Interfaces Grficas

FundamentosdeLinux

145

Captulo5InterfacesGrficas

Descripcin

ConceptosBsicos EvolucinGui's XWindows IniciodeXWindows ConfiguracindeXWindows KDE GNOME

Interfaces Grficas

146

FundamentosdeLinux

Captulo5InterfacesGrficas

1 Descripcin del captulo


En el presente captulo se describirn los componentes principales de un ambiente grfico en Linux, la base de estos su evolucin y conceptos mas importantes, as como el procedimiento de inicio de los ambientes grficos, ya que a diferencia de Windows los ambientes grficos se ven como una aplicacin mas en el sistema. Los tpicos a cubrir son: Conceptos Basicos Evolucin GUI's X Windows Inicio de X Windows Archivos configuracin a nivel de usuario de X Windows KDE GNOME

FundamentosdeLinux

147

Captulo5InterfacesGrficas

Conceptos Bsicos

GUI's XWindows ManejadordeVentanas Escritorio

Interfaces Grficas

2 Introduccin 2.1 Conceptos bsicos


Interfaz grfica de usuario (GUI, acrnimo del vocablo ingls Graphical User Interface) es un mtodo para facilitar la interaccin del usuario con la computadora a travs de la utilizacin de un conjunto de imgenes y objetos pictricos (iconos, ventanas..) adems de texto. Surge como evolucin de la lnea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno grfico. Mediante el uso de diferentes metforas (escritorio, cesto de basura, etc.) se establecieron las convenciones que permiten a un usuario reconocer rpidamente muchos de los elementos y funciones de un sistema operativo. Hoy en da, las GUI poseen su propio metalenguaje y este forma parte del imaginario simblico de quienes usan computadoras. Cuando se nos pregunta acerca de un programa determinado, inmediatamente asociamos su 148 FundamentosdeLinux

Captulo5InterfacesGrficas nombre al aspecto de su interfaz grfica. Para el usuario, la interfaz es la aplicacin. El desarrollo de GUI efectivas y amigables fue el factor determinante para la popularizacin de los ordenadores y de la informtica en general. Gracias a ellas estas mquinas dejaron de ser un lejano instrumento cientfico y se convirtieron en algo similar a un electrodomstico. El Sistema X Window, conocido tambin como X, es una coleccin de programas que forman una interfaz para el usuario, orientada al uso de teclado, ratn (mouse) y una pantalla grfica. La mayora de los sistemas de ventanas utilizan una abstraccin llamada metfora de escritorio (desktop). Esto es, la pantalla es tratada como si fuera la parte superior de un escritorio, y cada ventana de programa como si fuera un pedazo de papel. En un escritorio real, usted puede poner piezas de papel una al lado de otra, apilarlas unas sobre otras, moverlas alrededor, doblarlas , y as sucesivamente. Similarmente, un sistema de ventanas como X le permite colocar ventanas en la pantalla, apilarlas, colocarlas contiguas, moverlas, etc. Los manejadores de ventanas son programas clientes de X que son o parte del entorno de escritorio o, en otros casos, standalone. Su propsito principal es controlar la forma en que las ventanas grficas son posicionadas, redimensionadas o movidas. Los manejadores de ventanas controlan las barras de ttulos, el comportamiento del foco, los vnculos del botn del ratn y teclas especificadas por el usuario.

FundamentosdeLinux

149

Captulo5InterfacesGrficas

2.2 Evolucin GUI's


El primer sistema interactivo informtico que utiliz un monitor y metforas grficas fue un juego. William A. Higinbotham, un miembro del Brookhaven National Laboratory (un centro de investigacin nuclear de New York) diseo y ensambl el primer "video game" del que se ha tenido noticia, en 1958. Usando un osciloscopio estndar como pantalla. En el ao 1963, en el MIT (Massachuset Institute of Technology) Ivan Sutherland desarrolla Sketchpad para su tesis de doctorado ("Sketchpad: a man - machine graphical communications system"). Este fue el primer sistema que mediante manipulacin directa de grficos en una pantalla poda dar instrucciones al ordenador, en este caso un TX-2 de la compaa Digital Equipment. El desarrollo del "mouse" fue producto las investigaciones de Douglas C. Engelbart para el Stanford Research Laboratory como parte del proyecto NLS (ARPA, NASA) hacia 1965. Engelbart se inspir en ideas de Vannevar Bush, quien en 1945 se permiti soar un tiempo en el cual los humanos operarn computadoras mediante una interfaz grfica. Otras investigaciones fueron hechas en el Imperial College de Londres, en 1967, donde se disearon "light handles" un tipo de potencimetro grfico y probablemente el primer "widget" (controlador grfico). De el centro de investigacin Palo Alto Research Center (PARC) de Xerox hacia 1970, emergieron todos los elementos de la interfaz grfica contempornea. La seleccin de objetos, las ventanas, la utilizacin del mouse, el concepto de "WYSIWYG" (What You See Is What You Get), la seleccin de texto; todos esos recursos, tan comunes hoy en da, fueron desarrollados en el PARC. En 1973 construyen el prototipo Alto Computer, la primera computadora que contaba con una GUI. Posea un mouse con 3 botones, ventanas y una conexin para red Ethernet. En Junio de 1984 en el MIT presentaron la primera interfaz grfica para el sistema operativo UNIX: el X-Windows System. En adelante este sistema, a pesar de sus mltiples carencias, sobrevivir y se encarnar infinidad de veces debido a la popularidad y robustez del UNIX.

150

FundamentosdeLinux

Captulo5InterfacesGrficas En 1990, Microsoft coloc en el mercado Windows 3.0 y, poco tiempo despus, la versin 3.1. En los aos siguientes, cientos de aplicaciones se desarrollaron para este entorno. De la mano de la enorme popularidad de las PC, este sistema operativo se convertir en un estndar.

FundamentosdeLinux

151

Captulo5InterfacesGrficas

3 X Window
Todos los sistemas operativos modernos cuentan con una interfaz grfica y Linux no es la excepcin. Las interfaces grficas para Linux y para todos los sistemas tipo Unix en general son conocidas como ambientes X Window. Para el caso de Linux se utiliza una implementacin de X Window con cdigo abierto (open source) denominada XFree86 que tambin est disponible para otros sistemas tipo Unix como los BSD (FreeBSD, OpenBSD y NetBSD), Solaris, etc.

3.1 Funcin
Un sistema de ventanas, como X, es una coleccin de programas que le permiten utilizar y mostrar muchas aplicaciones en una nica pantalla. Para esto divide la pantalla en varias ms pequeas, posiblemente superponiendo secciones, llamadas ventanas, con lo que usted puede tener varias sesiones simultaneamente en diferentes nodos o hosts, programas que muestren grficos, lectura de correspondencia, despliegue de texto, etc, todo corriendo al mismo tiempo. X es el encargado de visualizar la informacin grfica y es totalmente independiente del sistema operativo. El sistema X Window distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor. El servidor provee servicios para acceder a la pantalla, teclado y ratn, mientras que los clientes son la aplicaciones que utilizan estos recursos para interaccin con el usuario.

3.2 Arquitectura
X est construido alrededor de una arquitectura Cliente/Servidor. Esto significa que ciertos programas X juegan los papeles de Cliente y otros programas, diferentes, juegan el papel de Servidor. El trabajo se logra por la comunicacin entre el anterior y el ltimo. El Cliente y el Servidor pueden estar en el mismo computador, o en diferentes computadores. Varios tipos de mensajes pueden ser enviados entre el Servidor y el Cliente. Estos mensajes estn agrupados en un protocolo conocido como The X Window System Protocol (Protocolo del Sistema de Ventanas X).

152

FundamentosdeLinux

Captulo5InterfacesGrficas

El servidor de X11 es el programa responsable de dibujar en la pantalla de la estacin de trabajo. Cada aplicacin enva comandos al servidor de X11 tales como : Coloca una ventana aqu, dibuja una linea de aqu para all, colorea esta seccin azul, etc. Cuando recibe estos comandos, el servidor de X11 desempea las operaciones apropiadas para que la estacin de trabajo o el terminal realice la accin o muestre la informacin adecuada. La razn de que el Sistema X ponga toda la responsabilidad del despliegue en pantalla en el servidor X11, es para hacer ms fcil la escritura de programas de aplicacin. Diferentes fabricantes usan diferentes mtodos para controlar el despliegue en pantalla. Los programas pueden enviar comandos simples como dibujar una lnea al servidor y no preocuparse acerca de cmo se dibuja una lnea en cada tipo de Estacin de Trabajo. En otras palabras, el servidor se encarga de tomar la entrada de los usuarios y hacerla llegar a las aplicaciones clientes, adems de recibir y redireccionar las salidas de estas aplicaciones.

FundamentosdeLinux

153

Captulo5InterfacesGrficas Los programas , llamados clientes de X11, son el corazn del sistema X Window, y la parte con que se tendr la mayor interaccin. Cada programa es llamado cliente porque requiere que esa accin sea procesada por el servidor X11. Existe una gran cantidad de aplicaciones clientes para servidores X Window con las ms variadas funcionalidades. Muchas de ellas permiten acercar un poco ms a los usuarios menos expertos la posibilidad de emplear comandos de difcil comprensin o sintaxis. No obstante se debe tener claro que en Linux todo se puede lograr con comandos, no as con las aplicaciones grficas que pueden no ofrecer todas las opciones posibles en aras de ser ms simples o porque no siempre se desarrollan a la par de los comandos y programas con interfaz texto.

154

FundamentosdeLinux

Captulo5InterfacesGrficas

Manejadores de Ventanas

Interfaces Grficas

La interfaz principal entre el usuario y un servidor X la define el gestor o manejador de ventanas (Window Manager). Este se encarga de definir y manipular la apariencia de las ventanas: bordes, mens, botones, barras de desplazamiento, de herramientas y de estado, entre otras mltiples funciones. Existen muchos de estos gestores con diferentes posibilidades y caractersticas. Entre ellos podemos citar:

XFce: es un entorno de escritorio que consume pocos recursos. Como administrador de ventanas utiliza una modificacin de fvwm y fvwm2 llamado xfwm y utiliza la biblioteca grfica GTK+ para el panel y sus programas.

Enlightenment: tal como su nombre lo indica Enlightenment (ilustracin), es uno de los administradores de ventanas ms atractivos que existen y es totalmente personalizable por medio de temas de escritorio. Si bien hace mucho tiempo que existe todava est en desarrollo y se lo est mejorando para hacer de l un entorno de escritorio.

Sawfish: es uno de los ltimos administradores de ventanas que aparecieron. Las primeras 155

FundamentosdeLinux

Captulo5InterfacesGrficas versiones tenan como nombre Sawmill. Es muy configurable y grficamente agradable (al mejor estilo Enlightenment). Est escrito en Lisp y utiliza la biblioteca grfica GTK+.

Window Maker: es un administrador muy estable y robusto. Imita a la interfaz de las desaparecidas computadoras NextSTEP. Posee una herramienta de configuracin que facilita las cosas a la hora de "sintonizar" Window Maker.

AfterStep: como Window Maker este administrador imita a las NextSTEP. Igual que el administrador anterior AfterStep posee una herramienta de configuracin propia.

BlackBox: es uno de los administradores ms rpidos que hay gracias a su pequeo consumo de recursos. Posee renderizado en tiempo real de los decorados de las ventanas y del fondo del escritorio. Est escrito en el lenguaje C++ y el cdigo fuente, la documentacin y algunos temas para ste no ocupan ms de 200 Kb comprimidos.

FluxBox: es una bifurcacin de BlackBox con nuevas caractersticas. IceWM: tiene un consumo pequeo de memoria y es muy rpido. Imita el aspecto de Windows, Motif y OS/2. Posee un soporte bsico para temas de escritorio.

Metacity: utiliza la biblioteca grfica GTK+ versin 2 y consume muy pocos recursos lo cual hizo que se convirtiese en el administrador de ventanas por defecto de las ltimas versiones de GNOME. Tambin posee soporte para temas como as tambin teclas de acceso directo.

fvwm: es uno de los primeros administradores de ventanas de Linux que aparecieron. El decorado de las ventanas es parecido a Motif. No es muy configurable pero s es muy rpido y consume muy poca memoria.

pwm: este es un administrador de ventanas que tiene la particularidad de soportar varios programas corriendo dentro de una misma ventana.

twm: es el administrador de ventanas que trae por defecto el servidor XFree86. Prcticamente no consume recursos, se modifica por medio de archivos de texto y es muy simple.

156

FundamentosdeLinux

Captulo5InterfacesGrficas

Escritorios

Interfaces Grficas

La forma ms acabada de una interfaz grfica para Linux es lo que se conoce como Entorno Grfico de Escritorio o GDE (Graphical Desktop Environments). Estos se caracterizan fundamentalmente por la cantidad y variedad de las aplicaciones que ofrecen, la interrelacin entre las mismas, las facilidades para la interaccin con el usuario, y las posibilidades de configuracin visual que poseen de acuerdo al gestor de ventanas empleado. Los dos ejemplos clsicos de entornos de escritorio son:

KDE (K Desktop Environment)- es uno de los entornos de escritorio grfico ms populares de los desarrollados hasta el momento, que ha mantenido un acelerado crecimiento desde que apareci su primera versin oficial en 1998. Ofrece aplicaciones para la administracin del sistema y de los servicios, numerosas y diversas aplicaciones de oficina incluyendo una suite nombrada koffice, un browser-explorador llamado konqueror muy potente, un entorno para desarrollar aplicaciones KDE nombrado KDevelop que incluye una biblioteca de clases muy completa, as como numerosas utilidades y aplicaciones que sirven de interfaz grfica para diversas funcionalidades en el sistema. En cuanto a facilidades visuales, KDE tambin se

FundamentosdeLinux

157

Captulo5InterfacesGrficas destaca bastante respecto a otros entornos grficos, brindando herramientas para modificar y adecuar a los gustos personales ms exquisitos el entorno de trabajo. Tambin posee soporte para varios idiomas. Contnuamente se desarrollan y promueven nuevas aplicaciones para el KDE incluyendo juegos, aplicaciones multimedia, etc.

GNOME (GNU Network Object Environment) - al igual que el KDE es un entorno grfico completo y funcional. Ofrece un ambiente de trabajo integral, comprensible por usuarios poco diestros y fcilmente adaptable a los ms exigentes. Fue el primer entorno de escritorio grfico distribuido libremente para sistemas basados en Unix amparado siempre por el proyecto GNU. Se orienta al desarrollo de aplicaciones para redes basadas en tecnologas tan poderosas como CORBA. Ofrece soporte y documentacin para mltiples lenguas. En cuanto a las aplicaciones, ofrece, al igual que KDE, un conjunto amplio y diverso.

Para encontrar informacin completa acerca de gran cantidad de gestores de ventanas y entornos de escritorio puede consultarse el sitio http://xwinman.org. Tanto los entornos de escritorio grficos como los gestores de ventanas siempre van a ser clientes de un servidor X por lo que realmente cada aplicacin que se ejecute en ellos deber conectarse a algn servidor aunque sea de forma local. Las aplicaciones propias de un tipo de escritorio determinado pueden ejecutarse perfectamente en otro cualquiera. Podemos disponer en un mismo sistema de varios entornos de escritorio e incluso ejecutarlos a la vez. Tambin se pueden tener uno o varios entornos de escritorio remotos.

158

FundamentosdeLinux

Captulo5InterfacesGrficas

3.3 Implementaciones
a) Xfree86 XFree86 es un producto derivado de The XFree86 Project, Inc. el cual es una implementacin de X Window System, XFree86 corre principalmente en sistemas UNIX y derivados, como Linux, o cualquier otra variante de sistemas BSD, como el MacOS X (mediante Darwin) as como OS/2 y Cygwin. XFree86 provee una interfaz grfica cliente/servidor entre el Hardware (mouse, teclado y sistemas grficos) y un entorno de escritorio que provee de un sistema de ventanas as como de una interfaz estandarizada de aplicacin (API por sus siglas en ingles). XFree86 es independiente de la plataforma, extensible y puede utilizarse en red. La versin actual de Xfree86 es la Xfree86-4.4.0, para mas informacin visite la pagina: http://www.xfree86.org/ b) X.org "X.Org" o Xes una implementacin de cdigo abierto del sistema X Window desarrollada por la "X.Org Foundation". Esta organizacin tambin se encarga de desarrollar nuevas tecnologas y estndares para el sistema X Window. La versin actual es X11R6.8.2, para mas informacin sobre esta distribucin visite la pagina: http://www.x.org/

FundamentosdeLinux

159

Captulo5InterfacesGrficas

3.4 Inicio de X Window


Para iniciar una sesin de trabajo en un entorno de escritorio determinado o simplemente en un gestor de ventanas, se puede invocar este directamente desde el shell utilizando algn comando. Estos scripts se ejecutan slo si existe previamente un servidor X activo por el display correspondiente. Para hacer ambas cosas, iniciar el servidor X y un conjunto de aplicaciones clientes, se puede emplear el script startx. Este lee las aplicaciones clientes a ejecutar desde el fichero .xinitrc en el directorio base del usuario actual. Existe adems un tipo de aplicacin grfica conocida como gestor de displays (Display Manager) que permiten conectarse al sistema Linux directamente a travs de un dilogo grfico. El proceso que se desencadena de esta forma es equivalente al proceso de login en una terminal basada en caracteres pues permite a un usuario introducir un login y un password, autenticarse e iniciar una sesin de trabajo en un entorno grfico determinado. Entre los gestores de displays ms conocidos se encuentran: xdm, kdm y gdm. El primero es la base de todos los dems. Visualmente es muy simple pues slo ofrece la posibilidad de autenticarse en el sistema introduciendo login y password, mientras que los otros provistos por KDE y GNOME respectivamente adems de esto, permiten seleccionar un escritorio determinado u otra accin a ejecutar, posibilitan el apagado y reinicializacin del sistema y dan algunas facilidades para modificar su apariencia. Toda aplicacin cliente X se basa en un nombre de display para identificar al servidor X con el cual se conecta. Este nombre tienen la siguiente forma: mquina:display.pantalla Donde:

mquina: especifica el nombre o nmero IP de la mquina donde se ejecuta el servidor X que se quiere utilizar para mostrar la aplicacin. De no ponerse se asume el nombre localhost, o sea la estacin donde se trabaja.

display: indica a travs de que display se mostrar la aplicacin cliente. Estos se numeran a partir del cero. Los displays son a las interfaces grficas como las consolas virtuales son a

160

FundamentosdeLinux

Captulo5InterfacesGrficas las interfaces texto. Normalmente en un sistema Red Hat Linux se dispone de seis consolas virtuales y a partir de la siete y hasta la 12 se cuenta con 6 posibles displays a travs de los cuales se pueden mostrar al menos seis sesiones grficas ya sean locales o remotas, cada una con su correspondiente servidor X.

pantalla: este aspecto se utiliza cuando se dispone de varias tarjetas de video y los monitores correspondientes. Se numeran a partir de cero, y este valor es el que tambin se asume por defecto.

Para especificar el valor del display usualmente las aplicaciones con interfaz X poseen la opcin display, pero la forma ms general de determinar esta propiedad es utilizando la variable del entorno DISPLAY. 3.4.1 Nivel de Ejecucin 3 Cuando startx comienza, busca un archivo .xinitrc en el directorio principal del usuario para definir el entorno de escritorio y posiblemente otras aplicaciones clientes X a ejecutar. Si este archivo .xinitrc no se encuentra, se utilizar el archivo por defecto /etc/X11/xinit/xinitrc. El script por defecto xinitrc luego buscar por los archivos definidos por el usuario y archivos de sistema por defecto, incluyendo .Xresources, .Xmodmap y .Xkbmap en el directorio principal del usuario y Xresources, Xmodmap y Xkbmap en el directorio /etc/X11/. Los archivos Xmodmap y Xkbmap, si existen, son usados por la utilidad xmodmap para configurar el teclado. Los archivos Xresources son ledos para asignar valores de preferencia especficos a aplicaciones. Despus de configurar estas opciones, el script xinitrc ejecuta todos los scripts localizados en el directorio /etc/X11/xinit/xinitrc.d/. Un script muy importante en este directorio es xinput, el cual configura los parmetros tales como el idioma por defecto. Luego, el script xinitrc intenta ejecutar .Xclients en el directorio principal del usuario y cambia a / etc/X11/xinit/Xclients si no lo puede encontrar. El propsito del archivo Xclients es arrancar el entorno de escritorio o posiblemente, slo un gestor de ventanas bsico. El script .Xclients en el directorio principal del usuario inicia el entorno de escritorio especificado por el usuario en el archivo .Xclients-default. Si .Xclients no existe en el directorio principal del usuario, el script estndar /etc/X11/init/Xclients intenta iniciar otro entorno de escritorio, intentando primero con FundamentosdeLinux 161

Captulo5InterfacesGrficas GNOME y luego con KDE seguido por twm. 3.4.2 Nivel de Ejecucin 5 Cuando el sistema arranca en el nivel de ejecucin 5, se lanza una aplicacin cliente de X especial, llamada un gestor de visualizacin. Un usuario debe autenticarse usando el gestor de visualizacin antes de que se inicien cualquier entorno de escritorio o gestores de ventanas. Dependiendo de los entornos de escritorio instalados en su mquina, estn disponibles tres gestores de visualizacin diferentes para manejar la autenticacin de los usuarios.

gdm Es el gestor de visualizacin por defecto para GNOME y permite que los usuarios puedan configurar los parmetros de idioma, cierre del sistema, reinicio o conexin al sistema.

kdm es el gestor de visualizacin de KDE que permite a los usuarios apagar, reiniciar o conectarse al sistema.

xdm Este es un gestor de visualizacin muy bsico que slo permite que el usuario se conecte al sistema.

Cuando arranque en el nivel de ejecucin 5, el script prefdm determina el gestor de visualizacin preferido haciendo referencia al archivo /etc/sysconfig/desktop. Vea el archivo: /usr/share/doc/initscripts-<version-number>/sysconfig.txt donde <version-number> es el nmero de la versin del paquete initscripts, para ver un listado de las opciones disponibles para este archivo. Cada uno de los gestores de visualizacin hace referencia al archivo /etc/X11/xdm/Xsetup_0 para configurar la pantalla de conexin. Una vez que el usuario se conecte al sistema, el script / etc/X11/xdm/GiveConsole corre para asignar la propiedad de la consola para el usuario. Luego, el script /etc/X11/xdm/Xsession se ejecuta para llevar a cabo muchas de las tareas que son normalmente realizadas por el script xinitrc cuando arranca X desde el nivel de ejecucin 3, incluyendo la configuracin del sistema y los recursos del usuario, as como tambin ejecutar los scripts en el directorio /etc/X11/xinit/xinitrc.d/. 162 FundamentosdeLinux

Captulo5InterfacesGrficas El usuario puede especificar cul entorno de escritorio desea utilizar cuando se autentican usando los gestores de visualizacin gdm o kdm seleccionndolo desde el men Session (accesado al seleccionar Botn de men principal [en el Panel] => Preferencias => Ms Preferencias => Sesiones). Si el entorno de escritorio no es especificado en el gestor de visualizacin, el script /etc/X11/xdm/Xsession verificar los archivos .xsession y .Xclients en el directorio principal del usuario para decidir cul entorno de escritorio cargar. Como ltimo recurso el archivo /etc/X11/xinit/Xclients es usado para seleccionar un entorno de escritorio o gestor de ventanas para usarse de la misma forma que en el nivel de ejecucin 3. Cuando el usuario termina una sesin X en la visualizacin por defecto (:0) y se desconecta, el script /etc/X11/xdm/TakeConsole se ejecuta y vuelve a asignar la propiedad de la consola al usuario root. El gestor de visualizacin original, que contina ejecutndose despus que el usuario se conecta, toma el control liberando un nuevo gestor de visualizacin. Esto reinicia el servidor XFree86, despliega una nueva ventana de conexin y reinicia el proceso completo otra vez.

FundamentosdeLinux

163

Captulo5InterfacesGrficas

3.5 Archivos y Herramientas de Configuracin


Su entorno X11 est controlado por ciertos archivos localizados en su directorio HOME:

.xinitrc Este archivo controla que una vez iniciada su sesin X se ejecuten las aplicaciones que se deseen. Para aadir o borrar aplicaciones edite y modifique este archivo.

.Xdefaults Este archivo es cargado en la base de datos de recurso de X11 cuando se conecte por primera vez. Se utiliza para almacenar varios modos de configuracin, o recursos, los que se requieran para variadas aplicaciones.

.twmrc Este es el archivo de configuracin del administrador de ventana que ser tratado a fondo ms adelante. Controlan las diversas opciones como los contenidos de los men para su administrador de ventana twm.

El archivo de .xinitrc determina que programa se ejecuta (incluyendo sobre todo el gestor de ventana) cuando inicia X.xinit chequea primero su directorio home en busca del archivo .xinitrc Si el archivo se encuentra, se ejecuta, si no utiliza el archivo predeterminado ubicado en / etc/X11/xinit/xinitrc Este es un ejemplo simple de un archivo .xinit:
#!/bin/sh userresources=$HOME/.Xresources sysresources=/usr/X11R6/lib/X11/xinit/.Xresources exec gnome-session& xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login

Esta sesin de X empezar con el gestor de ventanas Gnome, un reloj, y tres terminales. Fjese en exec antes del ultimo xterm, lo que esto hace es reemplazar el shell que esta corriendo actualmente(la que esta ejecutando el script xinitrc con el comando xterm) Cuando el usuario cierre ese xterm, la sesin X terminar. Muchos programas en X utilizan un sistema llamado X Resource Database (Recursos de Base de Datos) para encontrar las preferencias del usuario (fuentes , colores ,etc.) Esta base de datos se mantiene a travs del programa xrdb. El Archivo xinitrc le dice a xrdb que tambin 164 FundamentosdeLinux

Captulo5InterfacesGrficas cargara a ~/.Xresources. xrdb y ~/.Xdefaults, por lo tanto cualquiera de los nombres funcionara. Aunque esos archivos son optativos, puede que estn no. Por ejemplo el archivo ~/.profile si lo tienes tiene mas importancia que el /etc/profile, pero si no esta, actuar el archivo /etc/profile. Un archivo .Xresources pequeo se parece a esto:
xterm*background: black xterm*foreground: gray xterm*scrollBar: true xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*

Estas cuatro lneas especifican la informacin de configuracin para el programa xterm Un recurso de X se lista de esta forma: program*option: setting/value Cuando su administrador de ventana ( twm, por ejemplo) se ejecuta, lee su archivo de inicializacin .twmrc en su escritorio HOME. Este archivo se usa para configurar el comportamiento de su administrador de ventanas, incluyendo:

Cuales ventanas tendrn barras de ttulo. Cuales ventanas se levantarn automticamente cuando el cursor del ratn entre a ellas. Que conos sern usados para las diferentes aplicaciones. Que funciones harn los botones del ratn. Que mens contienen.

FundamentosdeLinux

165

Captulo5InterfacesGrficas

4 KDE 4.1 Descripcin


El escritorio KDE funciona de modo similar a otros entornos de escritorio grficos. Puede arrastrar y soltar archivos e iconos de aplicacin en cualquier ubicacin del escritorio. Tambin puede aadir nuevos iconos para todos los tipos de aplicaciones y recursos al escritorio, panel o gestor de archivos. El escritorio es en s mismo muy personalizable. Puede cambiar fcilmente el aspecto de botones, decoraciones de ventanas y marcos, y fondos. Tambin hay disponibles herramientas de configuracin que le permiten personalizar el modo en el que se comporta el escritorio ante eventos, como hacer clic o doble clic con el ratn y pulsar combinaciones de teclas para crear accesos directos con los que ahorrar tiempo.

4.2 Iniciando KDE


Durante la instalacin, si seleccion grfica como tipo de conexin y KDE como escritorio predeterminado, ver a la pantalla grfica de conexin de KDE Para entrar al sistema se debe ser un usuario valido para l, teclee el usuario en el indicador de comandos de login y pulse [enter]. A continuacin pulse la contrasea de dicho usuario en el indicador de comandos de la contrasea y pulse [enter].

4.3 Componentes
El escritorio KDE contiene lanzadores de aplicacin, ventanas de documentos, carpetas de archivos, etc. Tambin puede tener acceso al men principal y configurar el escritorio segn sus necesidades. Por defecto la pantalla de KDE se divide en tres partes fundamentales:

Panel de KDE Escritorios Panel de ventanas

El panel de KDE contiene accesos directos a las aplicaciones ms empleadas as como dos 166 FundamentosdeLinux

Captulo5InterfacesGrficas mens.

El equivalente al men Start de Windows, esto es el men a travs del cual se pueden ejecutar las aplicaciones. Al seleccionar este elemento se despliega un men subdivido en distintas categoras. KDE incluye una gran cantidad de utilidades que se integran con el entorno.

Al contrario de otros entornos grficos X Window permite organizar las ventanas en distintos escritorios virtuales. Para cambiar de escritorio virtual se puede escoger uno de los cuatro botones que aparecen en el panel. Justo encima del panel de KDE, aparece el escritorio, al igual que en Windows este elemento contiene iconos que permiten acceder a los elementos ms comunes como las unidades de disco o la papelera.

Por ltimo en la parte superior del escritorio aparece otra barra, en la que aparecern botones por cada ventana que se cree.

FundamentosdeLinux

167

Captulo5InterfacesGrficas Justo encima del panel de KDE, aparece el escritorio, al igual que en Windows este elemento contiene iconos que permiten acceder a los elementos ms comunes como las unidades de disco o la papelera. Por ltimo en la parte superior del escritorio aparece otra barra, en la que aparecern botones por cada ventana que se cree.

Las ventanas en el KDE tienen un aspecto similar al de las ventanas de Windows (al menos con el aspecto bsico), pudiendo distinguir en ellas diversas partes:

168

FundamentosdeLinux

Captulo5InterfacesGrficas

En la parte superior izquierda, aparece el icono de la aplicacin, seleccionando el cual aparece un men con las opciones bsicas de manipulacin de ventanas: minimizar, maximizar, cerrar; as como otras no tan habituales como enviar la ventana a otros escritorios. Junto a l y en la parte superior central de la ventana se encuentra la barra de ttulos de la ventana. Finalmente en la parte superior derecha aparecen tres botones con las opciones de minimizar, maximizar y cerrar. Esta es la disposicin por defecto pero como se ver ms adelante esta disposicin puede ser adaptada a los gustos del usuario de una forma muy sencilla. Por debajo de este elemento se extiende la barra de mens y de herramientas y el rea de trabajo de la aplicacin.

FundamentosdeLinux

169

Captulo5InterfacesGrficas Al igual que en Windows, KDE permite cambiar el tamao de una ventana sin ms que acercar el ratn a un borde de la misma. En esta posicin cambia el cursor, indicando en que direccin podemos modificar el tamao de la ventana en esa posicin. Si se hace clic sobre el borde y se arrastra cambiar el tamao de la ventana. Si desea documentacin adicional visite la pgina oficial de KDE http://www.kde.org/, otra pgina de inters es http://es.kde.org/ que esta en espaol y contiene varias ligas.

4.4 Herramientas de Configuracin


La principal herramienta de configuracin en KDE es el Control Center, esta herramienta te permite personalizar tu escritorio, as como la configuracin de los perifricos como el ratn y el teclado, la configuracin de los usuarios entre otras cosas. Puede activar el KDE Control Center desde el icono Main Menu K o desde el Panel, haciendo click en el icono KDE Control Center, que ser como:

El KDE Control Center se divide en dos paneles principales: A la izquierda, encontrar las elementos del men en rbol y a la derecha, las caractersticas susceptibles de modificacin. Las distintas categoras o elementos del men en rbol pueden estar concentradas cuando abre el control center por primera vez Haga click en + para desplegar la lista de opciones.

170

FundamentosdeLinux

Captulo5InterfacesGrficas

5 GNOME 5.1 Descripcin


El proyecto GNOME (GNU Network Object Model Environment) surge en agosto de 1997 como proyecto liderado por Miguel de Icaza para crear un entorno de escritorio completamente libre para sistemas operativos libres, en especial para GNU/Linux. Desde el principio, el objetivo principal de GNOME ha sido proporcionar un conjunto de aplicaciones amigables y un escritorio fcil de utilizar.

Como con la mayora de los programas GNU, GNOME ha sido diseado para ejecutarse en toda la gama de sistemas operativos de tipo Unix con X Window, y especialmente pensado para GNU/Linux. Desde sus inicios se ha utilizado la biblioteca de controles grficos GTK, originalmente desarrollada para el programa The GIMP. A medida que el proyecto ha ido progresando en los ltimos aos, los objetivos del mismo se han extendido para tratar una serie de problemas en la infraestructura Unix existente. Actualmente el proyecto evoluciona bajo amparo de la Fundacin GNOME.

5.2 Iniciando GNOME


Se puede especificar que GNOME sea nuestro entorno grfico a la hora de instalar el sistema. GNOME inica muy parecido a KDE, al prender el equipo aparece una pantalla que pide insertar el nombre de usuario valido y la contrasea de dicho usuario.

5.3 Componentes
El uso de GNOME es muy parecido al de otros entornos grficos. La pantalla inicial de GNOME se encuentra dividida en dos zonas principales. La parte superior en la que aparecen las ventanas de las aplicaciones y documentos del usuario recibe el nombre de escritorio, mientras que la parte inferior de la pantalla recibe el nombre de panel de GNOME:

FundamentosdeLinux

171

Captulo5InterfacesGrficas

Este elemento est diseado para contener la siguiente informacin:

Contiene la huella de pie o footprint, al seleccionar este elementos aparece un men similar al men Start de Windows 9x con las aplicaciones ms importantes instaladas.

Las applets son enlaces a las aplicaciones de uso ms frecuente como la consola, Netscape, la ayuda, etc.

172

FundamentosdeLinux

Captulo5InterfacesGrficas

El acceso a los escritorios virtuales. Al contrario que en Windows, X Window permite organizar las ventanas en varios escritorios virtuales.

Al igual que Windows el panel de GNOME dispone de un rea especfica en la que aparecen los botones representativos de las ventanas.

Para obtener ms documentacin acerca de GNOME puede visitar la pgina del proyecto: http://foundation.gnome.org/ O puede visitar la pgina http://www.es.gnome.org/ que se encuentra en espaol y tiene varias ligas a otros istios relacionados con GNOME.

5.4 Herramientas de Configuracin


La configuracin del escritorio se centra en el Centro de Control de GNOME, podemos acceder desde el men de Aplicaciones de nuestro panel, en la seccin Preferencias del Escritorio se nos muestran todas las aplicaciones de configuracin del escritorio que se encuentran disponibles en el Centro de Control. Entre las aplicaciones de configuracin tenemos la de seleccin de Temas, tambin tenemos la de configuracin del Ratn, con el que podremos seleccionar su velocidad, la velocidad del Doble-Click, si somos zurdos, etc. Otra herramienta importante es la de configuracin del Salvapantallas, en el que elegiremos un tipo u otro, el tiempo de espera antes de cargarlo y mas cosas. La herramienta de seleccin de la tipografa nos permite seleccionar la fuente que deseamos para nuestro escritorio, para las aplicaciones y para el ttulo de la ventana, as como seleccionar el tipo de suavizado que deseamos, o si no deseamos ninguno.

FundamentosdeLinux

173

Captulo5InterfacesGrficas pagina vacia

174

FundamentosdeLinux

Captulo6ImpresindeArchivos

Captulo 6 Impresin de Archivos

FundamentosdeLinux

175

Captulo6ImpresindeArchivos

Descripcin

Sistemas de Impresin (LPD, LPRNG, CUPS) Impresin de Archivos Visualizacin Cola de Impresin Cancelado de Trabajos de impresin

Impresin de archivos

176

FundamentosdeLinux

Captulo6ImpresindeArchivos

1 Descripcin del capitulo


En esta seccin se ver los sistemas de impresin comunes en Linux, la impresin de archivos, como examinar la cola de impresin y eliminar trabajos de impresin. Nos orientaremos principalmente a las tareas realizadas comnmente por un usuario del sistema y no como administrador de este.

FundamentosdeLinux

177

Captulo6ImpresindeArchivos

Sistemas de Impresin

Lostressistemasdeimpresinmasutilizados

LPD(basadoenimplementaciondeBSD) LPRNG(reimplementacinmejoradadeLPD/LPR, utilizadaenlinuxcomosistemaLPR)

http://www.lprng.org http://www.cups.org

CUPS(CommonUNIXPrintingSystem,)

Impresin de archivos

2 Sistemas de impresin
El sistema de impresin de Linux (el sistema lp) es una adaptacin del cdigo escrito por los Regents de la Universidad de California para la versin Berkeley Software Distribution (BSD) del sistema operativo UNIX. En los sistemas operativos multitarea la forma que tiene de administrar los trabajos de impresin es ir guardndolos en archivos temporales, hasta que vayan saliendo por la impresora, el ltimo archivo en entrar es el ltimo en salir. Cuando uno manda un trabajo de impresin este pasa por una serie de filtros hasta que al fin llegan a un formato entndible por la impresora. Todo este trabajo lo realiza Linux sin que el usuario tenga que hacer nada. Este sistema de impresin suele llamarse cola de impresin o spooling.

178

FundamentosdeLinux

Captulo6ImpresindeArchivos

2.1 LPD
LPD (tambin llamado Berkeley line printer spooling system) es un sistema que maneja una cola de impresin por cada impresora configurada, filtros para convertir informacin de diversos tipos al lenguaje particular de cada impresora as como filtros de cuentas que permiten monitorear y controlar el uso de cada impresora por parte de cada usuario. LPD recibe y procesa solicitudes de impresin realizadas por programas cliente e imprime la informacin de las colas en los dispositivos configurados para cada cola La aplicacin LPD es responsable de controlar todo lo que se refiere a impresin. Es responsable de un gran nmero de cosas, tales como:

Controlar el acceso a las impresoras conectadas directamente al ordenador y las impresoras conectadas a otras mquinas de la red.

Habilita a usuarios, para efecto de que puedan enviar archivos a imprimir; estos envos se conocen como trabajos (jobs).

Previene el hecho de que varios usuarios usen la impresora al mismo tiempo, al mantener un orden en la cola de impresin (queue) para cada impresora.

Puede imprimir encabezados (header), tambin conocidos como titulares o pginas de aviso, de tal forma que los usuarios identifiquen fcilmente sus impresiones, de una pila de impresiones.

Se ocupa de los parmetros para impresoras conectadas a puertos seriales. Puede enviar trabajos de impresin por medio de una red, a una cola LPD de una mquina remota.

Puede ejecutar filtros especiales para dar formato a trabajos que requieren de un manejo de lenguaje de impresin diferente o impresoras de diferentes capacidades.

Puede mantener un registro por uso de la impresora.

Por medio del fichero de configuracin /etc/printcap,el cual es ledo cada vez que lpd inicia y

FundamentosdeLinux

179

Captulo6ImpresindeArchivos donde se configura cada cola de impresin, el dispositivo asociado a cada una y sus parmetros, los filtros para los diversos tipos de informacin que puede imprimir y filtros de cuentas. En esta pgina http://www.linuxprinting.org/ se encuentra documentacin sobre LPD

2.2 LPRNG
LPRng, que significa LPR: the Next Generation (LPR: la Siguiente Generacin) Es una re-implementacin del sistema BSD de impresin, con una gran cantidad de mejoras y sofisticaciones, especialmente para trabajo en redes y con mltiples usuarios e impresoras. LprNg en sus versiones recientes tambin provee herramientas grficas para su configuracin, que en su apariencia es parecido al Printtol de la distribucin RedHat. El paquete LPRng contiene:

lp es un enlace simblico a lpr. lpq es el programa de monitorizacin de estado. lpr es el programa de encolado de trabajos. lprm es el programa de eliminacin de trabajos. lpstat es el programa de estado de trabajos. lpc es el programa de control para el demonio. lpd es el demonio.

En http://www.lprng.org/ encontrars informacin acerca de LprNg

2.3 CUPS
CUPS (Common UNIX Printing System, Sistema de impresin comn para UNIX) se puede utilizar en vez del sistema de impresin por defecto LPRng. Es un sistema de impresin

180

FundamentosdeLinux

Captulo6ImpresindeArchivos portable y extensible para Unix. CUPS est siendo desarrollado por Easy Software Products, una empresa de software emplazada en Hollywood, Maryland, que ha estado vendiendo software comercial para Unix desde 1993. La primera versin de produccin de CUPS (basada en IPP/1.0) fue liberada en octubre de 1999. Desde entonces, se han publicado bastantes actualizaciones para la versin 1.0, destinadas a corregir los errores encontrados, as como aadir seguridad y portabilidad a la versin existente; se ha de notar que no se han aadido nuevas funcionalidades para mejorar la estabilidad del cdigo de CUPS. CUPS 1.1 est basado en IPP/1.1 y se han aadido las funcionalidades pedidas por sus usuarios. Al igual que con la versin 1.0, CUPS 1.1 disfrutar de las actualizaciones necesarias para corregir cualquier problema encontrado en el software, pero no se aadirn nuevas caractersticas. Algunas de las ventajas de CUPS son:

Compatibilidad para IPP (protocolo de impresin en red de siguiente generacin) Deteccin automtica de las impresoras de la red Herramienta de configuracin con interfaz Web Compatibilidad para los ficheros de descripcin de impresoras PPD Compatibilidad para un amplio nmero de impresoras

CUPS proporciona los siguientes comandos:

lpc facilita un control limitado sobre las impresoras y clases de colas suministradas por CUPS .

cupsd es el planificador para el Sistema de Impresin Comn de Unix. accept le indica al sistema de impresin que acepte trabajos de impresin para el destino indicado.

reject le indica al sistema de impresin que rechace trabajos de impresin para el destino indicado.

FundamentosdeLinux

181

Captulo6ImpresindeArchivos

cupsaddsmb exporta impresoras al software SAMBA para usarlas con clientes Windows. lpadmin configura las impresoras y clases de colas suministradas por CUPS. lpinfo lista los dispositivos disponibles o los controladores conocidos por el servidor CUPS. lpmove mueve el trabajo especificado a un nuevo destino. cupstestppd comprueba la validez de ficheros PPD. lpq muestra el actual estado de la cola de impresin para la impresora nombrada. lpr suministra archivos para su impresin. lprm cancela trabajos de impresin que ya han sido encolados. cancel cancela los trabajos de impresin existentes. disable para las impresoras o clases sealadas. enable inicia las impresoras o clases sealadas. lp suministra ficheros para su impresin o altera trabajos pendientes. lpoptions muestra o establece las opciones de las impresoras. lpstat muestra la informacin del estado de las clases, trabajos e impresoras actuales. lppasswd aade, cambia o borra contraseas en el fichero de resumen de contraseas de CUPS, passwd.md5.

cups-config es la utilidad de configuracin del programa CUPS.

En http://www.cups.org/ se encontrar mas informacin sobre CUPS. IPP IPP (Internet Printing Protocol). es un diseo completamente nuevo para la impresin en red, pero utiliza un mtodo bien conocido y probado para la transmisin de datos actual: HTTP 1.1.

182

FundamentosdeLinux

Captulo6ImpresindeArchivos Para no reinventar la rueda, y basado en un estndar de Internet existente y robusto, IPP es capaz de manejar fcilmente otros estndares HTTP como: autenticacin bsica, en modo digest o utilizando certificados; SSL o TLS, para la transmisin de datos encriptados; LDAP para servicios de directorio (publicar datos en una impresora, opciones del dispositivo, controladores, coste de la red; o comprobar una clave mientras se est tratando una autenticacin).

FundamentosdeLinux

183

Captulo6ImpresindeArchivos

Impresin

Practicamentemismocomandoenambossistemas EnLPRNG

lpr[opciones]archivo.... lp[opciones]archivo....

EnCUPS

Impresin de archivos

3 Impresin de Archivos
El sistema Linux incluye una coleccin de programas, denominados sistema lp, que permiten imprimir archivos. Se manipula con tres instrucciones bsicas (lp, lpstat y cancel), y permite imprimir desde archivos de texto hasta archivos con formatos complejos. Comando de impresin El comando lp se utiliza en los sistemas que utilizan el sistema de impresin CUPS, su sintaxis es:
# lp [opciones] archivo...

Este comando permite mandar a imprimir archivos. Las opciones que toma este comando son:

-m hace que lp le enve un mensaje por correo electrnico cuando se termine su trabajo de FundamentosdeLinux

184

Captulo6ImpresindeArchivos impresin

-w hace que se escriba un mensaje en pantalla cuando la impresin se ha efectuado -c dice a lp que haga una copia de seguridad de su archivo (o archivos) -d Destino especifica la impresora a la que se va a imprimir -n Numero de copias -qn se fija la prioridad del requerimiento en n (de 0 a 39)

Un ejemplo del uso de este comando es:


# lp /etc/passwd request id is hplj-14 (1 file(s))

El comando lpr es el que se utiliza en los sistemas de impresin LPRNG su sintaxis es:
# lpr [opciones] archivo

Las opciones que maneja son:


-E encripta cuando se conecta el servidor -P impresora especifica el nombre de la impresora a la que se manda la impresin -# indica el nmero de copias que se imprimirn

Por ejemplo:
# lp /etc/passwd request id is hplj-15 (1 file(s))

FundamentosdeLinux

185

Captulo6ImpresindeArchivos

Visualizacin Cola de Impresin

EnLPRNGseutiliza

lpq lpc lpstat

EnCupssetiene

Impresin de archivos

Visualizacin de colas de impresin Comando lpstat Para sistemas CUPS el comando lpstat nos permite obtener informacin acerca de los requerimientos de impresin que hayamos realizado y del estado de las diferentes impresoras del sistema. La sintaxis es:
# lpstat [opciones] impresora

Introduciendo lpstat sin opciones nos desplegar informacin acerca de los requerimientos de impresin realizados por nosotros. Nos mostrar la identificacin de los requerimientos, el tamao en bytes y la fecha y hora en que se realiz el requerimiento.

Las opciones que maneja el comando son:

186

FundamentosdeLinux

Captulo6ImpresindeArchivos

-a muestra si la impresora esta aceptando trabajos de impresin -c muestra las clases y miembros de impresoras -d muestra la impresora por defecto -f muestra formularios -o muestra el estado de salida -p [list] [-D] [-l] Impresora/Descripcin/Formato_largo -r Estado del "scheduler" (gestor de impresin) -R posicin de los trabajos en cola -s estado -u [usuario] muestra las peticiones por usuarios -v muestra dispositivos

Un ejemplo de este comando es:


# lpstat hplj-14 hplj-15 root root 2048 2048 Thu 03 Mar 2005 10:55:22 AM CST Thu 03 Mar 2005 10:59:57 AM CST

Comando lpq En los sistemas LPRNG se utiliza este comando para el manejo de las colas de impresin, esta cola de impresin por defecto se encuentra en:
/var/spool/lpd/impresora

La sintaxis de lpq es:


# lpq [opciones]

En donde las posibles opciones que toma son:

FundamentosdeLinux

187

Captulo6ImpresindeArchivos

-a reporta los trabajos de todas las impresoras -l despliega un informe ms detallado de las colas de impresin -P especifica que cola de impresin queremos ver

Este comando desplegara:


# lpq Rank 1st 2nd Owner root root Job 14 15 File(s) passwd passwd Total Size 2048 bytes 2048 bytes

188

FundamentosdeLinux

Captulo6ImpresindeArchivos

Cancelacin de Trabajos de Impresin

LPRNG

Lprm cancel

CUPS

Impresin de archivos

Comando cancel Se utiliza el comando cancel en el sistema CUPS para cancelar las impresiones que se encuentran en cola o que se estn imprimiendo. Para cancelar una impresin es necesario conocer la identificacin del trabajo que se ha mandado a cola. La identificacin se consigue con el comando lpstat. La sintaxis de este comando es:
# cancel [opciones] num. solicitud impresora

Las opciones que puede tomar son: -a remueve todos los trabajos de impresin -u usuario trabajo de un usuario particular Este comando se utilizara de la siguiente manera:
# cancel 14

FundamentosdeLinux

189

Captulo6ImpresindeArchivos Comando lprm Se utiliza para cancelar el trabajo de impresin que se encuentra en la cola. Para especificar que trabajo se ha de cancelar, especificamos el nmero de trabajo o el nombre del propietario, en cuyo caso puede borrar ms de un trabajo. Su sintaxis es:
# lprm [opciones] num.solicitud impresora

Las opciones son:


-P impresora especifica en que impresora se cancelaran. # se especifique el nmero de trabajo que se desea cancelar, tambin se puede especificar el nombre de usuario con lo que se eliminan todos los trabajos de impresin de dicho usuario.

Un ejemplo del uso de este comando es:


# lprm 15

190

FundamentosdeLinux

Captulo6ImpresindeArchivos

Evaluacin Final
1. Cules son los sistemas de impresin que podemos encontrar en Linux?

2. Describa 5 ventajas de CUPS?

3. Qu realiza el comando: lp -c -n2 -q5 -d impresora /etc/passwd?

4. El comando equivalente a lp en LPRNG es?

5. Los comandos lprm y lpq son equivalentes a:

FundamentosdeLinux

191

Captulo6ImpresindeArchivos pgina vacia

192

FundamentosdeLinux

Captulo7ManejodePermisos

Captulo 7 Manejo de Permisos

FundamentosdeLinux

193

Captulo7ManejodePermisos

Descripcin

IntroduccinaUsuarioygrupos /etc/passwd /etc/shadow /etc/group Propietarios Permisos MscaradeCreacindePermisos

Manejo de Permisos

194

FundamentosdeLinux

Captulo7ManejodePermisos

1 Descripcin del captulo


Todo archivo y directorio en Linux tiene permisos establecidos que determinan que y quien puede o no hacer alguna accin con el archivo o directorio. Estas acciones son: leer, escribir y ejecutar. Los permisos son la base principal en la seguridad en Linux y es una de las caractersticas que ayudan a que Linux sea casi inmune a los Virus de computadora. Un virus debe escribir sobre un archivo para poder infectarlo y ejecutarse de alguna manera para poder infectar mas archivos. Con el sistema de permisos, los virus no pueden infectar cualquier archivo como lo hacen en Windows, si el usuario no tiene permisos, el virus simplemente no puede infectar los archivos y por tanto no puede reproducirse. Los principales tpicos a ver son: Introduccin a los conceptos bsicos de Usuarios y grupos Descripcin de los archivos: /etc/passwd /etc/shadow /etc/group Propietarios de Archivos Modificacin de Permisos de Archivos Permisos por Defecto y mscara de creacin de archivos.

FundamentosdeLinux

195

Captulo7ManejodePermisos

2 Usuarios y grupos en Linux 2.1 Descripcin


Independientemente de que haya muchos usuarios o no en el sistema, es importante comprender los aspectos de la gestin de usuarios bajo Linux. Incluso si se es el nico usuario, se debe tener, presumiblemente, una cuenta distinta a la del administrador del sistema (root) para hacer la mayor parte del trabajo. Cada persona que utilice el sistema debe tener su propia cuenta. Raramente es una buena idea el que varias personas compartan la misma cuenta. No slo es un problema de seguridad, sino que las cuentas se utilizan para identificar unvocamente a los usuarios al sistema. Es necesario saber quin est haciendo que en cada momento. Cada usuario pertenece a uno o ms grupos. La nica importancia real de las relaciones de grupo es la perteneciente a los permisos de archivos, cada archivo tiene un ``grupo propietario'' y un conjunto de permisos de grupo que define de qu forma pueden acceder al archivo los usuarios del grupo. Para usar un sistema Linux es necesario estar registrado como uno de sus usuarios. Cada usuario tiene un nombre de ingreso al sistema, una contrasea y un rea del sistema de archivos reservada para almacenar sus archivos. As mismo, cada usuario pertenece a un grupo. Linux permite que un usuario pertenezca a ms de un grupo, y no es necesario que un grupo tenga ms de un usuario. El grupo se establece al crear la cuenta de un usuario, y el administrador del sistema lo puede cambiar en cualquier momento. El usuario puede especificar permiso de grupos para un archivo que le pertenece, para controlar as el tipo de acceso permitido a los miembros del grupo.

2.2 Atributos
Usuarios Linux es un sistema multiusuario por lo que es necesario la administracin (segura) de los distintos usuarios que van a hacer uso de los recursos del sistema. En seguida se listan los tipos de usuarios y los privilegios deben tener. Existen al menos 3 tipos de usuarios. 196 FundamentosdeLinux

Captulo7ManejodePermisos

Usuarios normales con ms o menos privilegios que harn uso de los recursos del sistema. Simplemente deben poder usar algunos programas y disponer de un directorio de trabajo.

Usuarios de Sistema son aquellos encargados de los demonios del sistema, recordemos que para Linux todo es un fichero, el cual tiene un dueo y ese dueo tiene privilegios sobre l. As, es necesario que algn usuario del sistema posea los procesos de los demonios. Es necesario que para algunos servicios del sistema se creen usuarios (generalmente para demonios). Como puede ser el caso de Mail, irc... Estos usuarios tendrn los privilegios necesarios para poder hacer su tarea, gestionar estos usuarios es de gran importancia. No obstante, este tipo de usuarios no necesita que se le asigne un shell, puesto que simplemente poseern los demonios, pero no ser necesario que hagan login en el sistema.

ROOT o SuperUsuario este usuario lo puede todo, en principio no hay restricciones para l.

Para poder trabajar correctamente en el sistema cualquier usuario debe de contar con requerimientos bsicos tales como, login, y password que le permitan entrar al sistema, los nmeros que lo identifican ante el sistema y en el grupo que pertenece, su directorio de trabajo o Home Directory, del cual ya se hablo en el capitulo 2 y el tipo de shell que utilizar, las caractersticas de estos se vieron en el capitulo 4. Grupos Los grupos es una manera en los sistemas multiusuario como Linux de otorgar una serie de privilegios a un conjunto de usuarios sin tener que drselo de forma individual a cada uno. Todo usuario tiene siempre un grupo principal al que pertenece. Hay dos posibilidades para los usuarios normales: que todos tengan el mismo grupo principal (generalmente users) o que cada usuario tenga un grupo principal especfico (casi siempre del mismo nombre que el usuario). Esto responde a las necesidades de cada sistema. En el primer caso, los directorios de trabajo de los usuarios suelen ser accesibles por el resto de usuarios (no es lo ms comn); mientras que en el caso de que cada usuario tenga un grupo principal, lo normal es que los directorios de trabajo de cada usuario sean slo accesibles por ese usuario (que s es lo ms comn). FundamentosdeLinux 197

Captulo7ManejodePermisos Adems, en el sistema hay ms grupos que los principales de cada usuario. La misin de estos otros grupos es la de otorgar unos permisos similares al conjunto de usuarios que forman parte de l ante un directorio, un archivo, un dispositivo, etc. Adems de que para compartir archivos o directorios entre varios usuarios, existen grupos como audio, cdrom y similares. Dispositivos como la tarjeta de sonido, el grabador de CDs, etc. tienen como usuario "dueo" a root, y como grupo "dueo" a uno de estos grupos. As, para cada usuario que queramos que pueda usar la tarjeta de sonido, debemos aadirlo al grupo audio. Cada grupo del sistema tiene un nmero que lo identifica, as como el nombre y una lista de los usuarios que pertenecen a l.

198

FundamentosdeLinux

Captulo7ManejodePermisos

/etc/passwd

Archivoprincipaldondesedefinenlosatributos principalesdelosusuariosdelsistema

Formato: login:passwd:uid:gid:comentario:directorio_casa:shell

Manejo de Permisos

2.3 Archivo /etc/passwd


El sistema mantiene la informacin acerca de cada usuario en el archivo /etc/passwd. Cada linea del archivo contiene informacin acerca de un nico usuario; el formato de cada linea es:
nombre_de_usuario:password(si_es_shadow_ser_x): uid:gid:comentario:home_del_usuario:shell

Estos campos son:


Nombre de Usuario - Es el nombre con el que entrar en el sistema. Password - La palabra de paso necesaria para entrar (cifrada). Si nuestro sistema usa shadow este campo ser una x.

UID - (User ID) Nmero que lo identifica en el sistema.

FundamentosdeLinux

199

Captulo7ManejodePermisos

GID - (Group ID) Nmero que identifica al grupo principal al que pertenece el usuario. Comentario - Opcional, si es necesario aclarar algo, esto solo es para el administrador, pues el sistema no lo usa.

home_del_usuario - Ruta absoluta del directorio de trabajo del usuario. Shell - Intrprete de comandos del usuario, que ser el que use inmediatamente despus de entrar en el sistema, por defecto es /bin/bash.

200

FundamentosdeLinux

Captulo7ManejodePermisos

/etc/shadow

Enestearchivoseguardanlospasswordsy caractersticasdeestosdecadausuariodelsistema

Formatosimilara/etc/passwd

Usuario Password Fechadelultimocambiodepassword Dasantesdepodercambiarpassword Dasdespusenloquesedebecambiarpassword Dasdeadvertenciaantesdequeexpirepassword Dasdespusdeexpiracindepasswordenquesedeshabilita cuenta Fechadeshabilitacincuenta

Manejo de Permisos

2.4 Archivo /etc/shadow


En algunos sistemas Linux, la contrasea de cada usuario esta localizada en el archivo / etc/passwd, en cuestiones de seguridad no es lo mejor, ya que a este archivo archivo puede entrar cualquier persona, y aunque resulta difcil, aunque no imposible, descifrar una contrasea codificada, una persona con malicia puede llegar a obtener las contraseas. La codificacin en sombra ubica la contrasea en otro archivo, normalmente /etc/shadow, configurado de forma que solo ser ledo por el usuario root, el formato de cada lnea de esta archivo es la siguiente:
usuario:password:das_del_ltimo_cambio:dias_antes_del_cambio:Dias_despues_del_c ambio:tiempo_de_aviso:dias_antes_de_la_inhabilitacion:perido_que_lleva_caducado:

Usuario - Nombre del usuario password - Es el password cifrado. 201

FundamentosdeLinux

Captulo7ManejodePermisos

Tiempo_del_ltimo_cambio_de_password - Pero el tiempo cuenta desde el 1 de enero de 1970, comienzo de la era UNIX.

Das_antes_del_cambio - Periodo (en das) donde el password debe ser cambiado. Das_despus_del_cambio - En los das despus donde debe ser cambiado. Tiempo_del_aviso - Periodo en el que el sistema tiene que avisar de la necesidad del cambio.

Inhabilitacin - Das antes de la inhabilitacin de la cuenta. Perido_caducado - Das desde el 1 de enero de 1970 en el que la cuenta est deshabilitada.

202

FundamentosdeLinux

Captulo7ManejodePermisos

/etc/group

Archivoenelquesedefinelosgruposdeusuarios delsistema

Formato: grupo:password:gid:listadeusuarios

Manejo de Permisos

2.5 Archivo /etc/group


Es un archivo donde se definen los grupos del sistema a los que pertenecen los usuarios. El archivo tiene la siguiente estructura:
nombre_grupo:password:GID:lista_usuarios

nombre_grupo - Por defecto con los comandos habituales se crea un grupo con el mismo nombre que el usuario creado, aunque pueden existir otros grupos con nombres especficos.

password - Se usa para dar a una serie de individuos un mismo directorio con una cuenta comn.

GID - (Group ID) Nmero de Identificacin en el Sistema del grupo. lista_usuarios - usuarios que pertenecen al grupo, separados por comas.

FundamentosdeLinux

203

Captulo7ManejodePermisos

Manejo de Propietarios de archivos

Cambiodepropietario

Chown[opciones]usuario[:grupo]archivo1[,....] Chgrp[opciones]grupoarchivo1[,....]

Cambiodegrupo

Manejo de Permisos

3 Permisos sobre archivos 3.1 Propietarios


Todos y cada uno de los elementos del sistema Linux tienen dueo, ya sean archivos, directorios, o enlaces a dispositivos. Por un lado, tienen un usuario dueo, y por otro, un grupo dueo. El usuario y el grupo que son dueos de un elemento no tienen por qu guardar una relacin del tipo que el usuario debera estar dentro del grupo o cosas por el estilo. Son totalmente independientes. As, puede existir un fichero que tenga como usuario propietario a username, un usuario normal, y tener como grupo propietario al grupo root.
# ls -la total 30 drwxr-xr-x drwxr-xr-x -rw------drwxr-xr-x 5 root 20 root 1 root 2 instructor root root root root 1024 Mar 4096 Mar 9216 Mar 1024 Mar 1 11:34 . 1 12:16 .. 1 12:51 aquota.user 1 11:34 instructor

204

FundamentosdeLinux

Captulo7ManejodePermisos
drwx-----drwxr-xr-x 2 root 24 alumno root alumno 12288 Nov 24 03:45 lost+found 3072 Mar 1 14:58 alumno

Cuando se trabaja en el sistema, los programas "hacen dueos" de los archivos creados durante la sesin al usuario de esta sesin y a su grupo principal por defecto; aunque esto puede cambiarse. Es lgico, que los archivos que estn bajo el directorio de trabajo de un usuario le pertenezcan. Siempre que tratemos con permisos y con dueos de elementos, debemos tener siempre presente el hecho de que el sistema de archivos de Linux es jerrquico; esto implica que los cambios que hagamos en un directorio, pueden influir en el resto de elementos que estn contenidos en un nivel inferior a ste (los archivos que contiene, los directorios que contiene, lo que contienen esos otros directorios, y as sucesivamente). a) comando chown El comando chown (CHange OWNer) permite cambiar el propietario de los elementos del sistema de archivos. Pero es lgico que si somos un usuario normal no podremos cambiar de propietario los elementos que pertenecen a root o a otros usuarios. En cambio, como root podremos cambiar el propietario de cualquier cosa. Aqu describimos las opciones ms usadas de este comando. La sintaxis del comando chown es la siguiente:
# chown [opciones] directorio ...] <usuario[:grupo]> <archivo|directorio> [archivo|

Las opciones incluyen:

-R: recursivo; para cambiar el dueo de todos los archivos y subdirectorios en un directorio dado.

-v: modo verboso; muestra todas las acciones efectuadas por chown; reporta cuales archivos cambiaron de dueo como resultado del comando y cuales no han cambiado.

-c: como -v, pero slo reporta cuales archivos cambiaron.

FundamentosdeLinux

205

Captulo7ManejodePermisos Algunos ejemplos se muestran a continuacin:


# chown usuario elemento(s) # chown usuario.grupo elemento(s)

En el primero de los dos comandos anteriores, el usuario dueo de elementos(s) ser cambiado a usuario. El grupo dueo de elemento(s) se conservar al que estuviera antes de introducir este comando. Con respecto al segundo comando, acta exactamente igual que el anterior, con la pequea diferencia que tambin cambiar el grupo dueo de elemento(s) pasando a ser grupo. b) Comando chgrp El comando chgrp (CHange GRouP) le permite cambiar el grupo propietario de un archivo o un grupo de archivos; su sintaxis es muy similar a la del comando chown:
# chgrp [opciones] <grupo> <archivo|directorio> [archivo|directorio ...]

Las opciones de este comando son las mismas que las de chown, y se usa de manera muy similar. Un ejemplo de este comando es:
# chgrp grupo elemento(s)

elemento(s) puede ser una lista de archivos y directorios, o simplemente uno de ellos. Podemos usar los metacaracteres conocidos (como por ejemplo el asterisco (*) para indicar varios archivos con una sola expresin.

206

FundamentosdeLinux

Captulo7ManejodePermisos

Permisos
user@instructor:~>lslarchivo rwxrwxrwx1userusers02005030919:03archivo Usuario Grupo Otros Donde: r>lectura(4) w>escritura(2) x>ejecucion(1)

Manejo de Permisos

3.2 Permisos
Los permisos se registran en el sistema de archivos, es decir cada archivo tiene su tabla de permisos y los puedes ver con el comando ls -l
# ls -l -rwxr--r--rwxr-x--drwxr-xr-x 1 1 2 alumno alumno instructor usuario usuario usuario 587 1508 8192 may jun abr 23 18 30 17:17 14:07 08:43 README Xvnc* install/

Los permisos son las letras y guiones que estn a la izquierda, el ejemplo muestra los permisos de dos archivos y un directorio (install) este se identifica porque la primera letra es una "d", cuando es un archivo es un guin "-". a) Usuarios, grupos, otros Para entender los permisos debes conocer como se establecen, esto se puede hacer de tres

FundamentosdeLinux

207

Captulo7ManejodePermisos maneras: para el Propietario (owner), Para el Grupo (group) y para los Otros usuarios (Others), As, tomando como ejemplo la primera linea desplegada por el comando ls -l arriba, los tres caracteres despus del -, que indica que es un archivo, son los permisos del propietario, los siguientes tres especifican los permisos para el grupo y por ltimo a los de otros usuarios:

propietario grupo otros r-r--

rwx

Los permisos son lectura(r), escritura(w) y ejecucin(x). b) Acceso a archivos (rwx) En el acceso a los archivos los tres tipos de permisos se aplican de la siguiente manera:

El permiso de lectura indica que el usuario tiene permitido ver solamente el contenido de archivo.

El permiso de escritura le permite realizar cambios en el archivo. El permiso de ejecucin es necesario para los programas compilados y para cualquier guin del shell que se desee usar como un mandato.

c) Acceso a Directorios (rwx) Los permisos se aplican de modo diferente entre archivos y directorios.

El permiso de lectura en un directorio permite averiguar qu hay en el directorio, pero no es suficiente para tener acceso a los archivos cuyos nombres aparecen en l

El permiso de escritura es necesario para aadir archivos o eliminarlos del directorio, pero no para modificar un archivo que aparece en el directorio.

El permiso de ejecucin permite al usuario operar sobre los nombres del directorio, si los

208

FundamentosdeLinux

Captulo7ManejodePermisos conoce, pero no le permite averiguarlos. Normalmente se asigna el permiso r cuando se asigna el permiso x.

FundamentosdeLinux

209

Captulo7ManejodePermisos

Chmod

Sintaxis:

Chmod[opciones]modoarchivo(s)... [ugoa...][[+=][rwxXstugo...]...][,...] ###donde#esunnumeroentre0y7(octal)sumadela especificacionnmericadepermisos:


ModoSimbolico

Modoabosuluto

r=4 w=2 x=1

Manejo de Permisos

d) Comando chmod Para determinar los permisos de un archivo o directorio se utiliza el comando chmod, este comando puede utilizar dos mtodos para establecerlos, se pueden cambiar teniendo en cuenta los permisos existentes (modo simblico), o se pueden asignar permisos independientemente de los ya existentes (modo absoluto). Modo Simblico Cuando se utiliza el modo simblico se pueden aadir o quitar permisos a los archivos y directorios. El formato del comando chmod simblico es:
# chmod [quien] cdigo-operador permisos fichero

Donde:

quien es el tipo de usuario, puede tener los siguientes valores:

210

FundamentosdeLinux

Captulo7ManejodePermisos

u : propietario del archivo g : grupo del que el propietario es miembro o : usuarios clasificados como otros a : todos los usuarios del sistema (propietario, grupo y otros)

cdigo_operador Indica la operacin que se va a realizar:


+ : aadir permisos - : quitar permisos

permisos es el tipo de permiso:


r : permiso de lectura w : permiso de escritura x : permiso de ejecucin

archivo es el nombre de archivo o directorio.

MODO ABSOLUTO El modo absoluto se especifica con 3 dgitos numricos; cada nmero representa los permisos de cada tipo de usuario. Estos dgitos se obtienen, para cada clase de usuario, a partir de los valores siguientes:

4 : permiso de lectura 2 : permiso de escritura 1 : permiso de ejecucin.

As tendremos:

0 : ningn permiso

FundamentosdeLinux

211

Captulo7ManejodePermisos

1 : permiso de ejecucin 2 : permiso de escritura 3 : permiso de ejecucin y escritura (1+2) 4 : permiso de lectura 5 : permiso de lectura y ejecucin (4+1) 6 : permiso de lectura y escritura (4+2) 7 : permiso de lectura, escritura y ejecucin (4+2+1)

La sintaxis para el comando chmod absoluto es:


# chmod modo fichero

Donde:

modo son 3 dgitos numricos, cada uno de ellos corresponde a los permisos de cada tipo de usuario.

fichero es el nombre del fichero o directorio.

212

FundamentosdeLinux

Captulo7ManejodePermisos

Umask

Especificacindelamascaradecreacinde archivos:

umaskSmascara Permisos_totalesmascarapermiso_ejecucin Permisos_totalesmascara

Lospermisosdelosarchivoscreadossern:

Lospermisosdelosdirectorioscreadossern:

Manejo de Permisos

e) Mscara de permisos por default (umask) Para determinar cuales permisos se asocian por defecto a los archivos o directorios creados, cada usuario posee una mscara de permisos. Esta se expresa por tres dgitos entre cero y siete. La mscara indica que permisos no se desea que tenga el recurso creado. Por defecto esta mscara es 002 para los usuarios comunes y 022 para root. La mscara realmente se asocia al shell y se hereda por los subshells. Para calcular los permisos finales dado que se tiene la mscara 022, se hace la siguiente operacin por parte del sistema: Ficheros = totales_para_archivos mscara - permiso_ejecucin= 777 022 - 111 = 644 = -rw-r--r-Directorios = totales_para_directorios - mscara = 777 - 022 = 755 = drwxrxr-x FundamentosdeLinux 213

Captulo7ManejodePermisos Para colocar u observar la mscara se puede emplear el comando umask. Su sintaxis es:
# umask [-S] [mscara]

Si se ejecuta el comando umask sin opciones despliega la mscara por defecto. La opcin -S despliega el complemento de la mscara por defecto en forma de caracteres ( u=rwx,g=r,o=r) Para ser bien restrictivos se recomienda hacer: # umask 077 Los nuevos directorios tendrn el permiso: 700 = drwx-----Los nuevos archivos tendrn el permiso: 600 = -rw-------

214

FundamentosdeLinux

Captulo7ManejodePermisos

4 Evaluacin del captulo


1. Qu entendemos por Usuarios del Sistema y Superusuario?

2. Qu atributos o requerimientos tiene un usuario para que sea reconocido en el sistema?

3. Describa la estructura del archivo /etc/passwd

4. Qu funcin tiene el archivo /etc/shadow?

FundamentosdeLinux

215

Captulo7ManejodePermisos 5. Describa la funcin y estructura del archivo /etc/group

6. Describa la siguiente salida:


$ ls -la total 30 drwxr-xr-x drwxr-xr-x -rw------drwxr-xr-x drwx-----drwxr-xr-x 5 root 20 root 1 root 2 instructor 2 root 24 alumno root root root root root alumno 1024 Mar 4096 Mar 9216 Mar 1024 Mar 3072 Mar 1 11:34 . 1 12:16 .. 1 12:51 aquota.user 1 11:34 instructor 1 14:58 alumno

12288 Nov 24 03:45 lost+found

7. Qu realizan los comandos chown y chmod?

216

FundamentosdeLinux

Captulo7ManejodePermisos 8. Si tengo el siguiente listado


$ id uid=500(mariog) gid=100(users) grupos=16(dialout),33(video),100(users) $ls -ld . drwxr-xr-x $ls -l datos -rw-rw---1 instructor root 9216 Mar 1 12:51 datos 5 instructor users 1024 Mar 1 11:34 .

Es posible que el usuario mariog pueda modificar el archivo datos?

Es posible que el usuario mariog pueda borrar el archivo datos?

9. Que realizan los siguientes comandos: 1. $ chmod 745 /home/instructor

2. chmod u+r,g=wx,o-x /home/instructor

FundamentosdeLinux

217

Captulo7ManejodePermisos 10. Si se ejecuta el comando umask 532 Cules serian los permisos con los que se crean archivos y directorios en la sesin actual?

218

FundamentosdeLinux

Captulo8Manejodeentrada/salida

Captulo 8 Manejo de entrada/salida

FundamentosdeLinux

219

Captulo8Manejodeentrada/salida

Descripcin

DescriptoresdeArchivos EntradaEstandar SalidaEstandar ErrorEstandar Redireccionamiento Tuberias ComandoTee

Manejo de Entrada/salida

220

FundamentosdeLinux

Captulo8Manejodeentrada/salida

1 Descripcin del captulo


En este captulo se estudiar como redireccionar la entrada y la salida de algunos comandos para hacer varios pasos en una sola linea de comandos, como sera desplegar informacin en pantalla y adems guardarla en un archivo. Se describirn los siguientes tpicos: Descriptores de Archivos Entrada Estndar Salida Estndar Error Estndar Redireccionamiento Creacin de Tuberas Comando Tee

FundamentosdeLinux

221

Captulo8Manejodeentrada/salida

Descriptores de Archivo
DescriptordeArchivo:{indicenmericoqueutilizanelprocesopara accederaunarchivo,estendiceescreadoalabrirelarchivo.
System Space

0 stdin 1 stdout 2 stderr 3


...

... Estructura archivo ... Atributos archivo (Inodos) Archivo Fisico

Indice Descriptores
Manejo de Entrada/salida

2 Conceptos 2.1 Descriptores de archivos


Toda la E/S se efecta leyendo escribiendo archivos, ya que todos los perifricos, incluyendo la terminal, son archivos en el sistema de archivos. Esto significa que una sola interfaz maneja todas las comunicaciones entre el programa y los dispositivos perifricos. En el caso ms general, antes de leer o escribir un archivo, es necesario comunicar al sistema del intento; este proceso se conoce como abrir un archivo. Si se va a escribir en un archivo, puede ser necesario crearlo. El sistema revisa el permiso para hacerlo (existe el archivo) Tiene permiso de acceso?) , y si todo va bien regresa un entero no negativo llamado descriptor de archivo. Siempre que se haga E/S en el archivo, se utiliza el descriptor de archivo para identificarlo y, no el nombre.

222

FundamentosdeLinux

Captulo8Manejodeentrada/salida

Entrada, salida y error estandar

Tresarchivos/descriptoresyacreadospordefecto

0>EntradaEstandar(stdin) 1>SalidaEstandar(stdout) 2>ErrorEstandar(stderr)

Stdinasociadapordefaultaltecladodelaterminal Stdoutasociadoalapantalladelaterminal Stderrasociadoalapantalladelaterminal

Manejo de Entrada/salida

Hay unos descriptores de archivo por defecto:


0: Entrada estndar (normalmente el teclado). 1: Salida estndar (normalmente la consola). 2: Salida de error.

2.2 Entrada estndar (standard input)


La entrada estndar (stdin) es el nombre del descriptor del archivo que un programa utiliza para la entrada.

Por defecto, la entrada estndar se refiere al teclado relacionado con la terminal. Un programa lee bytes del teclado como lo hara para cualquier archivo La entrada estndar se identifica por el descriptor de archivo 0 223

FundamentosdeLinux

Captulo8Manejodeentrada/salida

2.3 Salida estndar (standard output)


Salida estndar (stdout) es el nombre que se le da al descriptor del fichero que un programa utiliza para la salida normal.

La salida estndar por defecto se refiere a la pantalla relacionada con la terminal. Un programa escribe se salida normal a la pantalla de la terminal como lo hace para cualquier archivo.

La salida estndar es identificada por el descriptor de archivo 1.

2.4Error estndar (standard error)


El error estndar (stderr) es el nombre del descriptor del fichero que utiliza un programa para el error o los mensajes de diagnstico.

Por defecto, el error estndar se refiere a la pantalla de la terminal Un programa escribe sus mensajes de error en la pantalla de la terminal como lo hace para cualquier archivo

El error estndar es identificado por el descriptor de archivo 2.

224

FundamentosdeLinux

Captulo8Manejodeentrada/salida

Redireccionamiento

Modificacindelosdestinosofuentes predeterminadasdestdin,stdoutystderr Redireccionamientodeentradaestndar

$comando<archivo $comando>archivo$comando>>archivo $comando2>archivo$comando2>>archivo

Redireccionamientodesalidaestndar

Redireccionamientoerrorestndar

Manejo de Entrada/salida

2 Redireccionamiento
Cualquier comando de UNIX necesita recibir informacin de algn "lugar" y enviar los resultados del procesamiento a algn "lugar", as como los mensajes de error. Estos "lugares" se llaman, respectivamente, STANDARD INPUT, STANDARD OUTPUT y STANDARD ERROR. Como ya se mencion, El estndar input se refiere al medio desde el cual el comando recibe la informacin. De forma similar, el estndar output se refiere al lugar que el comando enva la salida. Cuando se redireccionan los datos el comando recibe o enva la informacin desde otra fuente. El estndar error se refiere al medio al que se mandan los mensajes de los errores que se cometen al ejecutar un comando.

FundamentosdeLinux

225

Captulo8Manejodeentrada/salida Redireccionamiento de la entrada estndar El smbolo para redireccionar la entrada es < y se utiliza de la siguiente manera:
comando < nombre_fichero

Un ejemplo es:
# more < /etc/passwd

Redireccionamiento de la salida El smbolo para redireccionar la salida es > y se utiliza de la siguiente forma:
comando > archivo

Algunas de la precauciones que se deben tomar a la hora de redireccionar la salida son:

Redireccionar la salida a un archivo ya existente. Cuando se redirecciona una salida, el sistema crea un archivo con el nombre especificado. Cuando el archivo no existe, al redireccionar la salida a l crea uno nuevo; pero si el archivo existe borra su contenido y reescribe encima.

Redireccionar la salida a un fichero utilizado como entrada. Cuando se ejecuta un comando que toma un archivo y se redirecciona la salida a ese mismo archivo, se borra el archivo y crea un nuevo archivo con el mismo nombre, por lo que cuando se opera sobre ese archivo ya esta vaco.
# cd / # ls > prueba #

Este ejemplo no despliega nada en pantalla pero si se revisa el archivo prueba


# more prueba bin boot dev etc

226

FundamentosdeLinux

Captulo8Manejodeentrada/salida
home initrd lib lost+found misc mnt opt proc prueba root sbin tftpboot tmp usr var

Aadir la salida de un comando a un archivo Se puede aadir la salida de un comando al final de un archivo ya existente sin borrar su contenido. El smbolo que se utiliza para ello es >> ; se har de la siguiente forma:
comando>>nombre_fichero

Ejemplo
# ls /var >> prueba #

En la pantalla no se ver la informacin, pero al ver el archivo prueba:


# more prueba bin boot dev etc home initrd lib lost+found misc mnt

FundamentosdeLinux

227

Captulo8Manejodeentrada/salida
opt proc prueba root sbin tftpboot tmp usr var cache db empty gdm lib local lock log mail nis opt preserve run spool tmp yp

Redireccionamiento del error estndar Para redireccionar el error estndar a un archivo, se utilizan los smbolos 2> de la forma siguiente:
comando 2> nombre_fichero

Para aadir la salida de error a un archivo, se utilizan los smbolos >>& de la siguiente manera:
comando 2>> nombre_fichero

228

FundamentosdeLinux

Captulo8Manejodeentrada/salida Un ejemplo de esto es:


# ls /home/hola 2> error # more error ls: /home/hola: No such file or directory

FundamentosdeLinux

229

Captulo8Manejodeentrada/salida

Combinacion de Salidas

$comando>salida2>error $comando>salida2>&1 $comando&>archivo $comando>salida2>error<entrada

Manejo de Entrada/salida

Combinacin de salidas La salida y el error estndar se pueden redireccionar en una sola linea de comando:
comando 1> archivo_salida 2> archivo_error

Lo que hace este comando es mandar la salida a archivo_salida y el error a archivo_error. Esta linea tambin se puede escribir:
comando > archivo_2>&1

Esta linea almacena tanto la salida estndar como el error estndar en archivo_salerr Se puede simplificar esta lnea de la siguiente manera
comando >& archivo

230

FundamentosdeLinux

Captulo8Manejodeentrada/salida

Tuberias

Transferenciadedatosentrediferentesprocesos (salidaestandardeunprocesoaentradaestandade otroproceso

comando1|comando2|comando3|....
stdout stdin

stdin Proceso1

Proceso2 stdout

Manejo de Entrada/salida

4 Tuberas (Pipes)
El sistema Linux permite transferir datos entre diferentes procesos (comandos). Este proceso se llama " piping", pues "pipe" es el nombre que se le da al smbolo utilizado para transferir datos. El smbolo para "piping" es | y se utiliza de la siguiente manera:
comando_1 | comando_2 | comando_3 | ......

Para ejemplificar esto teclee:


# ls | grep home home

FundamentosdeLinux

231

Captulo8Manejodeentrada/salida

Comando Tee

Permiteenviarlasalidadeuncomandotantoala salidaestandarcomoaunarchivoalmismotiempo

tee[opciones]archivo Usocomunentuberiasparacapturarflujosde informacinintermedios.Ej

comando1|comando2|teeopcionesarchivo|comando3

Manejo de Entrada/salida

5 Comando tee
En caso de querer obtener resultados parciales en una sucesin de comandos con tuberas nunca podramos emplear redireccin de entrada o salida en comandos intermedios de una tubera, nicamente se admiten al principio o final de la tubera. Para resolver esto, se emplea el comando tee. Este comando copia la entrada estndar a la salida estndar y a los archivos especificados, mostrando tambin la salida en el terminal. La sintaxis es:
tee [opciones] [archivo...]

Opciones: -i ignora interrupciones. -a la informacin es aadida a los ficheros especificados en lugar de reescribirlos. Su empleo en tuberas sera como el siguiente:

232

FundamentosdeLinux

Captulo8Manejodeentrada/salida
comando | comando | tee nombre_fichero | comando | ......

Un ejemplo del funcionamiento de este comando es:


# ls | tee prueba | grep home

FundamentosdeLinux

233

Captulo8Manejodeentrada/salida

6 Evaluacin del capitulo


1. Qu entendemos por descriptor de Archivo?

2. Cules son los tres descriptores de archivo por defecto de un proceso?

3. Cules son los caracteres de redireccionamiento y como funciona cada uno?

234

FundamentosdeLinux

Captulo8Manejodeentrada/salida 4. A que comando/secuencia es equivalente la siguiente:


comando >& archivo1

5. Explique como funciona una tubera

6. Que realiza el comando tee?

FundamentosdeLinux

235

Captulo8Manejodeentrada/salida pgina vacia

236

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

Captulo 9 Procesamiento de Archivos de texto con filtros

FundamentosdeLinux

237

Captulo9ProcesamientodeArchivosdetextocon filtros

Descripcin

Definicindefiltros ExtraccindeInformacin Formateadodearchivos Combinacindearchivos Substitucindetexto OrdenamientodeArchivos OtrosComandos Ejemploscontuberas


Procesamiento de Archivos con filtros

238

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

1 Descripcin del captulo


En este captulo se ver el uso de los filtros para obtener solo la informacin de inters de algunos archivos de texto como /etc/passwd y algunos otros. Describiendo los siguientes puntos: Definicin de filtros Filtros para extraccin de Informacin Formateado de Archivos Combinacin de Archivos Substitucin de Texto Ordenamiento de Archivos Filtros Varios Ejemplos con tuberas

FundamentosdeLinux

239

Captulo9ProcesamientodeArchivosdetextocon filtros

Definicin Filtros

Comandosquerecibenunaentradadedatos(stdin), laprocesanyemitenunasalida(stdout) Usomaspoderosoentuberas Filtrosmascomnes


cut,tail,head,uniq,grep pr,nl paste,cat,join tr,sort

Procesamiento de Archivos con filtros

2 Definicin de filtros
Existen una gran variedad de comandos que reciben una entrada, (stdin) la procesan y emiten una salida, (stdout) a este tipo de comandos se les llama filtros. Estos son una parte fundamental del sistema ya que relacionando filtros se puede conseguir prcticamente cualquier cosa, a nivel de administracin de archivos. Estos filtros son:

cat grep, tail, head y cut less y more sort

para mostrar la entrada para seleccionar una parte de la entrada para pginar la entrada para ordenar la entrada

240

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

tr comm y diff wc

para alterar la entrada en forma ordenada para comparar dos entradas para cortar la entrada

FundamentosdeLinux

241

Captulo9ProcesamientodeArchivosdetextocon filtros

Extraccin de Informacin

Paravisualizacin/extraccindeinformacinse tienenlosiguientesfiltros:

Cut Head Tail Uniq grep

Procesamiento de Archivos con filtros

3 Extraccin de informacin
Para visualizar la informacin necesaria que se encuentra dentro de un archivo se pueden utilizar alguno de estos comandos, o para una visualizacin detallada la combinacin de dos a ms. Comando cut Este comando se utiliza para mostrar una columna de una salida determinada. Si uno considera al archivo como una tabla de campos, cut permite seleccionar campos de la tabla. Los campos a mostrar se pueden especificar. La sintaxis de este comando es:
# cut [opciones] archivos

Las opciones que toma cut son:

242

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

-c N lista los caracteres en la columna N, se puede especificar un rango de caracteres (N-M) -d c fija el delimitador de campo (por omisin tab), donde c es el caracter delimitador -f N lista los campos en la posicin N, se pueden utilizar comas , para indicar varias columnas, as como tambin darle un rango con el caracter -

Para ver el funcionamiento de este comando teclee;


# cut -d: -f1,5 passwd root:root bin:bin daemon:daemon adm:adm lp:lp sync:sync shutdown:shutdown halt:halt mail:mail news:news uucp:uucp operator:operator games:games gopher:gopher ftp:FTP User nobody:Nobody rpm: vcsa:virtual console memory owner nscd:NSCD Daemon sshd:Privilege-separated SSH rpc:Portmapper RPC user rpcuser:RPC Service User nfsnobody:Anonymous NFS User mailnull: smmsp: pcap: xfs:X Font Server ntp: gdm:

FundamentosdeLinux

243

Captulo9ProcesamientodeArchivosdetextocon filtros
desktop:desktop

Este ejemplo despliega el nombre del usuario y el nombre completo del mismo tomndolo del archivo passwd.

Comando tail El comando tail nos permite ver las ultimas lneas de un archivo, por defecto muestra las ltimas 10, desplegando la informacin en la salida estndar. Su sintaxis es:
# tail [opciones] [archivo...]

Si no se le proporciona archivo tomar su entrada desde la entrada estndar, las opciones que puede tomar este comando son:

-c N Escribe los ltimos N caracteres. -n N Escribe las ltimas N lineas. -f Escribir la ltima parte del archivo a medida que va creciendo. Esta opcin es muy til para monitorear archivos de registro que van creciendo con el tiempo.

En las primeras dos opciones se puede eliminar la letra c o n segn el caso y dejar el puro nmero precedido por un signo -, y si se precede el numero con un signo + despliega informacin a partir de la posicin indicada. El siguiente ejemplo explica el funcionamiento de este comando:
# tail /etc/passwd rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

244

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros
ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

Comando head El comando head despliega por la salida estndar la primera parte de un archivo, por defecto las primeras 10 lineas. Su sintaxis es :
# head [opciones] [archivo...]

Si no se especifica un nombre de archivo, head tomar su entrada de la entrada estndar, las opciones que puede tomar este comando son

-c N Escribe los primeros N bytes. -n N Escribe las primeras N lineas en vez de las primeras 10

El comando head despliega la informacin como sigue:


# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news:

FundamentosdeLinux

245

Captulo9ProcesamientodeArchivosdetextocon filtros Comando uniq El comando uniq elimina las lneas repetidas de un fichero ordenado, imprimindolo por la salida estndar o en otro archivo, de no especificarse un fichero toma la entrada estndar. Su sintaxis es:
# uniq [opciones][archivo][salida]

Algunas opciones son:


-c prefija a cada lnea su nmero de ocurrencias. -d solo imprime las lneas duplicadas.

ej.
# uniq -c passwd1 1 root:x:0:0:root:/root:/bin/bash 1 bin:x:1:1:bin:/bin:/sbin/nologin 1 daemon:x:2:2:daemon:/sbin:/sbin/nologin 1 adm:x:3:4:adm:/var/adm:/sbin/nologin 1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 1 sync:x:5:0:sync:/sbin:/bin/sync 1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 1 halt:x:7:0:halt:/sbin:/sbin/halt 1 news:x:9:13:news:/etc/news: 1 operator:x:11:0:operator:/root:/sbin/nologin 1 games:x:12:100:games:/usr/games:/sbin/nologin 1 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin 1 nobody:x:99:99:Nobody:/:/sbin/nologin 1 rpm:x:37:37::/var/lib/rpm:/bin/bash 1 vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin 1 nscd:x:28:28:NSCD Daemon:/:/sbin/nologin 1 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 1 rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin 2 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin 1 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin 1 mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin 1 smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin

246

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros
1 xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin 1 ntp:x:38:38::/etc/ntp:/sbin/nologin 1 gdm:x:42:42::/var/gdm:/sbin/nologin 2 pcap:x:77:77::/var/arpwatch:/sbin/nologin 1 desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

Comando grep La funcin principal del comando grep (Globally Regular Expressions Pattern) es imprimir por pantalla las lineas que concuerden con un patrn que se le indique, si no se le pasa ningn archivo como argumento hace la bsqueda en la entrada estndar. Su sintaxis es:
# grep [opciones] <patrn> [archivo...]

Algunas opciones son:


-c devuelve slo la cantidad de lineas que contienen el patrn. -i ignora las diferencias entre maysculas y minsculas. -H imprime adems de las lneas, el nombre del archivo donde se encontr el patrn. Es as por defecto cuando se hace la bsqueda en ms de un archivo.

-l cuando son mltiples archivo slo muestra los nombres de aquellos donde se encontr al patrn y no las lineas correspondientes.

-v devuelve las lineas que no contienen el patrn. -r busca en un directorio de forma recursiva. -n imprime el nmero de cada lnea que contiene al patrn.

Un ejemplo es:
# grep -n root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 12:operator:x:11:0:operator:/root:/sbin/nologin

FundamentosdeLinux

247

Captulo9ProcesamientodeArchivosdetextocon filtros

Formateo de archivos

Comandosparaformatearlasalidadeuncomando odespliguedeunarchivo

Pr

Utilizadoprincipalmenteparaformateodetextopara impresion

Procesamiento de Archivos con filtros

4 Formateo de archivos
Comando pr El comando pr imprime el contenido de un archivo con el formato apropiado para una impresora de lineas, es decir, que cada hoja tiene 66 lineas, incluye la fecha y la hora en que el archivo tuvo su ultima modificacin, as como el nombre del archivo, el numero de pgina, adems de las lineas en blanco adicionales (hasta completar 66 lneas si el archivo es menor de ese nmero de lineas). Su sintaxis es:
# pr [opcion] archivo

248

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros Las opciones que maneja este comando son:


-K: produce la salida de un fichero en K nmero de columnas. -m: intercala dos ficheros. -h encabezado: define un encabezado. -d: muestra la salida a doble espacio. -p: indica pausa entre pginas.
# pr -d /etc/passwd

2004-12-15 13:27

/etc/passwd

Page 1

root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

FundamentosdeLinux

249

Captulo9ProcesamientodeArchivosdetextocon filtros

operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin

250

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

2004-12-15 13:27

/etc/passwd

Page 2

gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

FundamentosdeLinux

251

Captulo9ProcesamientodeArchivosdetextocon filtros

Combinacin de Archivos

Comandosquepermitencombinardosomas archivoshorizontaloverticalmente

Paste Cat join

Procesamiento de Archivos con filtros

5 Combinacin de archivos
En esta seccin se vern los comandos con los que se pueden desplegar en la salida estndar dos o mas archivos: Comando paste Este comando enlaza un fichero con otro, de tal manera que inserta uno al lado del otro,por defecto el carcter de separacin entre los archivos es el tabulador. Su sintaxis es:
# paste [opciones] archivos

252

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros Las opciones que maneja paste son:

-dC: especifica el carcter de separacin entre ficheros, donde C es el carcter de separacin

-s: mezcla las lneas de un solo archivo en una solo lnea

Para ejemplificar este comando teclee:


# paste -d'\t' passwd shadow

root:x:0:0:root:/root:/bin/bash root:$1$CrxnMte6$P9WQXHgri7LG5pVBCEgMa1:12746:0:99999:7::: bin:x:1:1:bin:/bin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt news:x:9:13:news:/etc/news: mail:x:8:12:mail:/var/spool/mail:/sbin/nologin bin:*:12746:0:99999:7::: adm:*:12746:0:99999:7::: lp:*:12746:0:99999:7::: shutdown:*:12746:0:99999:7::: mail:*:12746:0:99999:7::: daemon:x:2:2:daemon:/sbin:/sbin/nologin daemon:*:12746:0:99999:7:::

sync:x:5:0:sync:/sbin:/bin/sync sync:*:12746:0:99999:7::: halt:*:12746:0:99999:7::: news:*:12746:0:99999:7::: operator:*:12746:0:99999:7::: games:*:12746:0:99999:7::: ftp:*:12746:0:99999:7:::

uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin uucp:*:12746:0:99999:7::: operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual vcsa:!!:12746:0:99999:7::: console

gopher:x:13:30:gopher:/var/gopher:/sbin/nologin gopher:*:12746:0:99999:7::: nobody:*:12746:0:99999:7::: rpm:!!:12746:0:99999:7::: memory owner:/dev:/sbin/nologin

nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated sshd:!!:12746:0:99999:7::: rpcuser:x:29:29:RPC Service rpcuser:!!:12746:0:99999:7::: nfsnobody:x:65534:65534:Anonymous nfsnobody:!!:12746:0:99999:7::: NFS

nscd:!!:12746:0:99999:7::: SSH:/var/empty/sshd:/sbin/nologin

rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpc:!!:12746:0:99999:7::: User:/var/lib/nfs:/sbin/nologin User:/var/lib/nfs:/sbin/nologin

mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin mailnull:!!:12746:0:99999:7:::

FundamentosdeLinux

253

Captulo9ProcesamientodeArchivosdetextocon filtros
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X xfs:!!:12746:0:99999:7::: Font smmsp:!!:12746:0:99999:7::: pcap:!!:12746:0:99999:7::: Server:/etc/X11/fs:/sbin/nologin ntp:!!:12746:0:99999:7::: gdm:!!:12746:0:99999:7:::

ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin

desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin desktop:!!:12746:0:99999:7:::

Comando cat El comando cat (concatenate) se utiliza para visualizar por pantalla el contenido de uno o ms archivos. Cuando se especifica ms de un archivo, cat los edita uno detrs de otro. La sintaxis del comando es:
# cat [opciones] archivos

Donde las opciones son:

-b muestra los nmeros de lneas sin numerar aquellas que se encuentran vacas y que son de espacios

-e muestra el archivo, marcando su fin de linea con el signo $ -n muestra el archivo, con todas sus lineas numeradas secuencialmente de 1 en 1, comienza desde el nmero 1.

-r reemplaza varias lineas vacas consecutivas por una sola lnea. -s con esta opcin suprimimos todos los mensajes de error, sobre archivos no existentes, nombre idnticos tanto de entrada como salida.

-t muestra un archivo, indicando el uso de los tabuladores mostrndolos con los signos ^I

Este comando despliega algo como lo que sigue:


# cat passwd shadow root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin

254

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros
daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin root:$1$CrxnMte6$P9WQXHgri7LG5pVBCEgMa1:12746:0:99999:7::: bin:*:12746:0:99999:7::: daemon:*:12746:0:99999:7::: adm:*:12746:0:99999:7::: lp:*:12746:0:99999:7::: sync:*:12746:0:99999:7::: shutdown:*:12746:0:99999:7::: halt:*:12746:0:99999:7::: mail:*:12746:0:99999:7::: news:*:12746:0:99999:7::: uucp:*:12746:0:99999:7:::

FundamentosdeLinux

255

Captulo9ProcesamientodeArchivosdetextocon filtros
operator:*:12746:0:99999:7::: games:*:12746:0:99999:7::: gopher:*:12746:0:99999:7::: ftp:*:12746:0:99999:7::: nobody:*:12746:0:99999:7::: rpm:!!:12746:0:99999:7::: vcsa:!!:12746:0:99999:7::: nscd:!!:12746:0:99999:7::: sshd:!!:12746:0:99999:7::: rpc:!!:12746:0:99999:7::: rpcuser:!!:12746:0:99999:7::: nfsnobody:!!:12746:0:99999:7::: mailnull:!!:12746:0:99999:7::: smmsp:!!:12746:0:99999:7::: pcap:!!:12746:0:99999:7::: xfs:!!:12746:0:99999:7::: ntp:!!:12746:0:99999:7::: gdm:!!:12746:0:99999:7::: desktop:!!:12746:0:99999:7:::

Comando join El comando join nos permite juntar dos lineas de archivos diferentes en una sola,tomando como referencia una campo comn en ambas lineas; esto es, si consideramos cada archivo como una tabla de campos, donde un campo es comn a ambos archivos, podemos generar una salida donde se junta la informacin de ambas tablas (archivos) en una sola en base al campo comn, esto puede verse como una manera muy bsica de crear relaciones entre archivos (tablas) . La sintaxis del comando es:
join [opciones]... archivo1 archivo2

donde las opciones pueden ser:

-1 CAMPO Especifica que campo del archivo 1 se va tomar como comn donde CAMPO es un nmero indicando el campo que se va a tomar.

256

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

-2 CAMPO Especifica que campo del archivo 2 se va a tomar como comn donde CAMPO es un nmero indicando en campo que se va a tomar.

-t C: indica el caracter separador de campo, C es el caracter separador. -i ignorar diferencias entre maysculas y minsculas -o FORMATO especifica el formato de salida, donde FORMATO esta compuesto por una lista de campos de la forma ARCHIVON.CAMPON

-e EMPTY indica que se ponga la palabra EMPTY cuando se trate de un campo vaco.

Por ejemplo si tenemos un archivo1


a c1 b c2 c c3

y un archivo2
a d1 b d2 c d3

y ejecutamos el comando join


instructor@instructor:~>join archivo1 archivo2 a c1 d1 b c1 d1 c c1 d1

Ntese que los archivos estn ordenados alfabticamente por el campo comn Otro ejemplo es el siguiente: Supongamos que se tienen los archivos /tmp/passwd y /tmp/group y se requiere obtener una lista de los usuarios con su grupo correspondiente, digamos mandar a pantalla una salida con el siguiente formato:

FundamentosdeLinux

257

Captulo9ProcesamientodeArchivosdetextocon filtros
login:nombre_grupo:home_directory

Para obtener dicha salida se requiere que obtengamos el login y home directory del archivo /tmp/passwd y el nombre del grupo del archivo /etc/group el campo comn en ambos archivos es el gid (campo 4 y 3 respectivamente) Lo anterior se puede realizar con el comando join utilizando los archivo mencionados, previamente ordenados por el campo comn:
instructor@instructor~>join -t: -1 4 -2 4 -o 1.1,2.2,1.6 /tmp/passwd /tmp/group| more

dando la siguiente salida:


root:root:/root games:users:/var/games mariog:users:/home/mariog pop:users:/var/lib/pop radiusd:radiusd:/var/lib/radiusd privoxy:privoxy:/var/lib/privoxy mail:mail:/var/spool/clientmqueue news:news:/etc/news uucp:uucp:/etc/uucp at:at:/var/spool/atjobs vdr:video:/var/spool/video named:named:/var/lib/named ftp:ftp:/srv/ftp . . .

258

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

Substitucin de texto

Realmentesustitucindeocurrenciasdetextoenun archivo,sepuedehaceconeditoresadicionalmente

Tr

Comandoparasubstituirtexto(translate)

Procesamiento de Archivos con filtros

6 Sustitucin de texto
Comando tr Este comando nos permite sustituir o eliminar caracteres seleccionados. Por defecto toma la entrada estndar y la salida estndar. La sintaxis de este comando es:
# tr [opciones] argumento1 argumento2

Las opciones son:


-d para borrar caracteres -c para sustituir complemento de los caracteres indicados, es decir, que no sean sos -s para comprimir caracteres repetidos en uno solo.

Un ejemplo de este comando es: FundamentosdeLinux 259

Captulo9ProcesamientodeArchivosdetextocon filtros
# more /etc/passwd | tr [a-z] [A-Z] ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN HALT:X:7:0:HALT:/SBIN:/SBIN/HALT MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN NEWS:X:9:13:NEWS:/ETC/NEWS: UUCP:X:10:14:UUCP:/VAR/SPOOL/UUCP:/SBIN/NOLOGIN OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN GOPHER:X:13:30:GOPHER:/VAR/GOPHER:/SBIN/NOLOGIN FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN RPM:X:37:37::/VAR/LIB/RPM:/BIN/BASH VCSA:X:69:69:VIRTUAL CONSOLE MEMORY OWNER:/DEV:/SBIN/NOLOGIN NSCD:X:28:28:NSCD DAEMON:/:/SBIN/NOLOGIN SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN RPC:X:32:32:PORTMAPPER RPC USER:/:/SBIN/NOLOGIN RPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGIN NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN MAILNULL:X:47:47::/VAR/SPOOL/MQUEUE:/SBIN/NOLOGIN SMMSP:X:51:51::/VAR/SPOOL/MQUEUE:/SBIN/NOLOGIN PCAP:X:77:77::/VAR/ARPWATCH:/SBIN/NOLOGIN XFS:X:43:43:X FONT SERVER:/ETC/X11/FS:/SBIN/NOLOGIN NTP:X:38:38::/ETC/NTP:/SBIN/NOLOGIN GDM:X:42:42::/VAR/GDM:/SBIN/NOLOGIN DESKTOP:X:80:80:DESKTOP:/VAR/LIB/MENU/KDE:/SBIN/NOLOGIN

260

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

Ordenamiento

Basadoprincipalmenteenuncomando

Sort[opciones]archivo... Dondeopcionesmascomunesson:

n t d u +Ndondeesunnmeroindicandocampoaordenar

Procesamiento de Archivos con filtros

7 Ordenamiento
Comando sort Este comando nos permite obtener una salida ordenada, la sintaxis de sort es:
# sort [opciones] archivos...

Las opciones que toma son:


-b ignora espacios en blanco iniciales -d ordena como diccionario, considera solo blancos y caracteres alfanumricos -n ordenamiento numrico -M Ordenamiento de meses

FundamentosdeLinux

261

Captulo9ProcesamientodeArchivosdetextocon filtros

-r orden inverso +n ordena a partir de la columna especificada -t indica el separador de campo -u elimina lineas iguales adyacentes

Un ejemplo de este comando es:


# sort -r /etc/passwd

xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown rpm:x:37:37::/var/lib/rpm:/bin/bash rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin root:x:0:0:root:/root:/bin/bash pcap:x:77:77::/var/arpwatch:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin news:x:9:13:news:/etc/news: mail:x:8:12:mail:/var/spool/mail:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt gopher:x:13:30:gopher:/var/gopher:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

262

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros
bin:x:1:1:bin:/bin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin

FundamentosdeLinux

263

Captulo9ProcesamientodeArchivosdetextocon filtros

Otros Comandos

EnLinuxexistencientosdecomandos,porloque lasposibilidadessonmuchas,algunosotros comandoscomunesparaprocesamientodetexto


comm diff wc nl

Procesamiento de Archivos con filtros

8 Otros comandos
Comando comm Este comando nos sirve para comparar el contenido de dos archivos, linea por linea. La sintaxis es:
# comm [opciones] archivo1 archivo2

La salida est separada en tres columnas, en la primera estarn las lineas que estn en el primer archivo y no en el segundo, en la segunda columna se vern las lneas del segundo archivo que no estn en el primero y en la tercer columna las que estn en ambos archivos.

Las opciones que puede tomar comm sirven para decir cual de estas tres columnas se quiere desplegar: 264 FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros

-1 indica que solo muestre la primera columna. -2 solo muestra la segunda columna -3 muestra la tercer columna solamente
# comm passwd passwd1 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin

FundamentosdeLinux

265

Captulo9ProcesamientodeArchivosdetextocon filtros
desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin Esta line es de prueba para el ejemplo con comm

Comando diff Compara dos archivos, indicando las lineas que difieren el uno del otro, la sintaxis de este comando es:
# diff [opciones] archivo1 archivo2

Las opciones son:


-b ignora la cantidad de espacios en blanco en los archivos. -i ignora maysculas y minsculas -q muestra si son diferentes sin mayores detalles
# diff passwd passwd1 9d8 < mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 15d13 < ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 22d19 < rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 39d36 > Esta line es de prueba para el ejemplo con diff

Comando wc El nombre del comando wc proviene de word count, y sirve para contar palabras, su sintaxis es:
# wc [opciones] [archivo...]

Si se omite el nombre del archivo, wc tomar los datos de la entrada estndar. Las opciones que toma este comando son:

-c Contar bytes (donde los bytes son elementos alfanumricos y espacios en blanco y saltos FundamentosdeLinux

266

Captulo9ProcesamientodeArchivosdetextocon filtros de linea)


-l Contar lineas -w Contar palabras

Un ejemplo es:
# wc passwd 39 53 1711 passwd

FundamentosdeLinux

267

Captulo9ProcesamientodeArchivosdetextocon filtros

Evaluacin Captulo
1. Explique que es un filtro.

2. Qu comandos utilizamos para extraer informacin?

3. Qu ventajas me da combinar tuberas y filtros?

4. Qu secuencia de comandos ejecutara en una tubera para desplegar las lineas 5 a la 10 del archivo /etc/passwd mostrando nicamente la informacin de login, home directory y shell?.

268

FundamentosdeLinux

Captulo9ProcesamientodeArchivosdetextocon filtros 5. Cul seri la diferencia conceptual entre el comando paste y cat?

6. Se requiere mostrar la columna referente a la terminal del comando who Qu linea de comandos se utilizara para este fin?

7. Con qu comando se ordenara el archivo /etc/passwd por el uid del usuario?

8. Qu realizan los comandos comm y diff?

FundamentosdeLinux

269

Captulo9ProcesamientodeArchivosdetextocon filtros 9. Explique si la siguiente linea de comandos funciona o no, y Qu es lo que sucedera? who | ls -l | cut -d

10.Que requisito necesitan los campos comunes de los archivos que pasemos como parmetros al comando join?

270

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Captulo 10 Uso de Expresiones regulares

FundamentosdeLinux

271

Captulo10UsodeExpresionesregulares

Descripcin

DefinicindeExpresin Construccin Expresionesregularesextendidas Bsquedadetexto Procesamientodetexto UsodeExpresionesregularesenVi

UsodeExpresionesRegulares

272

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

1 Descripcin del captulo


En el presente captulo se describir en uso de expresiones regulares para el procesamiento y bsqueda de texto. Las expresiones regulares, son una de las caractersticas mas importantes y poderosas de Linux. Los puntos a ver son: Definicin de Expresin Regular. Construccin de una Expresin Regular. Definicin de Expresiones Regulares Extendidas. Bsqueda de Texto Procesamiento de texto (ed y sed) Uso de Expresiones Regulares en Vi.

FundamentosdeLinux

273

Captulo10UsodeExpresionesregulares

Definicin

Expresinregular

Plantillaformadapormetacaracteresconsignificado propioqueseutilizaparaconcordanciaconpatrones regularesdecadenasdetexto Loscaracteresconunsignificadoespecialdentrodela expresinregularseconocencomometacaracteres

UsodeExpresionesRegulares

Definicin de expresin regular


Una expresin regular es una plantilla formada por unos metacaracteres con significado propio que se utiliza para especificar patrones regulares sobre cadenas de texto. Un ejemplo de algo parecido a una expresin regular seran las plantillas para nombres de archivos usando * y ?; en este caso, *.txt expresara todos los archivos cuyo nombre termina en .txt, pero una expresin regular va mucho ms all. Una expresin regular se puede construir, para concordar con, por ejemplo, una direccin de correo electrnico, un nmero, una fecha, una URL, una etiqueta HTML, etc., es decir, cualquier cadena que cumpla unas determinadas caractersticas de regularidad.

274

FundamentosdeLinux

Captulo10UsodeExpresionesregulares Las expresiones regulares nos van a resultar de suma utilidad para realizar operaciones sobre cadenas de caracteres, tanto de comprobacin como de edicin. Existen ciertos caracteres que tienen un significado especfico dentro de una expresin regular. Estos caracteres especiales, o metacaracteres, se pueden aplicar a definiciones para especificar con qu caracteres se concuerda, cuantificadores para especificar el modelo de repeticin de los caracteres y tambin anclajes para especificar una posicin dentro de un texto. Estos caracteres, como hemos visto, se denominan metacaracteres porque tienen un significado que va ms all del smbolo que representa y tiene un comportamiento especial en una expresin regular.

FundamentosdeLinux

275

Captulo10UsodeExpresionesregulares

Construccin

Laconstruccindeexpresionesregularessebasaen

Metacaracteres Clases Literales Cuantificadores Anclajes Alternativas

UsodeExpresionesRegulares

3 Cmo se construye una expresin regular.


Para la construccin de una expresin regular es necesario tener otros conceptos claros antes, como son los metacaracteres, clases, literales, cuantificadores, anclajes, y alternativas.

Metacaracteres
Primeramente pasamos a la definicin de caracteres en una expresin regular. Vamos a detallar los metacaracteres que permiten especificar una plantilla que concuerde con un texto de unas caractersticas concretas.

276

FundamentosdeLinux

Captulo10UsodeExpresionesregulares Metacaracter . () [] [-] [^ ] | // \ Significado Concuerda con cualquier carcter (salvo fin de lnea en modo multilinea) Subexpresin o grupo Conjunto de caracteres Rango de caracteres Excepto ese conjunto de caracteres Permite una alternativa para elegir entre dos expresiones Delimita una expresin regular Protege el siguiente metacaracter

Las expresiones permiten tambin especificar caracteres especiales no imprimibles: Metacaracter \a \e \cx \f \n \r \t \xhh \ddd Significado pitido, el carcter BEL (07 en hexadecimal) escape (1B en hexadecimal) "control-x", donde x es el carcter correspondiente nueva pgina (0C hexadecimal) nueva linea (0A hexadecimal) retorno de carro (0D hexadecimal) tabulador (09 hexadecimal) caracter con cdigo hh hexadecimal caracter con cdigo ddd en octal

FundamentosdeLinux

277

Captulo10UsodeExpresionesregulares

Clases
Podemos especificar clases de caracteres segn varias sintaxis: POSIX, tradicional o Unicode. Segn la sintaxis de clases POSIX, podemos indicar [:clase:] donde clase puede ser alguna de las siguientes expresiones: Clase [:alpha:] [:alnum:] [:ascii:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:word:] [:xdigit:] Significado caracter alfabtico caracter alfanumrico caracter ascii espacio, incluye tabulador (tambin \s segn la sintaxis tradicional) caracter de control un dgito (tambin \d segn la sintaxis tradicional) carcter grfico letra minscula caracter imprimible caracter de puntuacin espacio (tambin \s segn la sintaxis tradicional) letra mayscula palabra (tambin \w segn la sintaxis tradicional) dgito hexadecimal

En la sintaxis tradicional, adems tenemos: Metacaracter \D \S \w \W Significado cualquier caracter que no sea un dgito decimal (equivalente a [^:digit:]) cualquier caracter que no sea un espacio en blanco (equivalente a [^:blank:] cualquier caracter de de una palabra cualquier caracter que no sea de una "palabra"

278

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Literales
Cuando queramos utilizar un metacaracter como literal tendremos que protegerlo con una contrabarra ("\"). Un ejemplo es el caso de /midominio\.dom/. En este caso el carcter "." no tiene su valor propio de una expresin regular de ser cualquier carcter, sino que al ir protegido representa el . Un caso particular lo podemos encontrar si usamos expresiones regulares dentro de una shell, por ejemplo un script de shell. En este caso deberamos realizar en algunos casos una doble proteccin con la contrabarra, una para protegerlo en shell y otra para protegerlo en la expresin regular.

Cuantificadores
Los cuantificadores son metacaracteres de la expresiones regulares que indican las caractersticas de repeticin de caracteres o grupos. Metacaracter * + ? {n} {n,} {n,m} Concuerda con repeticin de 0 o ms veces el carcter o subexpresin previos repeticin de 1 o ms veces el carcter o subexpresin previos repeticin de 0 o una vez el carcter o subexpresin previos repeticin de n veces el carcter o subexpresin previos repeticin de n veces el carcter o subexpresin previos repeticin entre n y m veces el carcter o subexpresin previos

"*" equivale a "{0,}" "+" equivale a "{1,}" "?" equivale a "{0,1}" Un cuantificador hace que la concordancia sea siempre con el mayor numero de veces posibles. Si queremos que sea con el menor posible le aadimos un "?".

FundamentosdeLinux

279

Captulo10UsodeExpresionesregulares

Anclajes
Los puntos de anclaje, especifican una condicin que se verifica en un punto particular del texto, sin corresponder a ningn carcter de la cadena de entrada concreta, esto es, una posicin en el texto: Metacaracter ^ $ <> \b \B \A \Z \z Significado Concuerda con el principio de linea Concuerda con el final de linea Concuerda con una palabra lmites de palabra no sean lmites de palabra inicio de la cadena de entrada (independiente del modo multilinea) fin de la cadena de entrada o nueva linea delante del final fin de la cadena de entrada (independiente de modo multilinea)

Alternativas
Una alternativa es el equivalente a un O lgico. El smbolo de la alternativa es | .

280

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Expresiones extendidas

Lasprimerasimplementacionesdeexpresiones regularesnocontabancontodoslosmetacaracteres, porloquealasexpresionesconlossiguientes metacaracteresseconocancomoextendidas

?+{}|()

ed,noreconoceexpresionesextendidas greprequiereelcarcter\antepuestoalos metacarateresparareconocerlos(outilizaregrep)

UsodeExpresionesRegulares

Expresiones regulares extendidas


En las primeras versiones no se contaban con todos los metacaracteres mencionados, despus se implementaron en las expresiones regulares extendidas, estos caracteres son ?, +, {, |, (, y ). En la actualidad la mayora de los comandos que trabajan con expresiones regulares reconocen estos caracteres, con excepcin de ed que solo trabaja con expresiones regulares bsicas y el comando grep, que necesita el carcter de escape \ para que reconozca estos caracteres ( con la opcin -e reconoce expresiones extendidas lo que es equivalente al comando egrep)

FundamentosdeLinux

281

Captulo10UsodeExpresionesregulares

Bsqueda

Labusquedaserealizaconelcomandogrep

grep[opciones]expresion[archivos] grep^r/etc/passwd grep^r|g.*x:[09]\{1,2\}:/etc/passwd

ej.

UsodeExpresionesRegulares

4. Bsqueda de texto (grep)


Como ya se vi en el captulo de filtros (captulo 9) con el comando grep se pueden realizar bsquedas de palabras dentro de un texto, sin embargo la funcionalidad de este comando va mas all, ya que permite el uso de expresiones regulares en vez de la palabra a buscar, permitiendo realizar una bsqueda mucho ms avanzada, se tiene la posibilidad de indicar si se quiere que algo est al principio o al final de una archivo, que est repetido una determinada cantidad de veces, etc. La sintaxis en est caso para el comando es:
# grep [opciones] expr-reg [archivos]

Las opciones que maneja son las ya mencionadas anteriormente

Pare entender el uso del comando grep con expresiones regulares se mostrarn algunos ejemplos: 282 FundamentosdeLinux

Captulo10UsodeExpresionesregulares
# grep '^r'/etc/passwd root:x:0:0:root:/root:/bin/bash rpm:x:37:37::/var/lib/rpm:/bin/bash rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

En este ejemplo se despliega todas las lineas del archivo passwd que comiencen con la letra r.
# grep '^r.*h$' /etc/passwd root:x:0:0:root:/root:/bin/bash rpm:x:37:37::/var/lib/rpm:/bin/bash

Se puede ver en este ejemplo que lo desplegado disminuye al poner una condicin mas en la expresin regular, en este caso se puede entender '^r.*h$' como las lineas que comiencen con la letra r el . sustituye a cualquier carcter y con * se le dice que sustituya cualquier carcter cualquier nmero de veces terminando la lnea con una h.
# grep '^r.*oo.*h$' /etc/passwd root:x:0:0:root:/root:/bin/bash

Con esta opcin se simplifica mas lo desplegado en pantalla, aqu se agreg que en cualquier parte de la linea se debe de encontrar dos o juntas.
# grep 'x:[0-9]\{2\}:' /etc/passwd uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin

FundamentosdeLinux

283

Captulo10UsodeExpresionesregulares
pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

En este ejemplo se busca que encuentre dos dgitos cualesquiera juntos en la parte del nmero de usuario (UID), para este fin se antepuso la x: y finalizar con :.
# grep '^r\|g.*x:[0-9]\{1,2\}:' /etc/passwd root:x:0:0:root:/root:/bin/bash games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin

Aqu se muestra las lineas que empiezan con r o g, que contengan cualquier caracter, seguido de x:, uno o dos dgitos en la parte de UID seguido de :.

284

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Procesamiento de texto

Paraprocesararchivosdetexto(modificar patrones,sustituirtexto,etc)secuentaconlas siguientesopciones ededitorlineaporlinea sedprocesamientodeflujodetexto vieditor awkutileradelsistemaconprogramacinpropia (fueradelalcancedeestecaptulo)

UsodeExpresionesRegulares

5. Procesamiento de flujo de texto Editor de lineas ed


Durante mucho tiempo, el ed fue el editor estndar de las diversas versiones del UNIX, antes que apareciera el vi (y luego los editores pertenecientes a entornos visuales). La sintaxis de este comando es:
# ed archivo

Con esta linea se puede abrir un archivo ya existente para editarlo o crear uno. Una vez dentro de editor ed existen comandos tiles para guardar, salir, escribir, etc, cada comando de ed es un solo caracter, aunque, podemos hacer uso de una combinacin de ellos. La mayor parte estn precedidas por uno o dos nmeros de linea, que indican que renglones resultan afectadas por el comando, estos comandos son:

FundamentosdeLinux

285

Captulo10UsodeExpresionesregulares

a (append) comienza a escribir o aade lineas. Si el archivo existe, aade lineas al final del texto.

w (write) graba el archivo abierto. w archivo graba en en el archivo indicado. . termina de escribir (tiene que estar en una lnea nueva y sin ningn otro caracter). q (quit) salimos de la sesin del ed. Q salimos, pero sin grabar los cambios. n muestra la linea n. $ muestra la ltima linea. 1,$p muestra el archivo de la primera a la ltima linea. ! comando permite salir de ed temporalmente para ejecutar otros comandos. Una vez ejecutado el comando, se vuelve a ed con ! (el signo de admiracin)

s permite la sustitucin de un parmetro por otro.

286

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Comando ed

Sintaxis

edarchivo

Unavezabiertoelarchivocontamosconcomandos paraactuarenel

. w q etc.

UsodeExpresionesRegulares

La sintaxis de estos comandos es:


direccin1, direccin2 comando parmetros

donde direccin1 es donde se desea iniciar el comando y direccin2 es donde finaliza la operacin del comando. Para realizar la sustitucin por medio de ed es necesario conocer su sintaxis:
direccin1, direccin2 s/sustituir/por

esta linea realiza la sustitucin de la primera ocurrencia del parmetro sustituir por el parmetro por, para realizar la sustitucin en todas la ocurrencias en el rango establecido se utiliza el comando g al final de la linea
direccin1, direccin2 s/sustituir/por/g

Un ejemplo de esto es: FundamentosdeLinux 287

Captulo10UsodeExpresionesregulares
1,$ s/root/ROOT/g

esta linea sustituye desde la linea 1 hasta el final del archivo la palabra root por ROOT.
1,20 s/nologin/NL/g

Esta linea sustituye solo los primeros veinte renglones del archivo.
1,20 s/\(^d.*\)nologin/\1NL/g

El ejemplo anterior cambia la palabra nologin por NL en aquellas lineas que comienzan con una d.
1,$ g/\(^d.*\)nologin/d

En este caso se eliminan todas las lineas que contengan nologin y empiecen con la letra d.

288

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Comando sed

Sintaxis

sed[opciones]archivo

Procesaunflujodetextoyenvaelresultadoa salidaestndar. Normalmenteconexpresionesregularesserealizan substituciones

sed[opciones]comando/exp_reg/sustitucin/comando

UsodeExpresionesRegulares

Comando sed
Sed, acrnimo de Stream Editor, es un editor de texto que acepta como entrada un archivo, lo lee y modifica linea a linea mostrando el resultado en pantalla. Su sintaxis es:
# sed [opciones] archivo...

Las opciones que puede tomar son:


-n indica que se suprima la salida estndar. -e script indica que se ejecute el script que viene a continuacin. Si no se emplea la opcin -f se puede omitir -e.

-f archivo indica que los comandos se tomarn de un archivo

Para la aplicacin de expresiones regulares con sed la sintaxis es la siguiente:

FundamentosdeLinux

289

Captulo10UsodeExpresionesregulares
# sed [opciones] comando/expr_regular/sustituir/comando archivo...

Donde las opciones son las mencionadas anteriormente, comando se refiere a las acciones que pueden realizarse en la expresin regular, dichas acciones son:

a aade texto al espacio patrn b ramifica a un rtulo, se emplea de forma similar a un goto c aade texto d borra texto i inserta texto l lista el contenido del espacio patrn n aade una nueva lnea al espacio patrn p imprime el espacio patrn r lee un archivo s sustituye patrones w escribe a un archivo

En el caso de la sustitucin existen algunos comandos adicionales que van al final de la linea que permiten un mejor funcionamiento de dicha accin, estos comandos son:

g (global) reemplaza todas las ocurrencias en el texto. i (insensitive) no diferenca entre minsculas y maysculas. m (mltiples lineas) Acepta strings de varias lineas

290

FundamentosdeLinux

Captulo10UsodeExpresionesregulares Para explicar mejor el uso de las expresiones regulares con sed se listarn algunos ejemplos:
# sed s/root/SuperU/ pruebas SuperU:x:0:0:root:/root:/bin/bash ... operator:x:11:0:operator:/SuperU:/sbin/nologin ...

En este ejemplo, con el comando s de sed se pide que sustituya la palabra root por SuperU, pero como se ve en la primera linea solo cambia la primera ocurrencia, para que cambia la palabra en toda la linea se utiliza otro comando de sed, g, al final de la expresin regular;
# sed s/root/SuperU/g pruebas SuperU:x:0:0:SuperU:/SuperU:/bin/bash ... operator:x:11:0:operator:/SuperU:/sbin/nologin ...

Se pueden cambiar varias palabras al mismo tiempo, esto se muestra en el siguiente ejemplo:
# sed 's/root/SuperU/g;s/bash/shell/g' pruebas SuperU:x:0:0:SuperU:/SuperU:/bin/shell ... operator:x:11:0:operator:/SuperU:/sbin/nologin ... rpm:x:37:37::/var/lib/rpm:/bin/shell ...

Se pueden especificar otras opciones para que la sustitucin sea mas precisa:
# sed 's/root/SuperU/g;/^d.*/s/nologin/NL/g' pruebas SuperU:x:0:0:SuperU:/SuperU:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/NL adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt

FundamentosdeLinux

291

Captulo10UsodeExpresionesregulares
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/SuperU:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/NL

Como se observa se realiz el cambio de la palabra root por SuperU en todas las lineas en las que apareca, mientras que el cambio de nologin por NL solo se di en las lineas que comienzan con d. Se pueden eliminar lineas con el comando de sed d, como se ve en el siguiente ejemplo.
# sed '/root/d;/nologin/d' pruebas sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt news:x:9:13:news:/etc/news: rpm:x:37:37::/var/lib/rpm:/bin/bash

292

FundamentosdeLinux

Captulo10UsodeExpresionesregulares Con esta linea de comando se eliminaron todas las lineas del archivo que contenan la palabra root y la palabra nologin.
# sed /^d.*nologin/c/NOLOGIN pruebas root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin /NOLOGIN adm:x:3:4:adm:/var/adm:/sbin/nologin ... gdm:x:42:42::/var/gdm:/sbin/nologin /NOLOGIN

En este ejemplo se sustituye las lineas que comiencen con la letra d y contengan la palabra nologin por la palabra NOLOGIN.
# sed /^d.*nologin/i/prueba_de_comando_i root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin /prueba_de_comando_i daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ... gdm:x:42:42::/var/gdm:/sbin/nologin /prueba_de_comando_i desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin pruebas

Con el comando i se inserta una linea en el lugar en donde estaba la linea que contiene las especificaciones, en este caso que comience con la letra d y contenga la palabra nologin.
# sed /^d.*nologin/a/prueba_del_comando_a pruebas root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin /prueba_del_comando_a adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ... gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin /prueba_del_comando_a

FundamentosdeLinux

293

Captulo10UsodeExpresionesregulares El comando a inserta una lnea abajo de la lnea que se le especifica con las expresin regular.
# sed "/^d/ w salida" pruebas

En este ejemplo con el comando w manda las lineas que comiencen con d del archivo pruebas al archivo salida.

294

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

Expresiones regulares en vi

Vipuedeutilizaexpresionesregularesenmodo comandoenelcasodebsquedas

/^u direccion/comando/patrn/sustitucin/comando dondedireccinpuedeserunrangodelineasounpatrn abuscar

oenmodoltimalineaparasustitucin

UsodeExpresionesRegulares

6. Uso de expresiones regulares en vi


En el modo de ltima lnea de el editor vi se pueden utilizar las expresiones regulares, para la bsqueda, sustitucin o eliminacin de texto, la forma de utilizar las expresiones regulares es:
:<prim>,<ult>comando/<busca>/<sust>/comando :/patron/comando

donde:

: es la indicacin de que se est en modo de ltima lnea <prim> es un nmero entero el cual indica desde donde se empieza la bsqueda, <ult> es la linea en donde se termina la bsqueda comando es un comando de expresiones regulares

FundamentosdeLinux

295

Captulo10UsodeExpresionesregulares

<busca> es el patrn a buscar <sust> es el patrn por el que se va a sustituir

Para ver con mayor claridad estos conceptos se vern algunos ejemplos:
:1,$s/root/ROOT/g ROOT:x:0:0:ROOT:/ROOT:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/ROOT:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin 4 substitutions on 2 lines

Para mantener los cambios realizados se debe salvar el archivo. 296 FundamentosdeLinux

Captulo10UsodeExpresionesregulares En el ejemplo se sustituy la palabra root por ROOT desde la linea 1 hasta la ltima linea ($), sustituyendo cualquier nmero de ocurrencias.
:%s/root/ROOT/g ROOT:x:0:0:ROOT:/ROOT:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/ROOT:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin 4 substitutions on 2 lines

EL simbolo % tiene la misma funcin que 1,$, busca en todo el texto.


:%s/nologin/NL/gc root:x:0:0:root:/root:/bin/bash

FundamentosdeLinux

297

Captulo10UsodeExpresionesregulares
bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin replace with NL (y/n/a/q/l/^E/^Y)?

Con el comando c se pide la confirmacin de cada sustitucin.


:% s/\(^d.*\)nologin/\1NL/g root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/NL adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync

298

FundamentosdeLinux

Captulo10UsodeExpresionesregulares
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/NL

En el ejemplo anterior se especifica que solo se cambie el patrn nologin en las lineas que comienzan con la letra d, los parntesis se utilizan para agrupar lo que contienen dentro, y \1 se utiliza para especificar que se tomar lo mismo que se agrup la primera vez.
:% g/^r.*/d bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

FundamentosdeLinux

299

Captulo10UsodeExpresionesregulares
operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin 6 fewer lines

En este ejemplo se eliminan las lineas que comienzan con la letra r.


:% g/^[f-z]/d bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin

Se elimina todas las lneas que empiecen con una letra del rango de f a z.

El comando h dentro del editor vi nos despliega una pgina de ayuda, que nos dice desde como movernos en el editor, as como algunos comandos bsicos como el guardar, salir, etc.

300

FundamentosdeLinux

Captulo10UsodeExpresionesregulares

7. Evaluacin del captulo


1. Qu es una expresin regular?

2. Qu utilidad tienen las expresiones regulares?

3. Explique brevemente que son: 1. metacaracteres

2. clases

3. literales

4. cuantificadores

5. anclajes

FundamentosdeLinux

301

Captulo10UsodeExpresionesregulares 4. En que comandos se utilizan expresiones regulares

5. Cul es la diferencia entre sed y ed.

6. Cules son las distintas formas de especificar en que lineas se aplicar un comando de sed o ed

7. Revise la pgina de man del comando ed y diga que realizan los comandos: 1. g/reg_exp/comandos/

2. v/reg_exp/comandos/

302

FundamentosdeLinux

Captulo10UsodeExpresionesregulares 8. Explique que realizan los siguientes comandos en modo ltima linea de vi 1. :/^[0-9]\./s/^/<TAB>/ 2. :%s/^[0-9]\./<TAB>/ 3. :%s/\(^[0-9]\.\)/<TAB>\1/

FundamentosdeLinux

303

Captulo10UsodeExpresionesregulares pgina vacia

304

FundamentosdeLinux

Captulo11ControldeProcesos

Captulo 11 Control de Procesos

FundamentosdeLinux

305

Captulo11ControldeProcesos

Descripcin

DefinicindeunProceso CiclodeVida Estados Visualizacin(ps) ControldeProcesos Prioridades Ejecucinnoatendida Ejecucinenuntiempofuturo Ejecucinperidica


Control de Procesos

306

FundamentosdeLinux

Captulo11ControldeProcesos

1 Descripcin del captulo


El control de Procesos nos va a permitir interactuar y visualizar los programas que se estn corriendo en sistema , lo que conocemos como procesos. Esto es una parte vital del manejo del sistemas pues no permite controlar lo que estemos ejecutando en este. Los tpicos a cubrir son: Definicin de Procesos Ciclo de Vida Estados de un Proceso Visualizacin de Procesos mediante el comando PS Control de Procesos Manejo de Prioridades Ejecucin no atendida Ejecucin en un tiempo posterior Ejecucin peridica

FundamentosdeLinux

307

Captulo11ControldeProcesos

Definicin

Programa:

SecuenciadeInstruccionesaejecutarescritasenun lenguajedado Instanciadeunprogramaenejecucin,todocomandoen ejecucinesunproceso,acadaprocesoseleasignan recursosdememoriaycpuparasuejecucin

Proceso

Control de Procesos

2 Definicin de proceso
Antes de ver lo que es un proceso se debe definir lo que es un programa, un programa es una secuencia de instrucciones escrita en un lenguaje dado. Un proceso es una instancia de un programa en ejecucin, todo comando en estado de ejecucin en un proceso, cuando un programa es cargado en memoria y se le asignan recursos para su ejecucin. Cada proceso en el momento de su creacin se le asocia un nmero nico que lo identifica del resto llamando PID.

308

FundamentosdeLinux

Captulo11ControldeProcesos

Ciclo de Vida

PID100

fork()

wait()

PID101

exec()

exit()

Control de Procesos

3 Ciclo de vida
En esta seccin se presentar brevemente como se genera un proceso, si se quiere saber algo mas complejo acerca de este tema se puede revisar la pgina de Internet citada al final de la seccin. Todo proceso tiene un proceso padre con su respectivo PID (nmero identificador del proceso) a partir del cual se generan los otros procesos, los pasos que se mencionan a continuacin representan al ciclo de vida que recorre el proceso hijo.

Al crear el nuevo proceso, se le asigna su entrada en la tabla de procesos y su identificador. Se le pone en estado listo para ejecutarse. El proceso hijo es inicialmente exactamente igual que el padre, copia su segmento de datos, pila y estructura de usuario. La nica forma de distinguir al padre del hijo es mediante retorno de fork: para el hijo es 0 y para el padre el PID del hijo. el

FundamentosdeLinux

309

Captulo11ControldeProcesos

A medida que el hijo va ejecutando otro cdigo, su memoria, pila y estructura se va diferenciando del padre, mientras tanto el padre queda en espera.

El hijo no termina, hasta que el padre recoge su cdigo de finalizacin (devuelto con exit) El hijo queda zombie si el padre termina y no ha recogido su cdigo de finalizacin. El padre debe esperar a sus hijos.

El hijo queda hurfano si el padre muere cuando el hijo an est en ejecucin.

310

FundamentosdeLinux

Captulo11ControldeProcesos

Estados de un proceso

Duranteseejecucinunprocesopuedepasarpor variosestados,losmascomunesoimportantesson:

Ejecutandose Durmiendo

Coninterrupciones Sininterrupciones

Parado Zombie Terminado

Control de Procesos

4 Estados de un proceso
Linux implementa tareas o procesos que pueden existir en uno de 6 estados:

Ejecutndose: Este estado le indica al ncleo que el proceso debe estar en la cola de ejecucin.

Proceso con interrupciones: En este estado el proceso se encuentra esperando (o durmiendo) pero puede ser despertado por una seal o por termino del tiempo.

Proceso sin interrupciones: El proceso tambin se encuentra dormido pero a diferencia del anterior, el proceso no puede ser despertado por eventos externos.

Proceso Zombi: Este estado se presenta cuando la tarea ha terminado pero an faltan por liberar algunos recursos por lo que el proceso an puede considerarse como vivo dentro del sistema.

FundamentosdeLinux

311

Captulo11ControldeProcesos

Proceso Parado: El proceso se encuentra parado bien sea por una seal de control de trabajo o por la seal de sistema ptrace.

Terminado: Cuando el proceso a concluido satisfactoriamente se puede decir que ha entrado en este estado.

312

FundamentosdeLinux

Captulo11ControldeProcesos

Visualizacin de Procesos

Visualizacinatravsdelcomandops

$ps[opciones]

ej.
psaux USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND root10.00.21272?S16:000:04init[5] root20.00.000?SW16:000:01[keventd] root30.00.000?SW16:000:00[kapmd]

Control de Procesos

5 Visualizacin de procesos
Comando ps El comando ps permite mostrar todos los procesos que estn corriendo en nuestro sistema. Su sintaxis es:
# ps [opciones]

Este comando trabaja en sistemas BSD y SYSV, por lo que las opciones entre estos sistemas vara, en Linux se soportan ambas opciones en la actualidad la mayora de distribuciones utilizan por defecto las opciones del sistema SYSV.

Algunas de las opciones ms comunes se especifican a continuacin FundamentosdeLinux 313

Captulo11ControldeProcesos

-a muestra los procesos ms frecuentemente solicitados -u muestra los usuarios que estn ejecutando esos procesos. Si se le agrega un nombre de usuario solo despliega los procesos de dicho usuario

-f

muestr mas informacin sobre los procesos

-e muestra todos los procesos que se estn ejecutando en el sistema -l utiliza un formato ms largo (muestra ms informacin).

-p PID muestra la informacin de un proceso en particular

Algunas de estas opciones tambin se pueden ejecutar en el sistema BSD:


f e a x

muestra las relaciones jerrquicas entre los procesos muestra la terminal de cada proceso muestra todos los procesos que se estn ejecutando en todas las consolas muestra los procesos que no estn asignados a ninguna consola

Un ejemplo de lo que despliega este comando es lo siguiente:


# ps -aux USER root root root PID 1 2 3 %CPU 0.0 0.0 0.0 %MEM 0.2 0.0 0.0 VSZ 12 0 0 RSS 72 0 0 TTY ? ? ? STAT S SW SW START 16:00 16:00 16:00 TIME 0:04 0:01 0:00 COMMAND init [5] [keventd] [kapmd]

Las columnas contienen la siguiente informacin:


USER PID %CPU %MEM

nos dice que usuario est ejecutando el proceso es su nmero de proceso es el porcentaje de CPU que est utilizando es el porcentaje de memoria. FundamentosdeLinux

314

Captulo11ControldeProcesos

RSS

Tambin incluye la cantidad de memoria en kylobytes que ha utilizado dicho proceso.

TTY STA

muestra la consola desde la que se est ejecutando nos muestra el estado del proceso: S(drmiendo), R(corriendo), T(parado), Z(zombie). Las opciones W y N son especiales para procesos del kernel

START TIME

muestra la hora a la que empez el proceso muestra el tiempo de CPU que ha usado el proceso desde que se inici muestra el nombre del comando que se est ejecutando.

COMMAND

FundamentosdeLinux

315

Captulo11ControldeProcesos

Background/foreground

Foreground:

Cuandounprocesotomaelcontroldelaterminalyno seregresaestehastasufinalizacin(modonormalde ejecuciondecomandos) Cuandounprocesodejalibrelaterminalparaseguir introduciendocomandos


Background:

$comando& Importanteelredireccionamientosinosequiereversalidaen laterminalquesemezcleconlastareasqueenestaserealizen $comando>salida.out

Control de Procesos

6 Control de procesos 6.1 Procesos en Foreground y Background


El shell bash permite ejecutar los procesos en foreground o background. Los primeros son nicos por terminal y es la forma en que se ejecuta un proceso por defecto. Solo se retorna al prompt una vez que el proceso termine, sea interrumpido o detenido. En cambio, en background pueden ejecutarse muchos procesos a la vez asociados a la misma terminal. Para indicar al shell que un proceso se ejecute en background, se utiliza la construccin:
# comando &

Para modificar el estado de un proceso en foreground desde bash existen dos combinaciones de teclas muy importantes que este interpreta:

Ctrl-c : trata de interrumpir el proceso en foreground. Si es efectivo, el proceso finaliza su ejecucin.

316

FundamentosdeLinux

Captulo11ControldeProcesos

Ctrl-z : trata de detener el proceso en foreground. Si es efectivo el proceso continua activo aunque deja de acceder al procesador.

FundamentosdeLinux

317

Captulo11ControldeProcesos

jobs

Bashpermiteelcontroldeprocesosenbgyfg medianteelusodejobs

$jobs
[1]Runningsleep10000& [2]Stoppedcp/var/log/messages/tmp [3]+Stoppedupdatedb

Medianteloscomandosfgybgsepuedecambiarde foregroundabackgroundyviceversa Sealesdetecladopermitenterminarydetenerprocesos:


<CTRLC>terminaelprocesoactual <CTRLZ>detienetemporalementeelprocesoactual

Control de Procesos

Comando jobs Para ver los procesos detenidos o en background en un shell se emplea el comando jobs, que mostrar una lista con todos los procesos en dichos estados mediante los comandos asociados y un identificador numrico especial. Su sintaxis es:
# jobs

y mostrara algo como lo que sigue:


[1] [2][3]+

Running Stopped Stopped

sleep 10000 & cp /var/log/messages /tmp updatedb

1 columna Corresponde al nmero de orden en que se van a ejecutar los comandos, no es FundamentosdeLinux

318

Captulo11ControldeProcesos el mismo que el PID.

2 columna Puede estar en blanco, o contener un signo ms (+), o un signo menos (-):

El signo + indica el ltimo trabajo que se ha parado. El signo - indica el penltimo trabajo que se ha parado.

3 columna Indica si el trabajo est corrindose en background (Running) o se ha parado (Stopped).

4 columna Contiene el nombre del comando que se est corriendo en background o que est parado.

Las opciones que maneja este comando son:


-l Lista PIDs adems de la informacin normal. -n Muestra informacin solamente sobre trabajos que han cambiado de estado desde que se notific al usuario por ltima vez de su estado.

-r Restringe la salida a los trabajos en ejecucin. -s Restringe la salida a los trabajos parados.

Comandos bg y fg Los procesos detenidos se pueden llevar al background y estos a su vez pueden trasladarse al foreground. Para ello se emplean respectivamente los comandos: bg y fg, pasndoles como argumento el identificador especial del proceso. Si no se especifica un argumento se asumir el trabajo marcado con un signo ``+'' que sera el ltimo detenido o llevado al background. Su sintaxis es:
# bg [num] # fg [num]

FundamentosdeLinux

319

Captulo11ControldeProcesos Al ejecutar el comando bg sobre un trabajo que esta detenido, es como si se hubiera arrancado con & desde el inicio. Reanudar un trabajo en primer plano con fg lo hace ser el trabajo en curso. Si se comenzara a ejecutar un proceso y este se demora mucho y no interesan por el momento sus resultados se puede detener y enviarlo al background haciendo Ctrl-z y luego, bg.

320

FundamentosdeLinux

Captulo11ControldeProcesos

Seales

AdicionalmenteaCTRLzyCTRLcexisten variedaddesealesquesepuedenenviarconel comando

$killsealPID HUP(1) INT(2) QUIT(3) KILL(9) TERM(15)

Sealescomunes:

Control de Procesos

6.2 Envo de seales


Las seales de Linux son un mecanismo para anunciar a un proceso que ha sucedido cierto evento que debe ser atendido. La lista de posibles seales de comunicar a los procesos est fija, con algunas variaciones dentro de las distribuciones de Linux. La recepcin de una seal en particular por parte de un proceso provoca que se ejecute una subrutina encargada de atenderla. A esa rutina se le llama el "manejador" de la seal (signal handler). Un proceso puede definir un manejador diferente para sus seales o dejar que el kernel tome las acciones predeterminadas para cada seal. Cuando un proceso define un manejador para cierta seal se dice que "captura" (catch) esa seal.

FundamentosdeLinux

321

Captulo11ControldeProcesos Si se desea evitar que determinada seal sea recibida por un proceso se puede solicitar que dicha seal sea ignorada o bloqueada. Una seal ignorada simplemente se descarta sin ningn efecto posterior. Cuando alguien enva a cierto proceso una seal que est bloqueada la solicitud se mantiene encolada hasta que esa seal es explcitamente desbloqueada para ese proceso. Cuando la seal es desbloqueada la rutina de manejo de la seal es invocada una sola vez aunque la seal haya sido recibida ms de una vez mientras estaba bloqueada. Si bien un proceso tiene ciertas libertades para configurar como reacciona frente a una seal (capturando, bloqueando o ignorando la seal), el kernel se reserva ciertos derechos sobre algunas seales. As, las seales llamadas KILL y STOP no pueden ser capturadas, ni bloqueadas, ni ignoradas y la seal CONT no puede ser bloqueada. Comando kill El comando kill sirve para enviar seales a los procesos a travs de sus ID (PID mostrado en ps). Para poder ejecutar este comando se deben tener permisos de root o ser el propietario del proceso. Su sintaxis es:
# kill -seal PID

si no se le asigna un nmero de seal manda la seal por defecto, que es la 15 SIGTERM, que intenta terminar cualquier proceso. Algunas de la seales mas utilizadas por el comando kill son:

15 SIGTERM Esta seal solicita la terminacin del proceso que la recibe. 9 SIGKILL Esta seal termina el proceso que la recibe de forma inmediata. Se usa slo para detener procesos que no terminan con la seal SIGTERM.

2 SIGINT Es la misma seal que se produce cuando un usuario en un programa interactivo presiona, Control-C para solicitar su terminacin.

3 SIGQUIT

La misma seal producida por Control-\, su efecto es anlogo al de SIGINT pero adems acta como si el programa hubiera provocado algn error interno (volcando el contenido de memoria a un archivo core).

322

FundamentosdeLinux

Captulo11ControldeProcesos

20 SIGTSTP La misma seal producida por Control-z, su efecto es suspender la ejecucin de un proceso ---para reanudarla despus.

18 SIGCONT Reanuda un proceso suspendido previamente por la seal SIGTSTP. 1 SIGHUP Esta seal es enviada por bash a todas las tareas que se ejecutan en segundo plano, cuando el usuario cierra la sesin.

Estas solo son las seales ms utilizadas, con la opcin -l se muestra en pantalla otras seales asociadas con el comando. Una variante de este comando es killall que cuanta con las mismas seales, la diferencia es que en vez de mandar el numero identificador del proceso se enva el nombre. A diferencia del ID, el nombre de un proceso no es nico, o sea pueden existir muchos procesos con el mismo nombre y de ah la utilidad de este comando. Su sintaxis es:
# [opciones] nombre

Algunas opciones que maneja son:


-i forma interactiva. Pregunta para cada proceso si se desea enviar la seal o no. -v reporta si fue exitoso el envo de la seal. -l lista el nombre de todas las seales -w espera para que todos los procesos que se les mando la seal mueran

FundamentosdeLinux

323

Captulo11ControldeProcesos

Prioridades

ModificacindePrioridadesdeejecucinde procesosmediantemodificacindelvalornice

Valoresdenicede20a20 Nice Renice

Comandos:

Control de Procesos

6.4 Manejo de prioridades


En Linux existe la posibilidad de iniciar los procesos con prioridades distintas a las asignadas por parte del sistema. Para ello se puede emplear algunos comandos que se mencionan a continuacin: Comando nice Este comando al invocarse sin argumentos imprime la prioridad asignada por defecto (10) a los procesos del usuario actual. La otra forma de emplear a nice es indicando la nueva prioridad precedida del signo - y la linea de comando que desencadena el proceso. Slo el usuario root puede asignar a sus procesos prioridades con valores inferiores a cero.

La sintaxis de este comando es:

324

FundamentosdeLinux

Captulo11ControldeProcesos
# nice -prioridad comando

Un ejemplo de su funcionamiento es:


# nice -prioridad comando # nice tar cvf /tmp/etc.tgz /etc del comando # nice -10 updatedb # nice --10 updatedb # incrementa en 10 la prioridad por defecto # ejecuta un comando con prioridad 10 # ejecuta un comando con prioridad -10

Comando renice Si se deseara reajustar la prioridad de un proceso ya en ejecucin se puede utilizar el comando renice. En este caso el valor de la prioridad no va precedido por el signo - como es en nice. Tambin se puede cambiar la prioridad de todos los procesos de uno o de varios usuarios a la vez. La sintaxis del comando renice es:
# renice prioridad [[-p] pid ...] [[-g] pgrp ...] [[-u] usuario ...]

Donde: prioridad es el valor de la prioridad pid es el ID del proceso pgrp es el ID de grupo del proceso usuario es el nombre de usuario del dueo del proceso. Las opciones son:

-p para mltiples procesos -g si son varios grupos -u para ms de un usuario

El funcionamiento se ejemplifica a continuacin: FundamentosdeLinux 325

Captulo11ControldeProcesos
# renice -19 1001 # renice 1 602 # renice 10 -u pepe usuario pepe # ajusta la prioridad de un proceso a -19 # ajusta la prioridad de un proceso a 1 # ajusta a 10 la prioridad de todos los procesos del

# renice 5 -g ppp uucp # ajusta a 5 la prioridad de todos los procesos de los usuarios miembros de los grupos ppp y uucp

Las prioridades de los procesos slo se pueden disminuir, nunca aumentar con excepcin de root que puede hacerlo indistintamente.

326

FundamentosdeLinux

Captulo11ControldeProcesos

7 Programacin de procesos para su ejecucin posterior


Los procesos de los usuarios, por defecto, se asocian a la terminal actual. Es en ella donde muestran su salida estndar si esta no ha sido redireccionada. Si la sesin en una terminal termina, los procesos activos asociados a esta recibirn la seal HUP. En caso de que no trataran dicha seal se les enviar la seal TERM y por ltimo, KILL. Para evitar este tratamiento por parte del sistema se puede emplear el comando nohup que ejecuta un comando cuyo proceso no recibir la seal HUP correspondiente, una vez terminada la sesin. Por defecto nohup reduce la prioridad del proceso en 5 y enva su salida a un fichero llamado nohup.out.

FundamentosdeLinux

327

Captulo11ControldeProcesos

Nohup

Desasociarlosprocesosdelaterminalparaque continuensuejecucionauncuandoelusuariosalga desesion


$nohupcomando[argumentos] $nohup[opciones]

Salidaenviadapordefaultal$HOME/nohup.out

Control de Procesos

Comando nohup El comando nohup ejecuta un comando de manera que ste siga su ejecucin incluso si la terminal es desconectada o se sale de la terminal. Su sintaxis es:
# nohup comando [argumento] # nohup [opciones]

Las opciones que maneja son:


--help despliega la ayuda del comando --versin despliega la informacin de la versin

Si la salida estndar es el monitor, nohup la redirecciona hacia un fichero llamado nohup.out. La salida de error la redirecciona hacia la salida, es decir, a nohup.out; sino se especifica otra cosa. Si el directorio en el que esta no permite crear el fichero nohup.out (por estar protegido

328

FundamentosdeLinux

Captulo11ControldeProcesos contra escritura), entonces lo crea en $HOME/nohup.out. Un ejemplo de su funcionamiento seria:


# nohup ps-l

al momento de salir de la terminal y volver a entrar se encontrara en el directorio del usuario el archivo nohup.out con la salida del comando.

FundamentosdeLinux

329

Captulo11ControldeProcesos

At y batch

Ejecucinenuntiempoposterior

$at[opciones]TIEMPO $batch[opciones]

Ejecucincuandolacargadelsistemalopermita

Control de Procesos

Comando at y batch Estos comandos programan un proceso para que inicie su ejecucin en un tiempo determinado, con at se especifica cuando debe ejecutarse el proceso; con batch, el sistema es el que determina cuando debe ejecutarse, por lo general batch es apropiado para trabajos largos y de baja prioridad. La sintaxis de at es:
# at tiempo

donde tiempo es el tiempo para ejecutar el comando, este argumento puede ser uno de los siguientes:

formato HH:MM. Por ejemplo, 04:00 especifica 4:00AM. Si se inserta el tiempo, se ejecuta en el tiempo especfico el da despus.

330

FundamentosdeLinux

Captulo11ControldeProcesos

midnight Especifica 12:00AM. noon Especifica 12:00PM.

formato del nombre-mes, da y ao. Por ejemplo, Enero 15 del ao 2002. El ao es opcional. formato MMDDYY, MM/DD/YY, o MM.DD.YY. Por ejemplo, 011502 para el da 15 de Enero del ao 2002.

now + tiempo. El tiempo est en minutos, horas, das o semanas. Por ejemplo, now + 5 days, especifica que el comando debera ser ejecutado a la misma hora en 5 das.

Tras haber escrito el comando at con el argumento del tiempo, el prompt at> ser visualizado. Se escribe el comando a ejecutar y se teclea Ctrl-D. Se puede especificar ms de un comando escribiendo cada comando seguido de la tecla. Despus de haber escrito todos los comandos, en una lnea en blanco teclea Ctrl-D. Alternativamente, se puede introducir un script de shell en el intrprete de comandos y teclear Ctrl-D en una lnea en blanco para salir El comando batch funciona para ejecutar una tarea no repetitiva cuando el promedio de carga est por debajo de 0.8. La sintaxis para el comando batch es la siguiente:
#batch at > comandos ctrl+d

Se puede introducir de forma alternativa un script de shell en el intrprete de comandos y escribir Ctrl-D en una lnea en blanco para salir. Tan pronto como el promedio de carga est bajo 0.8, se ejecutar la configuracin del comando o el script. El resultado de esta programacin se enviara por correo al usuario que lo asigno.

FundamentosdeLinux

331

Captulo11ControldeProcesos

Cron y crontabs

Paralaejecucinperidicadecomandossin intervencindeusuariosecreanarchivoscrontabs ejecutadosperidicamenteporeldemoniocron


$crontab[opciones] Concrontabecreacindearchivoscrontabsconel siguienteformatoporlinea


dia_semana [nombre_de_usuario]

minutos horas dia_mes mes instruccin argumentos

Control de Procesos

9. Programacin de procesos para ejecucin peridica


En esta seccin a diferencia de la anterior se programarn procesos para que se ejecuten peridicamente, ya sea en un periodo de minutos, horas, das o meses. Comando crontab El comando crontab al igual que at especifica el tiempo al cual se ejecutar un proceso o un "script", crontab tiene la siguiente forma:
minutos horas dia_mes mes dia_semana nombre_de_usuario instruccin argumentos

Para especificar trabajos con crontab cada usuario mantiene un archivo en el directorio / var/spool/cron/, este directorio es modificado por cada usuario con el comando crontab -e Otras opciones que puede tomar el comando crontab son:

332

FundamentosdeLinux

Captulo11ControldeProcesos

-r -l

remueve el presente crontab despliega el presente crontab en pantalla.

Un ejemplo de el uso de crontab es el siguiente:


# crontab -e 30 13 * * 7 ps

en donde:

30 indica los minutos, puede tomar valores desde 0 hasta 59 13 indica la hora, toma valores de 0 a 23 * indica el da del mes en que se ejecutar el proceso, puede valer de 1 hasta 31 * indica el mes en que se ejecutar el proceso, toma valores de 1 a 12 o las tres primeras letras del mes en ingles

7 indica el da de la semana, toma valores de 0 a 7, siendo 0 y 7 domingo.

Los asteriscos (*) sirve para especificar todos los valores posibles, tambin se puede asignar un rango de valores, por ejemplo si se quiere que el proceso se ejecute de lunes a viernes se pone la opcin 1-5 en los das de la semana, o se puede utilizar la coma (,) para asignar valores separados, por ejemplo si se quiere ejecutar el proceso lunes y viernes se coloca en los das de la semana la opcin 1,5.

FundamentosdeLinux

333

Captulo11ControldeProcesos

Evaluacin Captulo
1. Cul es la diferencia entre programa y proceso?

2. En que estados se puede encontrar un proceso?

3. Qu comando(s) utilizamos para la visualizacin de procesos?

4. Qu entendemos por procesos en Foreground y Background?

334

FundamentosdeLinux

Captulo11ControldeProcesos 5. Qu es una seal?

6. Qu seales envan las combinaciones de teclado <CTRL-Z> y <CTRL-C>

7. Qu comando me permite enviar seales?

8. Qu herramientas proporciona Linux para alterar la importancia en que el Scheduler de procesos va corriendo a los procesos que estn en el sistema?

FundamentosdeLinux

335

Captulo11ControldeProcesos 9. Cmo mandamos a ejecutar el comando find / -type f de tal forma que este siga corriendo si nos salimos de sesin durante su ejecucin?

10.Cul es la diferencia entre el comando at y el comando crontab?

11.Describa la sintaxis de un archivo crontab

336

FundamentosdeLinux

Captulo12Documentacin

Captulo 12 Documentacin

FundamentosdeLinux

337

Captulo12Documentacin

Descripcin

Ayudadelsistema (man,apropos,whatis) Configuracinman Documentacinenelsistema Documentacineninternet

Documentacion

338

FundamentosdeLinux

Captulo12Documentacin

1 Descripcin del captulo


En este captulo se vern las formas de conseguir ayuda en el sistema para ejecutar de manera adecuada los comandos y las opciones que tengan. Se vern los puntos siguientes: Ayuda del Sistema (man, whatis, apropos) Configuracin man (Manual del sistema) Documentacin en el sistema Documentacin en Internet.

FundamentosdeLinux

339

Captulo12Documentacin

Ayuda del sistema

Comandoman:desplieguedepginasdelmanual (comandos,archivos,etc.) Secuentaconlassiguientespginasdeman


Programasejecutablesyguionesdelintrpretedecomandos. Llamadasdelsistema(funcionesservidasporelncleo). Llamadasdelabiblioteca(funcionescontenidasenlasbibliotecasdel sistema). Archivosespeciales(seencuentrangeneralmenteen/dev). Formatodearchivosyconvenios,porejemplo/etc/passwd. Juegos. Paquetesdemacrosyconvenios,porejemploman(7),groff(7) Comandosdeadministracindelsistema(generalmentesolosonpararoot). Rutinasdelncleo.

2 Ayuda del Sistema


UNIX tiene un sistema de visualizacin de manuales y pginas de ayuda especfico. El principal comando para acceder a dichas pginas es man. Dicho comando es el punto de entrada en una base de datos que controla todas las pginas de manual incluidas en cualquier distribucin de Linux. Las pginas mismas de manual estn escritas en TROFF/NROFF, un lenguaje un tanto antiguo de formato de pginas. Cada versin de UNIX tiene las pginas de manual en un directorio particular. El estndar adoptado por la comunidad Linux opta por instalar las pginas en el directorio /usr/man.

2.1 Comando man


El comando man sirve para desplegar en pantalla las pginas de manual, que proporcionan ayuda en linea acerca de cualquier comando, funcin de programacin, archivo de configuracin, etc.

340

FundamentosdeLinux

Captulo12Documentacin Hay diferentes tipos de pginas de manual, cada tipo se diferencia por un nmero, que en lo siguiente se detallan: 1. Programas ejecutables y guiones del intrprete de comandos. 2. Llamadas del sistema (funciones servidas por el ncleo). 3. Llamadas de la biblioteca (funciones contenidas en las bibliotecas del sistema). 4. Archivos especiales (se encuentran generalmente en /dev). 5. Formato de archivos y convenios, por ejemplo /etc/passwd. 6. Juegos. 7. Paquetes de macros y convenios, por ejemplo man(7), groff(7) 8. Comandos de administracin del sistema (generalmente solo son para root). 9. Rutinas del ncleo. La sintaxis de este comando es:
# man [opciones] comando

Las opciones que toma este comando son:

-k cadenaobtendrs una lista de todos los comandos que contienen en su descripcin la palabra cadena. Actualmente, este comando realiza la misma funcin que el comando apropos.

-f esta opcin hace que man muestre la definicin del comando en una sola lnea. -h pgina de ayuda -w [comando] ubicacin del archivo del manual

Este comando desplegara lo siguiente: FundamentosdeLinux 341

Captulo12Documentacin
# man man NAME man - format and display the on-line manual pages manpath - determine users search path for man pages SYNOPSIS man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file] [-M pathlist] [-P pager] [-S section_list] [section] name ... DESCRIPTION man formats and displays the on-line manual pages. tion, man If you specify secname is normally command, ./foo.5 only looks in that section of the manual. or file. However, if

the name of the manual page, which is typically the name of a function, interprets it as a file specification, so that you can do or even man /cd/foo/bar.1.gz. See below for a description man

name contains a slash (/) then man

of where man looks for the manual page

files. OPTIONS -C config_file Specify ... ... CAT PAGES Man will try to save the formatted man pages, in order to save ting time the next time these pages are needed. pings formatTraditionally, formatNo No line the configuration file to use; the default is /etc/man.config. (See man.conf(5).)

ted versions of pages in DIR/manX are saved in DIR/catX, but other mapfrom man dir to cat dir can be specified in /etc/man.config. cat pages are saved when the required cat directory does not exist. from 80. NOCACHE. It is possible to make man suid to a user man. Then, if a cat directory has owner man and mode 0755 (only writable by man), and the have owner man and mode cat files 0644 or 0444 (only writable by man, or not No cat pages are saved when man.conf contains the

cat pages are saved when they are formatted for a line length different

342

FundamentosdeLinux

Captulo12Documentacin
writable at all), no ordinary user can change other files the cat pages able to or put leave

in the cat directory. If man is not made suid, then a cat

directory should have mode 0777 if all users should be cat pages there. The option -c forces

reformatting a page, even if a recent cat page

exists. SEARCH PATH FOR MANUAL PAGES man uses a sophisticated method of finding manual page files, based the invocation configuration file, and some built in conventions and heuristics. First of all, when the name argument to man contains a slash assumes involved. But in the normal case where name doesnt contain a slash, man searches a variety of directories for a file that could be a manual page for the topic named. If you specify the -M pathlist option, pathlist list of the directories that man searches. ... ... END is a colon-separated it is (/), man on options and environment variables, the /etc/man.config

a file specification itself, and there is no searching

Una vez en una pgina, tenemos a nuestra disposicin diversas instrucciones. Al final de la pantalla siempre vemos dos puntos, que es el prompt donde tecleamos las opciones disponibles.

q Salir de la pantalla h Despliega la pantalla de ayuda e Avanza una linea y Regresa una linea [Barra espaciadora] avanza una pantalla 343

FundamentosdeLinux

Captulo12Documentacin

d Avanza media pantalla u regresa media pantalla [Flecha a la derecha] Mueve media pantalla a la derecha [Flecha a la izquierda] Mueve media pantalla a la izquierda ?[cadena] Busca una cadena de texto hacia adelante /[cadena] Busca una cadena de texto hacia atrs g Avanza el puntero al inicio del manual G Avanza el puntero al final del manual m[letra] Marca o crea un marcador en esta posicin '[letra] Mueve el puntero al marcador '' Regresa el puntero a la posicin original

344

FundamentosdeLinux

Captulo12Documentacin

Ayuda del sistema (cont. )

Accesoapginasdeman

Man[opciones]comando Whatiscomando

Descripcinbrevedeuncomando

Desplieguedepginasdemanreferenteaunallave debsqueda

Aproposllave_bsqueda

2.2 Comandos apropos y whatis


Comando apropos Este comando trabaja igual que la opcin -k del comando man, devuelve un listado de pginas de manual que contengan la palabra especificada. Su sintaxis es:
# apropos [palabra]

Comando whatis Este comando es igual que si se teclea man -f, despliega la definicin del comando en una sola lnea. Su sintaxis es:
# whatis [comando]

FundamentosdeLinux

345

Captulo12Documentacin

Configuracin man

Realizadaenelarchivo/etc/man.config/ etc/manpath.config

Modificaciondelassiguientesvariables

MANPATH MANOPT MANSECT PAGER SYSTEM MANROFFSEQ LANG,LC_MESSAGEs

2.3 Configuracin del man


Para configurar nuevas paginas de manuales se utiliza el archivo /etc/man.config.o / etc/manpath.config dependiendo de la distribucin de Linux Este archivo contiene informacin para la construccin de la direccin de los manuales que utiliza el comando man. Los parmetros que maneja son:

MANPATH, su valor determina cual es la ruta de bsqueda para las pginas del manual. MANROFFSEQ, su valor determina el conjunto de preprocesadores que filtran cada pgina de manual. La lista predeterminada de preprocesadores depende del sistema.

MANSECT, su valor es una lista de secciones delimitadas por "dos puntos" que permite determinar qu secciones de manual se usan en la bsqueda y en qu orden.

PAGER, su valor determina el nombre del programa usado para presentar la pgina de manual. El sistema, de forma predeterminada, usar exec /usr/bin/pager -s .

SYSTEM, tiene el mismo efecto que la opcin -m cadena donde cadena es el contenido de la FundamentosdeLinux

346

Captulo12Documentacin variable $SYSTEM.

MANOPT, se analiza antes que la lnea de rdenes de man, suponindose que el formato es similar. Como quiera que todas las dems variables de entorno especficas de man pueden expresarse como argumentos de la lnea de rdenes y pueden por tanto ser incluidas en $MANOPT, se espera que se vuelvan obsoletas. Todos los espacios que formen parte del argumento de una opcin deben ir precedidos de '.

LANG, LC_MESSAGES Dependiendo del sistema y la implementacin, una o ambas $LANG y $LC_MESSAGES son usadas para determinar los mensajes locales que se van a usar. man imprime los mensajes en dichos locales (si estn disponibles).

Este archivo solo es modificable por el usuario root, aunque los usuarios pueden redefinir las variables de ambiente mencionadas para su sesin.

FundamentosdeLinux

347

Captulo12Documentacin

Documentacin en el sistema

Documentosdiversos,instaladosporcadapaquete desoftwaredelS.O.

Formatospdf,html,ps /usr/share/doc Infopermitevermanualesyayudadecomandos

Comandoinfo

3. Acceso a documentos en el sistema


Para buscar documentacin, no necesita estar conectado a Internet, su sistema Linux incluye gran cantidad de informacin, adems del man, que le permitir aprender y solucionar sus problemas,. En particular puede consultar los siguientes tipos de documentacin:

Manuales info. Son libros o manuales que documentan algunos programas. Para consultarlos en pantalla puede emplear el programa info seguido del nombre del manual que desea consultar. Si emplea el comando info slo, entrar a un ndice de los manuales disponibles.

Varios programas pueden mostrar una corta ayuda cuando se invocan desde una consola seguidos de un espacio y la opcin help.

En los directorios /usr/doc y /usr/share/doc, podr encontrar ayuda para varios programas, en diversos formatos. Los formatos de cada documento varan y usualmente estn

348

FundamentosdeLinux

Captulo12Documentacin comprimidos, si lo estn el nombre terminar en .gz y en ese caso, antes de consultar el documento comprimido debe copiarlo a su directorio y descomprimirlo con el programa gzip seguido de -d y a continuacin el nombre del documento. Si el documento es un archivo de texto (el nombre suele termina en .txt) puede emplear un editor de texto para consultarlo, o desde un intrprete de comandos el programa more o el programa less (tambin puede usar zless para consultar un archivo tipo texto comprimido). Si el archivo es tipo .dvi puede emplear el programa xdvi para consultarlo. Si el archivo es Postscript (.ps o .eps) emplee el programa gv para verlo o imprimirlo. Si es un documento HTML (.html) consltelo con un navegador, con el sistema de ayuda de Gnome o desde un intrprete de comandos con el programa lynx o con w3m. Si el documento est en formato PDF (.pdf) puede emplear bien gv o bien xpdf.

Entre los documentos del directorio /usr/doc hay unos documentos tipo texto que describen de manera informal cmo administrar o configurar diversos componentes de un computadores con Linux, tales guas se llaman HOWTOs, y son un buen punto de referencia para quienes desean administrar un sistema Linux.

FundamentosdeLinux

349

Captulo12Documentacin

Documentacion en Internet

www.tldp.org www.linux.org www.linux.com www.linuxsxs.org

4. Documentacin en Internet
Las siguientes son solo algunas pginas en donde puede encontrar documentacin interesante, sin embargo se puede teclear en el buscador de su preferencia y encontrara mas pginas.

Uno de los principales sitios de Linux es http://www.linux.org, donde se encontraran, noticias y informacin genrica de Linux as como varias ligas interesantes

Hay una vasta coleccin de informacin para diversas distribuciones de Linux, as como guas HOWTO en el sitio web de The Linux Documentation Project http://www.tldp.org, considerado como el principal sitio de documentacin de Linux

Varios

de

los

manuales

de

usuario

tipo

info

estn

disponibles

en

http://www.gnu.org/manual/manual.html

350

FundamentosdeLinux

Captulo12Documentacin

El Debian Documentation Project produce documentacin para la distribucin Debian Linux. Los libros y documentos de este proyecto estn disponibles en http://www.debian.org/doc/ddp

http://www.linux.com es un sitio tambin muy conocido de Linux enfocado principalmente a artculos y noticias de Linux genricos, es una buena fuente para empezar a leer noticias de Linux y tips

http://www.linux-sxs.org conocido como Linux Step by Step es un sitio con una gran cantidad de guias donadas por la comunidad para la resolucin de problemas comunes en Linux.

FundamentosdeLinux

351

Вам также может понравиться