(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.