Dane wyjściowe Realpath obejmują dane wejściowe

9

Korzystam z realpathpolecenia, ale zawsze dodaje oryginalne dane wejściowe na końcu ścieżki:

$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
Josef Klimuk
źródło
Pytasz o katalog w bieżącym katalogu roboczym. Spróbuj zamiast tego:realpath .
penguin359,

Odpowiedzi:

17

Dałeś realpathwzględną ścieżkę do pliku w bieżącym katalogu.

Plik (który może być katalogiem) może istnieć lub nie. realpathdomyślnie to nie obchodzi. Podaje ścieżkę niezależnie od tego, czy istnieje jej ostatni element.

Jeśli chcesz, aby raportował tylko istniejące ścieżki, użyj -eflagi:

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
Zanna
źródło
12

To dlatego, że podajesz ścieżkę, która nie istnieje, więc po prostu drukuje bieżący katalog i cokolwiek, co mu podałeś, zakładając, że będzie to ścieżka. Zauważ, że strona podręcznika określa, że:

Wydrukuj rozstrzygniętą bezwzględną nazwę pliku; wszystkie oprócz ostatniego komponentu muszą istnieć

Pozwala to na wykonanie z nieistniejącym celem. Aby to zilustrować, rozważ następujące przykłady:

$ pwd
/home
$ ls
lost+found  terdon
$ realpath terdon
/home/terdon
$ realpath nonExistentDir
/home/nonExistentDir

Lub, aby powielić to, co zrobiłeś:

$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
terdon
źródło
5

Nie, mówi tylko, że ścieżka do (prawdopodobnie nieistniejącego) pliku yosefklznajdującego się w bieżącym katalogu ( /homes/yosefkl) to /homes/yosefkl/yosefkl. Próbować

realpath "$PWD"
choroba
źródło