Zauważyłem, że ls -l
nie tylko zmienia to formatowanie danych wyjściowych, ale także sposób obsługi dowiązań symbolicznych katalogu:
> ls /rmn
biweekly.sh daily.sh logs ...
> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11 2011 /rmn -> /root/maintenance/
Chciałbym uzyskać szczegółową listę tego, co jest w środku /rmn
, a nie informacje o /rmn
dowiązaniu symbolicznym.
Jednym z obejść, które mogę wymyślić, jest utworzenie funkcji powłoki, która robi coś takiego:
cd /rmn
ls -l
cd -
Ale to wydaje się zbyt hackerskie, zwłaszcza że przeszkadza w następnym użyciu cd -
. Czy jest lepszy sposób?
(Jestem na CentOS 2.6.9)
Odpowiedzi:
Sprawdź, czy twój ls ma opcje:
Jeśli to nie pomoże, możesz sprawić, by twoje makro działało bez bałaganu,
cd -
wykonując:który działa w podpowłoce.
źródło
-H
, i to załatwiło sprawę. Dziękuję Ci!--dereference-command-line-symlink-to-dir
mieć krótką formę.Nie do końca rozumiem, dlaczego myślenie o tym prostym problemie musi być tak skomplikowane - ale może po prostu dostałem pytanie w niewłaściwy sposób. W każdym razie: kiedy potrzebowałem podobnej funkcjonalności, użyłem:
To załatwiło sprawę w moim przypadku. Ze strony podręcznika
ls
:Na przykład utworzyłem
/media/stick
skrót do dostępu do danych na pamięci USB.ls -l /media/stick
pokaże rzeczywisty związek, podczas gdyls -lL /media/stick
pokaże zawartość na dysku USB.Po głębszych badaniach dotyczących różnicy między wewnętrznym działaniem
-H
a-L
, wreszcie znalazłem doskonały artykuł na ten temat na blogu Shallow Thoughts (nawet z ciekawymi sztuczkami skryptowymi dla twojej przyjemności!)Wskazuje to na subtelne różnice między dwiema opcjami (o wiele lepsze niż w oryginalnej instrukcji!) W następujący sposób:
-H
- wyłącza tylko te linki, które zostały wyraźnie wymienione w wierszu poleceń-L
- linki Dereferencjuje nawet jeśli są one nie wymienione w wierszu poleceń(Gdy te dwa są używane do prostych codziennych zadań, ogólnie nie powinno być różnicy w wydajności).
Poza tym: Jeśli wolisz pamiętać długą formę (
--option
), najprawdopodobniej jest mniej kłopotliwe w zapamiętywaniu--dereference
niż zbyt długi potwór z--dereference-command-line-symlink-to-dir
.źródło
zrobiłbym to lub
Jednak zachowanie nie powinno być inne zi bez niego
-l
. Masz aliasls
?źródło
ls
flagi są szalone.-l
sprawia, że-H
domyślnie wyłączone, jak robi-F
. Zobacz coreutils - które pliki są wymienione .ls='ls -F'
alias.