Documente Academic
Documente Profesional
Documente Cultură
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
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
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
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
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
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
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
Introduccion
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
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.
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.
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
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
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
Introduccion
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.
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
Introduccion
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
/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
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?
FundamentosdeLinux
43
9. Mencione dos caractersticas de Linux que estn presenten en las versiones de UNIX.
44
FundamentosdeLinux
12.Qu es LSB?
13.Qu es FHS?
FundamentosdeLinux
45
17.Cules son las tres libertades especficas cuando se obtiene software GNU?
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:
FundamentosdeLinux
49
Captulo2ManipulacindeArchivos
Tipos de Archivos
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
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
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
programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente:
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
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
54
FundamentosdeLinux
Captulo2ManipulacindeArchivos
Nombres de Archivo
Todoslosarchivoscuentanconunnombrede acuerdoalosiguiente:
Manipulacin de Archivos
Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas:
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.
FundamentosdeLinux
57
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
/ indica que es un directorio, * indica que es un archivo ejecutable, @ indica que es una liga, si no tiene ningun caracter al final indica
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 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.
-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>
-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.
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
FundamentosdeLinux
61
Captulo2ManipulacindeArchivos
Directorios predeterminados
HomeDirectory
Directorioactual
DirectorioPadre
Manipulacin de Archivos
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
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
RutaRelativa
Manipulacin de Archivos
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
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
CopiadeArchivos
cp ln mv touch
Enlacesaarchivos
TrasladoyrenombredeArchivos
CreaciondeArchivos(vacios)
Manipulacin de Archivos
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
-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.
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.
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
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
Datos
Manipulacin de Archivos
72
FundamentosdeLinux
Captulo2ManipulacindeArchivos
# cat file
Saca por pantalla, secuencialmente y segn el orden especificado, el contenido de los archivos indicados.
# cat file1 file2 >file3
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
-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
-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
-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
-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
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
* ? [] [^]
Manipulacin de Archivos
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
Medianteunabusquedaexplicitayporpatrones
Manipulacin de Archivos
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
Verificacinmediantealgoritmosdechecksum
Manipulacin de Archivos
-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
-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
-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?
84
FundamentosdeLinux
6. Qu es un archivo?
8. Qu es el Home Directory?
FundamentosdeLinux
85
86
FundamentosdeLinux
Captulo3EdicindeArchivos
FundamentosdeLinux
87
Captulo3EdicindeArchivos
Descripcin
UsoyEditoresdetextoenLinux VI Modosdeoperacin Terminacin Navegacin Insercinyedicindetexto copiadoypegadodetexto Bsqueda Configuracin
Edicin de Archivos
88
FundamentosdeLinux
Captulo3EdicindeArchivos
FundamentosdeLinux
89
Captulo3EdicindeArchivos
EdicinyModificacindearchivosdetexto
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.
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.
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:
^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)
SusmodosdeOperacin
Inicio:
Edicin de Archivos
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
Modode
Edicin de Archivos
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
Movimientoscomunes:
Enlalinea:
Enpantalla:
Porpginas
Edicin de Archivos
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
PosicionesEspecficas
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
Edicin de Archivos
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
Borradodetextox,d(dw,db,d^,d$dd),D
Edicin de Archivos
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
Pegar
npdondennumerodevecesapegartexto nPdondennumerodevecesapegartexto
Posiciondelcursor:P
Buffers
[az]comando
Edicin de Archivos
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
Busquedahaciaatrsdelarchivo
Repeticinbusqueda
Ocurrencias
Edicin de Archivos
?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]
Archivo.exrc
Edicin de Archivos
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.
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
FundamentosdeLinux
107
108
FundamentosdeLinux
Captulo4Lineadecomandos
FundamentosdeLinux
109
Captulo4Lineadecomandos
Descripcin
DefinicindeShelllineadecomandos ShellsenUnix/Linux Bash ExpansindelineadeOrdenes Historiadecomandos Variables Aliases ArchivosdeConfiguracin
Linea de comandos
110
FundamentosdeLinux
Captulo4Lineadecomandos
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:
Caractersticas
Linea de comandos
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
Linux
Linea de comandos
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.
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.
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)
Linea de comandos
118
FundamentosdeLinux
Captulo4Lineadecomandos
FundamentosdeLinux
119
Captulo4Lineadecomandos
ExpansindeArchivos ComandoHistory
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
!!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
Linea de comandos
Existen variables globales que tienen valores que especifican el funcionamiento de bsico de este comando, estas variables son:
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.
124
FundamentosdeLinux
Captulo4Lineadecomandos HISTCMD no est definido, pierde sus propiedades especiales, incluso si posteriormente es redefinido.
FundamentosdeLinux
125
Captulo4Lineadecomandos
Edicin de Comandos
EdicionenLinea
Comandofc
Linea de comandos
Los comandos mostrados en la lista desplegado por history se pueden modificar usando:
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
FundamentosdeLinux
127
Captulo4Lineadecomandos
Variables
Comandoset
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
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
-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
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:
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
$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.
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
Controladoporlossiguientesarchivos:
ANivelGlobal
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
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.
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. . . .
140
FundamentosdeLinux
Captulo4Lineadecomandos
Evaluacin Captulo
1. Cul es la definicin de Shell?
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?
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?
FundamentosdeLinux
143
144
FundamentosdeLinux
Captulo5InterfacesGrficas
FundamentosdeLinux
145
Captulo5InterfacesGrficas
Descripcin
Interfaces Grficas
146
FundamentosdeLinux
Captulo5InterfacesGrficas
FundamentosdeLinux
147
Captulo5InterfacesGrficas
Conceptos Bsicos
Interfaces Grficas
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
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
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
.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.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:
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.
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
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.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
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.
FundamentosdeLinux
173
174
FundamentosdeLinux
Captulo6ImpresindeArchivos
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
FundamentosdeLinux
177
Captulo6ImpresindeArchivos
Sistemas de Impresin
Lostressistemasdeimpresinmasutilizados
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.
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.
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
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.
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)
El comando lpr es el que se utiliza en los sistemas de impresin LPRNG su sintaxis es:
# lpr [opciones] archivo
-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
EnLPRNGseutiliza
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.
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
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
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
188
FundamentosdeLinux
Captulo6ImpresindeArchivos
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
-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.
190
FundamentosdeLinux
Captulo6ImpresindeArchivos
Evaluacin Final
1. Cules son los sistemas de impresin que podemos encontrar en Linux?
FundamentosdeLinux
191
192
FundamentosdeLinux
Captulo7ManejodePermisos
FundamentosdeLinux
193
Captulo7ManejodePermisos
Descripcin
Manejo de Permisos
194
FundamentosdeLinux
Captulo7ManejodePermisos
FundamentosdeLinux
195
Captulo7ManejodePermisos
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
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.
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
Manejo de Permisos
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
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
Cambiodepropietario
Chown[opciones]usuario[:grupo]archivo1[,....] Chgrp[opciones]grupoarchivo1[,....]
Cambiodegrupo
Manejo de Permisos
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|
-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.
FundamentosdeLinux
205
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:
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:
ModoSimbolico
Modoabosuluto
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:
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)
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:
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)
Donde:
modo son 3 dgitos numricos, cada uno de ellos corresponde a los permisos de cada tipo de usuario.
212
FundamentosdeLinux
Captulo7ManejodePermisos
Umask
Especificacindelamascaradecreacinde archivos:
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
FundamentosdeLinux
215
216
FundamentosdeLinux
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
FundamentosdeLinux
219
Captulo8Manejodeentrada/salida
Descripcin
Manejo de Entrada/salida
220
FundamentosdeLinux
Captulo8Manejodeentrada/salida
FundamentosdeLinux
221
Captulo8Manejodeentrada/salida
Descriptores de Archivo
DescriptordeArchivo:{indicenmericoqueutilizanelprocesopara accederaunarchivo,estendiceescreadoalabrirelarchivo.
System Space
Indice Descriptores
Manejo de Entrada/salida
222
FundamentosdeLinux
Captulo8Manejodeentrada/salida
Tresarchivos/descriptoresyacreadospordefecto
Manejo de Entrada/salida
0: Entrada estndar (normalmente el teclado). 1: Salida estndar (normalmente la consola). 2: Salida de error.
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
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.
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
224
FundamentosdeLinux
Captulo8Manejodeentrada/salida
Redireccionamiento
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
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 #
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 #
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
FundamentosdeLinux
229
Captulo8Manejodeentrada/salida
Combinacion de Salidas
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
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 | ......
FundamentosdeLinux
231
Captulo8Manejodeentrada/salida
Comando Tee
Permiteenviarlasalidadeuncomandotantoala salidaestandarcomoaunarchivoalmismotiempo
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 | ......
FundamentosdeLinux
233
Captulo8Manejodeentrada/salida
234
FundamentosdeLinux
FundamentosdeLinux
235
236
FundamentosdeLinux
Captulo9ProcesamientodeArchivosdetextocon filtros
FundamentosdeLinux
237
Captulo9ProcesamientodeArchivosdetextocon filtros
Descripcin
238
FundamentosdeLinux
Captulo9ProcesamientodeArchivosdetextocon filtros
FundamentosdeLinux
239
Captulo9ProcesamientodeArchivosdetextocon filtros
Definicin 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:
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:
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
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 -
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
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]
-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...]
-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
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
-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
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
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:::
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
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
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
-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
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
-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.
y un archivo2
a d1 b d2 c d3
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
258
FundamentosdeLinux
Captulo9ProcesamientodeArchivosdetextocon filtros
Substitucin de texto
Realmentesustitucindeocurrenciasdetextoenun archivo,sepuedehaceconeditoresadicionalmente
Tr
Comandoparasubstituirtexto(translate)
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
-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.
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
7 Ordenamiento
Comando sort Este comando nos permite obtener una salida ordenada, la sintaxis de sort es:
# sort [opciones] archivos...
-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
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
comm diff wc nl
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
-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
Un ejemplo es:
# wc passwd 39 53 1711 passwd
FundamentosdeLinux
267
Captulo9ProcesamientodeArchivosdetextocon filtros
Evaluacin Captulo
1. Explique que es un filtro.
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?
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
FundamentosdeLinux
271
Captulo10UsodeExpresionesregulares
Descripcin
UsodeExpresionesRegulares
272
FundamentosdeLinux
Captulo10UsodeExpresionesregulares
FundamentosdeLinux
273
Captulo10UsodeExpresionesregulares
Definicin
Expresinregular
UsodeExpresionesRegulares
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
UsodeExpresionesRegulares
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
?+{}|()
UsodeExpresionesRegulares
FundamentosdeLinux
281
Captulo10UsodeExpresionesregulares
Bsqueda
Labusquedaserealizaconelcomandogrep
ej.
UsodeExpresionesRegulares
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
UsodeExpresionesRegulares
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)
286
FundamentosdeLinux
Captulo10UsodeExpresionesregulares
Comando ed
Sintaxis
edarchivo
Unavezabiertoelarchivocontamosconcomandos paraactuarenel
. w q etc.
UsodeExpresionesRegulares
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
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
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...
-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.
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
oenmodoltimalineaparasustitucin
UsodeExpresionesRegulares
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
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
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)?
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
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
2. clases
3. literales
4. cuantificadores
5. anclajes
FundamentosdeLinux
301
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
304
FundamentosdeLinux
Captulo11ControldeProcesos
FundamentosdeLinux
305
Captulo11ControldeProcesos
Descripcin
306
FundamentosdeLinux
Captulo11ControldeProcesos
FundamentosdeLinux
307
Captulo11ControldeProcesos
Definicin
Programa:
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.
310
FundamentosdeLinux
Captulo11ControldeProcesos
Estados de un proceso
Duranteseejecucinunprocesopuedepasarpor variosestados,losmascomunesoimportantesson:
Ejecutandose Durmiendo
Coninterrupciones Sininterrupciones
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.
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
-e muestra todos los procesos que se estn ejecutando en el sistema -l utiliza un formato ms largo (muestra ms informacin).
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
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
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:
Background:
Control de Procesos
Para modificar el estado de un proceso en foreground desde bash existen dos combinaciones de teclas muy importantes que este interpreta:
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
<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
1 columna Corresponde al nmero de orden en que se van a ejecutar los comandos, no es FundamentosdeLinux
318
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.
4 columna Contiene el nombre del comando que se est corriendo en background o que est parado.
-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
Sealescomunes:
Control de Procesos
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
-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
Comandos:
Control de Procesos
324
FundamentosdeLinux
Captulo11ControldeProcesos
# nice -prioridad comando
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:
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
FundamentosdeLinux
327
Captulo11ControldeProcesos
Nohup
$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]
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
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
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
Control de Procesos
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
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
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?
334
FundamentosdeLinux
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?
336
FundamentosdeLinux
Captulo12Documentacin
Captulo 12 Documentacin
FundamentosdeLinux
337
Captulo12Documentacin
Descripcin
Documentacion
338
FundamentosdeLinux
Captulo12Documentacin
FundamentosdeLinux
339
Captulo12Documentacin
Programasejecutablesyguionesdelintrpretedecomandos. Llamadasdelsistema(funcionesservidasporelncleo). Llamadasdelabiblioteca(funcionescontenidasenlasbibliotecasdel sistema). Archivosespeciales(seencuentrangeneralmenteen/dev). Formatodearchivosyconvenios,porejemplo/etc/passwd. Juegos. Paquetesdemacrosyconvenios,porejemploman(7),groff(7) Comandosdeadministracindelsistema(generalmentesolosonpararoot). Rutinasdelncleo.
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
-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
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
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
directory should have mode 0777 if all users should be cat pages there. The option -c forces
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
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
Accesoapginasdeman
Man[opciones]comando Whatiscomando
Descripcinbrevedeuncomando
Desplieguedepginasdemanreferenteaunallave debsqueda
Aproposllave_bsqueda
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, 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
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.
Comandoinfo
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
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