jueves, 21 de septiembre de 2017

Manipulando Archivos y Directorios

Llegados a este punto, ¡estamos preparados para algo de trabajo real! En este capítulo presentaremos los siguientes comandos:
  • cp – Copia archivos y directorios
  • mv – Mueve/renombra archivos y directorios
  • mkdir – Crea directorios
  • rm – Borra archivos y directorios
  • ln – Crea enlaces duros y simbólicos
Estos cinco comandos están entre los comandos de Linux usados más frecuentemente. Se usan para manipular tanto archivos como directorios.

Aunque, para ser francos, algunas de las tareas que realizan estos comandos se hacen más fácilmente con un gestor gráfico de archivos. Con un gestor de archivos, podemos arrastrar y soltar un archivo de un directorio a otro, cortar y pegar archivos, borrar archivos, etc. Entonces, ¿por qué utilizamos estos programas antiguos de línea de comandos?

La respuesta es poder y flexibilidad. Mientras que es fácil realizar manipulaciones simples de archivos con un gestor gráfico de archivos, las tareas complicadas pueden ser más fáciles con la línea de comandos. Por ejemplo, ¿cómo podríamos copiar todos los archivos HTML de un directorio a otro, pero sólo copiando los archivos que no existan en el directorio de destino o que sean más recientes que las versiones en el directorio de destino? Bastante difícil con un gestor de archivos. Bastante fácil con la línea de comandos:

 cp -u *.html destination

Comodines

Antes de empezar a usar nuestros comandos, necesitamos hablar sobre una característica del shell que hace a estos comandos muy potentes. Como el shell utiliza mucho los nombres de archivo, ofrece caracteres especiales para ayudarnos a especificar rápidamente grupos o nombres de archivo. Estos caracteres especiales se llaman comodines. Utilizar comodines (también conocidos como globbing) te permiten seleccionar nombres de archivo basados en patrones o caracteres. A continuación la lista los comodines y lo que seleccionan:


*             
Cualquier carácter

?             
Cualquier carácter individual

[caracteres] 

Cualquier carácter que sea miembro del grupo caracteres

[!caracteres] 
Cualquier carácter que no sea miembro del grupo caracteres

[[:class:]]   
Cualquier carácter que sea miembro de una clase específica

Clases de caracteres más comúnmente usados:


[:alnum:] Cualquier carácter alfanumérico

[:alpha:] Cualquier carácter alfabético
[:digit:] Cualquier numérico
[:lower:] Cualquier letra minúscula
[:upper:] Cualquier letra mayúscula

Utilizar comodines posibilita construir criterios de selección para nombres de archivo muy sofisticados. Aquí tienes algunos ejemplos de patrones y qué indican:

*               

Todos los archivos

g*              

Todos los archivos que empiezan por “g”

b*.txt          
Todos los archivos que empiecen por “b” seguido de cualquier carácter y terminados en “.txt”

Data???         
Todos los archivos que empiezan por “Data” seguido de exactamente tres caracteres

[abc]*          
Todos los archivos que empiezan por “a”, “b” o “c”

BACKUP.[0-9][0-9][0-9]  
Todos los archivos que empiezan por “BACKUP.” seguido de exactamente tres números

[[:upper:]]*    
Todos los archivos que empiezan por una letra mayúscula

[![:digit:]]*   
Todos los archivos que no empiezan por un número

*[[:lower:]123] 
Todos los archivos que terminan por una letra minúscula o por los números “1”, “2” o “3”

Los comodines pueden usarse con cualquier comando que acepte nombres de archivo como argumento.

Rangos de caracteres

Si vienes de otros entornos como-Unix o has estado leyendo otros libros sobre el asunto, puede que hayas encontrado las notaciones de rango de caracteres [A -Z] o [a – z]. Son notaciones tradicionales de Unix y funcionaban en las versiones antiguas de Linux también. Pueden funcionar todavía, pero tienes que ser muy cuidadoso con ellas porque no producirán los resultados esperados a menos que estén adecuadamente configuradas. Por ahora, deberías evitar utilizarlas y usar las clases de caracteres en su lugar.

