Я заметил, что ls -l
это меняет не только форматирование вывода, но и способ обработки символьных ссылок каталога:
> ls /rmn
biweekly.sh daily.sh logs ...
> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11 2011 /rmn -> /root/maintenance/
Я хотел бы получить подробный список того, что там /rmn
, а не информацию о /rmn
символической ссылке.
Один из обходных путей, который я могу придумать, - это создать функцию оболочки, которая делает что-то вроде этого:
cd /rmn
ls -l
cd -
Но это кажется слишком хакерским, тем более, что это портит следующее использование cd -
. Есть ли способ лучше?
(Я на CentOS 2.6.9)
Ответы:
Посмотрите, есть ли у вашего ls варианты:
Если это не помогает, вы можете заставить свой макрос работать без ошибок
cd -
, выполнив:который работает в подоболочке.
источник
-H
, и это сделало свое дело. Спасибо!--dereference-command-line-symlink-to-dir
была короткая форма.Я не совсем понимаю, почему мышление об этой простой проблеме должно быть настолько сложным - но, возможно, я просто неправильно понял вопрос. В любом случае: когда мне понадобился подобный функционал, я использовал:
Это добилось цели в моем случае. Со
ls
страницы руководства :Например, я сделал
/media/stick
ярлык для доступа к данным на USB-накопителе.ls -l /media/stick
покажет актуальную ссылку, аls -lL /media/stick
покажет содержимое на флешке.После некоторого более глубокого исследования различий между внутренними принципами
-H
и-L
, я наконец-то наткнулся на отличную статью по этому вопросу в блоге Shallow Мысли (даже с некоторыми изящными приемами сценариев оболочки для вашего удовольствия!)Это указывает на тонкие различия между двумя вариантами (намного лучше, чем в оригинальном руководстве!) Следующим образом:
-H
- разыменовывать только те ссылки, которые явно указаны в командной строке-L
- ссылки разыменования, даже если они не упомянуты в командной строке(Когда эти два используются в простых повседневных задачах, не должно быть никакой разницы в результатах в целом.)
Кроме того: Если вы предпочитаете запоминать длинную форму (
--option
), то, скорее всего, запоминать будет менее громоздко,--dereference
чем чрезмерно длинного монстра--dereference-command-line-symlink-to-dir
.источник
сделал бы это или
Однако поведение не должно быть разным с и без
-l
. У вас есть псевдоним дляls
?источник
ls
флаги сумасшедшие.-l
по-H
умолчанию выключен, как и-F
. Смотрите coreutils - Какие файлы перечислены .ls='ls -F'
самом деле я был единственным с псевдонимом.