Viele Unix-Dienstprogramme behandeln Symlinks unterschiedlich, je nachdem, ob ein abschließender Schrägstrich vorliegt.
Dieses Verhalten ist in der POSIX Symbolic Link-Dokumentation beschrieben und wird auch in der GNU coreutils-Dokumentation erwähnt .
Grundsätzlich bedeutet der abschließende Schrägstrich, dem Symlink zu folgen (oder "dereferenzieren").
Zum Beispiel bedeutet im folgenden Code dirlink
der Symlink, aberdirlink/
das Verzeichnis, auf das der Symlink verweist. rm
entfernt kein Verzeichnis, es sei denn, Sie sagen rm -r
, aber rm
ohne Optionen wird ein Symlink gerne entfernt.
$ 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
Es ist auch nützlich, um die Berechtigungen eines Verzeichnisses anzuzeigen, ohne sich darum kümmern zu müssen, ob es sich bei dem Verzeichnis um ein echtes Verzeichnis oder nur um einen Symlink zu einem Verzeichnis handelt.
$ 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/
und es funktioniert immer noch für reguläre Verzeichnisse:
$ 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/
Ein anderes Beispiel ist das find
Befehl. Wenn path
es sich bei dem Link, in dem Sie suchen möchten, um einen Symlink handelt, folgt dieser standardmäßig nicht dem Symlink, dh, er verarbeitet nur den Symlink. Durch das Hinzufügen eines abschließenden Schrägstrichs wird der Symlink als das Verzeichnis behandelt, auf das der Link verweist.
$ find dir
dir
dir/file
$ find dirlink
dirlink
$ find dirlink/
dirlink/
dirlink/file
(Einige Versionen von find haben eine -follow
oder -L
-Option, aber das bedeutet, dass sie allen symbolischen Links folgen, nicht nur dem ersten.)
Im Fall von rsync
, ob Sie ein Schrägstrich anhängen soll hängt davon ab , ob Sie das Verzeichnis sind Kopieren Sie ein Unterverzeichnis oder nicht zu sein.
$ 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
Mit anderen Worten:
rsync dir dir.bak
kopiert dir
hinein dir.bak
, macht dir
hineindir.bak
rsync dir/ dir.bak
kopiert alle inhalte von dir
, ohne dir
innen zu machendir.bak