neunzehn83.de

Ein Mann, ein Blog, kein Plan.

Die Geschichte von der Shell und dem Ending-Slash

Das löscht den Symlink

rm -rf /path/to/symlink

Das derefernziert den Symlink und löscht alles worauf er zeigt

rm -rf /path/to/symlink/

Ein kleiner, aber feiner Unterschied. Ich weiß das, weil ich es auf die harte Tour gelernt habe..

Eigentlich spielt ein Slash am Ende einer Verzeichnisangabe unter Linux keine Rolle. So sind folgende Befehle identisch:

mv file dir
mv file dir/

file würde in das Verzeichnis dir verschoben werden. Ein unterschiedliches Verhalten ergibt sich aber dann, wenn dir nicht existiert. Hier würde der erste Befehl die Datei umbenennen, der zweite auf das fehlender Verzeichnis in einer Fehlermeldung hinweisen.

Für einige Programme macht der ending slash aber sehr wohl ein Unterschied. Z.B. bei rsync. Hier wird beim Quellpfad (und nur dort) ein Unterschied gemacht:

rsync -a /path/to/source /mnt/backup
rsync -a /path/to/source/ /mnt/backup

Der erste Befehl erstellt den Ordner source unterhalb von /mnt/backup, der zweite kopiert die Inhalte von source direkt in /mnt/backup.

Geschrieben am Freitag, 11. Oktober 2013 und abgelegt unter Linux.