Выясните, какой путь будет не по символической ссылке?

10

В Linux, если у меня есть cd'd и я сейчас в каталоге, есть ли способ выяснить, каков реальный путь к этому каталогу, если я не использовал символическую ссылку, чтобы туда попасть?

Рассматривать:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5

Или:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4 4
$ cd 4/5
$ pwd 
/home/dave/tmp/4/5

Есть ли способ выяснить, что / home / dave / tmp / 5 действительно / home / dave / 1/2/3/4/5?

Дэвид Макинтош
источник

Ответы:

13

Для использования с cd, используйте pwd -P:

$ pwd
/home/dave/tmp
$ mkdir -p 1/2/3/4/5
$ ln -s 1/2/3/4/5 5
$ cd 5
$ pwd 
/home/dave/tmp/5
$ pwd -P
/home/dave/tmp/1/2/3/4/5

Для общих символических ссылок используйте readlink:

$ cd ..
$ readlink 5
1/2/3/4/5

Или ls -l-dдля каталогов):

$ ls -ld 5
lrwxr-xr-x  1 dave  staff  9 Jul 24 10:10 5 -> 1/2/3/4/5
jtbandes
источник
readlink -f file возвращает несимвольный путь к этому файлу, что я и хочу. Спасибо!
Дэвид Макинтош
1
да, я всегда использовал / bin / pwd, так как он не может знать, как он туда попал, в отличие от встроенной оболочки pwd. Очевидно эквивалентно pwd -P.
Питер Кордес
По какой-то причине ls -lda не работает для скрытых ссылок sym
Casebash
2

Вы хотите или readlink -f(в coreutils, установленном по умолчанию) или более легко запоминающийся realpath, который вы должны установить.

Райан К. Томпсон
источник
0

Альтернативный метод, который я использовал,

cd to the symlink
Ctrl+Shift+T #To open a new tab
pwd

Новая вкладка pwd, дает символическую ссылку. ;)

Лакшман Прасад
источник
Извините, какую оболочку, оконный менеджер или терминал вы используете здесь?
Дэвид Макинтош
Я думаю, что он говорит о gnome-Terminal
Prestomation
Да, я говорил о Терминале Гнома.
Лакшман Прасад