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?

3 ответа3

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
2

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

0

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

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

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

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