Está en la página 1de 26

Preparaci´ on para examen de certificaci´ on 101 LPI (segundo lanzamiento) Parte I

´ Indice
1. Secci´ on 1. Antes de Comenzar 2. Secci´ on 2. Introducci´ on a bash 3. Secci´ on 3. Usando los comandos de Linux 4. Secci´ on 4. Creando enlaces y removiendo archivos. 5. Secci´ on 5: Usando wildcards (comodines) 6. Secci´ on 6: Resumen y bibliograf´ ıa 2 4 9 16 22 26

1

1.

Secci´ on 1. Antes de Comenzar Unas palabras sobre este Tutorial

Bienvenido a “Fundamentos de Linux”, el primero de cuatro tutoriales dise˜ nado para prepararlo para el examen 101 de Linux Professional Institute (Instituto Profesional de Linux). En este tutorial, haremos una introducci´ on a bash (el shell est´ andar de linux), veremos como tomar ventajas de los comandos Linux est´ andar (como ls, cp o mv), explicaremos i-nodos y enlaces simb´ olicos y permanentes (soft y hard links ), y mucho m´ as. Al final de este tutorial, usted contar´ a con una s´ olida base en los fundamentos de Linux, y estar´ a listo para aprender algunas tareas b´ asicas de administraci´ on de su sistema Linux. Cuando finalice esta serie de tutoriales (ocho en total) usted tendr´ a el conocimiento necesario para ser un Administrador de Sistemas Linux, y estar´ a preparado para rendir (si as´ ı lo quisiera) para la certificaci´ on LPIC de nivel 1 del Linux Professional Institute. Este tutorial en particular (Parte I) es ideal para aquellos que son nuevos en Linux, o para aquellos que quieran revisar o incrementar sus conocimientos de los conceptos fundamentales de Linux como copiar y mover archivos, crear enlaces simb´ olicos y permanentes, o usar los comandos est´ andar de Linux para procesamiento de textos junto con tuber´ ıas (pipelines ) y redirecciones. A lo largo del camino aparecer´ an consejos, trucos y sugerencias para mantener el tutorial interesante y pr´ actico, a´ un para aquellos con una buena experiencia en Linux. Para los principiantes este material resultar´ a nuevo, pero los m´ as experimentados usuarios de Linux ver´ an que este tutorial completar´ a y redondear´ a su manejo de los fundamentos de Linux.

2

Argentina. 3 . tambi´ en hemos dejado ciertos t´ erminos en su idioma original (ingl´ es) por ser palabras con las que usted se encontrar´ a frecuentemente al utilizar su sistema Linux. Tambi´ en escribe art´ ıculos y seminarios para IBM developerWorks y Servicios de Desarrollo de Intel.Acerca del autor Residiendo en Albuquerque. se tradujo este seminario del idioma ingl´ es al espa˜ nol para el habla hispana. cont´ actese con el autor. Daniel Robbins es el Arquitecto en jefe de la metadistribuci´ on Gentoo Linux. de manera tal que comience a familiarizarse con ellas. en la provincia de C´ ordoba. Nuevo M´ exico. Puede contactarlo en la siguiente direcci´ on: drobbins@gentoo.org. y ha contribu´ ıdo en la edici´ on de distintos libros como Samba y Linux SuSE. a drobbins@gentoo. Unas palabras sobre la Traducci´ on En el Departamento Universitario de Inform´ atica (DUI) de la Universidad Nacional de C´ ordoba. El trabajo de traducci´ on fue desarrollado por las siguientes personas: Autor: Daniel Robbins Coordinaci´ on general de la Traducci´ on: Jos´ e Daniel Britos Traducci´ on y compaginaci´ on: Carlos Alejandro Julian Colaboraci´ on: Ana Gabriela Llim´ os y Javier Mansilla Si bien hemos tratado de traducir completamente este texto de manera tal que una persona no anglo parlante logre tener un total conocimiento del contenido de este tutorial. Para consultas t´ ecnicas sobre el contenido de ´ este seminario.org. Daniel disfruta su tiempo con su esposa Mary y su hija Hadassah.

