You are on page 1of 26

Preparaci on para examen de certicaci 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.

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 nal 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 nalice 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 certicaci 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.

Acerca del autor


Residiendo en Albuquerque, Nuevo M exico, Daniel Robbins es el Arquitecto en jefe de la metadistribuci on Gentoo Linux. Tambi en escribe art culos y seminarios para IBM developerWorks y Servicios de Desarrollo de Intel, y ha contribu do en la edici on de distintos libros como Samba y Linux SuSE. Daniel disfruta su tiempo con su esposa Mary y su hija Hadassah. Puede contactarlo en la siguiente direcci on: drobbins@gentoo.org. Para consultas t ecnicas sobre el contenido de este seminario, cont actese con el autor, a drobbins@gentoo.org.

Unas palabras sobre la Traducci on


En el Departamento Universitario de Inform atica (DUI) de la Universidad Nacional de C ordoba, en la provincia de C ordoba, Argentina; se tradujo este seminario del idioma ingl es al espa nol para el habla hispana. 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, 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, de manera tal que comience a familiarizarse con ellas.

2.

Secci on 2. Introducci on a bash Un shell

Si usted ha usado un sistema Linux, 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, el nombre de directorio actual de trabajo, ambos, etc. 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.

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, entonces usted est a usando alg un otro shell, pero si usted se est a preparando para el examen 101, le recomendamos cambiar a bash. (El pr oximo tutorial, sobre administraci on b asica, cubre c omo cambiar su shell a trav es del comando chsh).

Sobre bash
Bash, es un acr onimo para Bourne-again-shell (shell re-nacido), es el shell por defecto en la mayor a de los sistemas Linux. El trabajo de un shell es obedecer sus comandos de manera que usted pueda interactuar con su sistema Linux. Cuando termine de introducir comandos, puede solicitarle a su shell salir a trav es de exit o logout. En ese momento usted regresar a al prompt de inicio de sesi on (log in). A prop osito, tambi en puede salir de su sesi on tecleando control-D en prompt de su bash

Usando el comando cd
Como seguramente habr a notado, situarse en prompt de su bash no es para nada emocionante. As que comencemos a usar bash para navegar alrededor de nuestro sistema de archivos lesystem. En el prompt, tipee lo siguiente (obviamente sin incluir el $): $ cd / Con esto usted le ha dicho a bash que usted quiere trabajar en el directorio /, tambi en conocido como root (ra z). Todos los directorios en el sistema forman un arbol, y / es considerado la ra z de este. cd ajusta al directorio donde usted trabajar a, tambi en conocido como current working directory (actual directorio de trabajo).

Rutas (Paths )
Para ver el directorio actual de trabajo de bash, escriba: $ pwd / En el ejemplo anterior (sobre cd), el argumento / es llamado un path (como ya dijimos, un camino o ruta) hacia donde queremos dirigirnos. En particular, el argumento / es un path absoluto, o sea que la ubicaci on dentro del arbol del sistema de archivos es indicada en forma relativa a su root.

Rutas Absolutas
Como muestra, ac a hay varias rutas absolutas distintas a las del ejemplo anterior: /dev /usr /usr/bin /usr/local/bin Como podr a ver, lo que estas rutas absolutas tienen en com un es que todas comienzan con una barra /. Si le damos a cd el path /usr/local/bin, primero cd entrar a al directorio /, desde all luego entrar a al directorio usr, y reci en desde all entrar a a bin. Las rutas absolutas siempre comienzan a evaluarse a partir de /. 5

Rutas Relativas
El otro tipo de rutas es el de las rutas relativas. bash, cd, y otros comandos siempre interpretan este tipo de rutas como relativas al directorio actual de trabajo. Las rutas relativas nunca comienzan con una barra /. As que si estamos en /usr : $ cd /usr Entonces, 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 .. (punto punto)


Las rutas relativas pueden tambi en contener uno o mas directorios .. (punto punto). El directorio .. es un directorio especial que apunta al directorio padre del actual. De esta manera, y continuando con el ejemplo anterior: $ pwd /usr/local/bin $ cd .. $ pwd /usr/local Como usted puede ver, el nuevo directorio actual de trabajo es /usr/local. De esta forma podemos volver atr as un directorio con respecto al cual estamos situados.

