You are on page 1of 150

Fundamentos de Linux

Hardy Beltran Monasterios

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Fundamentos de Linux
por Hardy Beltran Monasterios
Versin 2.6
Fecha de publicacin 2012-06-18 08:38
Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Hardy Beltran Monasterios

Esta obra est licenciada bajo una Licencia Attribution-ShareAlike 3.0 Unported de Creative Commons, que le permite copiar, distribuir, exhibir y ejecutar la obra, hacer obras derivadas y hacer usos comerciales de la misma, bajo las condiciones de atribuir el crdito correspondiente
al autor y compartir las obras derivadas resultantes bajo esta misma licencia o una licencia similar a esta.
Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-sa/3.0/ o enve una carta a Creative Commons, 171 Second
Street, Suite 300, San Francisco, California, 94105, USA.
Linux es una marca registrada de Linus Torvalds.
Todas las otras marcas registradas mecionadas en esta obra son propiedad de sus respectivos dueos.
Si bien se han tomado todas las precauciones en la preparacin de este material, el autor no asume ninguna responsabilidad por errores u
omisiones, ni por los daos resultantes del uso de la informacin contenida en este documento.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

1. Comprendiendo el Software Libre .................................................................................. 1


1.1. Objetivos ........................................................................................................ 1
1.2. Historia del Software Libre ................................................................................ 2
1.3. Historia del Software Libre (continuacin) ............................................................ 3
1.4. Qu es Software Libre ? .................................................................................. 4
1.5. Los logros de GNU ........................................................................................... 5
1.6. La llegada de Linux .......................................................................................... 6
1.7. Historia del "Cdigo Fuente Abierto" ................................................................... 7
1.8. Iniciativa de Cdigo Fuente Abierto ..................................................................... 8
1.9. Software Libre vs. Cdigo Fuente Abierto ............................................................. 9
1.10. Cualidades del Software Libre ......................................................................... 10
1.11. Cualidades del Software Libre ......................................................................... 11
1.12. Ventajas de acceso pblico al cdigo fuente ....................................................... 12
1.13. Desventajas de acceso pblico al cdigo fuente ................................................... 13
2. El sistema Operativo GNU/Linux ................................................................................. 15
2.1. Objetivos ...................................................................................................... 15
2.2. Breve historia de Linux .................................................................................... 16
2.3. Qu es Linux ? ............................................................................................. 17
2.4. Qu es GNU/Linux ? .................................................................................... 18
2.5. Qu es una distribucin ? ............................................................................... 19
2.6. Diferencias entre distribuciones ......................................................................... 20
2.7. Qu distribucin es mejor ? ............................................................................ 21
3. Usando el sistema Linux ............................................................................................. 23
3.1. Objetivos ...................................................................................................... 23
3.2. Ingreso y salida del sistema .............................................................................. 24
3.3. Ingreso y salida del sistema (continuacin) .......................................................... 25
3.4. El intrprete de rdenes ................................................................................... 26
3.4.1. Sesin interactiva ................................................................................. 26
3.4.2. Sesin no interactiva ............................................................................. 28
3.5. Usando la lnea de rdenes ............................................................................... 29
3.5.1. Ordenes ............................................................................................. 30
3.5.2. Alias .................................................................................................. 32
3.5.3. Ejecucin de la orden ............................................................................ 33
3.5.4. Ordenes habituales ............................................................................... 34
3.5.5. Caracteres especiales ............................................................................ 36
3.6. Teclas especiales en Bash ................................................................................. 37
3.7. La historia de rdenes en Bash .......................................................................... 38
3.8. Obteniendo ayuda ........................................................................................... 39
3.8.1. Ayuda rpida de una orden ..................................................................... 39
3.8.2. El manual en lnea ................................................................................ 41
3.8.3. Utilizando el manual en lnea ................................................................. 42
3.8.4. Secciones de una pgina ........................................................................ 43
4. Trabajando con archivos y directorios ........................................................................... 45
4.1. Objetivos ...................................................................................................... 45
4.2. Qu es un sistema de archivos ? ...................................................................... 46
4.3. Linux y el sistema de archivos ........................................................................... 47
4.4. Estructura de directorios en Linux ...................................................................... 48
4.5. Trabajando con archivos y directorios ................................................................. 50
4.6. Listado de archivos: orden ls ............................................................................. 51
4.7. Copia de archivos: orden cp .............................................................................. 53
4.8. Borrado de archivos: orden rm .......................................................................... 54
4.9. Renombre o traslado: orden mv ......................................................................... 56
4.10. Crear directorio: orden mkdir .......................................................................... 57
4.11. Cambiar directorio: orden cd ........................................................................... 58
4.12. Borrar directorio: orden rmdir ......................................................................... 59
4.13. Cambiando fecha y hora de un archivo .............................................................. 60
4.14. Bsqueda de archivos .................................................................................... 61
4.15. Bsqueda de archivos con locate ...................................................................... 63

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

iii

Fundamentos de Linux

4.16. Bsqueda de archivos con which y whereis ........................................................ 64


5. Procesamiento de textos ............................................................................................. 65
5.1. Objetivos ...................................................................................................... 65
5.2. Inspeccin del contenido de archivos .................................................................. 66
5.2.1. Concatenando archivos .......................................................................... 67
5.3. Numerando lneas de un archivo de texto ............................................................ 68
5.4. Contando lneas, palabras y bytes ...................................................................... 70
5.5. Ordenando lneas de un archivo de texto ............................................................. 71
5.6. Cortando texto ............................................................................................... 74
5.7. Pegando texto ................................................................................................ 75
5.8. Convirtiendo tabuladores en espacios ................................................................. 76
5.9. Convirtiendo espacios en tabuladores ................................................................. 77
5.10. Borrando y remplazando caracteres .................................................................. 78
5.11. Uniendo archivos por campo ........................................................................... 80
5.12. Dividiendo archivos en partes .......................................................................... 82
5.13. Eliminando lneas repetidas ............................................................................ 83
5.14. Mostrando archivos en forma octal ................................................................... 84
5.15. Utilizando sed .............................................................................................. 86
5.16. Buscando patrones en archivos de texto ............................................................. 87
5.17. Expresiones regulares y grep ........................................................................... 89
6. Uso del Editor vi ....................................................................................................... 91
6.1. Objetivos ...................................................................................................... 91
6.2. El editor vi .................................................................................................... 92
6.3. Insertando texto .............................................................................................. 93
6.4. Borrando texto ............................................................................................... 95
6.5. Cambiando o reemplazando texto ...................................................................... 96
6.6. Cortar, copiar y pegar texto ............................................................................... 97
6.7. Navegando en vi ............................................................................................. 98
6.8. Multiplicador de rdenes .................................................................................. 99
6.9. Usando archivos ........................................................................................... 100
6.10. Buscando cadenas ....................................................................................... 101
6.11. Buscando y reemplazando cadenas ................................................................. 102
6.12. Opciones en vim ......................................................................................... 103
6.13. Tareas avanzadas en vi ................................................................................. 104
7. Gestin de archivos en Linux ..................................................................................... 107
7.1. Objetivos ..................................................................................................... 107
7.2. Permisos en archivos y directorios .................................................................... 108
7.3. Efectos de los permisos .................................................................................. 109
7.4. Interpretando propiedad y permisos .................................................................. 110
7.5. Dependencias entre permisos .......................................................................... 112
7.6. Manipulando permisos ................................................................................... 113
7.7. Permisos predeterminados .............................................................................. 115
7.8. Permisos especiales ....................................................................................... 117
7.9. SGID y directorios comunes ........................................................................... 118
7.10. Bit pegajoso y directorios comunes ................................................................. 120
7.11. Atributos especiales ..................................................................................... 121
7.12. Propiedad de archivos y directorios ................................................................. 122
7.13. Cambiando propiedad .................................................................................. 123
7.14. Enlaces a archivos ....................................................................................... 124
7.15. Creando enlaces rgidos ................................................................................ 125
7.16. Creando enlaces simblicos ........................................................................... 127
8. Usos avanzados del intrprete de rdenes ..................................................................... 129
8.1. Objetivos ..................................................................................................... 129
8.2. Entrada/Salida estndar .................................................................................. 130
8.3. Redireccionamiento ....................................................................................... 131
8.4. Tuberas ...................................................................................................... 133
8.5. Usando la T (tee) .......................................................................................... 134
8.6. Usando xargs ............................................................................................... 135

iv

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Fundamentos de Linux

8.7. Sustitucin de orden ...................................................................................... 136


8.8. Variables de entorno y del intrprete ................................................................. 137
8.9. Usando variables .......................................................................................... 138
8.10. Funciones .................................................................................................. 139
8.11. Archivos de configuracin ............................................................................. 140
Indice de rdenes ........................................................................................................ 143

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

vi

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

1. Comprendiendo el Software Libre


1.1. Objetivos

Al concluir esta seccin usted conocer:


Cual es el orgen del Software Libre (Free Software)
Cual es la definicin de Software Libre
Cual es el orgen del trmino Software de Cdigo Abierto (Open Source)
Las diferencias y similitudes entre Software Libre y Software de Cdigo Abierto
Las cualidades del Software Libre/Abierto
Las ventajas y desventajas del Software Libre/Abierto

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Historia del Software Libre

1.2. Historia del Software Libre

La historia del Software Libre se remonta a los primeros aos de las ciencias de la computacin,
cuando los sistemas de cmputo estaban principalmente instalados en universidades e institutos de
investigacin, en aquellos aos no exista el criterio de valor por el cdigo del programa, ya que los
programas era slo un componente adicional de otros productos a los cuales se les otorgaba valor.
En 1971 Richard M. Stallman comenz a trabajar para el MIT, en ese entonces exista una comunidad
que comparta software (programas y cdigo fuente) con otros colegas del medio. Es en los aos 80's,
que ese espritu de compartir, casi haba desaparecido por la filosofa del software privativo, que no
permita copiar libremente o compartir los programas, ya que hacerlo infringa trminos de contrato
y acuerdos entre las compaas fabricantes de computadoras y los usuarios.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Historia del Software Libre (continuacin)

1.3. Historia del Software Libre (continuacin)

Stallman, interesado por revivir aquellos das en los que la comunidad computacional comparta los
programas, comienza en 1984 un proyecto para crear un sistema operativo completo, compatible con
UNIX llamado GNU: El Proyecto GNU (GNU No es UNIX). Para impulsar la idea crea la GNU GPL
o Licencia Pblica General de GNU (GNU General Public License) bajo la cual se distribuiran los
programas que se vayan construyendo en el proyecto GNU. [www.gnu.org]
Durante lo primeros aos Richard M. Stallman y otros programadores crean utilidades para ser usadas
en el futuro sistema operativo GNU, todas ellas son elaboradas de modo que sean compatibles con
UNIX.
Para financiar el proyecto cre la Fundacin para el Software Libre (FSF, Free Software Fundation),
una organizacin sin fines de lucro que capta recursos econmicos para incentivar el desarrollo de
Software Libre. [www.fsf.org]

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Qu es Software Libre ?

1.4. Qu es Software Libre ?

Segn su impulsor Richard M. Stallman, Software Libre se refiere a un asunto de libertad no de precio.
Software Libre se refiere a la libertad de los usuarios de correr, copiar, distribuir, estudiar, cambiar y
mejorar el software con cualquier propsito. Ms precisamente la filosofa se apoya en las llamadas
cuatro libertades del usuario que estn expresadas en la GNU GPL:
1. La libertad de correr el programa, con cualquier propsito
2. La libertad de estudiar como funciona el programa, y adaptarlo a sus necesidades. El acceso al cdigo fuente es una precondicin para esto.
3. La libertad de distribuir copias de manera que se puede ayudar al vecino
4. La libertad de mejorar el programa, y liberar las mejoras al pblico de tal manera que toda la comunidad se beneficia. El acceso al cdigo fuente es una precondicin para esto.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Los logros de GNU

1.5. Los logros de GNU

Basados en esta filosofa, se construye la comunidad de Software Libre, liderada por Richard M.
Stallman, quien junto a cientos de programadores en el mundo llegan a contar en los 90 con un juego
completo de ricas utilidades creadas para el sistema operativo GNU.
En los aos 90, los programas GNU son ampliamente usados en todas las plataformas UNIX y otras
plataformas, y en diferentes mbitos acadmicos, cientficos, empresariales, etc.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

La llegada de Linux

1.6. La llegada de Linux

En 1991 sucede el evento ms trascendental para la comunidad GNU, el anuncio hecho por Linus
Torlvalds sobre la existencia de un ncleo llamado Linux.
Es en el ao 1992, cuando oficilamente sale a la luz la versin 1.0 de Linux, liberado bajo la licencia
GNU GPL, lo que que permiti que muchos programadores de la comunidad GNU contribuyan a l
dotndole de muchas funcionalidades hasta convertirlo en un sistema operativo estable, utilizable y
explotable.
El acontecimiento Linux, dot a la comunidad del ltimo componente que faltaba al proyecto del sistema operativo GNU: un ncleo que se integre a las cientos de utilidades construidas, la misma integracin de Linux y GNU llev bastante tiempo, en las propias palabras de Stallman. De ah algunos
que lo denominan GNU/Linux.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Historia del "Cdigo Fuente Abierto"

1.7. Historia del "Cdigo Fuente Abierto"

En el ao de 1998, GNU/Linux ya se ha convertido en un fenmeno sorprendente, las muestras de


mercado llevadas a cabo por importantes empresas del ramo, muestran a GNU/Linux como el sistema
operativo de ms rpido crecimiento, quitndoles mercado a otros sistemas operativos comerciales.
Son casi 7 aos de vida de Linux y muchos analistas de software e ingenieros de software empiezan
a prestarle atencin al modelo de desarrollo seguido por Linux:
cientos de programadores-usuarios dispersos por el mundo
rpido lanzamiento de nuevas versiones y correcciones
mejoras incrementales
En Enero de 1998, Netscape Communications Inc. anuncia la liberacin del cdigo fuente de su navegador Mozilla, mas conocido como Netscape Navigator.. Un grupo de personas, miembros de la comunidad de Software Libre, motivados por sta noticia, crean la denominada Iniciativa de Cdigo
Fuente Abierto ( Open Source Iniciative) en Febrero de 1998, para llevar las ideas del Software Libre
al mundo de los negocios, este grupo estaba liderado por Erick S. Raymond y Bruce Perens entre otros.
[www.opensource.org]

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Iniciativa de Cdigo Fuente Abierto

1.8. Iniciativa de Cdigo Fuente Abierto

Esta iniciativa, tiene el propsito principal de mostrar a las empresas de software privativo los beneficios
de publicar el cdigo fuente de sus productos.
A diferencia del Software Libre, sta iniciativa no se apoya en ninguna licencia especfica, en su lugar,
establece criterios que indican cuando una licencia es o no considerada de Cdigo Fuente Abierto.
Para que una licencia sea considerada de fuente abierta debe satisfacer los siguientes criterios:
1. Libre redistribucin
2. Acceso al cdigo fuente libre de cargo
3. Permiso para hacer modificaciones y trabajos derivados
4. Integridad del cdigo fuente del autor
5. Sin discriminacin contra personas o grupos
6. Sin discriminacin contra campos de aplicacin.
7. La licencia se aplica tambin a todos aquellos que les redistribuy el programa.
8. La licencia no debe ser especfica a un producto.
9. La licencia no debe contaminar otro software (referido a agregacin, no derivacin).
De acuerdo a estos criterios las siguientes licencias son consideradas de fuente abierta: GNU GPL,
BSD, MPL, Apache, por nombrar algunas.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Software Libre vs. Cdigo Fuente


Abierto

1.9. Software Libre vs. Cdigo Fuente Abierto

Habiendo el movimiento de Cdigo Fuente Abierto surgido de la misma comunidad del Software Libre,
no existen diferencias importantes desde el punto de vista pragmtico (acceso al cdigo fuente), en
lugar de ello sus diferencias son ms de ndole conceptual que giran alrededor de las ideas filosficas
y conceptuales que cada corriente expone y defiende.
Esta discrepancia filosfica es la que lleva a que muchas empresas del sector comercial de la industria
del software, a usar el trmino Cdigo Fuente Abierto (Open Source) en lugar de utilizar el trmino
Software Libre (Free Software).
La diferencia ms importante entre ambas corrientes y que merece ser destacada es la poltica que cada
uno tiene respecto a la licencia bajo la que se ampara el software. Como mencionamos anteriormente,
la Iniciativa de Cdigo Fuente Abierto no se apoya en una licencia especfica a diferencia del Software
Libre que utiliza la licencia GNU GPL.
El uso de la licencia GPL para amparar determinado programa de software, exige que cualquier producto software derivado a partir del cdigo fuente de ste tambin se distribuya bajo las mismas condiciones de licencia, es decir GPL. De este modo la libertad del usuario est garantizada por que los
nuevos programas que se vayan a escribir a partir de programas de software libre existentes van a
continuar siendo libres.
Lo mismo no ocurre con el software amparado bajo alguna de las licencias clasificadas como Cdigo
Fuente Abierto. Si alguien produce un derivado no est obligado a mantener las mismas condiciones
de licencia del programa original. Un ejemplo de tal licencia es la BSD.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Cualidades del Software Libre

1.10. Cualidades del Software Libre

El Software Libre tiene un conjunto de cualidades intrnsecas, que de acuerdo a Bruno Cornec (HPHOWTO, Revisin 0.93) son las siguientes:

10

Acceso al cdigo fuente

Este es el punto ms importante del Software Libre, porque permite la compresin, adaptacin, correccin, distribucin y mejora
del software.

Confiabilidad

La calidad se deriva de la anterior: el software libre es el resultado


de combinar, experiencia e inteligencia de todos los participantes.
Su confiabilidad se incrementa a medida que el tiempo transcurre,
con todas las correcciones que han sido hechas. No hay presin
del mercado que obligue al productor de software entregar el
producto a los consumidores antes de que se encuentre en un estado satisfactorio.

Portabilidad

Esta cualidad no es intrnseca al Software Libre, pero es bastante


notoria en el Software Libre. De hecho si un programa alcanza
xito, querr ser necesariamente adaptado a otros entornos, que
fueron considerados. As aumentar su disponibilidad, su portabilidad y su confiafiabilidad.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Cualidades del Software Libre

1.11. Cualidades del Software Libre

Universalidad

Una cualidad esencial del Software Libre, es el carcter naturalmente universal


del formato de datos utilizado. Aun si no se siguen estndares, la disponibilidad
del cdigo fuente asegura que el usuario podr comprenderlos, y ms adelante
tendr la habilidad de escribir cualquier filtro necesario para reutilizar los datos
o intercambiarlos con otros programas. Esto permite tambin a los usuarios estabilizar sus entornos, porque ellos no estn obligados a migrar en caso de incompatibilidades en el formato de datos en sus aplicaciones.

Desempeo

Como resultado de mltiples revisiones, el uso de algoritmos provenientes de


avanzados trabajos de investigacin, y pruebas en variados entornos de uso, el
Software Libre tiene buen desempeo por naturaleza. Frecuentemente largas
porciones de cdigo son re-escritas para permitir reusar las ideas originales con
un mejor cdigo y as incrementar el desempeo. Varias pruebas hechas por
varios organismos tienden a demostrar esto.
Una vez ms, no hay obligacin de difundir una aplicacin, cuyas actuaciones
son penosas.

Reactividad

Cuando son considerados ms y ms largos ciclos de desarrollo de los productos


de software, la reactividad trada por el movimiento de Software Libre, resulta
ser interesante para muchos que se sienten atrados por la rpida obtencin de
correcciones a un problema dado. As durante los recientes problemas con IP
(ping de la muerte, etc), los parches siempre estaban disponibles a los tres prximos das. Adicionalmente, los parches liberados slo corrigen los agujeros encontrados. No se agrega ninguna funcionalidad que pueda crear otras inestabilidades.

Independientemente de sus cualidades, es posible dar otras razones de diferente naturaleza en favor el
Software Libre, dependiendo del tipo de persona que se encuentre.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

11

Ventajas de acceso pblico al cdigo


fuente

1.12. Ventajas de acceso pblico al cdigo


fuente

Las ventajas del Software Libre sern tales y de acuerdo al usuario del software, por ejemplo para el
usuario comn, es irrelevante el acceso al cdigo fuente de los programas, ya que a l le interesan los
programas en formato binario listos para ser utilizados.
Para mbitos acadmico y cientfico el acceso al cdigo fuente representa transferencia tecnolgica y
aprendizaje.
Para mbitos empresariales, las principales ventajas estn en la posibilidad de construir soluciones
personalizadas, integracin con aplicaciones existentes, e incrementar la vida til de los programas.
Ya a que se cuenta con acceso al cdigo fuente, es posible realizar una revisin de los programas para
asegurarse que no existe cdigo que ponga en peligro informacin confidencial.
Una ventaja para todos, son los bajos precios o casi ningn precio del Software Libre, sta inversin
no realizada en software puede ser canalizada a otro tipo de gastos o inversiones, como equipamiento
o capacitacin.

12

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Desventajas de acceso pblico al cdigo fuente

1.13. Desventajas de acceso pblico al cdigo


fuente