sobre administraci´ on b´ asica. tambi´ en puede salir de su sesi´ on tecleando control-D en prompt de su bash 4 . es un acr´ onimo para Bourne-again-shell (shell re-nacido). sabr´ a que cuando usted ingresa al sistema (log in ) es saludado con un prompt que luce m´ as o menos as´ ı: $ El prompt que usted realmente vea en su sistema puede lucir un tanto diferente. Puede contener el nombre de host de su sistema hostname. entonces usted est´ a usando alg´ un otro shell. Cuando termine de introducir comandos. puede solicitarle a su shell salir a trav´ es de exit o logout. Secci´ on 2. El trabajo de un shell es obedecer sus comandos de manera que usted pueda interactuar con su sistema Linux. ¿Est´ a usted usando bash? Puede revisar si usted est´ a utilizando bash tipeando: $ echo $SHELL /bin/bash Si con la linea de arriba obtuvo un mensaje de error o no respondi´ o de la misma forma que en nuestro ejemplo. cubre c´ omo cambiar su shell a trav´ es del comando chsh). Sobre bash Bash. (El pr´ oximo tutorial. M´ as all´ a de como se vea su prompt lo importante a saber lo siguiente: el programa que imprimi´ o ese prompt en su pantalla se llama “shell” (c´ ascara en espa˜ nol). y es muy probable que su shell particular sea uno llamado bash. etc. En ese momento usted regresar´ a al prompt de inicio de sesi´ on (log in). ambos.2. el nombre de directorio actual de trabajo. A prop´ osito. le recomendamos cambiar a bash. es el shell por defecto en la mayor´ ıa de los sistemas Linux. pero si usted se est´ a preparando para el examen 101. Introducci´ on a bash Un shell Si usted ha usado un sistema Linux.

Todos los directorios en el sistema forman un ´ arbol. cd ajusta al directorio donde usted trabajar´ a. o sea que la ubicaci´ on dentro del arbol del sistema de archivos es indicada en forma relativa a su root. primero cd entrar´ a al directorio /. un camino o ruta) hacia donde queremos dirigirnos. tambi´ en conocido como root (ra´ ız). y reci´ en desde all´ ı entrar´ a a bin. situarse en prompt de su bash no es para nada emocionante. desde all´ ı luego entrar´ a al directorio usr. el argumento / es llamado un path (como ya dijimos. tambi´ en conocido como “current working directory” (actual directorio de trabajo). tipee lo siguiente (obviamente sin incluir el $): $ cd / Con esto usted le ha dicho a bash que usted quiere trabajar en el directorio /.Usando el comando cd Como seguramente habr´ a notado. Las rutas absolutas siempre comienzan a evaluarse a partir de /. En particular. y / es considerado la ra´ ız de ´ este. lo que estas rutas absolutas tienen en com´ un es que todas comienzan con una barra /. el argumento / es un path absoluto. En el prompt. ´ Rutas Absolutas Como muestra. Si le damos a cd el path /usr/local/bin. escriba: $ pwd / En el ejemplo anterior (sobre cd). ac´ a hay varias rutas absolutas distintas a las del ejemplo anterior: /dev /usr /usr/bin /usr/local/bin Como podr´ a ver. 5 . As´ ı que comencemos a usar bash para navegar alrededor de nuestro sistema de archivos filesystem. Rutas (Paths ) Para ver el directorio actual de trabajo de bash.

Por ejemplo: $ pwd /usr/local 6 . bash. De esta manera. De esta forma podemos ”volver atr´ as” un directorio con respecto al cual estamos situados. El directorio . ahora usted puede usar una ruta relativa para cambiar el directorio actual a /usr/local/bin de la siguiente forma: $ cd local/bin $ pwd /usr/local/bin Usando el directorio . permiti´ endonos dirigirnos a alg´ un directorio que se encuentre en alguna rama lateral del ´ arbol de directorios (esto es. en alguna ruta relativa.Rutas Relativas El otro tipo de rutas es el de las rutas relativas.. As´ ı que si estamos en /usr : $ cd /usr Entonces. (punto punto) Las rutas relativas pueden tambi´ en contener uno o mas directorios . M´ as usos de los . cd. y continuando con el ejemplo anterior: $ pwd /usr/local/bin $ cd .. y otros comandos siempre interpretan este tipo de rutas como relativas al directorio actual de trabajo... $ pwd /usr/local Como usted puede ver. obviamente. Las rutas relativas nunca comienzan con una barra /. el nuevo directorio actual de trabajo es /usr/local. podemos incluir el directorio . es un directorio especial que apunta al directorio padre del actual... (punto punto). sin tener que utilizar una ruta absoluta). (punto punto) Adem´ as.

el directorio sobre el cual puede trabajar libremente. por ejemplo. Ac´ a van algunos ejemplos.$ cd . Intente entender donde quedar´ a situado despu´ es de tipear cada uno de estos comandos: $ cd /bin $ cd ./bin Ahora.. Aunque este directorio no suele ser utilizado con el comando cd. ninguno muestra el directorio al cual se accedi´ o./share $ pwd /usr/share Ejemplos de rutas relativas Las rutas relativas pueden volverse un tanto complicadas. si es u ´til./miprograma En este ejemplo.. cd y el directorio home El directorio home es. Entendiendo . para ejecutar alg´ un programa situado en el directorio actual. para cada usuario. (un punto) Antes de terminar con el comando cd hay algunas cosas m´ as que vale la pena mencionar. entonces escriba: $ cd 7 ./lib/X11 $ cd /usr/bin $ cd ./usr/share/zoneinfo $ cd /usr/X11R6/bin $ cd ../bin/. que se refiere al directorio actual... (un punto). Primero hablaremos de otro directorio especial llamado . como se ve: $ . Si lo que usted quiere es cambiar el directorio actual a su directorio home. se ejecutar´ a el archivo ejecutable miprograma que resida en el directorio actual de trabajo. pruebe chequear lo que usted pens´ o con lo que realmente sucede al teclear los comandos.

/miprograma ~lucasperez/lucas.. entonces usted puede escribir: $ . Por ejemplo. Afortunadamente../miprograma /home/juanlopez/miarchivo. ¿qu´ e sucede si lo que usted quiere es referirse a un archivo situado en su directorio home? Quiz´ as lo que usted quiera sea pasar un archivo como argumento a su comando miprograma. puede hacer uso del car´ acter (tilde) para hacer lo mismo: $ .txt Sin embargo.txt 8 . Si el archivo est´ a es su directorio home.Cuando utilice el comando cd sin argumentos. usar rutas absolutas no es siempre lo m´ as conveniente ni c´ omodo. si quiere referirse a un archivo llamado lucas. pero tambi´ en usted puede usar el tilde para apuntar a los directorio home de los otros usuarios.txt Directorios home de otros usuarios bash expandir´ a un simple ~ (tilde) para apuntar a su propio directorio home./miprograma ~/miarchivo. este lo llevara a su directorio home (casa en castellano). y /home/nombredeusuario para usuarios comunes.txt en el directorio home de lucasperez. entonces puede tipear lo siguiente: $ . Ahora bien. Ser´ a el directorio /root para el super-usuario.

Muy probablemente usted ya haya tenido contacto con el comando ls.old sbin share src ssl tmp Especificando la opci´ on -a.La opci´ on -l le resultar´ a de gran utilidad cuando quiera ver informaci´ on sobre permisos. . pero por si no lo sabe.). tiempos de modificaci´ on.3. incluyendo los archivos ocultos (aquellos que comienzan con un punto (. continuamos En el siguiente ejemplo. vamos a darle una peque˜ na mirada al comando ls. Usando los comandos de Linux Introduciendo el comando ls Ahora. Listado completo de informaci´ on. ls s´ olo mostrar´ a este archivo. este sirve para listar el contenido del directorio actual de trabajo: $ cd /usr $ ls X11R6 bin distfiles doc gentoo-x86 i686-linux i686-pc-linux-gnu include info lib libexec local man portage portage..old sbin tmp src ssl Listado completo de informaci´ on Al comando ls usted le puede especificar uno o m´ as archivos o directorios a trav´ es de la linea de comandos. Secci´ on 3. X11R6 bin distfiles doc gentoo-x86 i686-linux i686-pc-linux-gnu include info lib libexec local man portageshare portage. tama˜ no o propiedad de los contenidos listados. ls -a muestra tambi´ en los directorios especiales . (en realidad son enlaces a esos dos directorios): $ ls . podr´ a ver todos los archivos del directorio. pero si especifica un directorio.. y . entonces ls listar´ a el contenido de ese directorio. Como se ve en el siguiente ejemplo. se utiliza la opci´ on -l para ver una listado del directorio /usr. pero con informaci´ on completa: $ ls -l /usr drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx 7 2 2 1 root root root root root root root root 168 14576 8858 9 9 Nov Dec Dec Dec 24 27 26 22 14:02 08:56 12:22 20:07 X11R6 bin distfiles doc -> share/doc . Si especifica un archivo.

La u ´ltima columna es el nombre del objeto. Tambi´ en esto ser´ a explicado a la brevedad. Si el archivo es un enlace simb´ olico. M´ as adelante explicaremos como interpretar esta informaci´ on. La columna siguiente lista el n´ umero de links para cada objeto del filesystem. entonces usted ver´ a una flechita -> y la ruta hacia la cual el link simb´ olico apunta. Mirando los directorios A veces. la que le dir´ a a ls que mire los directorios. y el grupo al cual pertenece.. mientras que la sexta lista cuando fue realizada la u ´ltima modificaci´ on del objeto (“last modified time” o “mtime” ). y no dentro de ellos como normalmente sucede: $ ls -dl /usr /usr/bin drwxr-xr-x 4 root drwxr-xr-x 17 root drwxr-xr-x 2 root drwxr-xr-x 2 root /usr/X11R6/bin root 152 root 576 root 3192 root 14576 ./var/tmp La primer columna muestra la informaci´ on sobre permisos para cada ´ ıtem listado. usted querr´ a mirar los directorios./share Dec 12 23:10 .. Para estas situaciones puede especificar la opci´ on -d. La quinta muestra el tama˜ no de los objetos..old sbin share src ssl tmp -> ./share Dec 12 07:45 /usr Dec 12 14:13/usr/X11R6/bin Dec 12 20:08 /usr/bin Listados recursivos y de inodos 10 .drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx lrwxrwxrwx drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x lrwxrwxrwx 62 4 4 54 1 28 3 8 1 1 60 3 46 8 6 1 root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root root 1856 152 96 5992 10 13552 72 240 9 11 1864 3098 1144 328 176 10 Dec Dec Nov Dec Dec Dec Nov Dec Dec Dec Dec Dec Dec Dec Nov Dec 27 12 24 24 22 26 25 22 22 8 8 22 24 26 24 22 09:23 23:10 13:17 22:30 20:43 00:31 00:34 20:21 20:21 07:59 07:55 14:35 15:43 00:07 14:25 20:57 gentoo-x86 i686-linux i686-pc-linux-gnu include info -> share/info lib libexec local man -> share/man portage -> gentoo-x86/ portage. La tercer y cuarta columna listan el propietario del elemento. en vez de dentro de ellos. respectivamente.

primera parte En un sistema de archivos. y adem´ as hemos hallado dos entradas distintas (en distintos directorios tambi´ en. el directorio /usr/local tiene el n´ umero de inodo 5120.. que apuntan a ese inodo. y /usr/local tienen el mismo n´ umero de inodo. Finalmente. o por el contrario puede utilizar -R para hacer lo opuesto: no s´ olo mirar dentro de los directorios. hemos visto que el inodo 5120 es el verdadero directorio. Para tener una acabada idea de qu´ e directorio realmente es . Entendiendo inodos. llamadas enlaces o links ). segunda parte Como puede ver.m primero vea el n´ umero de inodo de /usr/local $ ls -id /usr/local 5120 /usr/local Como ve. /usr/local/bin/. Veamos como explicar esta revelaci´ on. Ahora. la opci´ on -i para el comando ls puede ser usada para mostrar el n´ umero de inodos (inodes ) de los objetos del filesystem listados: $ ls -i 1409 X11R6 1417 bin 8316 distfiles 43 doc 70744 gentoo-x86 314258 1513 1517 1386 1585 i686-linux i686-pc-linux-gnu include info lib 43090 5120 776 93892 5132 libexec local man portage portage. Ahora revise el n´ umero de inodo de /usr/local/bin/. son enlaces al inodo 11 ..old 13394 13408 23779 36737 784 sbin share src ssl tmp Entendiendo inodos.. 5120 /usr/local/bin/. Tanto /usr/local/ como /usr/local/bin/. pero usted puede probar con los comandos ls -R y ls -Rl para tener una idea de como trabajan.. sistema de archivos). : $ ls -id /usr/local/bin/. que aparecen en cada directorio. considere los links . sino que recursivamente mirar dentro de todos los directorios dentro del actual... llamado un n´ umero de inodo. a cada objeto le es asignado un ´ ındice u ´nico. pero entender completamente el concepto de inodos es esencial para comprender muchas de las operaciones de un filesystem (como ya dijimos. Por ejemplo. consider´ abamos que /usr/local era el directorio realmente. Esto parecer´ ıa ser trivial.Puede usar ls -d para mirar los directorios sin desreferenciarlos. y . No incluiremos ning´ un ejemplo de la salida que produce esta opci´ on (ya que generalmente es muy grande). Hasta reci´ en..

A pesar de que el inodo 5120 existe en s´ olo un lugar del disco duro. tercera parte De hecho. si quiere crear los directorio ma/ra/villa. veremos que el directorio /usr/local (inodo 5120) es referenciado ocho veces. la ruta completa hasta el ante-´ ultimo elemento debe existir previamente.. tac y toe. /usr/local/share/.. usted puede ver el n´ umero total de veces que el inodo 5120 es referenciado. tic. mkdir Veamos ahora brevemente el comando mkdir que puede ser usado para crear directorios nuevos. De esta manera. m´ ultiples enlaces pueden apuntar a ´ el: el inodo 5120 es la verdadera entrada en el disco.. /usr/local/src/.. Aqu´ ı va una lista de algunas rutas que. /usr/local/bin/. en mi sistema. usando el comando ls -dl : $ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dec 22 20:54 /usr/local Si tomamos la segunda columna de la izquierda. apuntan a ese inodo: /usr/local /usr/local/. todos dentro de /tmp: $ cd /tmp $ mkdir tic tac toe Por defecto. /usr/local/lib/.5120. /usr/local/sbin/. tendr´ a que enviar tres comandos separados de mkdir: $ mkdir ma/ra/villa mkdir: no se puede crear el directorio "ma/ra/villa": No such file or directory $ mkdir ma $ mkdir ma/ra $ mkdir ma/ra/villa 12 . /usr/local/games/. el comando mkdir no crea directorios padre para usted.. En ejemplo siguiente crea tres directorios nuevos. Entendiendo inodos..

Tendr´ a entonces el archivo /tmp/copiame con tama˜ no cero. y lea la p´ agina de manual. vamos a revisar con rapidez los comandos cp y mv que sirven para copiar. primero veamos el comando touch (tocar) para crear un archivo en /tmp: $ cd /tmp $ touch copiame Si el archivo ya exist´ ıa. s´ olo el comando echo: $ echo "primerarchivo" primerarchivo echo y redirecci´ on Ahora. Para aprender m´ as sobre el comando mkdir escriba man mkdir. entonces se crea un archivo vac´ ıo nuevo. excepto para cd ya que este es built-in (comando interno) de bash. Para comenzar. touch Ahora. el mismo comando echo pero redireccionando su salida: $ echo "primerarchivo" > copiame 13 . ¿no?. que toma sus argumentos y los imprime en la salida est´ andar (standard output ). Si el archivo no exist´ ıa. A esto podemos hacerlo mediante el comando echo (eco). le agregaremos algunos datos. como se ve a continuaci´ on: $ mkdir -p asi/es/mas/facil Bastante directo. echo Ahora que el archivo existe. renombrar y mover archivos y directorios. el comando touch actualiza el “mtime” del mismo (la sexta columna de la salida de ls -l). Esto servir´ a para casi todos los comandos que veremos aqu´ ı (por ejemplo man ls). Primero.mkdir -p Sin embargo. mkdir tiene una opci´ on -p que le indica crear cualquier directorio padre faltante.

el nombre del archivo que apunta a ´ el si cambiar´ a: $ mv copiame merenombraron $ ls -i merenombraron 648284 merenombraron Un n´ umero de inodo de un archivo movido o renombrado permanecer´ a igual mientras el archivo resida en el mismo filesystem que el archivo fuente. Este archivo ser´ a creado si no existiese. use el comando cat: $ cat copiame primerarchivo Bien. Por ejemplo. siendo este una copia del original copiame $ cp copiame mecopiaron Si investigamos.txt a /home/lucasperez. pues sus n´ umeros de inodos son diferentes $ ls -i copiame mecopiaron 648284 copiame 650704 mecopiaron mv Usemos ahora el comando mv para renombrar “copiame” a “merenombraron”. veremos que son distintos archivos.El signo mayor > le dice al shell que escriba la salida de echo a un archivo llamado copiame. Veamos otra manera de usar el comando mv. ya que contiene la palabra primerarchivo y el car´ acter newline (salto de l´ ınea): $ ls -l copiame -rw-r--r-1 root root 10 Dec 28 14:23 /usr/local cat y cp Para ver los contenidos de un archivo en una terminal. podemos ver que ahora el archivo copiame tiene 12 bites de tama˜ no. adem´ as de permitirnos renombrar archivos. escribir´ e: $ mv /var/tmp/miarchivo. Ahora podemos hacer una invocaci´ on b´ asica del comando cp para crear el archivo mecopiaron.txt /home/lucasperez 14 . para mover /var/tmp/miarchivo. y ser´ a sobreescrito si exist´ ıa previamente. Escribiendo ls -l. (Veremos m´ as de cerca los sistemas de archivos en la Parte 3 de esta serie de tutoriales). El n´ umero de inodo permanecer´ a igual. sin embargo. ya que este comando. nos permite mover uno o m´ as archivos hacia otra ubicaci´ on en la jerarqu´ ıa de directorios.

txt.txt /var/tmp/miarticulo2. Por ejemplo.txt y miarticulo2. el comando mv se encargar´ a de copiar miarchivo. puede tipear: $ mv /var/tmp/miarchivo.txt ser´ a movido a /home/lucasperez/miarchivo. Esto es porque cada sistema de archivos tiene su propio conjunto de inodos. el nuevo archivo miarchivo. Tambi´ en podemos usar el comando mv para mover varios archivos a un directorio. y luego borrar el primero de su sistema de archivo. miarchivo. para mover miarchivo1. Como usted estar´ a imaginando.txt a /home/lucasperez. cuando miarchivo. Si /home/lucasperez est´ a en un sistema de archivos distinto del de /home/lucasperez.Despu´ es de tipear ese comando.txt /home/lucasperez 15 .txt se traslada entre sistemas de archivos.txt en la nueva ubicaci´ on tendr´ a un nuevo n´ umero de inodo.txt al nuevo sistema de archivos.

tienen varias limitaciones. y ning´ un programa mantiene el archivo abierto. y no a directorios. La clase de la que hemos discutido hasta aqu´ ı son llamados hard links(enlaces permanentes). Cuando el u ´ltimo enlace permanente desaparece. los enlaces permanentes. Esto significa que no puede crear un enlace permanente desde /usr/bin/bash hacia /bin/bash si sus directorios / y /usr pertenecen a distintos sistemas de archivos. en vez de hacerlo directamente al inodo.4. Enlaces permanentes (Hard links ) Hemos mencionado ya el t´ ermino link (enlace) cuando nos referimos a la relaci´ on entre las entradas en los directorios (los nombre que tipeamos) y los inodos (el n´ umero de ´ ındice en el subyacente sistema de archivos que usualmente ignoramos). Uno es que s´ olo se pueden hacer enlaces permanentes a archivos. los enlaces permanentes trabajan en el nivel de los inodos para apuntar a un archivo en particular. Secci´ on 4. La segunda limitaci´ on es que no pueden expandirse a trav´ es de distintos sistemas de archivos. Linux remover´ a el archivo autom´ aticamente. Aunque . son enlaces permanentes a directorios creados por el sistema.. donde el enlace se refiere a otro archivo a trav´ es de su nombre. Los symlinks son un tipo de archivo especial. y el inodo persistir´ a en el sistema de archivos hasta que el enlace permanente desaparezca. En realidad hay dos clases de enlaces en Linux. Los symlinks no previene 16 . a usted ni siquiera como “root” se le permitir´ a crear otros. Para crear un nuevo enlace permanente se utiliza el comando ln: $ cd /tmp $ touch primerenlace $ ln primerenlace segundoenlace $ ls -i primerenlace segundoenlace 15782 primerenlace 15782 segundoenlace Continuando con enlaces permanentes Como podr´ a ver. Enlaces simb´ olicos (Soft links ) En la pr´ actica. Un n´ umero de inodo dado puede tener cualquier n´ umero de enlaces permanentes. y . Creando enlaces y removiendo archivos. los enlaces simb´ olicos (symlinks es como se suelen llamar) son utilizados m´ as usualmente que los enlaces permanentes. En los sistemas Linux.

Profundizando enlaces simb´ olicos. incluso directorios. en la primer columna un car´ acter l indica que se trata de un enlace simb´ olico.a un archivo de ser borrado. Sin embargo. Usted puede crear un enlace simb´ olico que apunte a cualquier tipo de objeto del sistema de archivos. Por un lado. segunda parte Considere una situaci´ on donde usted quiere crear un enlace en /tmp que apunte a /usr/local/bin. entonces el symlink deja de ser utilizable: se lo considera roto (broken en ingles) Continuando con enlaces simb´ olicos Un enlace simb´ olico puede ser creado agregando la opci´ on -s al comando ln: $ ln -s segundoenlace tercerenlace $ ls -l primerenlace segundoenlace tercerenlace -rw-rw-r-2 juanperez juanperez 0 Dec 31 19:16 primerenlace -rw-rw-r-2 juanperez juanperez 0 Dec 31 19:16 segundoenlace lrwxrwxrwx 1 juanperez juanperez 13 Dec 31 19:17 tercerenlace -> segundoenlace En la salida de ls -l los enlaces simb´ olicos pueden ser diferenciados de los archivos comunes de tres formas. Segundo. Y como la implementaci´ on de los enlaces simb´ olicos est´ a basada en rutas (y no inodos). pues si elimina el archivo hacia el cual apunta el enlace. el tama˜ no de un enlace simb´ olico es el n´ umero de car´ acteres del archivo apuntado (segundoenlace en nuestro caso). Deberia escribir algo como esto: $ ln -s /usr/local/bin bin1 $ ls -l bin1 lrwxrwxrwx 1 root root 17 14 Jan 21 15:23 bin1 -> /usr/local/bin . en la u ´ltima columna se ve el archivo apuntado (target m´ as precisamente) precedido por una flechita (->) y el nombre del enlace. esto tambi´ en puede hacer m´ as dif´ ıciles de entenderlos. Por u ´ltimo. Profundizando enlaces simb´ olicos. primera parte Los enlaces simb´ olicos son por lo general mucho m´ as flexibles que los permanentes. es perfectamente posible crear un enlace simb´ olico que apunte a un objeto de otro sistema de archivos.

puede crear un nombre alternativo para keychain de la siguiente manera: 18 . como por ejemplo “kc”./usr/local/bin Profundizando enlaces simb´ olicos. bin2 ahora est´ a roto o broken Profundizando enlaces simb´ olicos. Siendo root. los dos enlaces simb´ olicos reci´ en creados apuntan al mismo directorio./usr/local/bin bin2 $ ls -l bin2 lrwxrwxrwx 1 root root 14 Jan 21 15:24 bin2 -> . cuarta parte Es por esta raz´ on que es entonces buena idea evitar crear enlaces simb´ olicos con rutas relativas. teniendo acceso de root (como queda evidenciado por el prompt de bash: un # en vez del cl´ asico $). Considere por ejemplo el caso que usted quiera crear un nombre alternativo para un programa dentro de /usr/bin $ ls -l /usr/bin/keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/keychain Profundizando enlaces simb´ olicos. usted podr´ ıa querer crear un nombre alternativo para “keychain”. Necesitar´ a poseer los privilegios de root porque a los usuarios comunes no les est´ a permitido crear archivos en /usr/bin../usr/local/bin $ mkdir nuevodir $ mv bin2 nuevodir $ cd nuevodir $ cd bin2 bash: cd: bin2: No such file or directory Como el directorio /tmp/usr/local/bin no existe.. tercera parte Como podr´ a ver. entonces ya no podr´ a cambiar de directorio hacia bin2. quinta parte Siendo el usuario root.. en otras palabras. Sin embargo. En este ejemplo. si el segundo enlace es trasladado a otro directorio.O. hay muchos casos en que s´ ı ser´ au ´til. alternativamente: $ ln -s . entonces quedar´ a “roto” pues la ruta relativa ser´ a incorrecta: $ ls -l bin2 lrwxrwxrwx 1 root root 14 Jan 21 15:24 bin2 -> . Sin embargo.

hemos creado un enlace simb´ olico llamado kc que apunta al archivo /usr/bin/keychain. Esto entonces significa que kc ahora es un symlink roto. /usr/bin/keychain no existe m´ as. escribiendo /usr/local/bin/kc usted puede ejecutar el 19 . El siguiente ejemplo funcionar´ a a´ un despu´ es de que ambos archivos sean traslados: # cd /usr/bin # ln -s keychain kc # ls -l kc lrwxrwxrwx 1 root root 8 Oct 15 14:28 kc -> keychain # mv keychain kc /usr/local/bin -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain # ls -l /usr/local/bin/kc lrwxrwxrwx 1 root root 8 Oct 15 14:28 kc -> keychain /usr/local/bin/kc apunta al programa keychain que est´ a en el mismo directorio que kc. Por lo visto tanto los symlinks con rutas absolutas como aquellos con rutas relativas tienen sus m´ eritos. puede llegar a traernos problemas si decidi´ eramos mover ambos archivos (/usr/bin/keychain y /usr/bin/kc) a /usr/local/bin: # mv /usr/bin/keychain /usr/bin/kc /usr/local/bin # ls -l /usr/local/bin/keychain -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/local/bin/keychain # ls -l /usr/local/bin/kc -rwxr-xr-x 1 root root 17 Oct 15 14:03 kc -> /usr/bin/keychain Como hemos usado un path absoluto para crear nuestro enlace permanente. y usted deber´ a elegir el tipo de ruta apropiado para su aplicaci´ on. kc a´ un sigue apuntando a /usr/bin/keychain. sexta parte Aunque la soluci´ on reci´ en dada funcionar´ a. y como acababa de ser trasladado. pues ahora su ruta es /usr/local/bin/keychain. Frecuentemente ambos tipos de rutas funcionar´ an bien.# cd /usr/bin # ln -s /usr/bin/keychain kc # ls -l keychan -rwxr-xr-x 1 root root # ls -l kc -rwxr-xr-x 1 root root 10150 Dec 12 20:09 /usr/bin/keychain 17 Oct 15 14:03 kc -> /usr/bin/keychain En este simple ejmeplo. Ahora. Profundizando enlaces simb´ olicos.

preguntando antes de eliminar cada archivo). podr´ a abortar el comando en ejecuci´ on (rm -i en nuestro caso) tecleando Control-C. Al abortarlo. muchos administradores principiantes utilizan la opci´ on -i cuando eliminan archivos. Por ejemplo: $ rm -i arch1 arch2 rm: remove regular empty file ‘arch1’? y rm: remove regular empty file ‘arch2’? y En el ejemplo. deber´ a teclear una “y” (de yes ) seguida de un Enter para cada pregunta. el archivo entonces no ser´ a removido.bashrc usando el editor de textos que prefiera. La opci´ on -i le indica al comando rm que elimine archivos de modo interactivo (esto es. todos los cambios y modificaciones que hubiere ocasionado ya estar´ an hechos. Si tipea una “n”. Si usted hubiera hecho algo realmente mal. pero impediremos que continue hasta el final. Si usted reci´ en est´ a comenzando a familiarizarce con el comando rm. Por esta raz´ on. es hora de aprender a remover objestos de nuestro sistema de archivos. y luego salir y volver a entrar a la sesi´ on (“desloguearse” y vover a “loguearse”): alias rm="rm -i" 20 . Si la respuesta es s´ ı. Usualemente esto puede llevarse a cabo con el comando rm. rm Ahora que conocemos c´ omo usar los comandos cp. puede ser de gran ayuda que agregue la siguiente linea a su archivo /.programa keychain. mv y ln. el comando rm pregunta por cada archivo especificado si se dedea realmente elinar el archivo. $ cd /tmp $ touch arch1 arch2 $ ls -l arch1 arch2 -rw-r--r-1 root root 0 Oct 19 14:47 arch1 -rw-r--r-1 root root 0 Oct 19 14:47 arch2 $ rm arch1 arch2 $ ls -l arch1 arch2 ls: arch1: No such file or directory ls: arch2: No such file or directory Es importante destacar que en Linux. es para siempre. una vez que un archivo es removido (rm).

Ahora. cada vez que usted escriba rm. Una es eliminar primero todos los contenidos del directorio que queremos remover para luego usar el comando rm para borrar el directorio mismo: $ $ $ $ mkdir midir touch midir/arch1 rm midir/arch1 rmdir midir Este m´ etodo es comunmente llamado “eliminaci´ on de directorios para tontos”. tenemos dos opciones. rm -rf es el m´ etodo preferido para elimiar un ´ arbol de directorios. rmdir Para remover directorios. rm y directorios La mejor forma de remover un directorio es usando la opci´ on de rm recursive force (recursivo y forzado). Tenga cuidado usando rm -rf ya que todo su poder pueder volverse en contra. su shell bash lo convertir´ a autom´ aticamente en el comando rm -i. 21 . De esta manera se le indica al comando rm que remueva el directorio especificado como as´ ı tambi´ en todos los objetos dentro del mismo: $ rm -rf midir Generalmente. De esta manera. rm siempre funcionar´ a de modo interactivo. Todos los usuarios experimentados. como as´ ı tambi´ en administradores ahorran trabajo utilizando el comando rm -rf que veremos a continuaci´ on.

En estas situaciones. veamos que sucede su especificamos un patr´ on que no coincide con ning´ un objeto de sistema de archivos. usted puede tipear: $ rm arch* El comod´ ın * coincide con cualquier caracter o secuencia de caracteres. si usted quisiera simplemente remover todos los archivos que comenzaran con arch o que directamente se llamen arch. Entendiendo las no-coincidencias (non-matches ) Si usted quisiera listar todos los objetos del sistema de archivos de /etc que comiencen con g como as´ ı tambi´ en que se llame solamente g. arch2.arch8 en el directorio actual de trabajo. e incluso con “ning´ un caracter”. trataremos de listar todos los archivos de /usr/bin que comiencen con asdf y termine con jkl.5. Secci´ on 5: Usando wildcards (comodines) Introduciendo comodines En el uso diario de Linux. usted puede tipear: $ ls -d /etc/g* /etc/gconf /etc/ggi /etc/gimp /etc/gnome /etc/gpm Ahora. como veremos m´ as adelante. Este soporte. As´ ı. le permite a usted especificar m´ ultiples archivos al mismo tiempo usando un patr´ on de comod´ ın (wildcard pattern ). incluyendo potencialmente el archivo asdfjkl: 22 . tambi´ en llamado “globbing” (por hist´ oricas razones). podr´ a removerlos a todos juntos tipeando: $ rm arch[1-8] O. Bash y otros comandos de Linux interpretar´ an este patr´ on mirando en el disco y encontrar´ an los archivos que coincidan con ´ el. puede llegar a ser tedioso y molesto tener que tipear cada uno de los archivos en la linea de comandos: $ rm arch1 arch2 arch3 arch4 arch5 arch6 arch6 arch8 Para resolver el problema reci´ en mostrado.. los comodines pueden ser usados para muchas cosas adem´ as de un simple eliminado de archivos. usted puede tomar ventaja del soporte de comodines de Linux. Por supuesto. si usted tiene archivos arch1.. En el ejemplo siguiente. hay muchas ocaciones en que usted necesitar´ a llevar a cabo alguna operaci´ on simple (rm por ejemplo) en muchos elementos del sistema de archivos simultaneamente...

De otro modo. cuando no se produce ninguna coincidencia. /tmp/notes?txt coincidir´ a tanto con /tmp/notes. Sin embargo. como es. pero permite m´ as rigidez. Por ejemplo: miarchivo? coincidir´ a con todos los archivos cuyo nombre consista de miarchivo seguido de un solo caracter. Veamos algunos ejemplos: /etc/g* coincidir´ a con todos los archivos del directorio /etc que comiencen con g. Usted puede usar caracteres especiales para expansi´ on: El caracter * coincidir´ a con cero o m´ as caracteres. incluido nada”. o archivos llamados g.$ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory Entendiendo las no-coincidencias. Sintaxis de comodines: ? El caracter ? coincide con cualquier caracter simple. Sintaxis de comodines: [ ] Este tipo de comod´ ın es similar a ?. Sintaxis de comodines: * Ahora que hemos visto como trabajna el englobamiento (globbing ) hecharemos una mirada a la sitaxis de los comodines. Esto significa que “cualquier cosa puede ir aqu´ ı. As´ ı. ese patr´ on coincide con uno o m´ as archivos del subyacente sistema de archivos. bash deja el argumento con patr´ on y todo. /tmp/my*1 coincidir´ a con los archivos de /tmp que comiencen con my y terminen con 1. Normalmente. cuando ls no encuentra el archivo /usr/bin/asdf*jkl nos muestra el apropiado mensaje de error. y bash reemplaza el patr´ on por una lista de todos los objetos coincidentes separados entre si por espacios vac´ ıos. La regla operativa aqu´ ı es que los patrones deben ser expandidos s´ olo si coinciden con elementos del sistema de archivos. cuando especificamos un patr´ on. permancen como son y psan literalmente al programa con que fueron llamados. incluyendo el archivo my1. continuaci´ on Ah´ ı vimos que ocurre. Para usar este 23 .txt como con notes txt si ambos existieran.

changeLog y changelog. ChangeLog. ] y *). usar los comodines corchetes es de gran utilidad para hacer coincidencias con variaciones en letras may´ usculas. Como podr´ a ver. coloque los caracteres que usted quisiera hacer coincidir dentro de los corchetes []. El comod´ ın se expandir´ a mientras a´ un exista alguno de estos archivos en el directorio actual.comod´ ın. si quisiera crear un archivo que contenga la cadena de texto (string en ingles) [fo]*. necesitaremos tener cuidados para tipear argumentos de un comando que contengan algunos de estos caracteres. Tambi´ en podr´ a usar un gui´ on .txt Si el patr´ on [fo]* coincide con alg´ un objeto del dirctorio actual de trabajo. excepto miarch9 Advertencias sobre el uso de comodines Ahora que conocemos que ciertos caracteres trabajan como comodines. Veamos algunos ejemplos: miarch[12] coincidir´ a con miarch1 y con miarch2. excepto en que en vez de coincidir con cualquier caracter de los listados dentro de los corchetes. ls /etc/[0-9]* listar´ a todos los objetos del sistema de archivos del directorio /etc que comiencen con un n´ umero. De esta manera se le indica a bash que no realice ninguna expanci´ on de comodines: 24 . [Cc]hange[Ll]og coincidir´ a con Changelog. coincidir´ a con los que no han sido listados entre [! y ]. [.txt en vez de ver literalmente [fo]* como hubieramos querido.para especificar un rango. Como bash trata de modo especial los caracteres comodines (?. Sint´ axis de comodines: [!] La construcci´ on [!] es similar a []. o combinar varios de estos. Ejemplo: rm miarch[!9] remover´ a todos los archivos llamados miarch seguido de alg´ un u ´ nico caracter. Por ejemplo. entonces usted encontrar´ a el nombre de estos archivos dentro de /tmp/miarchivo. ser´ a importante tener algunas consideraciones. ls /tmp/[A-Za-z]* listar´ a todos los objetos del sistema de archivos del directorio /tmp que comiencen con un caracter alfab´ etico (may´ uscula o min´ uscula). Para solucionarlo una posibilidad es rodear los caracteres con comillas simples. la siguiente l´ ınea de comando no lo lograr´ a: $ echo [fo]* > /tmp/nuevoarchivo. La expresi´ on resultante coincidir´ a con la ocurrencia de alguno de esos caracteres.

pero el comillado doble permite algunas limitadas expansiones. deber´ a encerrarlo entre comillas simples o precederlo de otra barra invertida \\ (que ser´ a expandido a \).$ echo ’[fo]*’ > /tmp/miarchivo.txt Advertencias sobre el uso de comodines.txt Las dos soluciones (comillas simples y sentencias de escape) tienen el mismo efecto.Para mayor informaci´ on sobre comillas escriba man 8 glob y lea la secci´ on titulada QUOTING (COMILLAS). 25 . Comillas simples vs. Si usted est´ a reamlente planeando rendir los ex´ amenes LPI considere realizar estas tareas. Cuando usted est´ e interesado en pasar texto literalmente como argumento a un comando las comillas simples son la mejor opci´ on. Alternativamente. Para obtener mayor informaci´ on sobre expansiones de comodines tipee en su bash man 7 glob. es buen momento de mencionar que si usted quiere especificar un caracter \. continuaci´ on Si utiliza las comillas simples. puede usar sentencias de escape con barras invertidas para indicarle a bash que [. Y ya que estamos hablando de expresiones con barras invertidas. ] y * deben ser tratados literalmente en vez de como comodines: $ echo \[fo\]\* > /tmp/miarchivo. dobles Si prueba. notar´ a que utilizar comillas dobles funcionar´ a similiarmente a las simples en el ejemplo anterior. su nuevo archivo contendr´ a la cadena [fo]* como se esperaba.

Con los temas que ha aprendido aqu´ ı (las bases de bash. Y hablando de la certificacion LPIC. usted pronto estar´ a listo para probar el nivel 1 de Certificaci´ on del Linux Professional Institute. se muestra como usar los programas constructores de bash para escribir sus propios scripts de bash. entonces le recomendamos que estudie los Bibliograf´ ıas sugeridas de la siguiente secci´ on. ya ha llegado al final de nuestra revisi´ on sobre los fundamentos de Linux. las cuales han sido cuidadosamente seleccionadas para aumentar y reforzar lo cubierto en este tutorial. si esto es algo que le interesa. permisos y propiedad y gerenciamiento de cuentas de usuarios entre otras cosas. Bibliograf´ ıa En la serie de art´ ıculos “Bash by example ” de developerWorks. enlaces y comodines) podremos encarar tranquilamente el pr´ oximo tutorial sobre administraci´ on b´ asica. En ´ el veremos expresiones regulares. Continuando con esta serie de tutoriales. Esta serie (particularmente la parte 1 y 2) ser´ an una buena preparaci´ on para el examen LPIC nivel 1: 26 . Esperamos que haya sido de ayuda para reafirmar sus conocimientos. comandos b´ asicos de Linux.6. Secci´ on 6: Resumen y bibliograf´ ıa Resumen Felicitaciones.