M as usos de los .. (punto punto)


Adem as, podemos incluir el directorio .. en alguna ruta relativa, permiti endonos dirigirnos a alg un directorio que se encuentre en alguna rama lateral del arbol de directorios (esto es, obviamente, sin tener que utilizar una ruta absoluta). Por ejemplo: $ pwd /usr/local 6

$ cd ../share $ pwd /usr/share

Ejemplos de rutas relativas


Las rutas relativas pueden volverse un tanto complicadas. Ac a van algunos ejemplos, ninguno muestra el directorio al cual se accedi o. Intente entender donde quedar a situado despu es de tipear cada uno de estos comandos: $ cd /bin $ cd ../usr/share/zoneinfo $ cd /usr/X11R6/bin $ cd ../lib/X11 $ cd /usr/bin $ cd ../bin/../bin Ahora, pruebe chequear lo que usted pens o con lo que realmente sucede al teclear los comandos.

Entendiendo . (un punto)


Antes de terminar con el comando cd hay algunas cosas m as que vale la pena mencionar. Primero hablaremos de otro directorio especial llamado . (un punto), que se reere al directorio actual. Aunque este directorio no suele ser utilizado con el comando cd, si es u til, por ejemplo, para ejecutar alg un programa situado en el directorio actual, como se ve: $ ./miprograma En este ejemplo, se ejecutar a el archivo ejecutable miprograma que resida en el directorio actual de trabajo.

cd y el directorio home
El directorio home es, para cada usuario, el directorio sobre el cual puede trabajar libremente. Si lo que usted quiere es cambiar el directorio actual a su directorio home, entonces escriba: $ cd 7

Cuando utilice el comando cd sin argumentos, este lo llevara a su directorio home (casa en castellano). Ser a el directorio /root para el super-usuario, y /home/nombredeusuario para usuarios comunes. Ahora bien... 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. Si el archivo est a es su directorio home, entonces usted puede escribir: $ ./miprograma /home/juanlopez/miarchivo.txt Sin embargo, usar rutas absolutas no es siempre lo m as conveniente ni c omodo. Afortunadamente, puede hacer uso del car acter (tilde) para hacer lo mismo: $ ./miprograma ~/miarchivo.txt

Directorios home de otros usuarios


bash expandir a un simple ~ (tilde) para apuntar a su propio directorio home, pero tambi en usted puede usar el tilde para apuntar a los directorio home de los otros usuarios. Por ejemplo, si quiere referirse a un archivo llamado lucas.txt en el directorio home de lucasperez, entonces puede tipear lo siguiente: $ ./miprograma ~lucasperez/lucas.txt

3.

Secci on 3. Usando los comandos de Linux Introduciendo el comando ls

Ahora, vamos a darle una peque na mirada al comando ls. Muy probablemente usted ya haya tenido contacto con el comando ls, pero por si no lo sabe, 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 share src

ssl tmp

Especicando la opci on -a, podr a ver todos los archivos del directorio, incluyendo los archivos ocultos (aquellos que comienzan con un punto (.). Como se ve en el siguiente ejemplo, ls -a muestra tambi en los directorios especiales . y .. (en realidad son enlaces a esos dos directorios): $ ls . .. X11R6 bin distfiles doc gentoo-x86 i686-linux i686-pc-linux-gnu include info lib libexec local man portageshare portage.old sbin tmp src ssl

Listado completo de informaci on


Al comando ls usted le puede especicar uno o m as archivos o directorios a trav es de la linea de comandos. Si especica un archivo, ls s olo mostrar a este archivo, pero si especica un directorio, entonces ls listar a el contenido de ese directorio.La opci on -l le resultar a de gran utilidad cuando quiera ver informaci on sobre permisos, tiempos de modicaci on, tama no o propiedad de los contenidos listados.

Listado completo de informaci on, continuamos


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

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.old sbin share src ssl tmp -> ../var/tmp

La primer columna muestra la informaci on sobre permisos para cada tem listado. M as adelante explicaremos como interpretar esta informaci on. La columna siguiente lista el n umero de links para cada objeto del lesystem. Tambi en esto ser a explicado a la brevedad. La tercer y cuarta columna listan el propietario del elemento, y el grupo al cual pertenece, respectivamente. La quinta muestra el tama no de los objetos, mientras que la sexta lista cuando fue realizada la u ltima modicaci on del objeto (last modied time o mtime ). La u ltima columna es el nombre del objeto. Si el archivo es un enlace simb olico, entonces usted ver a una echita -> y la ruta hacia la cual el link simb olico apunta.

Mirando los directorios


A veces, usted querr a mirar los directorios, en vez de dentro de ellos. Para estas situaciones puede especicar la opci on -d, la que le dir a a ls que mire los directorios, 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 ../share Dec 12 23:10 ../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

Puede usar ls -d para mirar los directorios sin desreferenciarlos, o por el contrario puede utilizar -R para hacer lo opuesto: no s olo mirar dentro de los directorios, sino que recursivamente mirar dentro de todos los directorios dentro del actual. No incluiremos ning un ejemplo de la salida que produce esta opci on (ya que generalmente es muy grande), pero usted puede probar con los comandos ls -R y ls -Rl para tener una idea de como trabajan. Finalmente, la opci on -i para el comando ls puede ser usada para mostrar el n umero de inodos (inodes ) de los objetos del lesystem 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.old 13394 13408 23779 36737 784 sbin share src ssl tmp

Entendiendo inodos, primera parte


En un sistema de archivos, a cada objeto le es asignado un ndice u nico, llamado un n umero de inodo. Esto parecer a ser trivial, pero entender completamente el concepto de inodos es esencial para comprender muchas de las operaciones de un lesystem (como ya dijimos, sistema de archivos). Por ejemplo, considere los links . y .. que aparecen en cada directorio. Para tener una acabada idea de qu e directorio realmente es ..m primero vea el n umero de inodo de /usr/local $ ls -id /usr/local 5120 /usr/local Como ve, el directorio /usr/local tiene el n umero de inodo 5120. Ahora revise el n umero de inodo de /usr/local/bin/.. : $ ls -id /usr/local/bin/.. 5120 /usr/local/bin/..

Entendiendo inodos, segunda parte


Como puede ver, /usr/local/bin/.. y /usr/local tienen el mismo n umero de inodo. Veamos como explicar esta revelaci on. Hasta reci en, consider abamos que /usr/local era el directorio realmente. Ahora, hemos visto que el inodo 5120 es el verdadero directorio, y adem as hemos hallado dos entradas distintas (en distintos directorios tambi en, llamadas enlaces o links ), que apuntan a ese inodo. Tanto /usr/local/ como /usr/local/bin/.. son enlaces al inodo 11

5120. A pesar de que el inodo 5120 existe en s olo un lugar del disco duro, m ultiples enlaces pueden apuntar a el: el inodo 5120 es la verdadera entrada en el disco.

Entendiendo inodos, tercera parte


De hecho, usted puede ver el n umero total de veces que el inodo 5120 es referenciado, 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, veremos que el directorio /usr/local (inodo 5120) es referenciado ocho veces. Aqu va una lista de algunas rutas que, en mi sistema, apuntan a ese inodo: /usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/src/..

mkdir
Veamos ahora brevemente el comando mkdir que puede ser usado para crear directorios nuevos. En ejemplo siguiente crea tres directorios nuevos, tic, tac y toe, todos dentro de /tmp: $ cd /tmp $ mkdir tic tac toe Por defecto, el comando mkdir no crea directorios padre para usted; la ruta completa hasta el ante- ultimo elemento debe existir previamente. De esta manera, si quiere crear los directorio ma/ra/villa, 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

mkdir -p
Sin embargo, mkdir tiene una opci on -p que le indica crear cualquier directorio padre faltante, como se ve a continuaci on: $ mkdir -p asi/es/mas/facil Bastante directo, no?. Para aprender m as sobre el comando mkdir escriba man mkdir, y lea la p agina de manual. Esto servir a para casi todos los comandos que veremos aqu (por ejemplo man ls), excepto para cd ya que este es built-in (comando interno) de bash.

touch
Ahora, vamos a revisar con rapidez los comandos cp y mv que sirven para copiar, renombrar y mover archivos y directorios. Para comenzar, primero veamos el comando touch (tocar) para crear un archivo en /tmp: $ cd /tmp $ touch copiame Si el archivo ya exist a, el comando touch actualiza el mtime del mismo (la sexta columna de la salida de ls -l). Si el archivo no exist a, entonces se crea un archivo vac o nuevo. Tendr a entonces el archivo /tmp/copiame con tama no cero.

echo
Ahora que el archivo existe, le agregaremos algunos datos. A esto podemos hacerlo mediante el comando echo (eco), que toma sus argumentos y los imprime en la salida est andar (standard output ). Primero, s olo el comando echo: $ echo "primerarchivo" primerarchivo

echo y redirecci on
Ahora, el mismo comando echo pero redireccionando su salida: $ echo "primerarchivo" > copiame

13

El signo mayor > le dice al shell que escriba la salida de echo a un archivo llamado copiame. Este archivo ser a creado si no existiese, y ser a sobreescrito si exist a previamente. Escribiendo ls -l, podemos ver que ahora el archivo copiame tiene 12 bites de tama no, 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, use el comando cat: $ cat copiame primerarchivo Bien. Ahora podemos hacer una invocaci on b asica del comando cp para crear el archivo mecopiaron, siendo este una copia del original copiame $ cp copiame mecopiaron Si investigamos, veremos que son distintos archivos, 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. El n umero de inodo permanecer a igual; sin embargo, 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 lesystem que el archivo fuente. (Veremos m as de cerca los sistemas de archivos en la Parte 3 de esta serie de tutoriales). Veamos otra manera de usar el comando mv, ya que este comando, adem as de permitirnos renombrar archivos, nos permite mover uno o m as archivos hacia otra ubicaci on en la jerarqu a de directorios. Por ejemplo, para mover /var/tmp/miarchivo.txt a /home/lucasperez, escribir e: $ mv /var/tmp/miarchivo.txt /home/lucasperez 14

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

15

4.

Secci on 4. Creando enlaces y removiendo archivos. 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). En realidad hay dos clases de enlaces en Linux, La clase de la que hemos discutido hasta aqu son llamados hard links(enlaces permanentes). Un n umero de inodo dado puede tener cualquier n umero de enlaces permanentes, y el inodo persistir a en el sistema de archivos hasta que el enlace permanente desaparezca. Cuando el u ltimo enlace permanente desaparece, y ning un programa mantiene el archivo abierto, Linux remover a el archivo autom aticamente. 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, los enlaces permanentes trabajan en el nivel de los inodos para apuntar a un archivo en particular. En los sistemas Linux, los enlaces permanentes, tienen varias limitaciones. Uno es que s olo se pueden hacer enlaces permanentes a archivos, y no a directorios. Aunque . y .. son enlaces permanentes a directorios creados por el sistema, a usted ni siquiera como root se le permitir a crear otros. La segunda limitaci on es que no pueden expandirse a trav es de distintos sistemas de archivos. Esto signica 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.