La desventaja de acceder al cdigo fuente afecta a todos los usuarios, ya que existe la posibilidad de
que maliciosamente se incluyan caballos troyanos en los programas, por esta razn es siempre recomendable conseguir los programas de los sitios originales y verificar que los archivos no han sido alterados, de acuerdo a las instrucciones del o los autores.
El acceso al cdigo fuente tambin significa, menor esfuerzo para encontrar debilidades, que pueden
ser maliciosamente explotadas como tambin pueden ser corregidas en breve tiempo.
Los programas de cdigo fuente abierto, son propensos a varias divisiones del mismo, ya que no hay
ninguna restriccin en tomar el programa y crear una versin modificada.
Los programas de cdigo fuente abierto, tienden a cambiar muy rpido por lo que se abre una brecha
entre la documentacin y las ltimas versiones del programa, en general los programas de cdigo
fuente abierto adolecen de documentacin al da y completa, tanto para el usuario final, como para el
programador o integrador de sistemas.
El desarrollo de nuevos productos software que requieren alta inversin econmica no tienen asegurado
el retorno de la inversin, ya que el negocio ya no se basa en vender software y por tanto la recuperacin
es incierta.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

13

14

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

2. El sistema Operativo GNU/Linux


2.1. Objetivos

Al concluir esta seccin el alumno conocer:


Una breve historia de Linux
Qu es Linux ?
Qu es una distribucin de Linux ?
Diferencias y similitudes entre distribuciones Linux
Algunos criterios que se debe seguir para elegir una distribucin
Cuales son las distribuciones ms utilizadas

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

15

Breve historia de Linux

2.2. Breve historia de Linux

Para comenzar a hablar de Linux, hay que hablar del modelo a partir del cual fue creado, este modelo
es UNIX, uno de los sistemas operativos con ms desarrollo, distribucin y soporte. Originalmente
fue desarrollado como sistema multitarea con tiempo compartido para mini ordenadores y mainframes
a mediados de los aos 70, y desde entonces se ha convertido en uno de los sistemas ms utilizados a
pesar de su ocasionalmente, confusa interfaz con el usuario y el problema de su estandarizacin.
Al final de los 90 existan numerosas versiones de UNIX para muchos sistemas, desde ordenadores
personales hasta super computadoras. UNIX tena una fuerte posicin en el mercado de servidores que
utilizaban hardware especializado y muy costoso. Pero tambin existan versiones de UNIX para ordenadores personales (PC), como la de SCO o SUN Solaris, pero que aun as seguan siendo caros.
En muchas partes del mundo, UNIX era muy comn en laboratorios de investigacin, en Universidades,
en entidades del gobierno y en grandes empresas.
En este escenario aparece Linus Torvalds, un estudiante de Ciencias de la Computacin en la Universidad de Helsinki, en Finlandia. El quera tener en su PC 386 algo similar a UNIX, y empez utilizando
Minix, un sistema escrito por el profesor Andrew Tanembaum para propsitos de enseanza, pero Linus
quera algo mejor, as que a modo de hobby empez a escribir su propio sistema operativo inspirado
en Minix. Lo anunci por primera vez como Linux, en el grupo de noticias comp.os.minix. El 5 de
Octubre de 1991, Linus anunci la primera versin "oficial" de Linux, la 0.02.
Las primeras versiones de Linux eran rudimentarias y no se poda hacer mucho con ellas, a medida
que el tiempo fue transcurriendo Linus recibi la ayuda de muchos programadores y expertos de UNIX
a lo largo y ancho del mundo, gracias a la presencia de Internet. Cualquier habitante del planeta puede
acceder a Linux y desarrollar nuevos mdulos o cambiarlo a su antojo. Buena parte del software para
Linux se desarrolla bajo las reglas del proyecto de GNU de la Free Software Foundation.
En los primeros aos de Linux, nadie podra imaginar que este "pequeo" clon de UNIX, producto del
esfuerzo de hackers en la red mundial iba a convertirse en el sistema operativo de ms rpido crecimiento, desplazando en el mercado a otros sistemas operativos comerciales, hasta convertirse en un
sistema mundial de primera clase para servidores de red y ordenadores personales.

16

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Qu es Linux ?

2.3. Qu es Linux ?

La definicin encontrada en http://www.linux.org nos dice esto:


Linux es un sistema operativo libre tipo UNIX, creado originalmente por Linus Torvalds con la asistencia de muchos programadores alrededor del mundo.
Desarrollado bajo la Licencia Pblica General GNU, el cdigo fuente de Linux est disponible sin
cargo para todos.
Hoy Linux es un clon de UNIX completo, capaz de ejecutar X Window, TCP/IP, herramientas de desarrollo, cientos de utilidades GNU, aplicaciones de usuarios, aplicaciones comerciales, etc. Est disponible no slo para plataformas Intel, si no tambin PowerPC y estaciones de trabajo, solo por nombrar
algunas.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

17

Qu es GNU/Linux ?

2.4. Qu es GNU/Linux ?

Linux es en rigor solamente el ncleo del sistema operativo, para que pueda ser utilizado y se pueda
sacar provecho de l, se requiere de un nmero variado de programas utilitarios, que van desde el intrprete de rdenes hasta las aplicaciones para el usuario final, pasando por las herramientas de administracin del sistema y desarrollo.
Cuando Linux sali a la luz por primera vez en 1991, el proyecto GNU haba creado hasta entonces
todo un juego completo de utilidades, herramientas de desarrollo, herramientas de aplicacin, etc. la
pieza faltante era el ncleo que permitiera contar con el sistema operativo libre. Cuando Linux estuvo
listo para ser usado la integracin de las herramientas GNU a l formaron lo que hoy es el sistema
operativo Linux, por eso que algunos usan el denominativo de GNU/Linux.
Para la mayora de los usuarios, Linux y GNU/Linux se usan indistintamente y ms aun Linux es el
nombre ampliamente aceptado por todo el mundo, a excepcin de ciertos crculos ms conservadores
donde si se usan estos trminos de acuerdo a lo que representan.

18

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Qu es una distribucin ?

2.5. Qu es una distribucin ?

Como ya dijimos, Linux es el producto de la unin y la combinacin de muchas piezas de software,


