(2 Antworten)
Vor 3 Jahren geschlossen.
Mögliches Duplikat:
Wie Linux mehrere Pfadtrennzeichen handhabt (/home////Benutzername///Datei)
Die meisten Befehle, die ich unter Linux verwende, verhalten sich genau gleich, unabhängig davon, ob ich den nachgestellten Schrägstrich /
einfüge Zeichen am Ende eines Verzeichnisnamens oder nicht.
Zum Beispiel:
ls /home/cklein
ls /home/cklein/
cp foo bar
cp foo/ bar/
Wann spielt dieser abschließende Schrägstrich eine Rolle? Was ist die semantische Bedeutung des abschließenden Schrägstrichs?
Akzeptierte Antwort:
Ein gutes Beispiel ist das Verschieben einer Datei in ein Verzeichnis:
mv some_file foo
vs.
mv some_file foo/
Wenn foo
nicht existiert, wird die erste some_file
umbenennen zu foo
, und nicht die beabsichtigte foo/some_file
; der zweite wird sich beschweren, was Sie wollen.
Wenn foo
existiert, aber kein Verzeichnis ist, kann das erste den foo
vermasseln Datei; wieder wird der zweite sich beschweren.
cp
weist ähnliche Probleme auf.
Bei der Arbeit an einigen alten Versionen von SunOS habe ich mir angewöhnt, /.
anzuhängen , weil das System einen abschließenden /
tatsächlich ignoriert hat auf einem Dateinamen; zum Beispiel /etc/motd/
würde eher auf die Datei verweisen als auf einen Fehler. Spätere Versionen von SunOS / Solaris scheinen dieses Problem nicht mehr zu haben.