De nombreux utilitaires Unix traitent les liens symboliques différemment selon qu'ils comportent ou non une barre oblique de fin de ligne.
Ce comportement est décrit dans le Documentation sur les liens symboliques POSIX et est également mentionné dans le Documentation de GNU coreutils .
En gros, la barre oblique de fin signifie qu'il faut suivre (ou "déréférencer") le lien symbolique.
Par exemple, dans le code ci-dessous, dirlink
signifie le lien symbolique, mais dirlink/
désigne le répertoire vers lequel pointe le lien symbolique. rm
ne supprimera pas un répertoire à moins que vous ne disiez rm -r
mais rm
sans options supprimera volontiers 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 visualiser les permissions d'un répertoire, sans avoir à se soucier de savoir si le répertoire est un vrai répertoire ou juste 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 ordinaires :
$ 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 le find
commande. Si le path
dans lequel vous lui demandez de chercher est un lien symbolique, il ne suivra pas le lien symbolique par défaut, ce qui signifie qu'il ne traitera que le lien symbolique. L'ajout d'une barre oblique de fin de ligne lui permet de traiter le lien symbolique comme le répertoire vers lequel le lien pointe.
$ find dir
dir
dir/file
$ find dirlink
dirlink
$ find dirlink/
dirlink/
dirlink/file
(certaines versions de find ont un -follow
ou -L
mais cela lui permet de suivre tous les liens symboliques, et pas seulement le premier.)
Dans le cas de rsync
Dans le cas de la copie d'un répertoire, l'ajout d'une barre oblique dépend du fait que vous voulez ou non que le répertoire que vous copiez soit un sous-répertoire.
$ 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
copies dir
en dir.bak
en faisant dir
à l'intérieur de dir.bak
-
rsync dir/ dir.bak
copie tout le contenu de dir
sans faire dir
à l'intérieur de dir.bak