localizados en diferentes servidores conectados a Internet. La tarea de reunir todos los archivos y
programas necesarios, as como organizarlos, compilarlos e instalarlos, puede ser una tarea bastante
complicada y no apta para muchos. Por esta razn nacieron las llamadas distribuciones de Linux, que
son producidas por un grupo organizado o por empresas que se dedican a hacer el trabajo sucio para
beneficio y comodidad de los usuarios.
Una distribucin no es otra cosa que, una recopilacin de programas, archivos y documentacin, organizados y preparados para su instalacin. Estas distribuciones se pueden obtener a travs de Internet,
o comprando los CD's de las mismas, los cuales contendrn todo lo necesario para instalar un sistema
Linux bastante completo. Muchos de los principales creadores de distribuciones Linux, ofrecen la
posibilidad de bajar sus distribuciones va FTP sin cargo alguno.
Slackware fue una de las primeras y ms popular distribucin de Linux, hoy en da existen muchas
distribuciones, creadas para diferentes propsitos o necesidades y orientadas a diferentes grupos de
usuarios, as por ejemplo: la distribucin Yellow Dog Linux [http://www.yellowdoglinux.com] est
orientada a usuarios que poseen computadoras basadas en el procesador PowerPC y desean correr Linux,
otro ejemplo es uClinux [http://www.uclinux.com] una distribucin para ser utilizada con microcontroladores.
Esta es una lista de algunas de las distribuciones ms conocidas:
Red Hat Enterprise Linux [http://www.redhat.com]
Suse Linux Enterprise [http://www.novell.com/linux/]
Debian GNU/Linux [http://www.debian.org]
Mandriva Linux [http://www.mandriva.com]
Ubuntu [http://www.ubuntu.com]
Gentoo Linux [http://www.gentoo.org]

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

19

Diferencias entre distribuciones

2.6. Diferencias entre distribuciones

Todas las distribuciones utilizan el mismo software disponible, as como el mismo ncleo o una variacin
de l, pero difieren en las versiones y el software que deciden incluir. Algunas distribuciones tienen
la tendencia de utilizar las versiones denominadas estables, que no son recientes pero que han sido
largamente probadas y se sabe que funcionan correctamente. Otros en cambio emplean ms a menudo
versiones recientes que tienen nuevas caractersticas pero tambien mayor problabilidad de fallas y
errores.
LibreOffice (un clon de MS Office), Mozilla (navegador web), KDE y GNOME (entornos grficos)
y Apache HTTPd (servidor web) son piezas comunes de software que van a estar presentes en casi
todas las distribuciones.
Algunas de las diferencias ms notorias entre distribuciones estn, la forma en que el software ha sido
pre-configurado, como se instala la distribucin, y finalmente como se administra.
As por ejemplo la distribucin Red Hat prepara el sistema Linux para utilizar el entorno grfico
GNOME de modo predeterminado, en cambio la distribucin Suse instala KDE de modo predeterminado.

20

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Qu distribucin es mejor ?

2.7. Qu distribucin es mejor ?

Es muy difcil decir que distribucin es mejor que las otras, un criterio ms acertado es elegir una
distribucin basndose en el uso que se la va dar. Muchas de las distribuciones tienen ciertas tendencias
que las distinguen de otras, as por ejemplo Linux Debian est muy orientada a un usuario vinculado
al rea de sistemas o ciencias de la computacin, al contrario de Ubuntu que est orientada al usuario
final que probablemente tiene poca idea de lo que significa un sistema operativo. En general la mejor
distribucin va a ser aquella que satisfaga los requerimientos particulares de uso, que cada uno tiene.
Algunas distribuciones tienen el espritu de ser para propsito general, pero la mayora son para tareas
especficas, como por ejemplo correr un corta fuegos, un kiosco web o para usarlo en cierto pas o
universidad. Para quien est conociendo Linux por primera vez es aconsejable utilizar una de las
grandes y conocidas distribuciones de propsito general: Fedora (Red Hat), OpenSuse, Ubuntu, Debian.
Entre algunos de los criterios que se pueden tomar en cuenta para elegir una distribucin estn:
Orientacin de la distribucin

Si se va utilizar Linux como PC de escritorio, entonces es mejor


mirar una distribucin orientada a usuario final, como por
ejemplo
Ubuntu
[http://www.ubuntu.org],
Mandriva
[http://www.mandriva.org] (antes Mandrake), o alguna otra de
la misma orientacin.

Recursos disponibles para la distribu- Otra razn de eleccin tiene que ver con la facilidad de buscar
cin
recursos para esa distribucin, que va desde conseguir los CD,
las actualizaciones, pasando por los manuales e inclusive la
experiencia local de otros usuarios, que puedan potencialmente
prestar ayuda en un determinado momento (por ejemplo a travs
de un grupo de usuarios).
Grado de mantenimiento y actualiza- En el mundo Linux van apareciendo de cuando en cuando nuecin
vas distribuciones, por lo que otro criterio de eleccin tiene que
ver con las personas involucradas en esa distribucin y la cantidad de trabajo que le dedican para darle mantenimiento (corregir
errores, hacer mejoras, etc) y actualizarla (incluir nuevas versiones de software, publicar nuevas versiones de la distribucin).
Herramientas de administracin y
configuracin

Est claro que todas las distribuciones estn basadas en el mismo


ncleo y por tanto los componentes fundamentales del sistema
van a ser iguales en la mayora de las distribuciones, as que
otra razn que puede influir en la decisin de elegir una distri-

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

21

Qu distribucin es mejor ?

bucin son las herramientas adicionales de administracin o


configuracin del sistema que ofrece, ya que, como se mencion
antes, sta es el rea en la que se dan las mayores diferencias y
en la que compiten la mayora de las distribuciones, tratando
de proveer herramientas completas y sencillas que faciliten la
instalacin, configuracin y administracin del sistema.
Certificacin de terceros fabricantes

Debido a la confianza que ha creado el sistema operativo Linux,


muchos fabricantes de hardware y software certifican sus productos para determinada distribucin. Por lo que en estos das
se est convirtiendo en una de la razones principales para elegir
una distribucin. Por ejemplo Hewlett Packard/Compaq, Dell
e IBM certifican el hardware de sus servidores para Red Hat.
Oracle certifica su producto de base de datos Oracle para Suse
y Red Hat pero slo en sus versiones comerciales para empresas
(Enterprise version).

Si se piensa tener varias computadoras instaladas con Linux, es ms conveniente que todas tengan la
misma distribucin, o a lo sumo dos distribuciones diferentes, digamos una pensada para servidor y
otra pensada para los clientes. Esto con el fin de disminuir el esfuerzo que representa administrar y
mantener varios sistemas corriendo diferentes distribuciones de Linux.

22

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

3. Usando el sistema Linux


3.1. Objetivos

Este captulo presenta una de las formas posibles de trabajo en Linux: la lnea de rdenes y explica la
manera de interactuar con l usando un intrprete de rdenes (shell).
Al terminar este captulo, el alumno ser capaz de:
Ingesar a un sistema Linux en modo texto o modo grfico
Trabajar en un intrprete de rdenes
Introducir rdenes vlidas y secuencias de rdenes
Hacer referencia a variables de entorno
Usar y editar la historia de rdenes
Invocar rdenes dentro y fuera de la ruta de bsqueda (path)
Utilizar las pginas del manual para acceder a la documentacin de las rdenes del sistema

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

23

Ingreso y salida del sistema

3.2. Ingreso y salida del sistema

Linux tiene dos formas de presentarse al usuario. Una de ellas es el modo texto y el otro el modo grfico, que es opcional y dependiendo de la instalacin puede no estar disponible en un sistema. En
cualquier modo que se elija trabajar el usuario debe introducir en la pantalla de registro la combinacin
de una cuenta de usuario (login) y contrasea (password) vlidos para iniciar una sesin de trabajo
(ingresar al sistema).
El modo grfico puede tener diferentes aspectos dependiendo de la instalacin de Linux que se tenga,
as por ejemplo la pantalla de ingreso de GNOME es visualmente diferente a la pantalla de ingreso de
KDE, pero funcionalmente son similares, ambas permiten que el usuario introduzca su cuenta y su
contrasea.
Por ejemplo la siguiente pantalla muestra el inicio de una sesin en modo texto:
caribe login: sofia
Password: ********
Last login: Thu Jul 15 15:30:26 on tty1
[sofia@caribe sofia]$

24

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ingreso y salida del sistema (continuacin)

3.3. Ingreso y salida del sistema (continuacin)

Cuando se ingresa a un sistema Linux, tpicamente se lo hace desde la consola, que son el teclado y
monitor conectados directamente a la computadora. Es posible tener mas de una sesin de trabajo
(debido a que es un sistema operativo multiusuario) con un mismo usuario o diferentes usuarios utilizando consolas virtuales, que estn nicamente disponibles en modo caracter (tambin llamado modo
texto).
Para acceder a cada una de las consolas virtuales se presiona la combinacin de teclas Alt+Funcin,
por ejemplo para acceder a la tercera consola virtual se presiona Alt y F3 al mismo tiempo, en cada
una de ellas el sistema presenta la pantalla de ingreso.
Un sistema Linux recin instalado probablemente permita acceder a las primeras seis consolas virtuales,
y si el modo grfico est disponible le corresponder la sptima consola virtual. Cuando se est en la
consola virtual grfica (modo grfico) se debe presionar la combinacin Ctrl+Alt+Funcin para cambiar
a cualquier consola texto.
Si nos encontramos en modo texto y deseamos salir del sistema (terminar la sesin), simplemente debemos escribir exit.
Si estamos en modo grfico, en el men principal estar disponible la opcin de terminar la sesin.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

25

El intrprete de rdenes

3.4. El intrprete de rdenes

Cuando nos encontramos en un sistema Linux nos comunicamos con l a travs de un intrprete de
rdenes, que es simplemente un programa que toma la entrada del usuario y la traduce a rdenes o
instrucciones que el sistema trata de seguir. Esto puede ser comparado con el COMMAND.COM de
MS-DOS, el cual efecta esencialmente la misma tarea.
Tpicamente, todas las distribuciones utilizan el intrprete de rdenes denominado Bash, aunque hay
muchos otros, como por ejemplo Ash, C-shell, o Zsh.
El intrprete de rdenes es slo una interfaz de Linux, otra interfaz disponible es el sistema X Window,
que brinda al usuario la posibilidad de trabajar en una interfaz grfica de usuario (GUI). Tambin en
modo grfico podemos hacer uso de un intrprete de rdenes utilizando un emulador de terminal.
Cuando el usuario ingresa al sistema (incia una sesin), ya sea localmente desde la consola o remotamente, son ledos una serie de archivos de texto, que contienen informacin necesaria para crear el
entorno de trabajo del usuario. La secuencia exacta de este inicio vara entre distribuciones, pero para
LPI se toman en cuenta los mtodos utilizados en Red Hat y Debian.

3.4.1. Sesin interactiva

26

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Sesin interactiva

Un sesin interactiva se produce cuando se ejecuta un intrprete de rdenes (login shell) al ingresar
al sistema.
El intrprete comienza leyendo el archivo global de configuracin /etc/profile que afecta el entorno
para todos los usuarios que usen Bash u otro intrprete compatible.
A continuacin se buscan y leen una serie de archivos del usuario (ubicados en su directorio de trabajo)
que contienen instrucciones que afectan solamente a su entorno. Los archivos son los siguientes y se
toma en cuenta slo el primero que se encuentra, de acuerdo a este orden especfico:
1. ~/.bash_profile
2. ~/.bash_login
3. ~/.profile
A continuacin se busca el archivo ~/.bashrc y en el caso de Red Hat este invoca a
Usualmente en estos archivos se acostumbra definir alias de rdenes y funciones.

/etc/bashrc.

Finalmente, cuando el usuario sale de la sesin, se lee y ejecuta el archivo ~/.bash_logout.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

27

Sesin no interactiva

3.4.2. Sesin no interactiva

Tpicamente ocurre cuando se invoca al intrprete Bash, por ejemplo para ejecutar un guin (script).
O cuando el usuario privilegiado root usa la orden su para tomar la identidad de otro usuario pero sin
restaurar su entorno.
La secuencia de archivos que se leen es bastante diferente en Red Hat y Debian. En el caso del primero,
se lee ~/.bashrc y a continuacin el archivo /etc/bashrc. Para el segundo, se lee /etc/bash.bashrc
y luego el archivo de usuario ~/.bashrc.

28

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Usando la lnea de rdenes

3.5. Usando la lnea de rdenes

Probablemente una de las habilidades ms importantes de todo administrador de sistemas Linux es


utilizar efectivamente la lnea de rdenes. Es muy comn que las implementaciones para servidor
prescindan del modo grfico y sus herramientas, por tanto el no saber utilizar la lnea de rdenes lo
harn prcticamente incompentente para administrar el servidor.

Atencin
Los examenes de LPI estn orientados exclusivamente al manejo de rdenes. Si usted
no las llega a conocer de manera adecuada ser imposible aprobarlos.
Cuando estamos usando Bash u otro intrprete, la seal que nos encontramos en la lnea de rdenes
es el indicador del sistema (prompt), que en el caso de los sistemas Red Hat es de la forma:
[sofia@tux sofia]$

Donde:
sofia@tux

Significa que se ha ingresado al sistema llamado tux, con la cuenta de usuario sofia.

sofia

Palabra que vuelve aparecer, es el nombre del directorio en el que nos encontramos
actualmente. Veremos esto en detalle mas adelante

Cuando aparece el smbolo $ (pesos), significa que se trata de una cuenta de usuario
regular (sin privilegios especiales). En cambio cuando se trata de una cuenta de usuario
privilegiado (root) este smbolo es cambiado por # (ordinal).

Nota
El indicador puede ser diferente en otras distribuciones, pero lo universal son los smbolos
$ y # que siempre van al final del indicador.
Desde el indicador del sistema podemos ejecutar diversas rdenes, como por ejemplo:
[sofia@tux sofia]$ date -u
jue jul 15 13:11:35 UTC 2004

Aqu se ejecut la rden date con el argumento -u que muestra la fecha y hora actual del sistema en
tiempo universal (GMT o UTC).

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

29

Ordenes

Cuando se teclea una orden, el intrprete hace varias cosas. Primero, separa la orden de los argumentos,
luego busca la orden en la lista de funciones, de rdenes internas, si la encuentra la invoca, de lo contrario continua la bsqueda en el camino de bsqueda para rdenes (en ingls path) y la ejecuta pasndole los argumentos especificados. Si no se encuentra en ningn lugar simplemente muestra un
mensaje de error indicando que la orden no se encontr.
Los intrpretes de rdenes utilizan un conjunto de variables con valores especficos que afectan la
forma en que trabaja el intrprete o dicho de otro modo establecen el entorno sobre el cual trabaja, as
por ejemplo el prompt o indicador del sistema es un elemento del entorno, otro de ellos es el path o
ruta de bsqueda que tiene exactamente la misma funcin que el path en los sistemas Windows y MSDOS.

3.5.1. Ordenes

Linux tiene cientos de rdenes, pero slo un conjunto de ellas son empleadas cotidianamente al trabajar
en un sistema Linux.
Todas las rdenes comparten una estructura similar que puede incluir los siguientes tres elementos:
orden [opciones] [argumentos]
Que corresponden a:
la orden misma
una o ms opciones admitidas por la orden (puede no estar presente)
uno o ms argumentos admitidos (puede no estar presente)
En general todas las rdenes se escriben en minsculas. Hay que recordar que Linux hace distincin
entre maysculas y minsculas.
De modo general las opciones suelen indicarse de dos maneras:
opcin corta: un guin y una letra
opcin larga: doble guin y una palabra, a esta ltima se la denomina tambin opcin estilo GNU.
Veamos unos ejemplos

30

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ordenes

Tabla 3.1. Ejemplos de rdenes en Linux


date

Slo una orden sin opciones ni argumentos

date -u

La orden con una opcin

date --utc

La orden con una opcin estilo GNU

date --utc +"%A %d de %B" La orden anterior con un argumento


date -uR

La orden ahora con dos opciones u y R, tambin se puede usar -u R, -Ru.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

31

Alias

3.5.2. Alias

El alias, permite que una palabra sea sustituida por otra, cuando se usa la palabra como orden.
Los alias se definen con la orden alias, el siguiente ejemplo define un alias llamado ls:
[sofia@tux sofia]$ alias ls='ls --color=tty'

Para mostrar todos los alias, se invoca alias sin argumentos. Por ejemplo:
[sofia@tux sofia]$ alias

Nos mostrar un resultado similar al siguiente:


alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'

Si el usuario escribe la cadena ls -lh como una orden, esto ser expandido a: ls --color=tty -lh.
En algunas ocaciones, usted querr que no ocurra tal expansin, para ello basta poner el prefijo '\'. As:
\ls -lh

Si quiere eliminar un alias existente, entonces debe usar la orden unalias. Por ejemplo:
[sofia@tux sofia]$ unalias ls

De modo predeterminado los alias se definen en el archivo ~/.bashrc. El la Seccin 8.11, Archivos
de configuracin trataremos el tema de personalizar el entorno de trabajo con ms detalle.

32

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ejecucin de la orden

3.5.3. Ejecucin de la orden

Cuando escribimos una orden, que no comienza con '/' (barra inclinada), el intrprete intenta localizarla.
Si existe una funcin del intrprete con ese nombre, entonces la funcin es invocada (las funciones se
ven en Seccin 8.10, Funciones.). Si no hay una funcin, entonces el intrprete busca si se trata de
una orden interna (una orden incorporada en el intrprete) y la invoca si existe.
Si el nombre de la orden, no es funcin, ni orden interna y no empieza con '/', entonces Bash busca un
archivo cuyo nombre sea igual a la orden, en los directorios indicados en la variable PATH (las variables
se ven en Seccin 8.8, Variables de entorno y del intrprete), si hay una coincidencia la invoca y si
no devuelve un mensaje de error.
El archivo que invoque Bash, debe ser uno capz de ejecutarse, en este caso se dice que se trata de una
orden externa.
Si la orden empieza con '/', entonces Bash la busca directamente en la ruta indicada. Por ejemplo, de
modo predeterminado el usuario regular no tiene en la ruta de bsqueda (PATH) el directorio /sbin/,
si intenta ejecuta la orden ifconfig lo, obtendr un mensaje de error, pero si escribe /sbin/ifconfig lo,
lograr ejecutar la orden.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

33

Ordenes habituales

3.5.4. Ordenes habituales

Lo siguiente es una lista rpida de algunas rdenes habitualmente utilizadas:

Tabla 3.2. Ordenes habitualmente utilizadas


Orden
exit
Propsito

Sale de una sesin de trabajo

Sintaxis

exit

Opciones

ninguna

Ejemplo(s) exit
clear
Propsito

Limpia la pantalla

Sintaxis

clear

Opciones

Ninguna. Tambin funciona presionar Ctrl+L

Ejemplo

clear

passwd
Propsito

Cambia la contrasea de acceso del usuario

Sintaxis

passwd

Opciones

ninguna

Ejemplo

passwd usuario

id

34

Propsito

Muestra el identificador de usuario y de grupo para un usuario especfico

Sintaxis

id [opciones]

Opciones

-g
-u
-n

Ejemplos

id

[usuario]

Muestra solo identificador de grupo (GID)


Muestra solo identificador de usuario (UID)
Muestra nombre en lugar de identificador. Se usa con las opciones anteriores.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ordenes habituales

Orden
id -un usuario
su
Propsito

Toma la identidad de otro usuario

Sintaxis

su [opciones]

Opciones

-c orden Pasa la orden al intrprete


- Restaura el entorno de usuario

Ejemplos

su - root
su - pedro

[usuario]

pwd
Propsito

Muestra el directorio actual de trabajo

Sintaxis

pwd

Opciones

Ninguna

Ejemplo

pwd

poweroff
Propsito

Apaga el sistema

Sintaxis

poweroff

Opciones

Ninguna

Ejemplo

poweroff

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

35

Caracteres especiales

3.5.5. Caracteres especiales

Hay algunos caracteres que tienen un significado especial para el intrprete de rdenes. Los mismos
estn resumidos en la siguiente tabla:

Tabla 3.3. Caracteres especiales


Caracter Descripcin

36

Ejemplo

Representa el directorio de trabajo del usuario cat ~/.bash_profile

Identifica una variable

Preservar el valor literal del siguiente caracter echo \$HOME es $HOME

'

Comilla simple. Preservar valor literal

echo '\$HOME es $HOME'

"

Comilla doble. Evaluar variables

echo "HOME=$HOME"

Comodn. Representa un caracter

ls /dev/ttyS?

Comodn. Representa cero o ms caracteres

ls /dev/*h*

[]

Conjunto de letras o nmeros

file /etc/rc[0-9].d

{}

Conjunto de palabras

ls /etc/*.{allow,deny}

&&

Ejecutar ord2 si ord1 fue exitosa

ord1 && ord2

||

Ejecutar ord2 si ord1 fall

ord1 || ord2

Ejecutar varias rdenes

ord1; ord2; ord3

echo $HOME

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Teclas especiales en Bash

3.6. Teclas especiales en Bash

El trabajo en lnea de rdenes es mas productivo cuando se hace uso de combinaciones de teclas que
permite agilizar la introduccin de rdenes o desenvolverse en el intrprete.
Las siguientes combinaciones de teclas son las que habitualmente se utilizan en Bash, cada una realiza
una accin especfica.

Tabla 3.4. Teclas especiales en Bash


Ctrl+A

Mueve el cursor al principio de la lnea de rdenes

Ctrl+E

Mueve el curso al final de la lnea de rdenes

Ctrl+C

Termina el proceso actual en ejcucin

Ctrl+D

Borra el caracter sobre el cursor. Igual que la tecla Suprimir

Ctrl+U

Borra desde la posicin del cursor hasta el principio de la lnea de rdenes

Ctrl+K

Borra desde la posicin del cursor hasta el final de la lnea de rdenes

Ctrl+W

Borra desde el cursor hasta encontrar el primer espacio a la izquierda

Ctrl+L

Limpia la pantalla (como la rden clear)

Ctrl+R

Entra en modo reverse-i-search que se usa para buscar rdenes ejecutadas anteriormente.
La bsqueda es realizada en base a las teclas que el usuario va pulsando.

Ctrl+S

Bloquea temporalmente la salida en consola (pantalla)

Ctrl+Q

Restaura la salida en consola, bloqueada por la combinacin anterior de teclas

Ctrl+Z

Suspende el proceso actual en ejecucin.

Tab

Toma la entrada actual del teclado y completa con el nombre de archivo que coincide
con los caracteres tecleados o en caso contrario muestra todos los nombre de archivo
que coinciden con los caracteres tecleados

Flecha arriba Revisa la historia de rdenes hacia atrs (de fin a principio)
Flecha abajo Revisa la historia de rdenes desde la posicin actual hacia el final
Shift-RePag Muestra una pantalla hacia atrs
Shift-AvPag Muestra una pantalla hacia a delante
La tecla Ctrl+D tiene otros usos adicionales en Linux dependiendo del contexto, en el caso de archivos
de texto representa EOF (fin de archivo). Cuando nos encontramos en el intrprete de rdenes y no
hay ninguna orden introducida, Ctrl+D representa salir de la sesin (orden logout).

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

37

La historia de rdenes en Bash

3.7. La historia de rdenes en Bash

De modo predeterminado el intrprete de rdenes Bash, registra cada una de las rdenes que se van
ejecutando durante una sesin. Cada vez que la sesin termina estas son almacenadas en un archivo
llamado ~/.bash_history.
Las siguientes operaciones con la historia de rdenes permiten agilizar el trabajo de introduccin de
rdenes

Tabla 3.5. Operaciones con la historia de rdenes


history Muestra la historia de rdenes escritas
!cadena Busca la orden ms parecida a cadena que se encuentra en la historia de rdenes y la vuelve
a ejecutar. La bsqueda se realiza desde el final hacia el principio.
!n

Vuelve a ejecutar la orden nmero n de la historia de rdenes.

!!

Vuelve a ejecutar la ltima orden introducida.

fc

Lista, edita y re-ejecuta rdenes de la lista histrica.

La historia de rdenes previamente escritas en el intrprete, es una funcin de Bash. El archivo predeterminado donde se guarda dicha historia es ~/.bash_history, que de modo predeterminado guarda
como mximo 1000 rdenes. Ambos valores predeterminados son fijados por la variables de entorno
HISTFILE y HISTSIZE respectivamente. Consulte los detalles en bash(1).
La orden fc, se puede utilizar de dos modos diferentes. El primero es listar un nmero de rdenes, por
ejemplo fc -l 50 60, lista las rdenes en ese rango de nmeros.
fc es de mucha utilidad para volver a ejecutar una secuencia de rdenes desde la historia. Por ejemplo:
fc 50 55 invocar el editor de texto predeterminado para editar las rdenes 50 a 55 de la historia, y
luego de guardar y salir del editor las ejecutar.

38

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Obteniendo ayuda

3.8. Obteniendo ayuda

Muchas de las rdenes en Linux poseen varias opciones, que aun los usuarios experimentados no
siempre pueden recordar. A primera vista debido a la misma estructura del sistema Linux, al principio
puede parecer oscuro al enfrentarse a la administracin y configuracin del sistema usando rdenes.
Afortunadamente existen varios caminos para atacar este inconveniente y algunos de los mas importantes van a ser abordados a continuacin.

3.8.1. Ayuda rpida de una orden

En bash, puede obtener descripcin mas detallada de una orden interna utilizando la orden help, del
siguiente modo:
[sofia@tux sofia]$ help exit
exit: exit [n]
Exit the shell with a status of N. If N is omitted, the exit status
is that of the last command executed.
[sofia@tux sofia]$

Para rdenes externas se puede usar la opcin --help que despliega una ayuda breve sobre la sintaxis
y las opciones de la orden. No todas las rdenes admiten esta opcin y en muchos casos esta ayuda

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

39

Ayuda rpida de una orden

breve no es suficiente. En este caso es mejor consultar el manual o documentacin en lnea que est
disponible en los sistemas Linux.
[sofia@tux sofia]$ id --help
Usage: id [OPTION]... [USERNAME]
Print information for USERNAME, or the current user.
-a
-g,
-G,
-n,
-r,
-u,

--group
--groups
--name
--real
--user
--help
--version

ignore, for compatibility with other versions


print only the effective group ID
print all group IDs
print a name instead of a number, for -ugG
print the real ID instead of the effective ID, with -ugG
print only the effective user ID
display this help and exit
output version information and exit

Without any OPTION, print some useful set of identified information.


[sofia@tux sofia]$

40

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

El manual en lnea

3.8.2. El manual en lnea

Casi todas las rdenes en Linux vienen acompaadas de una pgina del manual (o man page), as
los como archivos de configuracin, llamadas al sistema, y otros. Para acceder a esta documentacin
en lnea se utiliza la orden man, por ejemplo si escribe man bash podr leer una documentacin extensiva sobre bash.
Si bien las pginas del manual proporcionan abudante informacin, sta tiene la desventaja de ser a
menudo compleja de entender y lamentablemente la traduccin al espaol est incompleta. Razn por
la cual un usuario principiante probablemente encontrar a las pginas del manual muy complejas de
usar. Sin embargo an con todas sus desventajas sta documentacin es valiosa y ms an para un
usuario avanzado o un administrador de sistemas Linux.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

41

Utilizando el manual en lnea

3.8.3. Utilizando el manual en lnea

Las pginas del manual estn divididas en captulos, los ms utilizados son el 1, 5 y 8. El captulo que
se desea consultar se indica como argumento en la orden, por ejemplo man 1 crontab muestra la pgina del manual de la orden crontab y man 5 crontab la pgina donde se explica el formato de los
archivos crontab.
Cuando se menciona una orden se suele indicar entre parntesis el captulo en la cual se documenta,
por ejemplo crontab(1) o crontab(5), que se refieren a la pgina de manual de crontab en el captulo
1 y 5 respectivamente.

Tabla 3.6. Captulos del manual en lnea


Captulo Tema

42

Ordenes de usuario

Llamadas al sistema

Funciones de biblioteca en lenguaje C

Archivos de dispositivo

Formato de archivos de configuracin

Juegos y programas de entrenimiento

Miscelaneos y convenciones usadas en el sistema

Ordenes de administrador (root)

Funciones del ncleo

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Secciones de una pgina

3.8.4. Secciones de una pgina

Cuando la orden man es invocada, esta busca en directorios especficos del sistema la pgina del manual
solicitada, la procesa y luego invoca a la orden less (Veremos ms de esta orden mas adelante) para
desplegarlo en la pantalla de la terminal. Para leer toda la pgina puede usar las teclas del cursor y las
teclas AvPg, RePg. Para realizar bsquedas puede usar la tecla / y escribir a continuacin la palabra
que desea buscar. Para abandonar la pgina del manual basta con presionar la tecla q.
Cuando haya revisado varias pginas del manual usted notar que muchas de ellas presentan secciones
comunes, aunque estas secciones no son un estndar, estas son las que usualmente aparecen:
NAME

Nombre y breve descripcin de la orden

SYNOPSIS

Forma de uso (sintaxis) de la orden

DESCRIPTION

Descripcin detallada del propsito de la orden

OPTIONS

Descripcin de las opciones disponibles

FILES

Archivos auxiliares empleados por la orden

SEE ALSO

Referencia cruzada a otras pginas del manual

COPYRIGHT

Informacin sobre los derechos reservados

BUGS

Limitaciones conocidas de la orden

Otras rdenes relacionadas con man son las rdenes apropos y whatis
apropos palabra Busca en la seccin NAME de las pginas del manual las descipciones que contienen palabra. Esta orden es equivalente a utilizar man -k
whatis orden

Muestra las descripciones que le corresponden a orden en las pginas del manual.
Es equivalente a utilizar man -f

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

43

44

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

4. Trabajando con archivos y


directorios
4.1. Objetivos

El sistema operativo Linux tiene una estructura de archivos y directorios que ha sido concebida para
permitir el trabajo en modo multi-usuario. El usuario de un sistema Linux requiere conocer esta estructura para poder trabajar efectivamente en el sistema.
Al terminar con esta seccin el alumno ser capz de comprender y describir:
Que se entiende por un sistema de archivos
Que caractersticas generales tiene el sistema de archivos y su relacin con otros aspectos del sistema.
Cual es la estructura de directorios utilizada en Linux
Que informacin y tipos de archivos se mantienen en directorios especficos y cual el propsito de
esos directorios

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

45

Qu es un sistema de archivos ?

4.2. Qu es un sistema de archivos ?

En la mayora de los sistemas operativos, existe el concepto de archivo, que es la unidad bsica utilizada para organizar la informacin del sistema. El sistema de archivos es el mtodo lgico para organizar, guardar, recuperar, manipular y administrar informacin.
Los archivos estn organizados en una forma jerrquica agrupadas en directorios, que son nicamente
una coleccin de archivos, en otros sistemas operativos son denominados carpetas.
Todos los sistemas operativos utilizan un diseo especfico de sistema de archivos, lo que hace que
existan particularidades en cada uno de ellos, como por ejemplo la longitud mxima del nombre de
un archivo, atributos especiales, permisos o autorizaciones, etc.
El sistema de archivos predeterminado en Linux se denomina ext3, pero adems Linux es capaz de
trabajar con otros sistemas de archivos como por ejemplo FAT (MS-DOS), VFAT (Windows9x), FAT32 (Windows98), HPFS (OS/2), NTFS (WindowsNT), etc.

46

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Linux y el sistema de archivos

4.3. Linux y el sistema de archivos

Una caracterstica importante del sistema Linux/UNIX es la forma general de tratamiento de varios
componentes del sistema como archivos, por ejemplo los dispositivos hardware como unidades de almacenamiento secundario, impresoras, modems, etc. son tratados como archivos. Y tambin varios
aspectos del ncleo de Linux pueden ser observados o alterados por medio de archivos especficos.
Es importante observar que Linux/UNIX, hace distincin entre maysculas y minsculas, por lo que
los nombres de archivo CURSO.HTM, curso.htm y Curso.htm son diferentes, tambin hay que
indicar que el carcter para separar rutas de directorio es la barra inclinada / (slash).
Y finalmente, cuando el nombre de un archivo o directorio empieza con punto ., este es considerado
como oculto.

Ejemplos de archivos vlidos en Linux


Archivo: /etc/profile
Archivo: /etc/X11/XF86Config
Directorio: /usr/local/share/
Archivo oculto: /home/sofia/.bash_history

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

47

Estructura de directorios en Linux

4.4. Estructura de directorios en Linux

La estructura jerrquica del sistema de archivos en Linux, est definida por la Jerarqua del Sistema
de Archivos Estndar (FHS, Filesystem Hierarchy Standar) y en general todas las distribuciones usan
este estndar.
El estndar consiste de un conjunto de guas y requerimientos respecto a la organizacin de los directorios del sistema de archivos. Esto permite a los usuarios de Linux predecir la ubicacin de archivos
y directorios cuando trabajan en el sistema.
A continuacin describimos los directorios que deben estar presentes en la raiz (/) y el propsito de
cada uno.

48

/bin

Es la abreviacin de "binaries", o ejecutables. Es donde residen los programas que corresponden a las rdenes esenciales del sistema. Aqu se encuentran por ejemplo cp, ls, mv.

/boot

Como su nombre lo sugiere este directorio contiene los archivos de arranque del sistema,
en particular aqu se encuentra el ncleo del sistema operativo.

/dev

Los archivos contenidos en este directorio son usados para acceder a los dispositivos
existentes del sistema, como discos duros, modems, memoria, etc.

/etc

Archivos de configuracin especficos del sistema.

/home

Contiene los directorios de trabajo de los usuarios del sistema. Por ejemplo, /home/sofia
es el directorio del usuario "sofia". En un sistema recin instalado, este directorio estar
vaco.

/lib

Contiene las bibliotecas esenciales que compartirn muchos programas. Tambien contiene
los mdulos del ncleo

/media

Este directorio contiene otros directorios que son utilizados para acceder temporalmente
a medios removibles de almacenamiento, como CD-ROM, disquetes, memorias-flash USB.

/mnt

Este directorio est reservado para acceder temporalmente a otros sistemas de archivos,
tales como NFS (sistemas de archivos montados via red).

/opt

Viene del ingls "optional" (opcional) y es comnmente utilizado para instalar otras aplicaciones adicionales, como por ejemplo LibreOffice un clon de MS Office.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Estructura de directorios en Linux

/proc

Es un sistema de archivos virtual. Los archivos que contiene realmente residen en memoria,
no en un disco. Hacen referencia a varios aspectos del ncleo y procesos que estn corriendo
actualmente en el sistema

/root

Es el directorio de trabajo del administrador del sistema (usuario root), por tanto nicamente
este usuario puede acceder a este directorio.

/sbin

Aqui se encuentran los ejecutables esenciales del sistema operativo reservados para el
usuario root.

/tmp

Este directorio es utilizado por muchos programas que tienen la necesidad de generar informacin temporal y guardarla en un archivo.

/usr

Este directorio contiene a su vez una segunda jerarqua muy similar a la raz. Tpicamente
bajo este directorio se instalan otros programas: rdenes, librerias, otros ejecutables, otros
archivos de configuracin, todos ellos no esenciales para el sistema.

/var

Los archivos que a menudo cambian su tamao o tienden a crecer, son almacenados aqu.
Como los que mantienen el registro de eventos del sistema, por citar alguno.

Opcionalmente se pueden encontrar los siguientes directorios en la raiz:


/initrd

Presente en sistemas con versin de ncleo 2.4. Este directorio es utilizado por el
ncleo durante el arranque del sistema.

/lost+found

Este directorio es utilizado por la orden fsck para guardar archivos y directorios
desconectados, que suelen presentarse cuando ocurre una fallo con el sistema de
archivos. En otros sistemas son llamados sectores perdidos o cadenas perdidas.

/misc

Ubicacin utilizada para aplicaciones y software que no tienen un lugar definido


en la jerarqua.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

49

Trabajando con archivos y directorios

4.5. Trabajando con archivos y directorios

Al concluir esta seccin usted ser capaz de realizar varias operaciones comunes con archivos y directorios, como:
Listar archivos y el contenido de directorios
Borrar archivos
Copiar archivos entre diversas partes del sistema de archivos
Mover o renombrar archivos
Crear, borrar y cambiar directorios
Cambiar la fecha y hora de creacin de archivos y directorios
Buscar archivos y directorios en todo el sistema de archivos

50

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Listado de archivos: orden ls

4.6. Listado de archivos: orden ls

La orden ls lista el contenido de directorios. De modo predeterminado lista el contenido del directorio
de trabajo actual (".").
Sinopsis: ls[opciones]

[archivo...]

Las siguientes opciones son las de uso comn:


-a

Incluye en el listado archivos cuyos nombres empiezan por punto (".").

-d

Trata a los directorios como archivos y los lista en vez de mostrar sus contenidos.

-h

Aade un sufijo indicando la unidad en que se muestra el tamao del archivo. 'M' para Megabytes
y 'K' para Kilobytes. Slo tiene efecto junto a la opcion -l

-i

Muestra el nmero de ndice que le correponde al archivo (nmero- o nmero de nodo-). Este
nmero identifica de forma inequvoca a cada archivo dentro de un sistema de archivos particular.

-l

Muestra el listado en formato largo, que incluye los permisos del archivo, el nmero de enlaces
que tiene, el nombre del propietario, el del grupo al que pertenece, el tamao (en bytes), una
marca de tiempo, y el nombre del archivo. De forma predeterminada, la marca de tiempo que se
muestra es la de la ltima modificacin. Para archivos especiales de dispositivo el campo de tamao
se reemplaza comnmente por los nmeros de dispositivo mayor y menor.

-F

Aade un carcter a cada nombre de archivo que indica el tipo de archivo. Los indicadores de tipos
de archivo son:
/, para directorios
@, para enlaces simblicos
*, para archivos con permiso de ejecucin
|, para archivos FIFO
=, para archivos de conexin (socket)
nada para archivos regulares

-R

Lista el contenido de todos los directorios recursivamente.

Ejemplos:
[sofia@tux sofia]$ ls -l
-rw-rw-r-1 sofia
sofia
drwxrwxr-x
8 sofia
sofia
drwxrwxr-x
4 sofia
sofia
-rw------1 sofia
sofia
-rw-rw-r-1 sofia
sofia

2012
4096
4096
50386
6283144

abr 1 16:12
ago 8 20:15
feb 4 2004
abr 16 01:59
jul 31 16:17

Changelog
evolution
floppy
netload-0.1.1.tar.gz
fop-0.20.5-bin.tar.gz

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

51

Listado de archivos: orden ls

drwxrwxr-x
-rw-rw-r--rw-rw-r--

2 sofia
1 sofia
1 sofia

sofia
sofia
sofia

[sofia@tux sofia]$ ls -la


drwx-----x
87 sofia
sofia
drwxr-xr-x
10 root
root
-rw------1 sofia
sofia
-rw-r--r-1 sofia
sofia
-rw-r--r-1 sofia
sofia
-rw-r--r-1 sofia
sofia
-rw-rw-r-1 sofia
sofia
drwxrwxr-x
8 sofia
sofia
drwxrwxr-x
4 sofia
sofia
-rw------1 sofia
sofia
-rw-rw-r-1 sofia
sofia
drwxrwxr-x
2 sofia
sofia
-rw-rw-r-1 sofia
sofia
-rw-rw-r-1 sofia
sofia

52

4096 ago 2 23:28 fotos


1522 abr 2 18:24 README.TXT
4511664 jul 14 02:12 TheLinuxOS.pdf

12288
4096
19850
24
1082
124
2012
4096
4096
50386
6283144
4096
1522
4511664

ago
abr
ago
oct
jul
oct
abr
ago
feb
abr
jul
ago
abr
jul

8
29
7
15
31
15
1
8
4
16
31
2
2
14

21:27
23:30
16:08
2003
17:28
2003
16:12
20:15
2004
01:59
16:17
23:28
18:24
02:12

.
..
.bash_history
.bash_logout
.bash_profile
.bashrc
Changelog
evolution
floppy
netload-0.1.1.tar.gz
fop-0.20.5-bin.tar.gz
fotos
README.TXT
TheLinuxOS.pdf

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Copia de archivos: orden cp

4.7. Copia de archivos: orden cp

La orden cp se utiliza para copiar archivos y directorios.


Sinopsis: cp [opciones] archivo... destino
Aqui puede ocurrir que archivo sean varios entonces destino tiene que ser necesariamente un directorio. Si archivo es uno solo entonces destino puede ser un directorio o un nombre de archivo que
si existe es remplazado.
Las opciones generalmente utilizadas son:
-f

Si existen borra los archivos destino antes de realizar la copia.

-i

Pide confirmacin antes de sobreescribir archivos destino existentes

-p

Preserva los permisos, el propietario, el grupo y los tiempos de los archivos originales. En la
prctica cuando un usuario no privilegiado usa esta opcin no se mantienen el propietario ni el
grupo.

-r

De modo predeterminado cp no copia directorios, excepto cuando se usa esta opcin que ademas
copia los directorios recursivamente.

-v

Muestra el nombre de cada archivo antes de copiarlo

Veamos algunos ejemplos:


[sofia@tux sofia]$ cp /etc/hosts /etc/services /etc/protocols .

Copia los archivos /etc/hosts, /etc/services y /etc/protocols al directorio actual ('.')


[sofia@tux sofia]$ cp -r /usr/local/share/ prueba

En este ejemplo se asume que el destino prueba no existe. Entonces cp crea el destino como directorio
y copia ah dentro el contenido de /usr/local/share/ de forma recursiva.
[sofia@tux sofia]$ cp -rfv /usr/local/share/ prueba

Repetimos el ejemplo anterior, pero antes de realizar la copia, cp borra el directorio prueba y muestra
cada nombre de archivo antes de copiarlo.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

53

Borrado de archivos: orden rm

4.8. Borrado de archivos: orden rm

La orden rm borra archivos, aunque puede ser utilizada para borrar directorios si se usa la opcin -r.
Esta opcin se debe usar con precaucin por que borra todo el directorio recursivamente.
Sinopsis: rm [opciones]

archivo...

Las siguientes opciones son las de uso comn:


-f

Borra el archivo sin pedir confirmacin aun cuando sea de slo lectura (no modificable). Se entiende como "borrar a la fuerza".

-i

Pide confirmacin antes de borrar el archivo. De modo predeterminado rm no pide confirmacin.

-r

Borra recursivamente rboles de directorio

-v

Muestra el nombre de cada archivo antes de borrarlo

Ejemplos:
[sofia@tux sofia]$ rm Changelog

Borra el archivo llamado Changelog en el directorio actual.

Importante
De modo predeterminado nunca se pide confirmacin al borrar un archivo.
[sofia@tux sofia]$ rm -i track*
rm: borrar el fichero regular `track01.mp3'? (s/n) n
rm: borrar el fichero regular `track02.mp3'? (s/n) s
rm: borrar el fichero regular `track03.mp3'? (s/n) n

Pide confirmacin antes de borrar los archivos track*


[sofia@tux sofia]$ rm -rf copia_pasada

Borra todo el arbol de directorio copia_pasada sin pedir confirmacin

54

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Borrado de archivos: orden rm

Peligro
El uso de la opcin -rf debe hacerse con precacucin. Una vez borrados los archivos es
extremadamente dificultoso intentar recuperarlos.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

55

Renombre o traslado: orden mv

4.9. Renombre o traslado: orden mv

La orden mv se emplea para mover o renombrar archivos y directorios.


Sinopsis: mv [opciones]

origen destino

Si el ltimo argumento es un directorio existente, mv mueve cada uno de los archivos indicados en
origen a un archivo con el mismo nombre en ese directorio. Si no, si slo se dan dos archivos, renombra
el primero al segundo. Es un error que el ltimo argumento no sea un directorio y se den ms de dos
archivos como argumentos.
Las siguientes opciones son las de uso comn:
-f

Mueve el archivo sin pedir confirmacin.

-i

Pide confirmacin cuando


pide confirmacin.

-v

Muestra el nombre de cada archivo antes de moverlo

destino

existe, como en otros casos de modo predeterminado no se

Ejemplos:
[sofia@tux sofia]$ mv Changelog CHANGELOG

Renombra el archivo Changelog a CHANGELOG.


[sofia@tux sofia]$ mv -v prueba/info ~

Mueve el directorio prueba/info al directorio de trabajo del usuario actual, y muestra el archivo.
[sofia@tux sofia]$ mv -i prueba/man/man1 ~/man_sec_1

Pide confirmacin antes de mover el directorio prueba/man/man1 al directorio de trabajo del usuario
actual, cambiando el nombre a man_sec_1.

56

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Crear directorio: orden mkdir

4.10. Crear directorio: orden mkdir

La orden mkdir se emplea para crear directorios.


Sinopsis: mkdir [opciones] directorio...
Las siguientes opciones son las de uso comn:
-p

Si se requiere crea tambin el directorio padre.

Ejemplos:
[sofia@tux sofia]$ mkdir rojo

Crea el directorio llamado rojo


[sofia@tux sofia]$ mkdir azul verde azul/claro

Crea los directorios

azul

verde

en el directorio actual y el directorio

claro

dentro del directorio

azul
[sofia@tux sofia]$ mkdir -p uno/dos/tres

Crea el directorio tres, tambien el directorio padre


existe, tambin es creado.

dos

si no existe. Y si el directorio

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

uno

tampoco

57

Cambiar directorio: orden cd

4.11. Cambiar directorio: orden cd

La orden cd se usa para cambiar a un directorio expecfico.


Sinopsis: cd [directorio]
Ejemplos:
[sofia@tux sofia]$ cd azul

Cambiar (entra) al directorio azul.


[sofia@tux sofia]$ cd /usr/local/share
[sofia@tux sofia]$ cd ..

La primera orden cambia al directorio /usr/local/share. Y la siguiente cambia al directorio padre


(..) que en este caso es /usr/local.
[sofia@tux sofia]$ cd

Cuando se usa cd sin nign argumento, cambia al directorio de trabajo del usuario.

58

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Borrar directorio: orden rmdir

4.12. Borrar directorio: orden rmdir

La orden rmdir slo borra directorios vacos. Si el directorio no est vacio muestra un mensaje de
error.
Sinopsis: rmdir [opciones] directorio...
Las siguientes opciones son las de uso comn:
-p

Si se requiere borra tambin el directorio padre.

Ejemplos:
[sofia@tux sofia]$ rmdir rojo

Borra el directorio de nombre rojo


[sofia@tux sofia]$ rmdir -p uno/dos/tres

Borra el directorio tres junto con los directorios padre.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

59

Cambiando fecha y hora de un archivo

4.13. Cambiando fecha y hora de un archivo

Cada archivo en Linux tiene tres datos de fecha y hora, uno que corresponde al ltimo acceso, otro a
la ltima vez de modificacin del contenido del archivo y el tercero de la ltima vez que se cambiaron
los permisos o el usuario u otro dato que est en el nodo-i del archivo. Para resumir acceso, modificacin
y cambio (atime, mtime y ctime), puede usar la orden stat para ver estos datos.
La orden touch puede ser empleada para cambiar estos datos. Cuando se usa la orden touch con un
archivo que no existe, este es creado como un archivo vaco (con cero bytes).
La orden touch admite las siguientes opciones:
-a

Cambia nicamente la fecha de acceso (atime).

-c

Si el archivo no existe, no lo crea.

-d fecha

Usa la fecha indicada en lugar de la fecha actual del sistema. El formato de la fecha es
"aaaa-mm-dd hh:mm:ss", se puede omitir la fecha o la hora

-m

Cambia nicamente la fecha de ltima modificacin (mtime).

Ejemplos:
[sofia@tux sofia]$ touch hosts

Cambia la fecha y hora de acceso y modificacin del archivo hosts, usando el tiempo actual del sistema.
[sofia@tux sofia]$ touch -d "2005-04-01 14:00" -a hosts

Cambia la fecha de acceso usando una fecha y hora especfica.


Tpicamente la orden touch se emplea para crear archivos vacos que determinado programa necesita
que existan. Por ejemplo el programa que registra eventos del sistema (logs) no lo hace a menos que
determinados archivos existan.

60

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Bsqueda de archivos

4.14. Bsqueda de archivos

Linux proporciona tres maneras de buscar archivos, la ms verstil y poderosa es utilizando la orden
find que puede explorar cualquier parte del sistema de archivos buscando los archivos que cumplan
un determinado criterio.
Sinopsis: find [ruta] [expresin]
La expresin consiste de opciones que es evaluada para buscar el archivo. Las siguientes opciones
son las de uso comn:
-name patrn

El nombre del archivo coincide con patrn.

-group nombre_grupo

El archivo pertenece al grupo nombre_grupo.

-user nombre_usuario

El archivo pertenece al usuario nombre_usuario.

-type c

El archivo es de tipo c:
b especial de bloques
c especial de caracteres
d directorio
p Tuberia nombrada (named pipe)
f archivo regular
l enlace simblico
s soquet

-size nk

El tamao del archivo es de exactamente n kbytes. Si se indica +n el tamao


es igual o mayor.

-exec orden {} \;

Accin. Ejecuta orden en cada archivo encontrado por find. La cadena "{}"
sirve para indicar el nombre de archivo.

Ejemplos:
[sofia@tux sofia]$ find /etc -name "network"
/etc/network
find: /etc/ppp/peers: Permiso denegado
find: /etc/chatscripts: Permiso denegado
/etc/pcmcia/network
find: /etc/ssl/private: Permiso denegado
find: /etc/ipsec.d/private: Permiso denegado

Busca desde el directorio /etc el archivo o directorio llamado network

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

61

Bsqueda de archivos

[sofia@tux sofia]$ find /usr -name "*gtk" -type d


find: /usr/lost+found: Permiso denegado
/usr/lib/python2.3/site-packages/gtk-2.0/gtk
/usr/share/themes/Default/gtk
/usr/src/MPlayer-1.0pre6a/Gui/mplayer/gtk

Busca desde el directorio /usr nombres de directorio que coincidan con "*gtk"

62

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Bsqueda de archivos con locate

4.15. Bsqueda de archivos con locate

La otra manera de buscar archivos es empleando la orden locate, que a diferencia de find no busca en
el sistema de archivos si no en una base de datos de archivos, que es creada por la orden updatedb(1).
locate es una orden mucho menos flexible que find pero mucho mas rpida. Lo malo es que no es muy
exacta y en la bsqueda muestra todos los archivos que cumplen con el patrn dado. Veamos algunos
ejemplos:
[sofia@tux sofia]$ locate gtk
/etc/gtk
/etc/gtk-2.0
/etc/gtk-2.0/gdk-pixbuf.loaders
/etc/gtk-2.0/gtk.immodules
/etc/gtk/gtkrc.az
/etc/gtk/gtkrc.be

Muestra todos los archivos donde aparece la cadena "gtk". (Este ejemplo ha sido truncado porque son
muchos archivos)
[sofia@tux sofia]$ locate '*gtk'
/etc/gtk
/usr/lib/menu/alsaplayer-gtk
/usr/lib/mime/packages/alsaplayer-gtk
/usr/lib/python2.3/site-packages/gtk-2.0/gtk
/usr/share/doc/alsaplayer-gtk
/usr/share/themes/Default/gtk
/usr/src/MPlayer-1.0pre6a/Gui/mplayer/gtk

Este ejemplo nicamente busca los archivos que terminan en "gtk". Es importante encerrar el patrn
en comillas simples.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

63

Bsqueda de archivos con which y


whereis

4.16. Bsqueda de archivos con which y whereis

La orden which mas que buscar archivos busca rdenes externas (archivos ejecutables). La bsqueda
se realiza en las rutas de directorios indicadas en la variable de entorno PATH.
[sofia@tux sofia]$ which find
/usr/bin/find

Busca la orden find y muestra su ruta completa de ubicacin.


La orden whereis busca el archivo ejecutable, la pgina del manual y el programa fuente de una orden.
La desventaja que tiene es que slo busca en ubicaciones definidas que no es posible cambiar.
[sofia@tux sofia]$ whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz

En el ejemplo nos muestra la ruta completa del ejecutable y de la pgina del manual

64

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

5. Procesamiento de textos
Linux utiliza principalmente archivos de texto para guardar la configuracin del sistema y de sus
aplicaciones. Tambin cuando trabajamos en la lnea de rdenes generalmente obtenemos textos
como resultado de usar una determinada orden. Por estas razones las habilidades de usar rdenes para
procesamiento de textos son muy valiosas para muchas de las tareas cotidianas de usuarios avanzados,
desarrolladores o administradores de sistemas.

5.1. Objetivos

Este captulo cubre la mayora de las rdenes que se usan para procesar textos que son parte del paquete
GNU textutils. Tambin veremos como se envan archivos y flujos de texto a travs de las rdenes
que procesan textos para modificarlos y obtener otros resultados. El aprender a desarrollar estas habilidades es til en las tareas cotidianas de administracin, ya que por ejemplo con el uso de una de estas
rdenes podemos buscar y remplazar texto de forma programtica, que es mucho ms sencillo que
abrir el archivo en un editor de texto y hacerlo manualmente.
Al terminar este captulo, el alumno ser capaz de:
Realizar varias operaciones con archivos de texto
Identificar las rdenes conocidas como filtros
Aplicar filtros a flujos de texto
Enviar archivos y flujos de texto a atravs de filtros de texto para modificar el resultado
Usar varias rdenes estndar de UNIX encontradas en el paquete GNU textutils

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

65

Inspeccin del contenido de archivos

5.2. Inspeccin del contenido de archivos

Una caracterstica del sistema Linux es la de emplear archivos texto para guardar informacin del
sistema y otros datos de configuracin. Las siguientes rdenes son muy tiles por que permiten ver el
contenido de estos archivos texto.
La orden cat muestra el contenido de un archivo de principio a final sin ninguna pausa.
[sofia@tux sofia]$ cat /etc/nsswitch.conf

Muestra el contenido del archivo /etc/nsswitch.conf


[sofia@tux sofia]$ cat -n /etc/nsswitch.conf

Como el anterior pero la opcin -n hace que enumere cada lnea.


Una orden que parece graciosa es tac que muestra el contenido de un archivo de final a principio
(contrario a cat) sin ninguna pausa.
[sofia@tux sofia]$ tac /etc/nsswitch.conf

Muestra el contenido del archivo /etc/nsswitch.conf empezando por la ltima lnea hasta llegar a
la primera lnea.
Probablemente en lugar de cat, preferir usar la orden more o less para ver el contenido de archivos
texto, ya que estos presentan los archivos por pginas -o pantallas, si prefiere llamarlo as-, haciendo
fcil leer su contenido. La orden less es mucho mas flexible que more y en ambos puede usar la tecla
H para ver una ayuda breve y para salir del programa la tecla Q. A continuacin un ejemplo de
su uso.
[sofia@tux sofia]$ more /etc/nsswitch.conf
[sofia@tux sofia]$ less /etc/nsswitch.conf

La orden head muestra las primeras lneas del archivo.


[sofia@tux sofia]$ head /etc/nsswitch.conf

De modo predeterminado solo muestra las diez primeras lneas del archivo /etc/nsswitch.conf
[sofia@tux sofia]$ head -4 /etc/nsswitch.conf

66

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Concatenando archivos

Muestra las cuatro primeras lneas del archivo /etc/nsswitch.conf


La orden tail muestra las ltimas lneas del archivo.
[sofia@tux sofia]$ tail /etc/nsswitch.conf

Muestra las ltimas diez lneas del archivo /etc/nsswitch.conf


[sofia@tux sofia]$ tail -6 /etc/nsswitch.conf

Muestra las ltimas seis lneas del archivo /etc/nsswitch.conf


Una opcin interesante de tail es -f que va mostrando las ltimas lneas a medida que el archivo va
creciendo. Esta forma de uso es la habitual para ver archivos de eventos del sistema (log files). Por
ejemplo:
[sofia@tux sofia]$ tail -f /var/log/maillog

5.2.1. Concatenando archivos

Las rdenes cat y tac se usan tambien para concatenar archivos. Veamos unos ejemplos.
[sofia@tux sofia]$ cat maillog.0 maillog.1 maillog.2

Concatena los archivos maillog.0, maillog.1, maillog.2 y muestra el resultado en pantalla


[sofia@tux sofia]$ tac maillog.0 maillog.1 maillog.2

Similar al anterior, excepto que concatena los archivos en orden reverso


Todas estas rdenes no se consideran filtros ya que no alteran ni hacen ningun proceso especial sobre
el archivo, unicamente muestran su contenido o como vimos al final concatenan pero sin alterar el resultado.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

67

Numerando lneas de un archivo de


texto

5.3. Numerando lneas de un archivo de texto

La orden nl es muy til cuando usted quiere numerar una por una las lneas de un archivo de texto o
un flujo de entrada. De modo predeterminado nl slo numera las lneas no vacas.
Sinopsis: nl[opciones]

[archivo...]

Las siguientes opciones son las de uso comn:


-b ESTILO

Usa ESTILO para la numeracin de las lneas. Donde ESTILO puede ser:
a numera todas las lneas
t numera slo las lneas no vacas

-n FORMATO

Inserta los nmeros de lnea con FORMATO


ln justificacin a la izquierda, sin ceros a la izquierda
rn justificacin a la derecha, sin ceros a la izquierda
rz justificacin a la derecha, con ceros a la izquierda

-s CADENA

Aade CADENA despes del nmero de lnea

Veamos un par de ejemplos, primero sin incluir opciones:


[sofia@tux sofia]$ nl /etc/xinetd.conf
1 # Simple configuration file for xinetd
2 #
3 # Some defaults, and include /etc/xinetd.d/
4
5

defaults
{

includedir /etc/xinetd.d

Y ahora otro ejemplo usando opciones:


[sofia@tux sofia]$ nl -ba -s'. ' /etc/xinetd.conf
1. # Simple configuration file for xinetd
2. #
3. # Some defaults, and include /etc/xinetd.d/
4.
5. defaults
6. {
7.

68

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Numerando lneas de un archivo de


texto
8.
9. }
10.
11. includedir /etc/xinetd.d

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

69

Contando lneas, palabras y bytes

5.4. Contando lneas, palabras y bytes

La orden wc se emplea para contar lneas, palabras y bytes en un archivo o en la entrada estndar. Si
se proporciona ms de un archivo muestra la suma total. Cuando no se usa opciones wc muestra en
una lnea el nmero de lneas, el nmero de palabras, seguido del nmero de bytes y el nombre del
archivo.
Sinopsis: wc [opcion]

[archivo...]

Las siguientes opciones son las de uso comn:


-l

Muestra el nmero de lneas

-w

Muestra el nmero de palabras

-c

Muestra el nmero de bytes

-m

Muestra el nmero de caracteres

Veamos algunos ejemplos:


[sofia@tux sofia]$ wc /etc/hosts.allow
12 81 603 /etc/hosts.allow

Muestra el nmero de lneas, de palabras y de bytes en el archivo /etc/hosts.allow.


[sofia@tux sofia]$ wc -w /etc/hosts.allow
81 /etc/hosts.allow

Muestra el nmero de palabras.


[sofia@tux sofia]$ wc /etc/hosts.allow /etc/hosts.deny
12
81 603 /etc/hosts.allow
17 133 898 /etc/hosts.deny
29 214 1501 total

Muestra el nmero de lneas, de palabras y de bytes de cada archivo y al final la suma total de ambos.

70

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ordenando lneas de un archivo de


texto

5.5. Ordenando lneas de un archivo de texto

La orden sort ordena las lneas de un archivo texto y muestra el resultado en la salida estndar. Adems
de ordenar se puede usar tambin para mezclar de forma ordenada dos o ms archivos.
Sinopsis: sort[opciones]

[archivo...]

Las siguientes opciones son las de uso comn:


-b

Ignora lneas en blanco

-d

Ordena de acuerdo al diccionario. Considera blancos y caracteres alfanumricos

-f

No distingue entre maysculas y minsculas

-k POS1[,POS2]

Especifica el campo por cual ordenar, que consiste en una parte de la lnea entre
POS1 y POS2 (o hasta el final de la lnea si POS2 es omitido). Para ordenar por el segundo campo debe usar "-k 2,2". Mas adelante hay un ejemplo

-n

Ordena de forma numrica

-o archivo

Guarda el resultado en archivo en lugar de mostrarlo en la salida estndar

-r

Ordena de forma descendente

-t SEP

Utiliza SEP como separador de campos en lugar de espacios o tabulacin

Veamos algunos ejemplos de uso:


Si tenemos un archivo texto llamado varios con el siguiente contenido:
[sofia@tux sofia]$ cat varios
1024
lib
proc
etc
64
bin
dev
512
Sbin
mnt
32
Proc
var
3233
home

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

71

Ordenando lneas de un archivo de


texto
Ahora veremos que resultado provoca usar la orden sort del siguiente modo
[sofia@tux sofia]$ sort varios
1024
32
3233
512
64
bin
dev
etc
home
lib
mnt
proc
Proc
Sbin
var

Ordena de acuerdo al direccionario, colocando primero los nmeros y luego en orden alfabtico.
Comparemos ahora con el siguiente resultado
[sofia@tux sofia]$ sort -n varios
bindev
etc
home
lib
mnt
proc
Proc
Sbin
var
32
64
512
1024
3233

Coloca primero las letras ordenadas en forma alfabtica y luego ordena los nmeros de forma numrica.
Naturalmente esta forma de uso es de gran utilidad cuando los archivos slo contienen nmeros.
En el siguiente ejemplo tomamos dos archivos desordenados lista1 y lista2.
[sofia@tux sofia]$ cat lista1
Terrazas
Orozco
Peralta
Morales
Mendoza
Quispe
[sofia@tux sofia]$ cat lista2
Hidalgo
Figueroa
Durn
Benavides
Arnez

Ahora juntamos ambos archivos y los ordenamos


[sofia@tux sofia]$ sort lista1 lista2
Arnez
Benavides
Durn
Figueroa
Hidalgo
Mendoza

72

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Ordenando lneas de un archivo de


texto
Morales
Orozco
Peralta
Quispe
Terrazas

El ltimo ejemplo ilustra que es posible ordenar de acuerdo a un campo. Los campos pueden estar separados por espacios en blanco o tabuladores.
Tenemos el archivo personas que contiene los siguientes datos:
[sofia@tux sofia]$ cat personas
Carlos Miranda 2136746
Samuel Reseguin 2381285
Cecilia Chalco 2759423
Fabiola Tamayo 2764846
Paola Vaca
3527593
Mariel Rau
3149126
Milton Cortez
2452222
Federico Tamayo 2317869
Angel Tamayo
2120020

La siguiente instruccin ordenar el archivo primero por el segundo campo y despus por el primer
campo. Cuando un archivo de texto contiene campos, sort los numera de izquierda a derecha empezando
en 1.
[sofia@tux sofia]$ sort -k 2,2 -k 1,1 personas
Cecilia Chalco 2759423
Milton Cortez
2452222
Carlos Miranda 2136746
Mariel Rau
3149126
Samuel Reseguin 2381285
Angel Tamayo
2120020
Fabiola Tamayo 2764846
Federico Tamayo 2317869
Paola Vaca
3527593

Importante
Recuerde que la orden sort no modifica el archivo original, nicamente muestra el resultado en la salida estndar.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

73

Cortando texto

5.6. Cortando texto

La orden cut escribe a la salida estndar partes seleccionadas de cada lnea de un archivo dado.
Sinopsis: cut opcion archivo
Algunas opciones comunes son:
-b lb

Muestra slo los bytes indicados en la lista de bytes lb

-c lc

Muestra slo los caracteres indicados en la lista de caracteres lc

-f

Muestra slo los campos indicados en la lista de campos lf

-d SEP

Se usa con -f para indicar otro separador de campos diferente al predeterminado que es el
caracter de tabulacin (TAB)

El siguiente ejemplo solo muestra los primeros cinco caracteres de cada lnea
[sofia@tux sofia]$ cut -c 1-5 personas
Carlo
Samue
Cecil
Fabio
Paola
Marie
Milto
Feder
Angel

Si un archivo tendra cinco campos delimitados por tabulador, el siguiente ejemplo slo mostrara los
campos 2, 5, 6 y 7.
[sofia@tux sofia]$ cut -f 2,5-7 planilla

El siguiente ejemplo toma un archivo cuyo delimitador de campos es ':' (el caracter dos puntos) y
muestra slo los campos 1, 5, 6 y 7.
[sofia@tux sofia]$ cut -d: -f 1,5-7 /etc/passwd

74

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Pegando texto

5.7. Pegando texto

La orden paste escribe a la salida estndar lneas que consiste de leer secuencialmente la lnea correspondiente en cada archivo dado separados por el caracter tabulador.
Sinopsis: paste opcion archivo
Las siguientes son las opciones comunes de uso para esta orden:
-s

Pega las lneas tomando slo un archivo a la vez

Veamos un ejemplo
Supongamos que tenemos dos archivos, el primero con el siguiente contenido:
[sofia@tux sofia]$ cat literal
uno
tres
dos
cinco

Y el segundo archivo con el siguiente contenido:


[sofia@tux sofia]$ cat romano
I
III
II
V
IV
VI

Veamos ahora que ocurre si ejecutamos la orden paste usando estos dos archivos:
[sofia@tux sofia]$ paste literal romano
uno
I
tres
III
dos
II
cinco
V
IV
VI

Observe que paste no verifica la correspondencia de lneas, solo las toma de forma secuencial.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

75

Convirtiendo tabuladores en espacios

5.8. Convirtiendo tabuladores en espacios

Para convertir o expandir los tabuladores a espacios se usa la orden expand. Las siguientes son las
opciones comunes de usar:
-i

Solo convierte el primer tabulador de la lnea.

-t N

Reemplazar el tabulador por N espacios. De modo predeterminado es 8 espacios.

Veamos un ejemplo. El siguiente archivo contiene datos personales, en tres campos. Nombre, Apellido,
Edad y Sexo. Los campos Edad y Sexo estn separados por tabulador, como se puede ver no tiene el
aspecto de una tabla ordenada.
[sofia@tux sofia]$ cat datpers
Carlos Miranda 21
M
Samuel Reseguin 28
M
Cecilia Bracamonte
25
Paola Vaca
32
F
Jorge Salvatierra
35

F
M

Para que tenga un aspecto de tabla vamos a usar espacios en lugar de tabuladores empleando la orden
expand
[sofia@tux sofia]$ expand -t 22 datpers
Carlos Miranda
21
Samuel Reseguin
28
Cecilia Bracamonte
25
Paola Vaca
32
Jorge Salvatierra
35

76

M
M
F
F
M

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Convirtiendo espacios en tabuladores

5.9. Convirtiendo espacios en tabuladores

La orden unexpand toma dos o mas espacios consecutivos y los convierte a tabuladores y posiblemente
seguidos de tantos espacios como sea necesario.
En la siguiente tabla se muestran sus opciones comunes
-a

Convierte todos los espacios consecutivos, no slo los inciales.

-t N

Reemplaza N espacios consecutivos por tabulador, en lugar de tomar el valor predeterminado


que es de 8 espacios. Esta opcin implica -a.

Veamos un ejemplo:
[sofia@tux sofia]$ cat tabla-datpers
Carlos Miranda
21
Samuel Reseguin
28
Cecilia Bracamonte
25
Paola Vaca
32
Jorge Salvatierra
35

M
M
F
F
M

[sofia@tux sofia]$ unexpand -a tabla-datpers


Carlos Miranda
21
M
Samuel Reseguin
28
M
Cecilia Bracamonte
25
F
Paola Vaca
32
F
Jorge Salvatierra
35
M

Aparentemente no ha ocurrido nada, pero se han reemplazado todos los 8 espacios consecutivos por
tabulador seguidos de tantos espacios sean necesarios para que no se pierda el formato de tabla.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

77

Borrando y remplazando caracteres

5.10. Borrando y remplazando caracteres

tr es la orden que se puede usar para borrar o remplazar caracteres especficos en un documento.
Syntaxis: tr [OPCIONES] CONJ1 [CONJ2]
Cuando se van a remplazar caracteres se deben indicar ambos CONJ1 y CONJ2. Los caracteres en CONJ1
van a ser reemplazados por los caracteres en CONJ2
Podemos utilizar las siguientes opciones
-d

Borra los caracteres indicados en CONJ1

-s

Reemplaza una secuencia de caracteres repetidos indicados en CONJ1 por uno solo caracter de este.

La siguiente tabla muestra algunas posibles formas de indicar las cadenas de caracteres para los conjuntos de caracteres CONJ1 y CONJ2.
\NNN

Caracter con valor octal NNN (1 a 3 dgitos octales)

CAR1-CAR2 Todos los caracteres desde CAR1 a CAR2 en orden ascendente.


\\

Barra invertida

\a

Seal audible (beep). control-G

\b

Retroceso (backspace). Control-H

\f

Alimentacin de pgina (form feed). Control-L

\n

Nueva lnea. Control-J

\r

Retorno de carro. Control-M

\t

Tabulador. Control-I

C*N

Indica N veces el caracter C. Si se omite N se interpreta tantas veces sea necesario repetir C para igualar a CONJ2.

Precaucin
CONJ1 y CONJ2 se interpretan como una lista de caracteres y no como cadenas.
Veamos un ejemplo de como reemplazar todas las maysculas en un archivo dado.

78

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Borrando y remplazando caracteres

[sofia@tux sofia]$ cat personas


Carlos Miranda 2136746
Samuel Reseguin 2381285
Cecilia Chalco 2759423
Fabiola Tamayo 2764846
Paola Vaca
3527593
Mariel Rau
3149126
Milton Cortez
2452222
Federico Tamayo 2317869
Angel Tamayo
2120020
[sofia@tux sofia]$ tr 'A-Z' 'a-z' < personas
carlos miranda 2136746
samuel reseguin 2381285
cecilia chalco 2759423
fabiola tamayo 2764846
paola vaca
3527593
mariel rau
3149126
milton cortez
2452222
federico tamayo 2317869
angel tamayo
2120020

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

79

Uniendo archivos por campo

5.11. Uniendo archivos por campo

La orden join une dos archivos o mejor dicho empareja por un campo comn. De modo predeterminado
la lnea resultante empieza por el campo comn delimitado por espacio.
Sinopsis: join [OPCION]

ARCH1 ARCH2

Algunas opciones tiles son:


-a N

Muestra las lneas no emparejadas en el archivo N. Si N es 1 se trata de ARCH1, si es 2


se trata de ARCH2.

-e VACIO

Reemplaza los campos erroneos con el texto VACIO

-i

Ignora diferencia entre maysculas y minsculas cuando compara campos

-j CAMPO

Indica cual es el campo en comn

-1 CAMPO

Indica cual es el campo en el primer archivo (ARCH1)

-2 CAMPO

Indica cual es el campo en el segundo archivo (ARCH2)

Importante
Ambos archivos deben estar ordenados por el campo que tienen en comn.
Ejemplo:
[sofia@tux sofia]$ cat datosA
1 mes1 dato1
2 mes2 dato2
3 mes3 dato3
[sofia@tux sofia]$ cat datosB
val1 lpz 1
val2 cbb 2
val3 scz 3
[sofia@tux sofia]$ join -1 1 -2 3 datosA datosB
1 mes1 dato1 val1 lpz
2 mes2 dato2 val2 cbb
3 mes3 dato3 val3 scz

80

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Uniendo archivos por campo

Como podemos ver el campo en cmun es el primero en el archivo datosA y el tercer campo en el archivo datosB. De modo predeterminado join espera que el campo en comn sea el primero por lo que
la siguiente orden no da ningn resultado.
[sofia@tux sofia]$ join datosA datosB
[sofia@tux sofia]$

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

81

Dividiendo archivos en partes

5.12. Dividiendo archivos en partes

split toma un archivo (usualmente grande) y lo divide en varias partes consecutivas.


Sinopsis: split [OPCION]

[ARCHIVO [PREFIJO]]

Opciones de uso comn para esta orden:


-l LIN

Escribe LIN lneas en el o los archivos de salida

-b BYTES

Escribe los primeros BYTES del archivo de entrada en cada archivo de salida. Se puede
aadir el prefijo "b" para mltiplos de 512. El prefijo "k" para mltiplos de 1024 y "m"
para 1048576.

-d

Al crear los archivos usa dgitos para los sufijos en lugar de letras minsculas

En el siguiente ejemplo, el archivo listfiles es dividido en varios archivos de 25 lneas cada uno,
cuyos nombres empiezan por listf.
[sofia@tux sofia]$ split -l25 listfiles listf
[sofia@tux sofia]$ ls -l listf*
-rw-rw-r-- 1 sofia sofia 568 Apr 23 13:28 listfaa
-rw-rw-r-- 1 sofia sofia 526 Apr 23 13:28 listfab
-rw-rw-r-- 1 sofia sofia 669 Apr 23 13:28 listfac
-rw-rw-r-- 1 sofia sofia 582 Apr 23 13:28 listfad
-rw-rw-r-- 1 sofia sofia 2345 Apr 23 13:06 listfiles

Alerta
Si no se especifica PREFIJO, entonces los archivos resultantes empieza por la letra "x",
xaa, xab, xac, xad, etc.

82

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Eliminando lneas repetidas

5.13. Eliminando lneas repetidas

Muchas veces se requiere tener un archivo en el cual no existan lneas repetidas consecutivas. La orden
uniq se puede usar para este cometido.
-c

Pone delante de cada lnea el nmero de ocurrencias.

-d

Solo muestra las lneas repetidas

-i

No distingue entre maysculas y minsculas

-u

Solo muestra las lneas no repetidas

Veamos el siguiente ejemplo:


[sofia@tux sofia]$ cat ejemuniq
aaa
aaa
aaa
bbb
bbb
ccc
ddd
[sofia@tux sofia]$ uniq ejemuniq
aaa
bbb
ccc
ddd

Nota
La orden uniq requiere que los datos de entrada se encuentren ordenados.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

83

Mostrando archivos en forma octal

5.14. Mostrando archivos en forma octal

La orden od muestra el contenido del archivo en formato octal, hexadecimal u otro. Cada linea est
precedida del desplazamiento (offset) en la entrada y a continuacin los grupos de datos del archivo.
De modo predeterminado od muestra el desplazamiento en octal y cada grupo de datos del archivo
son dos bytes que son mostrados como un nmero octal.
Opciones comunes:
-A RADIX

Especifica la base numrica en la cual va ser mostrado el desplazamiento. RADIX puede


tener los siguientes valores.
d
o
x
n

decimal
octal
hexadecimal
no mostrar desplazamiento

-j BYTES

Salta una cantidad de BYTES y a partir de ah muestra el archivo

-N BYTES

Nmero mximo de bytes a mostrar

-t TIPO

Selecciona el formato en el cual mostar los datos del archivo.


a caracteres
c caracteres ASCII o secuencia de escape
d decimal con signo
r punto flotante
o octal
u decimal sin signo
x hexadeciaal

Veamos un ejemplo:
[sofia@tux sofia]$ od -Ad
0000000
C
a
r
l
0000016
1 \t
M \n
0000032
u
i
n \t
0000048
B
r
a
0000064 \n
P
a
o
0000080 \n
J
o
r
0000096
r
a \t
3
0000104

84

-tc datpers
o
s
M
S
a
m
u
2
8 \t
M
c
a
m
o
l
a
V
g
e
S
5 \t
M \n

i
e
\n
n
a
a

r
l
C
t
c
l

a
e
e
a
v

n
R
c
\t
\t
a

d
e
i
2
3
t

a
s
l
5
2
i

\t
e
i
\t
\t
e

2
g
a
F
F
r

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Mostrando archivos en forma octal

od es una orden muy til para ver archivos binarios sin correr el riesgo de que nuestra terminal empiece
a mostrar basura. Si usted empleara la orden cat para ver un archivo binario lo ms probable es que
la terminal se ensucie y los caracteres sean ilegibles. Puede reinicializar la terminal y hacerla legible
otra vez empleando la orden reset.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

85

Utilizando sed

5.15. Utilizando sed

Sed es un editor de flujos de texto (stream editor). Es utilizado para realizar transformaciones en flujos
de texto o en un archivo. sed es bastante verstil y poderoso lo que hace que sea un poco dificultoso
de usarlo a ciertos niveles.
Habitualmente sed se emplea para reemplazar palabras y frases completas, cosa que tr no puede realizar.
Para esta tarea se usa la orden s de sed que tiene esta sintaxis:
's/EXPREG/REMPLAZO/BANDERAS'

Esta orden busca un patrn que coincida con EXPREG y si lo encuentra es remplazado por REMPLAZO.
Las banderas que se usan habitualmente son:
g

Remplaza todas las ocurrencias del patrn, no slo la primera.

Si la sustitucin fue hecha imprimir la lnea cambiada

Ignora la coincidencia de maysculas y minsculas con el patrn.

Ejemplos:
[sofia@tux sofia]$ sed 's/hosts/HOSTS/' /etc/hosts.allow
# /etc/HOSTS.allow: list of hosts that are allowed to access the system.
#
See the manual pages HOSTS_access(5), hosts_options(5)
#
and /usr/doc/netbase/portmapper.txt.gz

En este ejemplo buscamos el patrn hosts y se remplaz slo la primera ocurrencia por HOSTS
[sofia@tux sofia]$ sed 's/hosts/HOSTS/g' /etc/hosts.allow
# /etc/HOSTS.allow: list of HOSTS that are allowed to access the system.
#
See the manual pages HOSTS_access(5), HOSTS_options(5)
#
and /usr/doc/netbase/portmapper.txt.gz

Similar al anterior, pero con la bandera g se remplazan todas las ocurrencias.


[sofia@tux sofia]$ sed -n 's/hosts/HOSTS/pg' /etc/hosts.allow
# /etc/HOSTS.allow: list of HOSTS that are allowed to access the system.
#
See the manual pages HOSTS_access(5), HOSTS_options(5)

La opcin -n suprime cualquier salida a pantalla pero la bandera p hace que se muestren slo las lneas
que fueron remplazadas.

86

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Buscando patrones en archivos de


texto

5.16. Buscando patrones en archivos de texto

Probablemente grep es una de las rdenes ms utilizadas del sistema. Es sumamente til cuando se
necesita buscar determinados patrones (palabras o frases) en un archivo de texto o un flujo de entrada,
o en archivos contenidos en una estructura de directorio.
Sinopsis: grep [opciones]

patrn [archivo...]

-c

Muestra slamente el nmero lneas que contienen el patrn buscado.

-e PATRON

Util para usar con patrones que empiezan con el caracter - (guin).

-H

Muestra el nombre del archivo en cada coincidencia, cuando se busca en varios archivos.

-h

Suprime mostrar el nombre del archivo. (contrario a la opcin anterior)

-i

Ignora entre maysculas y minsculas cuando busca el patrn.

-L

Slo muestra el nombre de los archivos que no contienen ninguna coincidencia del patrn.

-l

Slo muestra el nombre de los archivos que tienen alguna coincidencia del patrn.

-n

Muestra el nmero de lnea de cada coincidencia.

-R, -r

Busca en todos los archivos bajo un directorio, recursivamente.

-v

Invierte el sentido de la bsqueda, muestra las lneas que no coinciden con el patrn.

-w

Slo muestra las lneas que contienen el patrn como una palabra y no como parte de
otra.

Veamos que resultado se obtiene usando algunas de estas opciones:


[sofia@tux sofia]$ grep user /etc/inittab
#
1 - Single user mode
#
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#
3 - Full multiuser mode

Muestra todas las lneas que contienen el patrn user.


[sofia@tux sofia]$ grep -w user /etc/inittab
#
1 - Single user mode

Muestra las lneas en las que el patrn user aparece como una palabra.
[sofia@tux sofia]$ grep -v localhost /etc/hosts
# Do not remove the following line, or various programs

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

87

Buscando patrones en archivos de


texto
# that require network functionality will fail.

Muestra todas las lneas donde no aparece el patrn locahost

[sofia@tux sofia]$ grep -irn "OsS" /usr/share/doc/alsa-base/


/usr/share/doc/alsa-base/README:32:* OSS/Free kernel emulation
/usr/share/doc/alsa-base/FAQ:22:
- all modern OSS drivers in mainstream kernel (cmpci, es1370, es1371
/usr/share/doc/alsa-base/FAQ:37:Q: The driver is loaded, but OSS programs say: Can't open /dev/mixer.
/usr/share/doc/alsa-base/FAQ:39:A: The OSS compatible mixer emulation comes as an add-on module which i
/usr/share/doc/alsa-base/FAQ:43:
the 'snd-mixer-oss' module manually.
/usr/share/doc/alsa-base/FAQ:45:Q: The driver is loaded, but OSS programs say: Can't open /dev/dsp.
/usr/share/doc/alsa-base/FAQ:47:A: The OSS compatible PCM (digital audio) emulation comes as an add-on
/usr/share/doc/alsa-base/FAQ:51:
the 'snd-pcm-oss' module manually.
/usr/share/doc/alsa-base/WARNING:4:You would use some ALSA or OSS mixer to set the appropriate volume.
/usr/share/doc/alsa-base/driver/Bt87x.txt:22:video data, so it's quite possible that audio recording ma

Busca el patrn oss en todos los archivos bajo el directorio /usr/share/doc/alsa-base/ sin distinguir
maysculas de minsculas y en el resultado incluye el nmero de lnea donde hay una coincidencia
con el patrn.

88

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Expresiones regulares y grep

5.17. Expresiones regulares y grep

Una expresin regular es un patrn especial que describe un conjunto de cadenas. Se usa cuando uno
quiere buscar una palabra o frase (una cadena en general) que se conoce parcialmente. El uso de estas
expresiones en grep muchas veces facilita la bsqueda de patrones que de otro modo sera muy complicado (o hasta inutil) de realizar.
Una expresin regular se construye utilizando los siguientes caracteres especiales:

Tabla 5.1. Caracteres especiales de expresin regular


Caracter Significado

Ejemplo Coincidencia

[]

Coincide con cualquiera de los caracteres entre corchetes

[Ll]inux Linux, linux

Coincide con un caracter cualquiera y obliga la presencia del caracter

ma.a

masa, maa, mapa

El item anterior es opcional y coincide a lo sumo una


vez

mil?

mi, mil

El item anterior coincide cero o ms veces

mil*

mi, mil, mill, milll

El item anterior coincide una o ms veces

mil+

mil, mill, milll

{n}

El item anterior coincide exactamente n veces

mil{2}

mill

{n,}

El item anterior coincide n o ms veces

mil{2,}

mill, milll

{n,m}

El item anterior coincide de n a m veces, ni ms ni menos.

mil{1,2} mil, mill

Para usar expresiones regulares debemos usar la opcin -E o usar la orden egrep. Pero observar que
los caracteres especiales [], ., *, ^, $ funcionan tambin con grep.
Veamos como podemos usar expresiones regulares mostrando algunos ejemplos que utilizan el siguiente
archivo:
[sofia@tux sofia]$ cat expreg-grep
01 En el mes de la Primavera
02 La primera estacin del ao es primavera ?
03 esta estacin produce mucha alegra
las 04 plantas producen abundantes flores
05 El paseo del Prado se llena de flores
06 primera

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

89

Expresiones regulares y grep

07 Impropio inapropiiiiado
08 apretar

Para buscar todas las cadenas donde aparece una palabra con la letra P mayscula o minscula, seguida
de la letra r y a continuacin cualquier letra que no sea o, tenemos que usar la siguiente orden:
[sofia@tux sofia]$ grep [pP]r[^o] expreg-grep
01 En el mes de la Primavera
02 La primera estacin del ao es primavera ?
05 El paseo del Prado se llena de flores
06 primera
08 apretar

En este patrn el uso de ^ dentro de corchetes significa excluir el siguiente caracter.


Para buscar todas las cadenas que empiezan con la letra cero y terminan con la palabra flores, tenemos
que usar el siguiente patrn:
[sofia@tux sofia]$ grep '0.*flores' expreg-grep
las 04 plantas producen abundantes flores
05 El paseo del Prado se llena de flores

Vamos a buscar ahora todas las cadenas que empiezan exactamente con dos nmeros y contienen una
palabra que termina en do:
[sofia@tux sofia]$ egrep '^[0-9]{2}.*do\>' expreg-grep
05 El paseo del Prado se llena de flores
07 Impropio inapropiiiiado

Los smbolos \< y \> coinciden con una cadena vaca al principio y final de una palabra respectivamente. Tambin estn los caracteres especiales ^ (acento circunflejo) y $ (pesos). El patrn '^mil'
coincidira con las cadenas que empiezan por la palabra mil. Por el contrario, el patrn era$ coincidira
con las cadenas que terminan con las letras era.

90

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

6. Uso del Editor vi


Linux dispone de muchos editores de texto, pero el nico editor que est garantizado de encontrar en
cualquier sistema Linux es Vi. Este editor no es precisamente el ms fcil de utilizar, por que tiene
una forma de operacin bastante particular no vista en otros editores de texto. An as es un conocimiento necesario saber utilizar el editor Vi para cualquier usuario de Linux, ya que siempre exisitir
la posibilidad de que este sea el nico editor que tenga a mano.

6.1. Objetivos

Ahora usted va aprender a utilizar uno de los editores ms difundidos en Linux, el editor Vi.
Al concluir esta seccin el alumno ser capz de:
Comprender los tres modos de trabajo en vi
Utilizar varias rdenes de edicin de textos
Navegar en el editor vi
Abrir, editar y grabar documentos en vi
Buscar/remplazar textos y usar expresiones regulares en vi
Ejecutar rdenes externas
Trabajar con ventanas en vi

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

91

El editor vi

6.2. El editor vi

El editor estndar de los sistemas UNIX es Vi. La versin Linux de este editor se llama Vi Mejorado
del ingls Vi Improveed, que se conoce como Vim. Usualmente en los sistemas Linux la orden vi es
un enlace que invoca a vim.
Vi tiene una caracterstica especial de operacin que confunde a los principiantes en este editor, que
son los denominados tres modos de operacin:

92

Modo orden

Es el modo predeterminado cuando iniciamos Vi. Cuando presionamos


una tecla en este modo se interpreta como una rden. Generalmente, las
rdenes usadas en este modo corresponden a uno o dos caracteres de longitud y se diferencia maysculas de minsculas.

Modo insertar

En este modo Vi se parece a cualquier editor comn y es donde se realizan


las operaciones de insertar o editar texto al cual se llega desde el modo
orden usando alguna letra especfica. Para salir del modo insertar y volver
al modo orden, se presiona la tecla ESC

Modo ltima lnea

Se denomina as, porque en este modo el cursor se va a la ltima lnea y


espera a que usemos alguna orden particular. Para ir a este modo se presiona la tecla : (dos puntos) en el modo orden, luego se escribe la orden deseada y se presiona ENTER para que sea ejecutada.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Insertando texto

6.3. Insertando texto

Para ingresar al editor Vi basta con escribir la orden vi. Recuerde que de modo predeterminado siempre
nos encontramos en modo orden y para ir al modo insertar podemos usar alguna de las siguientes rdenes:

Tabla 6.1. Ordenes de insertar en vi


i

Deja el cursor en su posicin y el texto tecleado es insertado inmediatamente a la izquierda del


cursor.

Mueve el cursor al principio de la lnea y comienza a insertar el texto.

Mueve el cursor un caracter a la derecha y comienza a insertar el texto.

Mueve el cursor al final de la lnea y comienza a insertar texto.

(minscula) Abre una nueva lnea debajo de la lnea actual, y pone el cursor en esa lnea para comenzar a insertar texto.

(mayscula) Abre una nueva lnea encima de la lnea actual, y pone el cursor en esa lnea para comenzar a insertar texto.

Cuando usamos alguna de estas rdenes para ir al modo insertar, Vi muestra en la lnea de mensajes
(ltima lnea de la pantalla) el mensaje: -- INSERTAR --.
Para salir del modo insertar y regresar al modo orden basta con presionar una vez la tecla ESC.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

93

Insertando texto

Figura 6.1. Ingreso a vi

94

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Borrando texto

6.4. Borrando texto

En Vi podemos borrar texto afectando slo un caracter, varios caracteres, palabras o lneas enteras.
Las rdenes de borrar texto se invocan desde el modo orden y corresponden a las siguientes letras:

Tabla 6.2. Ordenes para borrar texto en vi


x

Borra un caracter en la posicin del cursor. Igual que la tecla Suprimir (delete).

Borra un caracter a la izquierda del cursos. Igual que la tecla Retrocese (backspace).

dw

Borra desde la posicin del cursor hasta el final de la palabra.

dd

Borra toda la lnea actual sin importar la posicin del cursor.

Borra desde la posicin del cursor hasta el final de la lnea.

d^

Borra desde la posicin del cursor hasta el inicio de la lnea.

Si por accidente borr o hizo un cambio que no quera, puede deshacer la ltima accin usando la orden
u deshacer (undo). Puede deshacer hasta 30 cambios.

Nota
En vi, el texto borrado es puesto en un espacio temporal en memoria (buffer) que luego
se puede pegar en otro lugar del documento de texto.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

95

Cambiando o reemplazando texto

6.5. Cambiando o reemplazando texto

Para muchos acostumbrados a otros tipos de editores las rdenes para cambiar y reemplazar texto parecen redundantes, pero cuando se aprenden a usar son muy tiles para cambiar una letra, una palabra
o toda una lnea.

Tabla 6.3. Ordenes para cambiar y reemplazar texto en vi

96

Reemplaza un caracter en la posicin actual del cursor.

Reemplaza texto hasta que se presione la tecla ESC. En la lnea de mensajes vi muestra
REEMPLAZAR --.

cw

Cambia texto desde la posicin del cursor hasta el final de la palabra actual.

c$

Cambia texto desde la posicin del cursor hasta el final de la lnea actual.

c^

Cambia texto desde la posicin del cursor hasta el principio de la lnea actual.

Cambia de mayscula a minscula y viceversa la letra en la posicin actual del cursor.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

--

Cortar, copiar y pegar texto

6.6. Cortar, copiar y pegar texto

Todas las operaciones de cortar y copiar texto usan una memoria intermedia (buffer) donde el texto
es almacenado temporalmente. Las operaciones sucesivas de cortar y copiar reemplazan el contenido
del buffer.
Las siguientes letras se usan para copiar y pegar texto en Vi:

Tabla 6.4. Ordenes para copiar y pegar texto en vi


yy

Copia una lnea de texto al buffer.

yw

Copia desde el cursor hasta el final de la palabra al buffer.

(minscula) Pega el contenido del buffer a la derecha del cursor o por debajo del cursor si es una
lnea.

(mayscula) Pega el contenido del buffer a la izquierda del cursor o por encima del cursor si es
una lnea.

Recuerde que para cortar y pegar texto (mover porciones de texto) debe usar primero alguna orden de
borrar texto y luego pegarlo. Las rdenes de borrar texto se vieron en Seccin 6.4, Borrando texto.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

97

Navegando en vi

6.7. Navegando en vi

Cuando use Vi es muy probable que las teclas Inicio, Fin, RePg, AvPg y las feclas del cursor funcionen adecuadamente, de no ser as puede emplear algunas de las siguientes letras.

Tabla 6.5. Ordenes de movimiento del cursor en vi

98

Mueve el cursor un caracter a la izquierda.

Mueve el cursor una lnea abajo.

Mueve el cursor una lnea arriba.

Mueve el cursor un caracter a la derecha.

Mueve el cursor al inicio de la lnea.

Mueve el cursor al final de la lnea.

Mueve el cursor al comienzo de la siguiente palabra.

Mueve el cursor al comienzo de la anterior palabra.

Ctrl-F

Avanza el cursor una pantalla hacia adelante.

Ctrl-B

Retrocede el cursor una pantalla hacia atrs.

Mueve el cursor a la ltima lnea.

1G

Mueve el cursor a la primera lnea.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Multiplicador de rdenes

6.8. Multiplicador de rdenes

Muchas de las operaciones que se realizan en Vi necesitan realizarse un nmero determinado de veces,
como por ejemplo mover el cursor cinco lneas abajo. La forma ms intuitiva de hacer esto es precionar
5 veces la tecla j.
Vi proporciona la posibilidad de que cualquier accin puede ser realizada un nmero n de veces, indicando este nmero como prefijo. Dicho de otro modo una orden en vi podemos verla como: [n]orden.
Algunos ejemplos son:
5yy
12x
25l

Copia 5 lneas al buffer.


Borra 12 caracteres utilizando la orden x.
Mueve el cursor 25 caracteres a la derecha, usando la orden l

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

99

Usando archivos

6.9. Usando archivos

Para abrir un archivo y editarlo en Vi, todo lo que necesita hacer es pasar el nombre del archivo como
argumento. Por ejemplo si tiene un archivo llamado prueba en el directorio actual debe escribir:
[sofia@tux sofia]$ vi prueba

O puede usar una ruta absoluta:


[sofia@tux sofia]$ vi /var/tmp/prueba

Si el archivo prueba no exite, Vi entender que se trata de un archivo nuevo. Puede tambin abrir un
archivo desde el mismo editor usando la orden :e, por ejemplo :e /var/tmp/prueba.
Suponga usted que necesita insertar el contenido de un archivo llamado anexo en el archivo que est
editando. Para esto ubique el cursor en la posicin que desea insertar y luego escriba la orden :r anexo.
Cuando usted haya terminado de editar el archivo y quiera guardar sus cambios simplemente escriba
:w en el modo orden. Aqu estamos usando el modo denominado ltima lnea al que se llega con la
tecla : (dos puntos) y en este modo ejecutamos la orden escribir (w del ingls write).
Para abandonar el editor debe usar la orden :q. Esta orden no le dejar salir de Vi si realiz cambios
que no fueron guardados, para forzar la salida de Vi perdiendo estos cambios tiene que usar el caracter
! que obliga a ejecutar la orden, del siguiente modo :q!.
Si quiere guardar sus cambios y salir inmediatamente de Vi tiene que usar la orden :wq. Alternativamente puede utilizar las rdenes :x o ZZ (maysculas) que sirven para salir de Vi guardando los ltimos
cambios si es necesario.

100

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Buscando cadenas

6.10. Buscando cadenas

Muchas veces necesitar buscar una cadena en el texto que est editando. Vi proporciona las siguientes
letras para las tareas de bsqueda de cadenas, que se deben usar en modo orden:

Tabla 6.6. Ordenes para buscar cadenas en vi


/cadena

Busca cadena desde la posicin actual del cursor hacia adelante en el documento.

?cadena

Busca cadena desde la posicin actual del cursor hacia atrs en el documento.

Busca la siguiente ocurrencia (en ambos, hacia adelante o hacia atrs).

Busca la anterior ocurrencia (en ambos, hacia adelante o hacia atrs).

La bsqueda de cadenas en Vi siempre es sensitiva a maysculas y minsculas, puede cambiar este


comportamiento anteponiendo la opcin \c antes de la cadena que desea buscar.
Veamos algunos ejemplos:
/ext3 Busca la cadena ext3 hacia adelante.
?ext3 Busca la cadena ext3 hacia atrs.
/\/proc Busca la cadena /proc hacia adelante.
/\cDEfault Busca la cadena DEfault ignorando

maysculas y minsculas.

Tambin puede usar los caracteres especiales para bsqueda de cadenas de la orden grep:
/^proc Busca las lneas que empiezan con la palabra proc.
/host$ Busca las lneas que terminan en la palabra host.
/Volume.[12] Esta bsqueda coindice con patrones como: Volume01, Volume02, Volume11.
/\<wait\> Busca la palabra wait.

Sugerencia
Las operaciones de bsqueda de cadenas de vi, pueden tambien utilizarse en las herramientas more y less.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

101

Buscando y reemplazando cadenas

6.11. Buscando y reemplazando cadenas

Para buscar una cadena y reemplazarla por otra, Vi comparte una sintaxis similar a la encontrada en
sed con ligeras diferencias.
Para reemplazar una cadena se usa la orden :s, cuya sintaxis es:
[x,y]s/actual/nueva/[opciones]

Donde:

Tabla 6.7. Orden para buscar y reemplazar cadenas en vi


x, y

Especifica la primera y ltima lnea respectivamente, del rango donde se quiere realizar la
operacin de remplazo. Si se omiten slo se toma la lnea actual del cursor.

actual

Es la cadena que se busca para ser remplazada

nueva

Es la nueva cadena de reemplazo

Esta opcin pide confirmacin antes de realizar el reemplazo

Esta opcin reemplaza todas las ocurrencias

Por ejemplo, la siguiente secuencia reemplaza slamente la primera ocurrencia de la cadena ext2 en
la lnea actual con la cadena ext3.
:s/ext2/ext3

Si quisera reemplazar todas las ocurrencias en la lnea actual use la opcin adeacuada, as:
:s/ext2/ext3/g

Para reemplazar todas las ocurrencias de ext2 con la cadena ext3 en todo el documento, haga lo siguiente:
:1,$s/ext2/ext3/g

Aqu estamos indicando el rango, 1 (primera lnea) a $ (ltima lnea). Tambin puede usar % para indicar
todo el archivo: :%s/ext2/ext3/g.

102

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Opciones en vim

6.12. Opciones en vim

Vim ofrece un nmero de variables internas e interruptores que se usan para obtener efectos especiales.
Estas opciones vienen en tres formas:
lgica Interruptor que se activa o desactiva.
numrica Tiene un valor numrico.
cadena Tiene un valor de cadena.

Para manipular las opciones se usa la orden :set, por ejemplo:


:set
:set
:set
:set
:set

Muestra las opciones que tienen un valor diferente al predeterminado.


all Muestra todas las opciones de Vim.
tabstop? Muestra el valor de la opcin. No tiene efecto si es un interruptor.
number Interrruptor que muestra una columna con los nmeros de lnea. (solo visual)
nonumber Interrruptor que oculta la columna con los nmeros de lnea. (solo visual)

Una forma de activar una opcin al momento de invocar al editor es la siguiente:


vi +"set number" prueba

Sugerencia
Si quiere que todos los usuarios compartan las mismas opciones, edite el archivo
/etc/vimrc.
Para personalizar las opciones para un usuario particular basta crear el archivo .vimrc
en el directorio de trabajo e indicar all las opciones deseadas.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

103

Tareas avanzadas en vi

6.13. Tareas avanzadas en vi

Estas son algunas tareas que podemos considerar avanzadas, y que ms de una vez le podrn ser de
utilidad.
Frecuentemente usted querr ejecutar una orden externa (orden del sistema) mientras est en vi, para
hacerlo sin salir del editor puede usar la orden :!, del siguiente modo:
:! ls -l

Ejecuta la orden del sistema ls -l.

Cuando vi haya terminado de ejecutar la orden le pedir que presione la tecla ENTER para regresar
a su sesin de vi.
Una caracterstica til de Vim que no est presente en vi es el manejo de ventanas. Usted las puede
usar para editar dos archivos diferentes o para ver diferentes partes de un mismo archivo en una pantalla.
:split Divide horizontalmente la ventana actual en dos ventanas, mostrando el mismo archivo en
ambas.
:vsplit Divide verticalmente la ventana actual en dos ventanas, mostrando el mismo archivo en ambas.
Para moverse entre las ventanas tiene que presionar las teclas Ctrl+W dos veces, que va saltando de
ventana en ventana. Puede usar tambin la combinacin Ctrl+W seguida de una de las feclas del cursor
para ir a la ventana que est en esa direccin.
Si la orden de dividir la venta es seguida por el nombre de un archivo, ste ser mostrado en la nueva
ventana. Por ejemplo:
:split prueba
Para cerrar una vetana, muvase hasta la ventana que quiere cerrar y luego escriba la orden :close.

104

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Tareas avanzadas en vi

Figura 6.2. Ventanas en vi

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

105

106

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

7. Gestin de archivos en Linux


Linux como muchos otros sistemas operativos almacena informacin en archivos y directorios. El
control de acceso a los archivos y directorios es ejercido en todo momento que se usa el sistema, entender su funcionamiento es un conocimiento vital para aprovechar y usar el sistema apropiadamente,
pensando siempre en mantener un adecuado nivel de seguridad.

7.1. Objetivos

En este captulo vamos a abordar diferentes temas y una vez completados usted ser capz de:
Entender como funciona el control de acceso a archivos
Controlar el acceso a los archivos usando permisos
Cambiar los permisos de archivos
Establecer permisos predeterminados
Entender como funciona el esquema de propiedad de archivos en Linux
Cambiar la propiedad de archivos
Usar enlaces rgidos y simblicos

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

107

Permisos en archivos y directorios

7.2. Permisos en archivos y directorios

Los permisos determinan como pueden acceder los usuarios a los archivos y directorios presentes en
el sistema.
El sistema cuenta con tres tipos de permisos regulares que son: lectura, escritura y ejecucin. Estos
permisos pueden ser fijados para tres categoras de usuarios:
el propietario (usuario) del archivo o directorio
el grupo al que pertenece el archivo o directorio
otros usuarios, que no son ni el propietario ni un miembro del grupo dueo del archivo o directorio

108

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Efectos de los permisos

7.3. Efectos de los permisos

Cuando se utilizan permisos estos tienen diferentes efectos o significados cuando son aplicados en
archivos y directorios.
El permiso de lectura (read) permite a un usuario leer el contenido del archivo o en el caso de un directorio, listar el contenido del mismo (usando ls).
El permiso de escritura (write) permite a un usuario escribir y modificar el archivo. Para directorios,
el permiso de escritura permite crear nuevos archivos en el directorio o borrar archivos ya existentes
en el directorio.
Por ltimo, el permiso de ejecucin (execute) permite a un usuario ejecutar el archivo si es un programa
o una secuencia de instrucciones (script). En el caso de directorios, el permiso de ejecucin permite
al usuario ingresar al directorio (usando cd).

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

109

Interpretando propiedad y permisos

7.4. Interpretando propiedad y permisos

Cuando usamos la orden ls con la opcion -l obtenemos un listado con informacin ampliada sobre
los archivos y directorios, que comprende:
Tipo de archivo
Informacin sobre los permisos
Informacin sobre el nmero de enlaces (veremos ms adelante)
El usuario al que pertenece el archivo
El grupo al que pertenece el archivo
El tamao del archivo
La fecha y hora de creacin
El nombre del archivo
Los permisos se indican en una secuencia de tres letras consecutivas: "rwx", donde "r" simboliza lectura (read), "w" simboliza escritura (write) y "x" ejecucin (execute). La presencia de una de las letras
significa que se tiene el permiso y la ausencia lo contrario, que es indicado por un guin "-" en lugar
de la letra. Veamos un ejemplo:
[sofia@tux sofia]$ ls -l lista
-rw-r--r-- 1 sofia
sofia

400 may 20 10:00

lista

Las columnas mostradas en el resultado de esta orden presentan la siguiente informacin:


-rw-r--r--

El primer caracter indica el tipo de archivo y el resto los permisos

Nmero de enlaces rgidos

sofia

Usuario propietario del archivo (usuario dueo)

sofia

Grupo propietario del archivo (grupo dueo)

400

Tamao del archivo

may 20 10:00

Fecha y hora de la ltima modificacin

lista

El nombre del archivo

En este ejemplo estamos particularmente interesados en la primera columna que contiene los permisos
que se interpretan del siguiente modo:
Permisos Ambito
rw-

110

Significado

Permisos para el usuario El usuario tiene permiso de lectura y escritura sobre el archivo

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Interpretando propiedad y permisos

Permisos Ambito

Significado

r--

Permisos para el grupo

El grupo tiene permiso de lectura

r--

Permisos para otros

Otros usuarios slo tienen permiso de lectura

En este ejemplo no corresponde que el archivo lista tenga algun permiso de ejecucin (x) ya que no
se trata de un programa.
Los permisos se representan para el sistema como un grupo de 3 bits, a los que les corresponden los
siguientes valores:
100 = 4 : Lectura (read)
010 = 2 : Escritura (write)
001 = 1 : Execute (execute)
Finalmente, en la siguiente tabla mostramos los tipos de archivos que se pueden encontrar en un sistema
Linux:

Tabla 7.1. Tipos de archivo en Linux


-

Archivo regular

Directorio

Enlace simblico

Archivo especial de bloques

Archivo especial de caracteres

Archivo especial primero en entrar, primero en salir (FIFO)

Archivo especial socket para enviar datos entre procesos.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

111

Dependencias entre permisos

7.5. Dependencias entre permisos

Es importante observar que los permisos de un archivo tambin dependen de los permisos del directorio
en el que residen, en el sentido de que los permisos del directorio son efectivos antes que los permisos
de los archivos contenidos en se directorio.
Por ejemplo, suponga que tiene la siguiente estructura de archivos y directorios:
/home
|
`-- informes
|-- ene-mar-04.pdf
|-- abr-jun-04.pdf
`-- jul-sep-04.pdf

Supongamos ahora que el archivo abr-jun-04.pdf tiene los permisos -rw-rw-rw-, otros usuarios no
podrn acceder a l, a menos que tambin tengan los permisos de lectura y ejecucin para el directorio
informes.
En base a esto, si un usuario quiere restringir el acceso a todos sus archivos, podra simplemente poner
los permisos de su directorio de trabajo (home) a -rwx------. De esta forma ningn usuario regular podr
acceder a su directorio ni a ninguno de sus archivos o subdirectorios. El usuario no necesita preocuparse
de los permisos individuales de cada uno de sus archivos o directorios.

112

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Manipulando permisos

7.6. Manipulando permisos

La orden chmod se usa para cambiar los permisos de un objeto (archivo o directorio). Unicamente el
propietario o dueo puede cambiar los permisos del objeto, con excepcin del usuario root que no
necesita ser dueo para cambiar cualquier permiso.
La sintaxis de la orden chmod es:
chmod

{u,g,o,a}{=,+,-}{r,w,x} objeto

Donde los smbolos tienen el siguiente significado:

Tabla 7.2. Smbolos para la orden chmod


u, g, o, a

Indican que se afecta los permisos del dueo, grupo, otros o todos (user, group, other,
all)

=, +, -

Indica que se est otorgando (+), quitando (-) o fijando (=) el permiso

r, w, x

Especifica el permiso de lectura (r), escritura (w) o ejecucin (x).

Por ejemplo si quiere dar a todos (usuario, grupo y otros) el permiso de lectura para el archivo lista
tendra que usar la siguiente orden:
chmod a+r lista
Alternativamente puede usar la siguiente orden:
chmod +r lista
Que es igual al anterior. Cuando no se especifica el mbito (usuario, grupo, otros) de modo predeterminado es todos (a).
Para otorgar todos los permisos al usuario sin tocar los permisos de grupo y otros tendra que hacer:
chmod u+rwx unarchivo
Para dar exactamente al grupo permiso de slo lectura y a otros ningn permiso tiene que usar la orden
as:
chmod g=r,o= unarchivo

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

113

Manipulando permisos

Esta forma de usar chmod se denomina notacin simblica porque se usan letras y smbolos para
modificar los permisos. Exite otra forma de usar chmod que se denomina notacin numrica u octal
en la que se usan nmeros.
Sintaxis: chmod XYZ

objeto

Donde X son los permisos para el usuario, Y para el grupo y Z para otros.
Cuando se usa notacin numrica no es posible afectar un slo mbito (usuario, grupo, otros) como
en la notacin simblica, siempre se tiene que indicar los permisos para todos (XYZ). Vea el siguiente
ejemplo:
chmod 6 lista
En esta orden el permiso 6 se interpreta como 006 que resulta en los permisos ------rw- (6 = 4 lectura
+ 2 escritura).
Puede tambien afectar los permisos de varios archivos utilizando comodines. La siguiente orden pone
los permisos rw-r----- para todos los archivos cuyo nombre termina en .txt:
chmod 640 ~/*.txt
Una opcin muy til es -R que permite afectar los permisos de varios objetos recursivamente. Es decir
que todos los archivos y directorios que estn bajo ~/mp3/ tendrn los permisos indicados.
chmod -R 640 ~/mp3/*

114

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Permisos predeterminados

7.7. Permisos predeterminados

Cada vez que usted crea un archivo o directorio el sistema le asigna un conjunto de permisos basado
en el valor conocido como umask. En los sistemas Linux el valor de umask es fijado para todos los
usuarios en alguno de los archivos globales /etc/bashrc o /etc/profile.
Los permisos predeterminados para archivos y directorios sin umask son:
Archivos: rw-rw-rw- (0666)
Directorios: rwxrwxrwx (0777)
Para asignar los permisos a un objeto, el sistema realiza la siguiente operacin:
valor predeterminado - valor umask = permiso ha asignar
Veamos un ejemplo de como funciona esto, primero averiguemos el valor de umask escribiendo:
[sofia@tux sofia]$ umask

Que nos mostrar algo similar a:


0022

Ahora procedamos a crear un archivo y un directorio en nuestro directorio de trabajo:


[sofia@tux sofia]$ touch miarchivo
[sofia@tux sofia]$ mkdir midirectorio

Veamos ahora los permisos que el sistema le ha asignado:


[sofia@tux sofia]$ ls -ld miarchivo midirectorio

Que nos mostrar un resultado similar a:


-rw-r--r-drwxr-xr-x

1 sofia sofia
0 2005-07-08 16:20 miarchivo
2 sofia sofia 4096 2005-07-08 16:20 midirectorio

Efectivamente podemos observar que los permisos resultantes corresponden a:


miarchivo: 0666 - 0022 = 0644 = rw-r--r-midirectorio: 0777 - 0022 = 0755 = rwxr-xr-x

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

115

Permisos predeterminados

Si usted quiere que sus archivos tengan de modo predeterminado los permisos rw-r----- (640) entonces
el valor de umask que debe usar tiene que considerar tambin los permisos para los directorios. La
manera ms fcil de hacer esto es concentrarse en los permisos de directorio, porque el sistema nunca
asigna el permiso de ejecucin a los archivos cuando los crea.
Dicho esto, los permisos deseados 640, quedaran como 750 (7=6+1, 5=4+1, esto es sumando el bit
de ejecucin), entonces calculamos el nuevo valor de umask as:
777 - 750 = 027
Podemos fijar el nuevo valor de umask escribiendo:
[sofia@tux sofia]$ umask 027

Para usar este valor en las sesiones futuras, basta agregar la orden anterior en su archivo ~/.bashrc

116

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Permisos especiales

7.8. Permisos especiales

Adems de los tres permisos regulares, los archivos en Linux poseen adiconalmente los siguientes tres
permisos especiales:
SUID Le permite al usuario ejecutar un programa tomando la identidad del dueo de ese programa
(permiso s para el usuario, valor numrico 4000).
SGID Le permite al usuario ejecutar un programa tomando la identidad del grupo al que pertenece
ese programa (permiso s para el grupo, valor numrico 2000).
Bit pegajoso Sticky bit. Usado en un directorio comn para varios usuarios, controla que slo el
dueo y no otro usuario pueda borrar sus archivos (permiso t para otros, valor numrico 1000).
Estos permisos se deben usar slo cuando son necesarios y con precacucin porque implican cierto
riesgo de seguridad.
Estos permisos especiales se usan en algunas partes del sistema, como en el archivo del programa
passwd:
[sofia@tux sofia]$ ls -l /usr/bin/passwd

Que mostrar un resultado similar a:


-r-s--x--x

1 root root 19336 2005-02-21 13:57 /usr/bin/passwd

Como se observa, el archivo tiene el permiso SUID indicado por la presencia de la letra s en los permisos del usuario r-s. Como el dueo es root, cada vez que un usuario ejecuta la orden passwd este
se ejecuta con la identidad del usuario root, ignorando la verdadera identidad del usuario.
Como con los permisos regulares, para manipular estos permisos tambin usamos la orden chmod de
manera simblica o numrica.
Por ejemplo las siguientes rdenes son equivalentes, para asignar el permiso SUID algun programa:
chmod 4555 /algun/programa
chmod u=rxs,g=rx,o=rx /algun/programa
La siguiente orden asigna el permiso SGID:
chmod g+s /otro/programa

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

117

SGID y directorios comunes

7.9. SGID y directorios comunes

Un segundo uso del bit SGID es en directorios comunes, es decir un directorio que contiene archivos
compartidos por varios usuarios que comparten a su vez un grupo comn.
Por ejemplo supongamos que tiene un directorio llamado /datos con la siguiente informacin:
# ls -ld /datos
drwxrwxr-x 2 root marketing 4096 2005-07-08 19:15 /datos/

Y tiene a los siguientes usuarios con sus grupos primarios y secundarios


Usuario G. Primario G. Secundario
sofia

sofia

marketing

mirtha

marketing

users, contab

fabricio contab

users, marketing

Todos los usuarios tienen un grupo en comn: marketing, que es tambin el grupo al que pertenece
el directorio anterior /datos, que tambin tiene permiso de escritura para el grupo.
Si bajo estas condiciones los usuarios crean archivos en ese directorio, esto es lo que va ocurrir:
# ls -l /datos
total 0-rw-r--r-- 1 fabricio contab
0 2005-07-08 19:36 informe.fabricio
-rw-r--r-- 1 mirtha
marketing 0 2005-07-08 19:36 informe.mirtha
-rw-r--r-- 1 sofia
sofia
0 2005-07-08 19:36 informe.sofia

En estas condiciones ningn usuario puede modificar el archivo de los otros, porque cuando el sistema
crea los archivos siempre toma el grupo primario, esto es un problema para compartir estos archivos.
Aqu es donde el bit SGID es de gran utilidad, ya que al usarlo sobre un directorio hace que todos los
archivos o directorios que se crean dentro hereden el grupo dueo.
Para nuestro directorio de ejemplo pongamos el bit SGID:
# chmod g+s /datos
# ls -ld /datos
drwxrwsr-x 2 root marketing 4096 2005-07-08 19:38 /datos

Ahora, si dejamos que los usuarios vuelvan a crear otros archivos, tendremos lo siguiente:

118

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

SGID y directorios comunes

# ls -l /datos
total 0-rw-r--r-- 1 fabricio marketing 0 2005-07-08 19:49 informe2.fabricio
-rw-r--r-- 1 mirtha
marketing 0 2005-07-08 19:48 informe2.mirtha
-rw-r--r-- 1 sofia
marketing 0 2005-07-08 19:48 informe2.sofia
-rw-r--r-- 1 fabricio contab
0 2005-07-08 19:36 informe.fabricio
-rw-r--r-- 1 mirtha
marketing 0 2005-07-08 19:36 informe.mirtha
-rw-r--r-- 1 sofia
sofia
0 2005-07-08 19:36 informe.sofia

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

119

Bit pegajoso y directorios comunes

7.10. Bit pegajoso y directorios comunes

En los antiguos sistemas UNIX el bit pegajoso fue creado para mantener programas ejecutables en
memoria. En los sistemas modernos esto ya no es util y en particular el ncleo de Linux ignora este
bit en archivos.
Donde tiene uso es en directorios, cuando se lo aplica, los archivos en ese directorio slo pueden ser
borrados o renombrados por el usuario root o por su dueo. En el sistema se usa este bit en directorios,
como /tmp que tiene permiso de escritura para todo el mundo.
Volviendo a nuestro ejemplo anterior, cualquiera de los tres usuarios sofia, mirtha o fabricio puede
borrar archivos en el directorio /datos. Si queremos impedir esto y que slo el dueo pueda borrar
tenemos que poner el bit pegajoso as:
# chmod +t /datos
# ls -ld /datos
drwxrwsr-t 2 root marketing 4096 2005-07-08 19:38 /datos

120

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Atributos especiales

7.11. Atributos especiales

Los sistemas de archivos ext2 y ext3 poseen unos atributos especiales que estn reservados para uso
exclusivo del usuario root. Dos rdenes permiten trabajar con estos atributos especiales:
lsattr lista los atributos del archivo
chattr modifica los atributos del archivo
Hay ms de diez atributos especiales, pero uno de ellos es el que ms utilidad prctica tiene, que es
conocido como atributo inmutable (i). Cuando es aplicado a un objeto este no puede ser borrado, renombrado ni modificado de ninguna manera (contenido, fechas, permisos, etc).
Si usted tiene un archivo que no debe ser modificado de ninguna manera, puede ponerle el atributo
inmutable usando la siguiente orden:
chattr +i archivo
Si posteriormente necesita modificar el archivo, quite el atributo inmutable primero, as:
chattr -i archivo
Si quiere ver los atributos de un archivo, tiene que usar la orden lsattr as:
lsattr archivo

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

121

Propiedad de archivos y directorios

7.12. Propiedad de archivos y directorios

Al ser Linux un sistema multi-usuario, existe la nocin de propiedad de archivos y directorios, gracias
al cual un usuario en particular es dueo de archivos y directorios.
El esquema de propiedad se basa en usuario y grupo de usuarios, cada archivo o directorio pertenece
a un usuario y a un grupo en particular. Y cada usuario pertenece al menos a un grupo cuando es
creado. El administrador del sistema puede hacer que un usuario pertenezca a ms de un grupo.
El esquema de propiedad junto al mecanismo de permisos completan el modelo de control de acceso
a los archivos que es utilizado en Linux.

122

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Cambiando propiedad

7.13. Cambiando propiedad

Tradicionalmente (herencia de Unix) se proporcionan dos rdenes para cambiar la propiedad de archivos
y directorios. Una de ellas es chown que se usa para cambiar el usuario propietario y la otra orden es
chgrp utilizada para cambiar el grupo propietario. La versin Linux de chown tambin permite
cambiar el grupo propietario.
Sinopsis: chown [-R]
Sinopsis: chgrp [-R]

usuario[.grupo] objeto
grupo objeto

Cuando estas rdenes son utilizadas por el usuario root no se aplica ninguna restriccin, pero para un
usuario regular se aplican las siguientes restricciones:
No le est permitido cambiar el usuario propietario.
Slo puede cambiar el grupo propietario, si el usuario pertenece a ese grupo.
El cambio es permitido slo si es dueo del objeto (igual que con los permisos).
Por ejemplo, si la usuario sofia pertenece a los grupos sofia y marketing, entonces la siguiente orden
para cambiar grupo es vlida.
chgrp marketing reporte
Suponga ahora que usted en su papel de administrador ha restaurado archivos de la usuario mirtha.
Para asegurarse que todos los archivos y directorios en su directorio de trabajo tienen la informacin
de propiedad correcta usted usara la siguiente orden:
chown -R mirtha.users /home/mirtha
Aqu estamos usando la opcin
pertenece al grupo users.

-R

para hacer el cambio recursivamente y asumimos que la usuario

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

123

Enlaces a archivos

7.14. Enlaces a archivos

Los enlaces permiten alcanzar un objeto (archivo o directorio) utilizando un nombre y una ruta (relativa
o absoluta) posiblemente diferentes. Por ejemplo:
Enlace

Objeto

/bin/vi

/usr/bin/vim

gunzip

gzip

/etc/httpd/log/

/var/log/httpd/

/etc/rc3.d/S90crond ../init.d/crond
Hay dos tipos de enlaces: simblicos (soft links) y rgidos (hard links) cada uno con caractersticas
particulares.
Ambos tipos de enlaces son frecuentemente usados en el sistema, y podemos decir que desde el punto
de vista de funcionamiento, que es alcanzar un objeto, no hay diferencia entre ambos.
El uso que se les puede dar a los enlaces es variado y depende de la habilidad del usuario el sacarles
provecho.
Todos los archivos o directorios tienen al menos un enlace rgido que corresponde al vnculo entre su
entrada en el directorio y su i-nodo o nodo ndice que almacena varios datos del archivo, uno de
estos datos indica en que lugar del disco (bloque) estn guardados los datos que contiene el archivo,
como se observa en la ilustracin anterior.

Tabla 7.3. Informacin que guarda el i-nodo


Tipo de archivo
Nmero de enlaces
Datos de propiedad
Permisos
Datos de fecha y hora
Tamao
Punteros a bloques de datos

124

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Creando enlaces rgidos

7.15. Creando enlaces rgidos

La orden ln es usada para crear mltiples enlaces a un archivo.


Vamos a empezar creando un enlace rgido, que es simplemente un nombre adicional en la entrada de
directorio que apunta al mismo i-nodo.
A modo de ejemplo vamos a crear un archivo llamado foo y usando la orden ls -i, vemos el nmero
de i-nodo del archivo.
[sofia@tux sofia]$ touch foo
[sofia@tux sofia]$ ls -i foo
22192 foo

Aqui vemos que el archivo foo tiene el nmero de i-nodo 22192 en el sistema de archivos. Ahora vamos
a crear un enlace rgido llamado bar, del siguiente modo:
[sofia@tux sofia]$ ln foo bar

Ahora si observamos ambos archivos usando nuevamente la orden ls -i veremos que tienen el mismo
i-nodo:
[sofia@tux sofia]$ ls -i foo bar
22192 bar
22192 foo

Esto significa que ya sea que accedamos a foo o a bar estaremos accediendo al mismo archivo.
Este tipo de enlaces se llaman enlaces rgidos porque directamente crean el enlace al i-nodo.

Nota
Slo podemos crear enlaces duros entre archivos que se encuentran en el mismo sistema
de archivos. Los enlaces simblicos no tienen esta limitacin.
Si borramos el archivo foo o bar, nicamente estamos borrando un enlace al archivo (su entrada en
el directorio). Un archivo es borrado definitivamente del sistema cuando no quedan enlaces rgidos a
l. La cantidad de enlaces rgidos que tiene un objeto se puede observar con la orden ls -l. Con nuestro
ejemplo veramos algo similar a esto:
[sofia@tux sofia]$ ls -l foo bar
-rw-r--r-- 2 sofia sofia 0 2005-10-12 18:20 bar

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

125

Creando enlaces rgidos

-rw-r--r--

2 sofia sofia 0 2005-10-12 18:20 foo

La segunda columna en el listado, muestra claramente que hay dos enlaces rgidos.

126

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Creando enlaces simblicos

7.16. Creando enlaces simblicos

Un enlace simblico tambin permite dar a un archivo X otro nombre, pero no enlaza el nuevo nombre
con el i-nodo del archivo X, en lugar de ello crea un nuevo i-nodo cuyo bloque de datos contiene la
ruta al archivo X.
Para crear un enlace simblico se usa la orden ln -s. Por ejemplo, si ejecutamos lo siguiente:
[sofia@tux sofia]$ ln -s ~/foo bars

Crearemos un enlace simblico llamado bars apuntando al archivo foo. Si usamos la orden ls -i, veremos
que ambos archivos tienen efectivamente i-nodos diferentes.
[sofia@tux sofia]$ ls -i foo bars
22195 bars
22192 foo

Usando ls -l vemos que el archivo bars es un enlace simblico apuntando a foo.


[sofia@tux sofia]$ ls -l foo bars
lrwxrwxrwx 1 sofia sofia 15 2005-10-14 13:39 bars -> /home/sofia/foo
-rw-r--r-- 2 sofia sofia 0 2005-10-12 18:20 foo

Los permisos en un enlace simblico no se usan (siempre aparecen como rwxrwxrwx). En su lugar,
se usan los permisos del archivo al cual apunta el enlace.
Funcionalmente, los enlaces duros y simblicos son similares, pero hay algunas diferencias. Por una
parte, se puede crear un enlace simblico a un fichero que no existe; lo mismo no es cierto para enlaces
duros. Los enlaces simblicos son procesados por el ncleo de forma diferente a los duros, lo cual es
solo una diferencia tcnica, pero a veces importante. Los enlaces simblicos son de ayuda puesto que
identifican al fichero al que apuntan; con enlaces duros no hay forma fcil de saber que fichero est
enlazado al mismo i-nodo.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

127

128

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

8. Usos avanzados del intrprete de


rdenes
El intrprete de rdenes posee muy ricas funciones que permiten obtener mejor provecho del trabajo
en lnea de rdenes. En esta seccin vamos a ver en particular las funciones referidas a flujos de entrada/salida, y la personalizacin del entorno de trabajo utilizando variables. Adems veremos como podemos usar variables para nuestro beneficio.

8.1. Objetivos

Al completar este captulo usted ser capz de:


Redireccionar flujos de texto
Redireccionar la salida estndar
Usar el resultado de una orden como entrada para otra orden
Usar el resultado de una orden como argumento para otra orden
Personalizar el entorno del intrprete de rdenes
Trabajar con variables de entorno

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

129

Entrada/Salida estndar

8.2. Entrada/Salida estndar

La Entrada/Salida estndar es una capacidad del intrprete de rdenes usada por todas las rdenes que
pueden aceptar datos de entrada, que producen salida e informacin de error. Cada vez que ejecutamos
un programa, automticamente este cuenta con tres descriptores de archivo, que son los siguientes:
Entrada estndar (abreviado stdin)

Este descriptor es un flujo de entrada de texto. De modo predeterminado est vinculado con el teclado. Cuando ejecutamos
una orden interactiva y empezamos a tipear en el teclado, lo
que estamos haciendo es alimentar la entrada estndar. Algunas
rdenes aceptan entrada desde archivos que son pasados como
argumentos e ignoran la entrada estndar. La entrada estndar
es conocida tambin como descriptor de archivo 0.

Salida estndar (abreviado stdout)

Este descriptor es un flujo de salida de texto. De modo predeterminado est vinculado a la terminal (la pantalla). Cuando ejecutamos una orden que genera salida, sta es enviada a la salida
estndar. La salida estndar es conocida tambin como descriptor de archivo 1.

Error estndar (abreviado stderr)

Este descriptor es tambin un flujo de salida de texto, pero que


se usa exclusivamente para mensajes de error u otra informacin
relacionada. De modo predeterminado tambin est vinculado
a la terminal (la pantalla). Esto significa que a simple vista
cuando uno observa salida en la terminal puede ser confuso
distinguir informacin de salida y de error. El error estndar es
conocido tambin como descriptor de archivo 2.

La orden cat nos da un buen ejemplo de como se emplea estos tres flujos de entrada/salida estndar.
Por ejemplo si escribimos slamente la orden sin ningn argumento, cat se quedar esperando datos
de entrada desde la entrada estndar que es el teclado, y luego ir mostrando a la salida estndar cada
lnea de texto tipeada:
[sofia@tux sofia]$ cat
Esto muestra como
Esto muestra como
cat usa la entrada estandar
cat usa la entrada estandar
y la salida estandar
y la salida estandar
Ctrl+D

130

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Redireccionamiento

8.3. Redireccionamiento

Desde el punto de vista de los programas no hay diferencia en leer datos desde la entrada estndar o
desde un archivo, lo mismo con la salida, no hay diferencia en enviarla a la salida estndar o a un archivo. La accin de emplear un archivo en lugar del flujo estndar se denomina redireccionamiento.
Por ejemplo si redireccionamos la entrada estndar, el programa ya no leer datos desde el teclado sino
desde el archivo.
Para producir el redireccionamiento se emplean los siguientes operadores especiales:
Operador Propsito

Forma de uso

<

Redireccionar entrada estndar

orden < archivo

>

Redireccionar salida estndar

orden > archivo

>>

Redireccionar salida estndar, aadiendo al archivo orden >> archivo

2>

Redireccionar error estndar

orden 2> archivo

En el siguiente ejemplo cat lee datos desde la entrada estndar y la salida es redireccionada al archivo
texto.
[sofia@tux sofia]$ cat > texto
este texto es leido
desde la entrada estandar
y la salida est redireccionada
a un archivo.
Ctrl+D

Podemos tambin redireccionar la entrada y la salida estndar al mismo tiempo, como se muestra en
este ejemplo:
[sofia@tux sofia]$ sort < lista1 > lista-final

Recordar que la orden sort acepta tambin datos de entrada desde archivos pasados como argumentos,
por tanto la siguiente orden produce el mismo resultado que la anterior:
[sofia@tux sofia]$ sort lista1 > lista-final

En el siguiente ejemplo empleamos la orden find para buscar todos los enlaces simblicos bajo un
directorio especfico y enviamos el resultado al archivo enlaces, como no estamos interesados en los
mensajes de error, redireccionamos el error estndar al archivo especial /dev/null.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

131

Redireccionamiento

[sofia@tux sofia]$ find /usr -type l > enlaces 2> /dev/null

El intrprete de rdenes Bash tambin permite redireccionar ambos, la salida estndar y el error estndar
al mismo archivo utilizando el operador &>, de la siguiente forma:
[sofia@tux sofia]$ ls /no-existe /media/ &> /tmp/prueba

El archivo /tmp/prueba quedara con el siguiente contenido:


[sofia@tux sofia]$ cat /tmp/prueba
ls: /no-existe: No existe el fichero o el directorio/media/:
cdrom
floppy

132

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Tuberas

8.4. Tuberas

Las tuberas (caracter |) sirven para tomar la salida producida por una orden (flujo de salida) y enviarla
como datos de entrada para otra orden (flujo de entrada). Se pueden encadenar tantas rdenes como
se necesite.
Por ejemplo, la siguiente orden cuenta el nmero de archivos y/o directorios cuyo nombre empieza
por la letra a.
ls -d /usr/bin/a* | wc -l
En este ejemplo la salida producida como resultado de ejecutar la orden ls -d a* es enviada como datos
de entrada a la orden wc -l.
La siguiente secuencia de rdenes es equivalente a la anterior y permite apreciar la utilidad de emplear
tuberas al evitar la creacin de archivos temporales.
ls -d a* > temporal
wc -l temporal
Mostramos un ejemplo adicional que encadena tres rdenes:
ls -d /etc/* | grep "conf" | wc -l

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

133

Usando la T (tee)

8.5. Usando la T (tee)

Cuando ejecute una orden y redireccione la salida estndar a un archivo, probablemente usted querr
ver en la terminal (en pantalla) que salida se va produciendo mientras se ejecuta la orden, pero cuando
se usa redireccionamiento esto no es posible. Afortunadamente existe la orden tee que nos permite
hacer esto.
En el siguiente ejemplo tee va mostrando en pantalla el resultado producido por find /etc/ -name
"*.conf*" y a la vez lo guarda en el archivo salida. Adems se ha redireccionado el error estndar
para que los mensajes de error no se mezclen con la salida en pantalla.
find /etc/ -name "*.conf*" | tee salida 2> /dev/null

134

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Usando xargs

8.6. Usando xargs

Ejecutar una orden y luego querer usar ese resultado como argumento de otra orden es algo que tambin
querr hacer alguna vez. La orden xargs ha sido creada para este propsito.
Por ejemplo suponga que tiene poco mas de 50 archivos en un directorio y quiere borrarlos todos excepto aquellos cuyo nombre contiene la palabra cod-0 que son alrededor de 20. Si usted hiciera rm
-i * se cansara de la tediosa tarea de estar respondiendo si/no a la pregunta de borrar el archivo.
Una mejor forma de hacer esto es emplear la siguiente orden:
ls | grep -v "cod-0" | xargs rm -f
La instruccin ls | grep -v "cod-0" devolver como resultado el listado de todos los archivos cuyo
nombre no lleva la palabra cod-0. Entonces xargs tomar esta salida y la enviar como argumento
a la orden rm -rf.
xargs siempre ejecuta la orden aun cuando no haya datos de entrada, para evitar esto puede usar la
opcin -r, as:
find $HOME/.mozilla -name XUL.mfasl -print | xargs -r rm -f

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

135

Sustitucin de orden

8.7. Sustitucin de orden

En algunas circunstancias, usted querr utilizar el resultado de una orden para usarla como parte de
otra orden o guardarla en una variable que es muy usual de hacer cuando se escriben guiones (scripts).
La sustitucin de una orden por su salida se hace encerrando la orden entre el smbolo $( ) o entre caracteres de tilde invertida (caracter `), de esta forma: $(orden) o `orden`.
Por ejemplo, suponga que usted quiere crear un archivo cuyo nombre lleve la fecha de hoy, entonces
usted podra hacer as:
ls -l > listado-$(date +"%d-%b-%Y")
La orden date +"%d-%b-%Y" dar como resultado una fecha de la forma 19-oct-2005 y como estamos utilizando sustitucin de orden, el archivo se llamar finalmente listado-19-oct-2005.
El siguiente ejemplo guarda la fecha actual en una variable llamada HOY:
HOY=`date +"%d-%b-%Y"`

Nota
La forma tradicional de utilizar sustitucin de orden es emplear la tilde invertida, pero
su uso est desaconsejado y es preferible la forma: $(orden).

136

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Variables de entorno y del intrprete

8.8. Variables de entorno y del intrprete

Muchos programas que corren en Linux necesitan informacin sobre el entorno en el que se estn
ejecutando para que funcionen apropiadamente. Por ejemplo necesitan saber el tipo de terminal que
est utilizando, el idioma de su preferencia, y las rutas de directorio donde buscar los programas que
est ejecutando. Esta informacin es mantenida en una serie de variables conocidas como variables
de entorno.
Para ver todas las variables de entorno se usa la orden env. Estas son algunas de las variables de entorno
comunmente utilizadas:
HOME

El directorio de trabajo del usuario.

LANG

El idioma que los programas deben utilizar.

PATH

Las rutas de directorio donde se buscan los programas a ejecutar. Las rutas se
separa por el caracter dos puntos (:).

PS1

En indicador (prompt) del sistema.

TERM

El tipo de terminal que est usando.

USER, USERNAME Su nombre de usuario.


Puede cambiar temporalmente el valor de una variable de entorno para un programa especfico. Por
ejemplo, si su sistema est en espaol la siguiente orden mostrar la pgina del manual de ls en ingls:
[sofia@tux sofia]$ LANG=C man ls

Cuando el programa man tome el valor C de la variable LANG, usar el idioma predeterminado que
casi siempre es ingls.
Adems de las variables de entorno, tambin estn las variables del intrprete de rdenes. Estas se
consideran como locales ya que son slo especficas para el intrprete actual. Para ver estas variables
se usa la orden set.
En Bash se acostumbra que todas las variables se indiquen en maysculas, que es slo una convensin.

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

137

Usando variables

8.9. Usando variables

Para crear una nueva variable del intrprete basta con definir la variable y asignarle un valor, as: variable=valor. Veamos algunos ejemplos:
CVSROOT=sofia@cvs.server.com:/share/cvs/curso
FALLA_MD5="No se verifico MD5"
FECHA=`date`
PI=3.1416
Si queremos utilizar el valor de la variable debemos escribirla con el caracter $ por delante. Veamos
algunos ejemplos utilizando las variables anteriores:
Ejemplo

Resultado

echo $FECHA

jue oct 20 10:36:52 BOT 2005

echo El valor de PI es $PI

El valor de PI es 3.1416

MOZILLA=$HOME/.mozilla MOZILLA=/home/sofia/.mozilla
Puede usar la orden set para ver todas las variables del intrprete definidas.
Como se dijo anteriormente, todas estas variables son locales, si usted quiere que una variable sea
global (de entorno) tiene que usar la orden export.
Por ejemplo si la variable ya ha sido definida, entonces basta hacer lo siguiente:
export PI
Si la variable no ha sido definida puede hacerse as:
export JAVA_HOME=/opt/j2re1.4.2
Si no va a necesitar ms una variable (de entorno o de intrprete) y la quiere eliminar, tiene que usar
la orden unset. Por ejemplo:
unset PI

138

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Funciones

8.10. Funciones

Bash nos ofrece tambin las denominadas funciones, que nos permiten guardar una serie de rdenes
para uso posterior. Para declarar una funcin debemos usar la siguiente sintaxis:
[ function ] NOMBRE ( ) { LISTA-ORDENES; }
Donde:
function

Esta palabra es opcional

NOMBRE

Es el nombre de la funcin y los parntesis son requeridos

LISTA-ORDENES Es la lista de rdenes que se ejecutan al invocar la funcin.


Por ejemplo vamos a crear una simple funcin slo a fines de ilustracin:
[sofia@tux sofia]$ lsl () { ls -l listado*; }

As, cuando el usuario escriba lsl el intrprete encontrar que se trata de una funcin y ejecutar las
rdenes indicadas, en este cas slamente una.
Las funciones pueden tambin recibir argumentos, como vemos en el siguiente ejemplo:
[sofia@tux sofia]$ addpath () {
> echo Aadiendo $1 a PATH
> PATH=$PATH:$1
> export PATH
> }

El caracter > indica que Bash sigue esperando que se introduzcan rdenes, hasta encontrar el caracter
}, que termina la definicin de la funcin. $1 es el primer argumento que la funcin recibe.
Ahora veamos el resultado de esta funcin.
[sofia@tux sofia]$ addpath /home/sofia/bin
Aadiendo /home/sofia/bin a PATH

Si verificamos el valor de esta varible de entorno tendremos algo similar a:


[sofia@tux sofia]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/home/sofia/bin

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

139

Archivos de configuracin

8.11. Archivos de configuracin

Probablemente se habr preguntado en que momento se crean todas las variables que ya estn presentes
en el sistema. Pues bien, hay dos tipos de archivos de configuracin en los cuales estn definidas las
variables y otra informacin para preparar el entorno de trabajo: archivos globales y archivos de
usuario. Los primeros se usan para todo el sistema y para todos los usuarios, y los segundos nicamente
para un usuario en particular. Algunos de estos archivos se usan slo durante el ingreso inicial del
usuario (login), mientras que otros son utilizados cada vez que se ejecuta una nueva instancia del intrprete de rdenes.
Los archivos de configuracin que son utilizados por Bash son:

Tabla 8.1. Archivos de configuracin de Bash


Archivo

Descripcin

Global

/etc/profile

Archivo global de inicializacin, ejecutado durante el ingreso. Usualmente


define la variable de entorno PATH.

Si

/etc/bashrc

Tambin archivo global, que es ejecutado habitualmente desde ~/.bashrc.


En los sistemas Debian se usa en su lugar /etc/bash.bashrc. Usualmente
se definen funciones y alias.

Si

~/.bash_profile

Si existe, es ejecutado despus de /etc/profile durante el ingreso.

No

~/.bash_login

Si ~/.bash_profile no existe, se ejecuta este archivo durante el ingreso.

No

~/.profile

Si no existen los dos archivos anteriores, se ejecuta este archivo durante


el ingreso. Observe que este es el archivo tradicional en Unix.

No

~/.bashrc

Si existe, se ejecuta cada vez que se invoca a Bash, ya sea de forma interactiva (durante el ingreso) o no-interactiva (al ejecutar un script).

No

~/.bash_logout

Se ejecuta cada vez que el usuario sale de su sesin Bash.

No

~/.inputrc

Configura como responde Bash a una secuencia de teclas cuando est en


modo interactivo. Por ejemplo: Ctrl+D borra un caracter. De modo predeterminado Bash obedece la secuencia de teclas del editor Emacs.

No

Los archivos globales se deben usar para aplicar una configuracin a todos los usuarios. Por ejemplo
si queremos que todos los usuarios tengan una variable de entorno llamada JAVA_HOME, deberamos
aadir las siguientes lneas al archivo /etc/profile
JAVA_HOME=/opt/j2re1.4.2
export JAVA_HOME

140

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Archivos de configuracin

En cambio si slo queremos que la usuario sofia tenga esta variable, entonces debemos aadir esas
mismas lneas al archivo /home/sofia/.bash_profile.
El siguiente es un ejemplo del archivo /etc/profile en un sistema Red Hat Enterprise Linux:

Ejemplo 8.1. Ejemplo de archivo global /etc/profile


# /etc/profile# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
pathmunge /usr/X11R6/bin after

# No core files by default


ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
unset pathmunge

A continuacin vemos un ejemplo de un archivo local:

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

141

Archivos de configuracin

Ejemplo 8.2. Ejemplo de archivo local ~/.bash_profile


# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME

142

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

Indice de rdenes

Smbolos

#, 29
$, 29
$(orden), 136
&>, 131
2>, 131
<, 131
>, 131
>>, 131
`orden`, 136
|, 133

less, 66, 101


ln, 125
locate, 63
ls, 51, 110
lsattr, 121

join, 80

M
man, 41, 43
mkdir, 57
more, 66, 101
mv, 56

A
alias, 32
apropos, 43

cat, 66, 67, 130


cd, 58
chattr, 121
chgrp, 123
chmod, 113
chown, 123
clear, 34
cp, 53
cut, 74

od, 84

rm, 54
rmdir, 59

date, 30

E
echo, 138
env, 137
exit, 25, 34
expand, 76
export, 138

F
find, 61, 131
fsck, 49
function, 139

nl, 68

P
passwd, 34
paste, 75
poweroff, 34
pwd, 34

S
sed, 86
set, 137
sort, 71, 131
split, 82
stat, 60
su, 34

T
tac, 66, 67
tail, 67
tee, 134
touch, 60
tr, 78

grep, 87, 101

H
head, 66
help, 39
history, 38

U
umask, 115
unalias, 32
unexpand, 77
uniq, 83
unset, 138

id, 34

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

143

V
vi, 92, 93
vim, 92

W
wc, 70, 133
whatis, 43
whereis, 64
which, 64

X
xargs, 135

144

Hardy Beltran Monasterios http://www.hardy.com.bo

XML to PDF by RenderX XEP XSL-FO Formatter, visit us at http://www.renderx.com/

You might also like