Professional Documents
Culture Documents
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.
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.
2.
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.
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
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
3.
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
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
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.
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
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.
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.
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
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)
18
En este simple ejmeplo, hemos creado un enlace simb olico llamado kc que apunta al archivo /usr/bin/keychain.
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.
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.
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
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).
25
6.
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