LINUX

¿Qué son los Enlaces en Linux?

23 ago. 2018|Lectura de 4 minutos

Los enlaces nos permiten acceder a archivos o carpetas de forma más sencilla, sin la necesidad de desplazarnos por toda la jerarquía de directorios

Un Enlace en Linux es similar a un enlace directo en Windows, y su principal utilidad es poder acceder a archivos o carpetas de forma más sencilla, sin la necesidad de desplazarnos por toda la jerarquía de directorios, por ejemplo si frecuentemente necesitamos acceder a la carpeta ~/GitLab/EDcampBogota2017/database/, tendremos que usar el comando cd y toda esta ruta para ubicarnos en dicho directorio, por lo que es mucho más cómodo crear un enlace en nuestro home que apunte a dicho directorio, así solo bastará usar el comando cd nombre_del_enlace y accederemos al directorio origen de forma más fácil.

En Linux un enlace puede ser de dos tipos, físico o simbólico.

  • Enlace Físico (Duros): Un fichero puede tener varios nombres, así que el enlace físico es un nombre más para un fichero en otra ubicación. El fichero solo será eliminado del disco cuando se haya eliminado el último nombre existente. El archivo siempre será el mismo en todas las ubicaciones en donde se haya creado un enlace físico. Un aspecto a tener en cuenta es que los enlaces físicos solo pueden ser creados para ficheros y no directorios.
  • Enlace Simbólico (Blandos): Es un apuntador hacia un fichero o directorio, si el archivo destino es eliminado el enlace simbólico quedará inutilizable, ya que no podrá hacer referencia al archivo al que se encontraba apuntando.

Enlance Físico

Para crear un enlace físico usaremos la siguiente sintaxis:

ln [origen] [nombre del enlace]

Por ejemplo para crear un enlace físico en nuestra ubicación actual del archivo Price.php que se encuentra en ~/GitLab/EDcampBogota2017/app/Models/ usaremos:

ln ~/GitLab/EDcampBogota2017/app/Models/Price.php NewPrice.php

El contenido de nuestro archivo Price.php es el siguiente:

     1    <!--?php
     2    
     3    namespace App\Models;
     4    
     5    use Illuminate\Database\Eloquent\Model;
     6    
     7    class Price extends Model
     8    {
     9        protected $table = 'prices';
    10    
    11        protected $dateFormat = 'Y-m-d H:i:s.u';
    12    
    13        protected $fillable = [
    14            'begins_at',
    15            'ends_at',
    16            'price',
    17            'actual',
    18        ];
    19    
    20        protected $dates = [
    21            'begins_at',
    22            'ends_at',
    23        ];
    24    }

Si por ejemplo modificamos el archivo desde nuestro enlace físico NewPrice.php y eliminamos la línea 14 y 15 del archivo, veremos que el archivo fue modificado en todas sus ubicaciones, en nuestro caso en las ubicaciones ~/GitLab/EDcampBogota2017/app/Models/Price.php y ~/EDteam/NewPrice.php, para ver las diferencias entre los archivos podemos usar el comando vimdiff, en donde podemos identificar que los ficheros son exactamente iguales:

diff

Enlace simbólico

Para crear un enlace simbólico usaremos la siguiente sintaxis:

ln -s [origen] [nombre del enlace]

Es la misma sintaxis que utilizamos para el enlace físico solo que agregamos la opción -s para indicar que queremos crear un enlace simbólico, por ejemplo si queremos crear un enlace simbólico en nuestra ubicación actual de la carpeta database que se encuentra en ~/GitLab/EDcampBogota2017/database/ usaremos:

ln -s ~/GitLab/EDcampBogota2017/database MyDatabase

Si listamos nuestro directorio actual con el comando ls podremos identificar fácilmente nuestro enlace simbólico, ya que este se visualiza mostrando el nombre que le asignamos y con el apuntador -> la ruta en donde se encuentra el fichero o directorio origen:

ls

Espero puedas poner en práctica esta información para mejorar tus habilidades con la terminal de Linux.