Enlaces simb olicos (Soft links )


En la pr actica, los enlaces simb olicos (symlinks es como se suelen llamar) son utilizados m as usualmente que los enlaces permanentes. Los symlinks son un tipo de archivo especial, donde el enlace se reere a otro archivo a trav es de su nombre, en vez de hacerlo directamente al inodo. Los symlinks no previene 16

a un archivo de ser borrado, pues si elimina el archivo hacia el cual apunta el enlace, 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. Por un lado, en la primer columna un car acter l indica que se trata de un enlace simb olico. Segundo, el tama no de un enlace simb olico es el n umero de car acteres del archivo apuntado (segundoenlace en nuestro caso). Por u ltimo, en la u ltima columna se ve el archivo apuntado (target m as precisamente) precedido por una echita (->) y el nombre del enlace.

Profundizando enlaces simb olicos, primera parte


Los enlaces simb olicos son por lo general mucho m as exibles que los permanentes. Usted puede crear un enlace simb olico que apunte a cualquier tipo de objeto del sistema de archivos, incluso directorios. Y como la implementaci on de los enlaces simb olicos est a basada en rutas (y no inodos), es perfectamente posible crear un enlace simb olico que apunte a un objeto de otro sistema de archivos. Sin embargo, esto tambi en puede hacer m as dif ciles de entenderlos.

