Как я могу узнать, на что указывает моя символическая ссылка?

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

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

Ответы

Ответ 1

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

Ответ 2

В BSch 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 для извлечения и удаления котировок нежелательной почты.

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