¿Cómo puedo saber si el archivo es un alias o un enlace simbólico?

13

Estoy trabajando en un sistema heredado y tengo un montón de archivos que hacen referencia a imágenes que se encuentran en otras carpetas.

lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t100x133.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x133.jpg
lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t125x150.jpg -> /home/www/virtual/categories/swm/24/m/00012/t125x150.jpg
lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t150x200.jpg -> /home/www/virtual/categories/swm/24/m/00012/t150x200.jpg

¿Cómo puedo saber si estos son enlaces simbólicos o alias?

Martín
fuente
3
Un enlace simbólico es una entrada de archivo que hace referencia a otro archivo. En Linux, un alias es un reemplazo de sintaxis de comando. ¿Qué quieres decir con un alias? ¿O simplemente pregunta cómo identificar qué archivos son enlaces simbólicos? find folder -type lenumerará todos los enlaces simbólicos debajo de 'carpeta'.
StarNamer
¿Está preguntando acerca de los alias en Mac OS X Finder o los alias de comandos de shell?
Daniel Beck
Supongo que estaba un poco confundido. Los archivos en cuestión eran solo un enlace simbólico y supongo que estaba confundiendo con los alias de Os X Finder.
Martin

Respuestas:

16

Enlaces simbólicos:

lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
^
 ` Here it is, l for symbolic link.

Si sus archivos son enlaces duros, entonces aparecen como otros archivos. Por ejemplo, cada directorio tiene un directorio llamado .hardlinked.

De $ man find:

Cada directorio en un sistema de archivos Unix normal tiene al menos 2 enlaces duros: su nombre y su .' entry. Additionally, its subdirectories (if any) each have aentrada .. 'vinculada a ese directorio.

Enlaces duros:

-rw-r--r--  3 root root   60 2012-06-25 12:17 File
-rw-r--r--  3 root root   60 2012-06-25 12:17 HardLinkToFile
-rw-r--r--  3 root root   60 2012-06-25 12:17 HardLinkToFile2
lrwxrwxrwx  1 user nobody      56 Feb 10  2010 t100x100.jpg -> /home/www/virtual/categories/swm/24/m/00012/t100x100.jpg
            ^
             ` This number is hard link (reference) count.
Sampo Sarrala - codidact.org
fuente
11

Los comandos fileo statle dirán qué es un archivo:

$ ln -s /home this_is_a_link
$ touch this_is_not_a_link
$ file this_*
this_is_a_link:     symbolic link to `/home'
this_is_not_a_link: empty
$ stat this_*
  File: `this_is_a_link' -> `/home'
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: ca00h/51712d    Inode: 106983      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/    andy)   Gid: ( 1000/    andy)
Access: 2012-07-29 23:28:17.000000000 +0000
Modify: 2012-07-29 23:28:17.000000000 +0000
Change: 2012-07-29 23:28:17.000000000 +0000
  File: `this_is_not_a_link'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: ca00h/51712d    Inode: 106992      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/    andy)   Gid: ( 1000/    andy)
Access: 2012-07-29 23:28:27.000000000 +0000
Modify: 2012-07-29 23:28:27.000000000 +0000
Change: 2012-07-29 23:28:27.000000000 +0000

Si tiene secuencias de comandos, el testcomando puede ser más útil:

   -h FILE
         FILE exists and is a symbolic link (same as -L)
$ for f in this_*; do if test -h "$f"; then echo "$f is a symlink"; else echo "$f is not a symlink"; fi; done
this_is_a_link is a symlink
this_is_not_a_link is not a symlink
Grifferz
fuente