Дело было в субботу... Наваял я такой скрипт (с целью дальнейшего использования как функции для своей библиотеки), целью коего является следование симлинкам до упора с предусмотренным аварийным выходом на случай зацикливания.
Собственно, буду рад, если предложите, как сделать данный код компактнее, красивее и безбажнее. И вообще - может, всё одной командой можно сделать, а я просто не знаю такой команды?
Вот, собственно:
#!/bin/bash
pth=«$1»
already_seen=
while :; do
[[ $pth =~ / ]] && cd «${pth%/*}»
fpth=«`pwd`/${pth##*/}»
grep -q «^${fpth}$» <<<«$already_seen» && break
already_seen=«$already_seen
$fpth»
stat=$(stat -c %N «$pth»)
if [[ $stat =~ -\> ]]; then
pth=$(sed -nr «s%^.+\`([^']+)'%\1%p» <<<$stat)
else
pth=${stat:1:$((${#stat}-2))}
break
fi
done
echo «$fpth»
СОРРИ, НЕ В ОТ РАЗДЕЛ ПОМЕСТИЛ :(