Ich benutze den realpath
Befehl, aber er fügt immer die ursprüngliche Eingabe am Ende des Pfades hinzu:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Ich benutze den realpath
Befehl, aber er fügt immer die ursprüngliche Eingabe am Ende des Pfades hinzu:
$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Antworten:
Sie haben realpath
einen relativen Pfad zu einer Datei im aktuellen Verzeichnis angegeben.
Die Datei (die ein Verzeichnis sein kann) kann vorhanden sein oder nicht. realpath
ist standardmäßig egal. Es meldet den Pfad unabhängig davon, ob sein letztes Element vorhanden ist.
Wenn Sie möchten, dass nur vorhandene Pfade gemeldet werden, verwenden Sie das -e
Flag:
zanna@toaster:~/playground$ realpath playground
/home/zanna/playground/playground
zanna@toaster:~/playground$ realpath ~/playground
/home/zanna/playground
zanna@toaster:~/playground$ realpath -e playground
realpath: playground: No such file or directory
Das liegt daran, dass Sie ihm einen Pfad geben, der nicht existiert, und einfach das aktuelle Verzeichnis und alles, was Sie ihm gegeben haben, ausdrucken, vorausgesetzt, dies wäre der Pfad. Beachten Sie, dass die Manpage Folgendes angibt:
Drucken Sie den aufgelösten absoluten Dateinamen. Alle bis auf die letzte Komponente müssen vorhanden sein
Dies ermöglicht die Ausführung mit einem nicht vorhandenen Ziel. Betrachten Sie zur Veranschaulichung die folgenden Beispiele:
$ pwd
/home
$ ls
lost+found terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir
Oder um zu duplizieren, was Sie getan haben:
$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
realpath .