Comando ln para crear vínculos de archivos

Extracto

@pedroruizhidalg― Linux puede dar a un archivo más de un nombre usando la orden ln. Tal vez te interese hacer referencia a un archivo usando diferentes nombres para acceder a él desde diferentes directorios. A estos nombres adicionales se les conoce como vínculos.

Abreviaturas usadas

Descripción

La orden ln lleva dos argumentos: el nombre del archivo original y el nuevo nombre del archivo adicional. La operación ls listará ambos nombres de archivo, si bien, en realidad, físicamente ser trata de un solo archivo.

Existen dos tipos de vínculos, los vínculos simbólicos y los vínculos duros.

Ejecución

Vínculos duros:

Como forma general:

$ ln nombre-del-archivo-original nombre-añadido-del-archivo

Veamos un ejemplo práctico.

$ touch archivoOriginal
$ echo "este es el contenido del archvivo Original" > archivoOriginal 
$ cat archivoOriginal 
este es el contenido del archvivo Original
$ ln archivoOriginal otroarchivo
$ ls
archivoOriginal otroarchivo
$ cat otroarchivo 
este es el contenido del archvivo Original
$

Puede parecer que se trate de una copia, pero no lo es. Realmente estamos accediendo al mismo archivo con otro nombre. Si ahora estuviera dando clases pondría el ejemplo. Yo contesto a mi esposa cuando me llama “Pedro” y a mi hija cuando me llama “papá”, si bien yo sigo siendo el mismo. Pasemos a otra cosa:

En el ejemplo anterior he puesto en negrita lo que tenemos que teclear y he dejado en texto normal el resultado que nos ofrece el ordenador. Pasemos a explicar los pasos.

  1. Con touch archivoOriginal creamos un archivo vacío.
  2. Con la siguiente orden echo introducimos en el archivoOriginal la cadena de texto que está entre comillas.
  3. Con la orden cat comprobamos el contenido de archivoOriginal.
  4. El comando ln crea un vínculo a archivoOriginal.
  5. Mediante ls vemos que ahora disponemos de dos archivos diferentes.
  6. Con cat otroarchivo listamos su contenido y comprobamos que es idéntico al archivoOriginal.

¿Cómo estar seguros que se trata en realidad del mismo archivo?

Usando el comando ls con la opcion -li nos muestra el número de inodo que indica que en realidad apunta al mismo lugar físico.

$ ls -li
total 8
4980891 -rw-rw-r-- 2 pedro pedro 43 oct 26 19:59 archivoOriginal
4980891 -rw-rw-r-- 2 pedro pedro 43 oct 26 19:59 otroarchivo
$

Observamos en los números en negrita que se trata de idéntica localización de inodo.

Un vínculo duro puede fallar en linux si está colocado en otro directorio, esto es debido a la segmentación que puede sufrir ―de hecho sufre― el sistema de archivos.

Vínculos simbólicos

Un vínculo simbólico indica un acceso a un directorio o fichero que se encuentra en un lugar distinto dentro de la estructura de directorios. Una modificación realizada utilizando este enlace se reflejará en el original; pero, por el contrario, si se elimina el enlace, no se eliminará el auténtico. Veamos el ejemplo:

$ ln -s archivoOriginal otroarchivo
$ ls -l
total 4
-rw-rw-r-- 1 pedro pedro 43 oct 26 19:59 archivoOriginal
lrwxrwxrwx 1 pedro pedro 15 oct 26 20:47 otroarchivo -> archivoOriginal

Si otroarchivo fuera movido a otro directorio seguiría apuntando al mismo archivo de forma efectiva al archivo al que pertenece.

Comprobamos que ambos apuntan al mismo inodo.

$ ls -li
total 4
4980891 -rw-rw-r-- 1 pedro pedro 43 oct 26 19:59 archivoOriginal
4981228 lrwxrwxrwx 1 pedro pedro 15 oct 26 20:47 otroarchivo -> archivoOriginal

Una práctica interesante, sería colocar en nuestro directorio .bin, un enlace simbólico al comando whish con el nombre «donde».

La orden which busca el directorio donde se encuentra un comando determinado. Por ejemplo which php en mi sistema responde /usr/bin/php

Ejecutamos lo siguiente:

$ which which
/usr/bin/which
$ cd ~/.bin
$ ln -s /usr/bin/which donde
  1. Usamos la orden which para obtener la localización del comando which.
  2. Nos situamos en nuestro directorio de ejecuciones de scripts.
  3. Realizamos un enlace simbólico al comando which desde ~/.bin/donde

A partir de este momento siempre que tengamos bien configurado el directorio de ejecuciones de scripts, podemos acceder al comando which mediante donde.

 $ donde php
/usr/bin/php
Tux: orden ln

comando ln

Epílogo

Como truco, la práctica totalidad de los enlaces que se realizan son enlaces simbólicos.

Espero y deseo que este artículo haya sido de utilidad. Es muy importante para la continuación de trabajos de calidad recibir algún tipo de feedback por parte de los lectores: es decir, responde con comentarios, evalúa la calidad del trabajo con el sistema de estrellas, comparte con tus redes sociales, da me gusta, marca el blog como favorito. Son pequeños gestos que ayudan a mantener el trabajo de creación.

Clave pública @pedroruizhidalg.pub.key

#aboutpedroruizhidalgo

♻ miotroblogsite ahorra papel
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: