1

предположим, у меня есть цепочка символических ссылок A -> B -> C

когда я набираю pwd, он может показывать мне A, B или C в зависимости от того, как я попал сюда.

Как мне показать физический адрес каталога, то есть не представленный какими-либо символическими ссылками?

3 ответа3

2

Ты пытался

pwd -P

Это работает для меня (используя Zsh).

$ ls -l

  drwxrwxr-x 2 xxxxxxx xxxxxxx 4096 Aug 28 10:14 a 
  lrwxrwxrwx 1 xxxxxxx xxxxxxx    1 Aug 28 10:15 b -> a

$ cd b

$ pwd
  /home/xxxxxxx/temp/b

$ pwd -P
  /home/xxxxxxx/temp/a
1
  • Вероятно, вы ищете команду **pwd -P** .
  • Вы можете найти полезные даже readlink -f . (man info coreutils readlink).
  • В некоторых системах вы можете найти realpath, который вы можете вызывать не только в текущем каталоге
    realpath . но даже к любому другому файлу realpath \my\long\path\file.ext

В вашей shell обычно есть встроенная команда pwd, которая используется вместо /bin/pwd .
Если вы напишите в оболочке type pwd она ответит, если ваша оболочка предоставит вам встроенную версию.

Для правильной помощи вы можете обратиться к

  • man pwd обычно для команды \bin\pwd
  • man bash и после поиска pwd для встроенной версии.
  • man <TheShellName> для других оболочек (zsh, csh, tcsh ...)

От man bash например, вы можете прочитать

pwd [-LP]

Вывести абсолютный путь к текущему рабочему каталогу. Напечатанный путь не содержит символических ссылок, если указана опция -P или включена физическая опция -o для встроенной команды set. Если используется опция -L, напечатанный путь может содержать символические ссылки. Статус возврата равен 0, если при чтении имени текущего каталога не произошла ошибка или не указан неправильный параметр.

0

Вы можете использовать readlink (если он есть в вашем дистрибутиве) из текущего каталога:

$ readlink -f .

или с полным путем:

$ readlink -f /my-dir/with-some-link

rhel/centos предоставляют его в coreutils pkg. НТН.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .