Как я могу узнать, на что указывает моя символическая ссылка? - PullRequest
16 голосов
/ 15 ноября 2010

Создаю скрипт bash, и я пытаюсь найти способ узнать, на что указывает моя символическая ссылка. Прямо сейчас я делаю это с этим, но это работает, только если моя символическая ссылка находится в текущем каталоге. Есть ли способ узнать, на что указывает моя символическая ссылка, если она находится в другом каталоге?

 ls  -l "symlink" | cut -d'>' -f2

Ответы [ 2 ]

25 голосов
/ 15 ноября 2010

Если у вас есть утилита readlink(1) (часть GNU coreutils), она делает то, что вам нужно.В противном случае вы как бы ручей, я не знаю ни одного прямого и портативного эквивалента.

7 голосов
/ 16 ноября 2010

На BSD toolchain я делаю:

stat -f %Y <filename>

Например:

% ln -sf /bsd ~/blah        
% stat -f %Y ~/blah
/bsd

В наборе инструментов GNU это не так просто, вы можете использовать что-то вроде:

$ stat -c %N /usr/bin/firefox
`/usr/bin/firefox' -> `../lib/firefox-3.6.12/firefox.sh'

Затем используйте awk / cut и sed для извлечения и удаления ненужных кавычек.

Или более сложное решение - использовать ls -al и awk / cut для извлечения нужного столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...