Выход Realpath включает ввод

9

Я использую команду realpath , но всегда добавляет исходный вход в конце пути:

$ pwd
/homes/yosefkl
$ realpath yosefkl
/homes/yosefkl/yosefkl
    
задан Josef Klimuk 27.12.2017 в 09:44
источник

3 ответа

17

Вы указали realpath относительный путь к файлу в текущем каталоге.

Файл (который может быть каталогом) может быть или не существовать. realpath по умолчанию не волнует. Он сообщает о пути, независимо от того, существует ли его последний элемент.

Если вы хотите, чтобы он сообщал только о существующих путях, используйте флаг -e :

[email protected]:~/playground$ realpath playground
/home/zanna/playground/playground
[email protected]:~/playground$ realpath ~/playground
/home/zanna/playground
[email protected]:~/playground$ realpath -e playground
realpath: playground: No such file or directory
    
ответ дан Zanna 27.12.2017 в 09:51
источник
11

Это потому, что вы даете ему путь, которого не существует, поэтому он просто печатает текущий каталог и все, что вы ему дали, предполагая, что это будет путь. Обратите внимание, что в man-странице указано, что:

  

Распечатайте разрешенное абсолютное имя файла; должен существовать только последний компонент

Таким образом, он позволяет выполнять с несуществующей целью. Для иллюстрации рассмотрим следующие примеры:

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

Или, чтобы дублировать то, что вы сделали:

$ pwd
/home/terdon
$ realpath terdon
/home/terdon/terdon
    
ответ дан terdon 27.12.2017 в 09:52
5

Нет, он сообщает только, что путь к (возможно, несуществующему) файлу yosefkl , находящемуся в текущем каталоге ( /homes/yosefkl ), равен /homes/yosefkl/yosefkl . Попробуйте

realpath "$PWD"
    
ответ дан choroba 27.12.2017 в 09:51