Я не совсем понимаю, почему мышление об этой простой проблеме должно быть настолько сложным - но, возможно, я просто неправильно понял вопрос. В любом случае: когда мне понадобился подобный функционал, я использовал:
ls -lL
Это добилось цели в моем случае. Со ls
страницы руководства :
-L, --dereference
when showing file information for a symbolic link,
show information for the file the link references
rather than for the link itself
Например, я сделал /media/stick
ярлык для доступа к данным на USB-накопителе. ls -l /media/stick
покажет актуальную ссылку, а ls -lL /media/stick
покажет содержимое на флешке.
После некоторого более глубокого исследования различий между внутренними принципами -H
и -L
, я наконец-то наткнулся на отличную статью по этому вопросу в блоге Shallow Мысли (даже с некоторыми изящными приемами сценариев оболочки для вашего удовольствия!)
Это указывает на тонкие различия между двумя вариантами (намного лучше, чем в оригинальном руководстве!) Следующим образом:
-H
- разыменовывать только те ссылки, которые явно указаны в командной строке
-L
- ссылки разыменования, даже если они не упомянуты в командной строке
(Когда эти два используются в простых повседневных задачах, не должно быть никакой разницы в результатах в целом.)
Кроме того: Если вы предпочитаете запоминать длинную форму ( --option
), то, скорее всего, запоминать будет менее громоздко, --dereference
чем чрезмерно длинного монстра --dereference-command-line-symlink-to-dir
.