Profundizando enlaces simb olicos, segunda parte


Considere una situaci on donde usted quiere crear un enlace en /tmp que apunte a /usr/local/bin. 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

O, alternativamente: $ ln -s ../usr/local/bin bin2 $ ls -l bin2 lrwxrwxrwx 1 root root

14 Jan 21 15:24 bin2 -> ../usr/local/bin

Profundizando enlaces simb olicos, tercera parte


Como podr a ver, los dos enlaces simb olicos reci en creados apuntan al mismo directorio. Sin embargo, si el segundo enlace es trasladado a otro directorio, entonces quedar a roto pues la ruta relativa ser a incorrecta: $ ls -l bin2 lrwxrwxrwx 1 root root 14 Jan 21 15:24 bin2 -> ../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, entonces ya no podr a cambiar de directorio hacia bin2; en otras palabras, bin2 ahora est a roto o broken

Profundizando enlaces simb olicos, cuarta parte


Es por esta raz on que es entonces buena idea evitar crear enlaces simb olicos con rutas relativas. Sin embargo, hay muchos casos en que s ser au til. 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, quinta parte


Siendo el usuario root, usted podr a querer crear un nombre alternativo para keychain, como por ejemplo kc. En este ejemplo, teniendo acceso de root (como queda evidenciado por el prompt de bash: un # en vez del cl asico $). Necesitar a poseer los privilegios de root porque a los usuarios comunes no les est a permitido crear archivos en /usr/bin. Siendo root, puede crear un nombre alternativo para keychain de la siguiente manera:

18

# 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, hemos creado un enlace simb olico llamado kc que apunta al archivo /usr/bin/keychain.

Profundizando enlaces simb olicos, sexta parte


Aunque la soluci on reci en dada funcionar a, 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, kc a un sigue apuntando a /usr/bin/keychain, y como acababa de ser trasladado, /usr/bin/keychain no existe m as, pues ahora su ruta es /usr/local/bin/keychain. Esto entonces signica que kc ahora es un symlink roto. Por lo visto tanto los symlinks con rutas absolutas como aquellos con rutas relativas tienen sus m eritos, y usted deber a elegir el tipo de ruta apropiado para su aplicaci on. Frecuentemente ambos tipos de rutas funcionar an bien. 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. Ahora, escribiendo /usr/local/bin/kc usted puede ejecutar el 19

programa keychain.

rm
Ahora que conocemos c omo usar los comandos cp, mv y ln, es hora de aprender a remover objestos de nuestro sistema de archivos. Usualemente esto puede llevarse a cabo con el comando rm. $ 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, una vez que un archivo es removido (rm), es para siempre. Por esta raz on, muchos administradores principiantes utilizan la opci on -i cuando eliminan archivos. La opci on -i le indica al comando rm que elimine archivos de modo interactivo (esto es, preguntando antes de eliminar cada archivo). Por ejemplo: $ rm -i arch1 arch2 rm: remove regular empty file arch1? y rm: remove regular empty file arch2? y En el ejemplo, el comando rm pregunta por cada archivo especicado si se dedea realmente elinar el archivo. Si la respuesta es s , deber a teclear una y (de yes ) seguida de un Enter para cada pregunta. Si tipea una n, el archivo entonces no ser a removido. Si usted hubiera hecho algo realmente mal, podr a abortar el comando en ejecuci on (rm -i en nuestro caso) tecleando Control-C. Al abortarlo, todos los cambios y modicaciones que hubiere ocasionado ya estar an hechos, pero impediremos que continue hasta el nal. Si usted reci en est a comenzando a familiarizarce con el comando rm, puede ser de gran ayuda que agregue la siguiente linea a su archivo /.bashrc usando el editor de textos que preera, y luego salir y volver a entrar a la sesi on (desloguearse y vover a loguearse): alias rm="rm -i"

20

Ahora, cada vez que usted escriba rm, su shell bash lo convertir a autom aticamente en el comando rm -i. De esta manera, rm siempre funcionar a de modo interactivo.

rmdir
Para remover directorios, tenemos dos opciones. 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. Todos los usuarios experimentados, como as tambi en administradores ahorran trabajo utilizando el comando rm -rf que veremos a continuaci on.

rm y directorios
La mejor forma de remover un directorio es usando la opci on de rm recursive force (recursivo y forzado). De esta manera se le indica al comando rm que remueva el directorio especicado como as tambi en todos los objetos dentro del mismo: $ rm -rf midir Generalmente, rm -rf es el m etodo preferido para elimiar un arbol de directorios. Tenga cuidado usando rm -rf ya que todo su poder pueder volverse en contra.

21

5.

Secci on 5: Usando wildcards (comodines) Introduciendo comodines

En el uso diario de Linux, 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. En estas situaciones, 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, usted puede tomar ventaja del soporte de comodines de Linux. Este soporte, tambi en llamado globbing (por hist oricas razones), le permite a usted especicar m ultiples archivos al mismo tiempo usando un patr on de comod n (wildcard pattern ). Bash y otros comandos de Linux interpretar an este patr on mirando en el disco y encontrar an los archivos que coincidan con el. As , si usted tiene archivos arch1, arch2,...,arch8 en el directorio actual de trabajo, podr a removerlos a todos juntos tipeando: $ rm arch[1-8] O, si usted quisiera simplemente remover todos los archivos que comenzaran con arch o que directamente se llamen arch, usted puede tipear: $ rm arch* El comod n * coincide con cualquier caracter o secuencia de caracteres, e incluso con ning un caracter. Por supuesto, los comodines pueden ser usados para muchas cosas adem as de un simple eliminado de archivos, como veremos m as adelante.

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, usted puede tipear: $ ls -d /etc/g* /etc/gconf /etc/ggi /etc/gimp /etc/gnome /etc/gpm

Ahora, veamos que sucede su especicamos un patr on que no coincide con ning un objeto de sistema de archivos. En el ejemplo siguiente, trataremos de listar todos los archivos de /usr/bin que comiencen con asdf y termine con jkl, incluyendo potencialmente el archivo asdfjkl: 22

$ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory

Entendiendo las no-coincidencias, continuaci on


Ah vimos que ocurre. Normalmente, cuando especicamos un patr on, ese patr on coincide con uno o m as archivos del subyacente sistema de archivos, y bash reemplaza el patr on por una lista de todos los objetos coincidentes separados entre si por espacios vac os. Sin embargo, cuando no se produce ninguna coincidencia, bash deja el argumento con patr on y todo, como es. As , cuando ls no encuentra el archivo /usr/bin/asdf*jkl nos muestra el apropiado mensaje de error. La regla operativa aqu es que los patrones deben ser expandidos s olo si coinciden con elementos del sistema de archivos. De otro modo, permancen como son y psan literalmente al programa con que fueron llamados.

Sintaxis de comodines: *
Ahora que hemos visto como trabajna el englobamiento (globbing ) hecharemos una mirada a la sitaxis de los comodines. Usted puede usar caracteres especiales para expansi on: El caracter * coincidir a con cero o m as caracteres. Esto signica que cualquier cosa puede ir aqu , incluido nada. Veamos algunos ejemplos: /etc/g* coincidir a con todos los archivos del directorio /etc que comiencen con g, o archivos llamados g. /tmp/my*1 coincidir a con los archivos de /tmp que comiencen con my y terminen con 1, incluyendo el archivo my1.

Sintaxis de comodines: ?
El caracter ? coincide con cualquier caracter simple. Por ejemplo: miarchivo? coincidir a con todos los archivos cuyo nombre consista de miarchivo seguido de un solo caracter. /tmp/notes?txt coincidir a tanto con /tmp/notes.txt como con notes txt si ambos existieran.

Sintaxis de comodines: [ ]
Este tipo de comod n es similar a ?, pero permite m as rigidez. Para usar este 23

comod n, coloque los caracteres que usted quisiera hacer coincidir dentro de los corchetes []. La expresi on resultante coincidir a con la ocurrencia de alguno de esos caracteres. Tambi en podr a usar un gui on - para especicar un rango, o combinar varios de estos. Veamos algunos ejemplos: miarch[12] coincidir a con miarch1 y con miarch2. El comod n se expandir a mientras a un exista alguno de estos archivos en el directorio actual. [Cc]hange[Ll]og coincidir a con Changelog, ChangeLog, changeLog y changelog. Como podr a ver, usar los comodines corchetes es de gran utilidad para hacer coincidencias con variaciones en letras may usculas. ls /etc/[0-9]* listar a todos los objetos del sistema de archivos del directorio /etc que comiencen con un n umero. 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).