Los comodines funcionan en la GUI también

Los comodines son especialmente valiosos no sólo porque se usan tan frecuentemente en la línea de comandos, sino que también son soportados por algunos gestores gráficos de archivos.

En Nautilus (el gestor de archivos de GNOME), puedes seleccionar archivos utilizando el elemento de menú Edit/Select Pattern. Sólo introduce un patrón de selección de archivos con comodines y los archivos que actualmente se vean en el directorio se marcarán para seleccionarlos.

El algunas versiones de Dolphin y Konqueror (los gestores de archivos de KDE), puedes introducir comodines directamente en la barra de direcciones. Por ejemplo, si quieres ver todos los archivos que empiecen por “u” minúscula en el directorio /usr/bin, introduce “/usr/bin/u*” en la barra de direcciones y mostrará el resultado.

Muchas ideas originales de la línea de comandos han pasado a la interfaz gráfica también. Ésta es una de las muchas cosas que hace al escritorio Linux tan poderoso.

 mkdir – Crear directorios

El comando mkdir se utiliza para crear directorios. Funciona así:

 mkdir directorio...

Una nota sobre la notación: Cuando tres puntos siguen a un argumento en la descripción de un comando (como el de arriba), significa que el argumento puede ser repetido, o sea:

 mkdir dir1

crearía un único directorio llamado “dir1”, mientras

 mkdir dir1 dir2 dir3

crearía tres directorios llamados “dir1”, “dir2” y “dir3”

cp – Copiar archivos y directorios

El comando cp copia archivos o directorios. Puede usarse de dos formas difrerentes:

 cp item1 item2

para copiar el archivo o directorio “item1” al archivo o directorio “item2” y:

 cp item... directorio

para copiar múltiples elementos (tanto archivos como directorioOpcción           Significados) a un directorio.


Opciones útiles y ejemplos

Aquí
 tenemos algunas de las opciones más usadas (la opción corta y la opción larga equivalente) para cp:

-a, --archive 
Copia los archivos y directorios y todos sus atributos, incluyendo propietarios y permisos. Normalmente, las copias toman los atributos por defecto del usuario que realiza la copia.

-i, --interactive 
Antes de sobrescribir un archivo existente, pide al usuario confirmación. Si esta opción no es especificada, cp sobrescribirá silenciosamente los archivos.

-r, --recursive
Copia recursivamente los directorios y su contenido. Esta opción (o la opción -a) se requiere cuando se copian directorios.

-u, --update 
Cuando copiamos archivos de un directorio a otro, sólo copia archivos que o no existan, o sean más nuevos que el existente correspondiente, en el directorio de destino.

-v, --verbose 
Muestra mensajes informativos cuando la copia se ha completado.Ejemplo de CP:

cp archivo1 archivo2 
Copia el archivo1 al archivo2. Si el archivo2 existe, se sobrescribe con el contenido del archivo1. Si el archivo2 no existe, se crea.

cp -i archivo1 archivo2 
Igual que el anterior, salvo que si el archivo2 existe, el usuario es preguntado antes de que sea sobrescrito.

cp archivo1 archivo2 
directorio1 Copia el archivo1 y el archivo2 en el directorio1. El directorio1 debe existir.

