LPIC 01 - Preparacion Para Examen de Certificacion

Share Embed Donate


Short Description

Download LPIC 01 - Preparacion Para Examen de Certificacion...

Description

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

´Indice 1. Secci Secci´ o ´n 1. Antes de Comenzar

2

2. Secci Secci´ on o ´n 2. Introducci´ on a bash

4

3. Secci Secci´ o ´n 3. Usando los comandos de Linux

9

4. Secci Secci´ o ´n 4. Creando enlac laces y removiendo archivos.

16

5. Secci Secci´ on o ´n 5: Usando   wildcards (como dines)

22

6. Secci Secci´ o ´n 6: Resumen y bibliograf´ıa

26

1

1.

Secci´ on 1. Antes de Comenzar on 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  nado (Instituto Profesional de Linux). En este tutorial, haremos una introducci´ on a bash (el shell est´ a ndar de linux), veremos como tomar ventajas de los andar comandos Linux est´ andar (como ls, cp o mv), explicaremos i-nodos y enlaces andar simb´olicos olicos y permanentes (soft y hard links ), ), y mucho m´as. as. Al final de este tutorial, usted contar´ a con una s´ olida base en los fundamentos de Linux, olida y estar´a listo para aprender algunas tareas b´ asicas asicas de administraci´on o n 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 prep arado para pa ra rendir rend ir (si as´ as´ı lo quisiera) para pa ra 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´ olicos andar andar de Linux para procesamiento de textos t extos junto con tuber´ tuber´ıas (pipelines ) y redirecciones. A lo largo del camino aparecer´ an consejos, trucos y sugerencias para an mantener el tutorial interesante y pr´ actico, actico, a´ un para aquellos con una buena un experiencia en Linux. Para los principiantes este material resultar´ a nuevo, pero los m´as as experimentados usuarios de Linux ver´ an que este tutorial coman pletar´a y redondear´ a su manejo de los fundamentos de Linux.

2

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: [email protected]. Para consultas t´ecnicas sobre el contenido de ´este seminario, cont´ actese con el autor, a [email protected].

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.

3

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 traba jo 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

4

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   filesystem . 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 a´rbol, 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´a s, podemos incluir el directorio .. en alguna ruta relativa, permiti´endonos dirigirnos a alg´ u n directorio que se encuentre en alguna rama lateral del a´rbol 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 refiere 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´ a cter (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

8

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

Especificando la opci´ o n -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

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. Si especifica un archivo, ls s´ olo mostrar´ a este archivo, pero si especifica 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 modificaci´ 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

tmp src ssl

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´ o n. La columna siguiente lista el n´ umero de links para cada objeto del   filesystem . 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 modificaci´ o n del objeto (“last modified 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 flechita ->  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 especificar 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  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.old

Entendiendo inodos, primera parte

En un sistema de archivos, a cada objeto le es asignado un ´ındice unico, ´ 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 filesystem  (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

13394 13408 23779 36737 784

sbin share src ssl tmp

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 filesystem  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 ultimo ´ 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´ o n es que no pueden expandirse a trav´es de distintos sistemas de archivos. 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.

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 refiere 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´a cter l indica que se trata de un enlace simb´ olico. Segundo, el tama˜ no de un enlace simb´ o lico es el n´ u mero 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 flechita (->) y el nombre del enlace.

Profundizando enlaces simb´olicos, primera parte

Los enlaces simb´ olicos son por lo general mucho m´ as flexibles 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´ o n 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

14 Jan 21 15:23 bin1 -> /usr/local/bin

17

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 significa 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 especificado 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 modificaciones que hubiere ocasionado ya estar´ an hechos, pero impediremos que continue hasta el final. 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 prefiera, 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 especificado 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´ o ricas razones), le permite a usted especificar m´ ultiples archivos al mismo tiempo usando un patr´ on de comod´ın (wildcard pattern ) . Bash y otros comandos de Linux interpretar´ a n este patr´ o n 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 especificamos 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 especificamos 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 significa 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:

a con todos los archivos cuyo nombre conmiarchivo? coincidir´ sista 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 especificar un rango, o combinar varios de estos. Veamos algunos ejemplos:

a con  miarch1   y con  miarch2. El comod´ın se miarch[12]  coincidir´ 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.

a todos los objetos del sistema de archivos ls /etc/[0-9]*   listar´ 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´ o n [!] 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 especificar 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 final de nuestra revisi´ o n sobre los fundamentos de Linux. Esperamos que haya sido de ayuda para reafirmar 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´ o n 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 Certificaci´ on del   Linux Professional Institute . Y hablando de la certificacion 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

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF