De nombreux utilitaires Unix traitent les liens symboliques différemment selon qu'il existe une barre oblique de fin.
Ce comportement est décrit dans la documentation POSIX Symbolic Link et est également mentionné dans la documentation GNU coreutils .
Fondamentalement, la barre oblique de fin signifie suivre (ou "déréférencer") le lien symbolique.
Par exemple, dans le code ci-dessous, dirlink
signifie le lien symbolique, mais dirlink/
signifie le répertoire vers lequel le lien symbolique pointe. rm
ne supprimera pas un répertoire à moins que vous ne le disiez rm -r
, mais rm
sans options supprimera avec plaisir un lien symbolique.
$ mkdir dir
$ ln -s dir dirlink
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir
lrwxrwxrwx 1 mikel mikel 3 2011-02-02 22:26 dirlink -> dir
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir
lrwxrwxrwx 1 mikel mikel 3 2011-02-02 22:26 dirlink -> dir
$ rm dirlink/
rm: cannot remove `dirlink/': Is a directory
$ rm dirlink
$ ls -l
total 4
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:26 dir
Il est également utile pour afficher les autorisations d'un répertoire, sans avoir à se soucier si le répertoire est un vrai répertoire ou simplement un lien symbolique vers un répertoire.
$ ls -ld dirlink
lrwxrwxrwx 1 mikel mikel 3 2011-02-02 22:46 dirlink -> dir
$ ls -ld dirlink/
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dirlink/
et cela fonctionne toujours pour les répertoires réguliers:
$ ls -ld dir
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dir
$ ls -ld dir/
drwxr-xr-x 2 mikel mikel 4096 2011-02-02 22:46 dir/
Un autre exemple est la find
commande. Si path
vous lui demandez de rechercher est un lien symbolique, il ne suivra pas le lien symbolique par défaut, ce qui signifie qu'il ne traite que le lien symbolique. L'ajout d'une barre oblique de fin fait qu'il traite le lien symbolique comme le répertoire vers lequel pointe le lien.
$ find dir
dir
dir/file
$ find dirlink
dirlink
$ find dirlink/
dirlink/
dirlink/file
(certaines versions de find ont une option -follow
ou -L
, mais cela le fait suivre tous les liens symboliques, pas seulement le premier)
Dans le cas de rsync
, si vous devez ajouter une barre oblique dépend de si vous voulez que le répertoire que vous copiez soit un sous-répertoire ou non.
$ mkdir dir
$ touch dir/file
$ rsync -r dir dir.bak
$ find .
.
./dir
./dir/file
./dir.bak
./dir.bak/dir
./dir.bak/dir/file
$ rm -r dir.bak
$ rsync -r dir/ dir.bak
$ find .
.
./dir
./dir/file
./dir.bak
./dir.bak/file
En d'autres termes:
rsync dir dir.bak
des copies dir
dans dir.bak
, faire à l' dir
intérieurdir.bak
rsync dir/ dir.bak
copie tout le contenu de dir
, sans faire dir
dedansdir.bak