cp directorio1/* directorio2 
Usando un comodín, todos los archivos en directorio1 se copian a directorio2. directorio2 debe existir.

cp -r directorio1 directorio2 
Copia del contenido del directorio1 al directorio2. Si el directorio2 no existe, se crea y, después de la copia, contendrá los mismos elementos que el directorio1.
Si el directorio2 existe, entonces el directorio1 (y su contenido) se copiará dentro de directorio2.


mv – Mover y renombrar archivos

El comando mv tanto mueve como renombra archivos, dependiendo de como se use. En ambos casos, el nombre de archivo original no existirá tras la operación. mv se usa de forma muy parecida a cp:

 mv item1 item2

Para mover o renombrar el archivo o directorio “item1” a “item2” o:

 mv item... directorio

para mover uno o más elementos de un directorio a otro.


Opciones útiles y ejemplos

mv comparte muchas de las mismas opciones que cp:

Opciones de mv

-i, --interactive 
Antes de sobrescribir un archivo existente, pide confirmación al usuario. Si esta opción no está especificada, mv sobrescribirá silenciosamente los archivos.

-u, --update 
Cuando movemos archivos de un directorio a otro, sólo mueve archivos que, o no existen, o son más nuevos que los archivos correspondientes existentes en el directorio de destino.

-v, --verbose 
Muestra mensajes informativos cuando el movimiento ha sido realizado.
Ejemplos de mv

mv archivo1 archivo2 
Mueve el archivo1 al archivo2. Si el archivo2existe, se sobrescribe con el contenido de archivo1. Si archivo2 no existe, se crea. En ambos casos, archivo1 deja de existir.

mv -i archivo1 archivo2 
Igual que el anterior, excepto que si el archivo2 existe, el usuario es preguntado antes de que sea sobrescrito.

mv archivo1 archivo2 directorio1 
Mueve archivo1 y archivo2 al directorio1. directorio1 tiene que existir previamente.

mv directorio1 directorio2 
Si el directorio2 no existe, crea el directorio2 y mueve el contenido de directorio1 dentro de directorio2 y borra el directorio1.
Si directorio2 existe, mueve directorio1 (y 
su contenido) dentro del directorio2.

rm – Eliminar archivos y directorios

El comando rm se utiliza para eliminar (borrar) archivos y directorios:

 rm elemento...


donde “elemento” es uno o más archivos o directorios.

Opciones útiles y ejemplos

Opciones más comunes de rm:

-i, --interactive 
Antes de borrar un archivo existente, pide la confirmación del usuario. Si esta opción no es especificada, rm borrará silenciosamente los archivos.

-r, --recursive 
Borra directorios recursivamente. Ésto significa que si un directorio que estamos borrando contiene subirectorios, los borra también. Para borrar un directorio, esta opción debe ser especificada.

-f, --force 
Ignora archivos no existentes y no pregunta. Ésto prevalece sobre la opción –-interactive.

-v, --verbose 
Muestra mensajes informativos cuando el borrado es realizado.

Ejemplos de rm

rm archivo1 
Borra el archivo1 silenciosamente

rm -i archivo1 
Igual que antes, excepto que pide confirmación al usuario antes de borrarlo.

rm -r archivo1 directorio1 
Borra el archivo1 y el directorio1 y su contenido

rm -rf archivo1 directorio1 
Igual que antes, excepto que si archivo1 o directorio1 no existen, rm continuará silenciosamente.

¡Ten cuidado con rm!

Los sistemas operativos como-Unix, por ejemplo Linux, no tienen un comando para restaurar archivos. Una vez que borras algo con rm, se ha ido. Linux asume que eres listo y sabes lo que haces.

Ten especial cuidado con los comodines. 
Piensa en este ejemplo clásico. Digamos que quieres borrar sólo los archivos HTML en un directorio. Para hacerlo, escribes:

rm *.html

lo cual es correcto, pero si accidentalmente dejas un espacio entre el “*” y el “.html” como aquí:

rm * .html

el comando rm borrará todos los archivos en el directorio y luego se quejará de que no hay ningún archivo llamado “.html”.

Aquí tienes un práctico consejo. Cada vez que uses comodines con rm (¡además de comprobar cuidadosamente tu escritura!), prueba el comodín primero con ls. Esto te permitirá ver los archivos que van a ser borrados. Entonces pulsa la tecla de la flecha hacia arriba para recuperar el comando y reemplaza el ls con rm.

ln – Crear Enlaces

El comando ln se usa para crear tanto enlaces duros como enlaces simbólicos. Se utiliza de una de estas dos formas:

 ln archivo link

para crear un enlace duro, y:

 ln -s elemento link

para crear un enlace simbólico donde “elemento” es un archivo o un directorio.

Enlaces duros

Los enlaces duros son la forma original de Unix para crear enlaces, comparados con los enlaces simbólicos, que son más modernos. Por defecto, todo archivo tiene un enlace duro que le da al archivo su nombre. Cuando creamos un enlace duro, creamos una entrada de directorio adicional para un archivo. Los enlaces duros tienen dos limitaciones importantes:

Un enlace duro no puede enlazar a un archivo fuera de su propio sistema de archivos. Ésto significa que un enlace no puede enlazar a un archivo que no está en la misma partición de disco que el enlace mismo.

Un enlace duro no puede enlazar a un directorio.

Un enlace duro es indistinguible del fichero mismo. Al contrario que un enlace simbólico, cuando listas el contenido de un directorio que contiene un enlace duro no veras ninguna indicación especial para el enlace. Cuando un enlace duro se borra, el enlace se elimina pero el contenido del fichero continua existiendo (o sea, su espacio no es liberado) hasta que todos los enlaces al archivo son borrados.

Es importante ser conscientes de los enlaces duros porque los podrías encontrar de vez en cuando, pero las prácticas modernas prefieren los enlaces simbólicos, que veremos a continuación.

Enlaces simbólicos

Los enlaces simbólicos se crearon para solucionar las limitaciones de los enlaces duros. Los enlaces simbólicos funcionan creando un tipo especial de archivo que contiene un texto apuntando al archivo o directorio enlazado. En este aspecto, funcionan de forma muy parecida a los accesos directos de Windows, pero precedieron a esta característica de Windows en muchos años ;-)

Un archivo enlazado por un enlace simbólico, y el propio enlace simbólico son casi indistinguibles uno del otro. Por ejemplo, si escribes algo en el enlace simbólico, el archivo enlazado será modificado también. De todas formas cuando borras un enlace simbólico, sólo el enlace se borra, no el archivo. Si el archivo es borrado antes que el enlace simbólico, el enlace continuará existiendo, pero no apuntará a nada. En este caso, el enlace se dice que está roto. En muchas implementaciones, el comando ls mostrará los enlaces rotos en un color distintivo, como rojo, para revelar su presencia.

El concepto de enlace puede parecer muy confuso, pero aguanta. Vamos a probar todo ésto y, con suerte, quedará claro.

Construyamos un terreno de juego

Como vamos a realizar manipulación real de archivos, construiremos un sitio seguro para “jugar” con nuestros comandos de manipulación de archivos. Primero necesitamos un directorio donde trabajar. Crearemos uno en nuestro directorio home y lo llamaremos “playground”.

Creando directorios

El comando mkdir se usa para crear un directorio. Para crear nuestro terreno de juego primero nos aseguraremos de que estamos en nuestro directorio home y luego crearemos nuestro nuevo directorio:

 [me@linuxbox ~]$ cd

 [me@linuxbox ~]$ mkdir playground

Para hacer nuestro terreno de juego un poco más interesante, crearemos un par de directorios dentro llamados “dir1” y “dir2”. Para hacerlo, cambiaremos nuestro directorio de trabajo actual a playground y ejecutaremos otro mkdir:

 [me@linuxbox ~]$ cd playground

 [me@linuxbox playground]$ mkdir dir1 dir2

Fíjate que el comando mkdir acepta múltiples argumentos permitiéndonos crear ambos directorios con un único comando.

Copiando archivos

A continuación, pongamos algunos datos en nuestro terreno de juego. Lo haremos copiando un archivo. Utilizando el comando cp, copiaremos el archivo passwd del directorio /etc al directorio de trabajo actual:

 [me@linuxbox playground]$ cp /etc/passwd

Fíjate cómo hemos usado la abreviatura para el directorio de trabajo actual, el punto que inicia la ruta. Así que ahora si ejecutamos un ls, veremos nuestro archivo:

  [me@linuxbox playground]$ ls -l
  total 12
  drwxrwxr-x 2 me me 4096 2008-01-10 16:40 dir1
  drwxrwxr-x 2 me me 4096 2008-01-10 16:40 dir2
  -rw-r--r-- 1 me me 1650 2008-01-10 16:07 passwd

Ahora, sólo por divertirnos, repitamos la copia usando la opción “-v” (verbose) para ver que hace:

 [me@linuxbox playground]$ cp -v /etc/passwd
 `/etc/passwd' -> `./passwd'

El comando cp realiza la copia otra vez, pero esta vez muestra un mensaje conciso indicando que operación estaba realizando. Fíjate que cp sobrescribe la primera copia sin ningún aviso. De nuevo es un caso de cp asumiendo que sabes lo que estás haciendo. Para tener un aviso, incluiremos la opción “-i” (interactive):

 [me@linuxbox playground]$ cp -i /etc/passwd
 cp: overwrite `./passwd'?

Responder a la consola escribiendo un “y” hará que el archivo se sobrescriba, cualquier otro carácter (por ejemplo, “n”) hará que cp deje al archivo en paz.

Moviendo y renombrando archivos

Bien, el nombre “passwd” no parece muy divertido y esto es un terreno de juego, así que lo cambiaremos por otra cosa:

 [me@linuxbox playground]$ mv passwd fun

Divirtámonos un poco más moviendo nuestro archivo renombrado a cada directorio y volvamos atrás de nuevo:

[me@linuxbox playground]$ mv fun dir1

para moverlo primero al directorio dir1, luego:

[me@linuxbox playground]$ mv dir1/fun dir2
para moverlo de dir1 a dir2, después:

[me@linuxbox playground]$ mv dir2/fun

para finalmente traerlo de nuevo al directorio de trabajo actual. A continuación, veamos el efecto de mv en los directorios. Primero moveremos nuestro archivo de datos al interior del dir1 de nuevo:

 [me@linuxbox playground]$ mv fun dir1

luego moveremos dir1 dentro de dir2 y lo confirmaremos con ls:

 [me@linuxbox playground]$ mv dir1 dir2
 [me@linuxbox playground]$ ls -l dir2
 total 4
 drwxrwxr-x 2 me me 4096 2008-01-11 06:06 dir1
 [me@linuxbox playground]$ ls -l dir2/dir1
 total 4
 -rw-r--r-- 1 me me 1650 2008-01-10 16:33 fun

Fíjate que como dir2 ya existía, mv movió dir1 dentro de dir2. Si dir2 no hubiera existido, mv habría renombrado dir1 a dir2. Finalmente, pondremos todo como estaba:

 [me@linuxbox playground]$ mv dir2/dir1
 [me@linuxbox playground]$ mv dir1/fun

Creando enlaces duros

Ahora intentaremos crear algunos enlaces. Primero los enlaces duros. Crearemos enlaces a nuestro archivo de datos de la siguiente forma:

 [me@linuxbox playground]$ ln fun fun-hard
 [me@linuxbox playground]$ ln fun dir1/fun-hard
 [me@linuxbox playground]$ ln fun dir2/fun-hard

Así que ahora tenemos cuatro instancias del archivo “fun”. Echemos un vistazo a nuestro directorio playground:

 [me@linuxbox playground]$ ls -l
 total 16
 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir1
 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir2
 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun
 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard

Una cosa que notarás es que el segundo campo en el listado para fun y fun-hard contiene en ambos un “4” que es el número de enlaces duros que existen ahora para el archivo. Recordarás que un archivo tiene siempre al menos un enlace duro porque el nombre del archivo se crea con un enlace. Entonces, ¿cómo sabemos que fun y fun-hard son, en realidad, el mismo archivo? En este caso, ls no es muy útil. Aunque podemos ver que fun y fun-hard tienen los dos el mismo tamaño (campo 5), nuestro listado no nos ofrece una forma de estar seguro. Para solucionar el problema, vamos a tener que cavar un poco más hondo.

Cuando pensamos en los enlaces duros, puede ayudarnos imaginar que los archivos está compuestos de dos partes: la parte de datos que alberga el contenido del archivo y la parte del nombre que contiene el nombre del archivo. Cuando creamos enlaces duros, realmente estamos creando partes de nombre adicionales que se refieren todos a la misma parte de datos. El sistema asigna una cadena de sectores del disco llamada inodo, la cual es asociada con la parte del nombre. Cada enlace duro por lo tanto se refiere a un inodo específico que alberga el contenido del archivo.

El comando ls tiene una forma de revelar esta información. Se invoca con la opción “-i”:

 [me@linuxbox playground]$ ls -li
 total 16
 12353539 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir1
 12353540 drwxrwxr-x 2 me me 4096 2008-01-14 16:17 dir2
 12353538 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun
 12353538 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard

En esta versión de la lista, el primer campo es el número del inodo y, como podemos ver, tanto fun como fun-hard comparten el mismo número de inodo, lo que confirma que son el mismo archivo.

Creando enlaces simbólicos

Los enlaces simbólicos fueron creados para superar las dos desventajas de los enlaces duros: Los enlaces duros no pueden salir de su dispositivo físico y tampoco pueden enlazar directorios, sólo archivos. Los enlaces simbólicos son un tipo especial de archivo que contiene un texto apuntando al archivo o directorio de destino.

Crear enlaces simbólicos es similar a crear enlaces duros:

 [me@linuxbox playground]$ ln -s fun fun-sym
 [me@linuxbox playground]$ ln -s ../fun dir1/fun-sym
 [me@linuxbox playground]$ ln -s ../fun dir2/fun-sym

El primer ejemplo es muy sencillo, simplemente añadimos la opción “-s” para crear un enlace simbólico en lugar de un enlace duro. Pero ¿qué pasa con los dos siguientes? Recuerda, cuando creamos un enlace simbólico, estamos creando un texto describiendo donde está el archivo de destino con respecto al enlace simbólico. Es más fácil verlo si miramos el resultado de ls:

 [me@linuxbox playground]$ ls -l dir1
 total 4
 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard
 lrwxrwxrwx 1 me me 6 2008-01-15 15:17 fun-sym -> ../fun

El listado para fun-sym en dir1 muestra que es un enlace simbólico con una “l” en el primer carácter del primer campo y que apunta a “../fun”, lo cual es correcto. En cuanto a la localización de fun-sym, fun está en el directorio superior. Ten en cuenta que, la longitud del archivo enlace simbólico es 6, el número de caracteres de la cadena “../fun” en lugar de la longitud del archivo al que está apuntando.

Cuando creamos enlaces simbólicos, puedes usar rutas absolutas:

  [me@linuxbox playground]$ ln -s /home/me/playground/fun dir1/fun-sym

o rutas relativas, como hicimos en el anterior ejemplo. Usar rutas relativas es más recomendable porque permite que un directorio que contiene enlaces simbólicos pueda ser renombrado y/o movido sin romper los enlaces.

Además de archivos normales, los enlaces simbólicos también pueden enlazar directorios:

 [me@linuxbox playground]$ ln -s dir1 dir1-sym
 [me@linuxbox playground]$ ls -l
 total 16
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
 lrwxrwxrwx 1 me me 4 2008-01-16 14:45 dir1-sym -> dir1
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2
 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun
 -rw-r--r-- 4 me me 1650 2008-01-10 16:33 fun-hard
 lrwxrwxrwx 1 me me 3 2008-01-15 15:15 fun-sym -> fun

Eliminando archivos y directorios

Como vimos anteriormente, el comando rm se usa para borrar archivos y directorios. Vamos a usarlo para limpiar nuestro terreno de juego un poco. Primero, borraremos uno de nuestros enlaces duros:

 [me@linuxbox playground]$ rm fun-hard
 [me@linuxbox playground]$ ls -l
 total 12
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
lrwxrwxrwx 1 me me 4 2008-01-16 14:45 dir1-sym -> dir1
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2
 -rw-r--r-- 3 me me 1650 2008-01-10 16:33 fun
 lrwxrwxrwx 1 me me 3 2008-01-15 15:15 fun-sym -> fun

Ha funcionado como esperábamos. El archivo fun-hard se ha ido y el contador de enlaces de fun muestra que se ha reducido de cuatro a tres, como indica el segundo campo del listado del directorio. A continuación, borraremos el archivo fun, y sólo por divertirnos, incluiremos la opción “-i” para ver qué hace:

 [me@linuxbox playground]$ rm -i fun
 rm: remove regular file `fun'?

Escribe “y” en la consola y el archivo se borra. Pero miremos al mensaje de ls ahora. ¿Ves lo que le ha pasado a fun-sym? Como era un enlace simbólico apuntando a un archivo que ahora no existe, el enlace está roto:

 [me@linuxbox playground]$ ls -l
 total 8
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
 lrwxrwxrwx 1 me me 4 2008-01-16 14:45 dir1-sym -> dir1
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2
 lrwxrwxrwx 1 me me 3 2008-01-15 15:15 fun-sym -> fun

La mayoría de las distribuciones Linux configuran ls para mostrar los enlaces rotos. En Fedora, los enlaces rotos ¡se muestran en texto rojo parpadeante! La presencia de un enlace roto no es, por sí misma peligrosa pero si indica un poco de desorden. Si intentamos usar un enlace roto veremos ésto:

 [me@linuxbox playground]$ less fun-sym
 fun-sym: No such file or directory

Limpiemos un poco. Borraremos los enlaces simbólicos:

 [me@linuxbox playground]$ rm fun-sym dir1-sym
 [me@linuxbox playground]$ ls -l
 total 8
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir1
 drwxrwxr-x 2 me me 4096 2008-01-15 15:17 dir2

Una cosa que hay que recordar sobre los enlaces simbólicos es que la mayoría de las operaciones con archivos son realizadas en el archivo de destino, no en el propio enlace. rm es una excepción. Cuando borras un enlace, es el enlace el que es eliminado, no el archivo de destino.

Finalmente, borraremos nuestro terreno de juego. Para hacerlo, volveremos a nuestro directorio home y usaremos rm con la opción recursiva (-r) para borrar playground y todo su contenido, incluidos los subdirectorios:

 [me@linuxbox playground]$ cd
 [me@linuxbox ~]$ rm -r playground

Creando enlaces simbólicos con la GUI

Los gestores de archivos tanto en GNOME como en KDE proporcionan un método fácil y automático para crear enlaces simbólicos. Con GNOME, presionando las teclas Ctrl-Shift mientras arrastramos un archivo creamos un enlace en lugar de copiar (o mover) el archivo. En KDE un pequeño menú aparece donde arrastremos el archivo, ofreciendo la opción de copiarlo, moverlo o enlazarlo.


Resumiendo

Hemos abarcado mucho terreno y no llevará algo de tiempo asentarlo completamente. Realiza el ejercicio del terreno de juego una y otra vez hasta que tenga sentido. Es importante tener una buena comprensión de la manipulación básica de comandos y comodines. Siéntete libre para ampliar el ejercicio del terreno de juego añadiendo más archivos y directorios, usando comodines para archivos concretos para varias operaciones. El concepto de enlace es un poco confuso al principio, pero tómate tiempo para aprender como funcionan. Pueden ser un verdadero salvavidas.

Para saber más

Un artículo sobre los enlaces simbólicos:

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.