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


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

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

Да, я говорил о Терминале Гнома.
Лакшман Прасад
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.