Sint axis de comodines: [!]


La construcci on [!] es similar a [], excepto en que en vez de coincidir con cualquier caracter de los listados dentro de los corchetes, coincidir a con los que no han sido listados entre [! y ]. Ejemplo: rm miarch[!9] remover a todos los archivos llamados miarch seguido de alg un u nico caracter, excepto miarch9

Advertencias sobre el uso de comodines


Ahora que conocemos que ciertos caracteres trabajan como comodines, ser a importante tener algunas consideraciones. Como bash trata de modo especial los caracteres comodines (?, [, ] y *), necesitaremos tener cuidados para tipear argumentos de un comando que contengan algunos de estos caracteres. Por ejemplo, si quisiera crear un archivo que contenga la cadena de texto (string en ingles) [fo]*, la siguiente l nea de comando no lo lograr a: $ echo [fo]* > /tmp/nuevoarchivo.txt Si el patr on [fo]* coincide con alg un objeto del dirctorio actual de trabajo, entonces usted encontrar a el nombre de estos archivos dentro de /tmp/miarchivo.txt en vez de ver literalmente [fo]* como hubieramos querido. Para solucionarlo una posibilidad es rodear los caracteres con comillas simples. De esta manera se le indica a bash que no realice ninguna expanci on de comodines: 24

$ echo [fo]* > /tmp/miarchivo.txt

