Comment savoir si le fichier est un alias ou un lien symbolique?

13

Je travaille sur un système hérité et j'ai un tas de fichiers qui font référence à des images situées dans d'autres dossiers.

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

Comment savoir s'il s'agit de liens symboliques ou d'alias?

Martin
la source
3
Un lien symbolique est une entrée de fichier qui fait référence à un autre fichier. Sous Linux, un alias est un remplacement de syntaxe de commande. Qu'entendez-vous par un alias? Ou demandez-vous simplement comment identifier les fichiers qui sont des liens symboliques? find folder -type lrépertorie tous les liens symboliques sous «dossier».
StarNamer
Demandez-vous des alias dans le Finder de Mac OS X ou des alias de commandes shell?
Daniel Beck
Je suppose que j'étais un peu confus. Les fichiers en question n'étaient qu'un lien symbolique et je suppose que je prêtais à confusion avec les alias d'Os X Finder.
Martin

Réponses:

16

Liens symboliques:

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 vos fichiers sont des liens durs, ils apparaissent tout comme les autres fichiers. Par exemple, chaque répertoire a un répertoire nommé .lié en dur.

De $ man find:

Chaque répertoire d'un système de fichiers Unix normal a au moins 2 liens durs: son nom et son .' entry. Additionally, its subdirectories (if any) each have aentrée .. 'liés à ce répertoire.

Liens durs:

-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
la source
11

Les commandes fileou statvous diront ce qu'est un fichier:

$ 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

En cas de script, la testcommande peut être plus utile:

   -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
la source