Advertencias sobre el uso de comodines, continuaci on


Si utiliza las comillas simples, su nuevo archivo contendr a la cadena [fo]* como se esperaba. Alternativamente, puede usar sentencias de escape con barras invertidas para indicarle a bash que [, ] y * deben ser tratados literalmente en vez de como comodines: $ echo \[fo\]\* > /tmp/miarchivo.txt Las dos soluciones (comillas simples y sentencias de escape) tienen el mismo efecto. Y ya que estamos hablando de expresiones con barras invertidas, es buen momento de mencionar que si usted quiere especicar un caracter \, deber a encerrarlo entre comillas simples o precederlo de otra barra invertida \\ (que ser a expandido a \).

Comillas simples vs. dobles


Si prueba, notar a que utilizar comillas dobles funcionar a similiarmente a las simples en el ejemplo anterior, pero el comillado doble permite algunas limitadas expansiones. Cuando usted est e interesado en pasar texto literalmente como argumento a un comando las comillas simples son la mejor opci on. Para obtener mayor informaci on sobre expansiones de comodines tipee en su bash man 7 glob- Para mayor informaci on sobre comillas escriba man 8 glob y lea la secci on titulada QUOTING (COMILLAS). Si usted est a reamlente planeando rendir los ex amenes LPI considere realizar estas tareas.

25

6.

Secci on 6: Resumen y bibliograf a Resumen

Felicitaciones; ya ha llegado al nal de nuestra revisi on sobre los fundamentos de Linux. Esperamos que haya sido de ayuda para rearmar sus conocimientos. Con los temas que ha aprendido aqu (las bases de bash, comandos b asicos de Linux, enlaces y comodines) podremos encarar tranquilamente el pr oximo tutorial sobre administraci on b asica. En el veremos expresiones regulares, permisos y propiedad y gerenciamiento de cuentas de usuarios entre otras cosas. Continuando con esta serie de tutoriales, usted pronto estar a listo para probar el nivel 1 de Certicaci on del Linux Professional Institute. Y hablando de la certicacion LPIC, si esto es algo que le interesa, entonces le recomendamos que estudie los Bibliograf as sugeridas de la siguiente secci on, las cuales han sido cuidadosamente seleccionadas para aumentar y reforzar lo cubierto en este tutorial.

Bibliograf a
En la serie de art culos Bash by example de developerWorks, se muestra como usar los programas constructores de bash para escribir sus propios scripts de bash. Esta serie (particularmente la parte 1 y 2) ser an una buena preparaci on para el examen LPIC nivel 1:

26

You might also like