J'ai remarqué que ls -l
cela ne change pas seulement la mise en forme de la sortie, mais aussi la façon dont les liens symboliques des répertoires sont traités:
> ls /rmn
biweekly.sh daily.sh logs ...
> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11 2011 /rmn -> /root/maintenance/
J'aimerais obtenir une liste détaillée de ce qui est contenu /rmn
, pas des informations sur le /rmn
lien symbolique.
Une solution de contournement à laquelle je peux penser est de créer une fonction shell qui fait quelque chose comme ceci:
cd /rmn
ls -l
cd -
Mais cela semble trop hacky, d'autant plus que cela gâche la prochaine utilisation de cd -
. Y a-t-il une meilleure façon?
(Je suis sur CentOS 2.6.9)
Réponses:
Voyez si votre ls a les options:
Si ceux-ci ne vous aident pas, vous pouvez faire fonctionner votre macro sans gâcher
cd -
en faisant:qui s'exécute en sous-coque.
la source
-H
, et cela a fait l'affaire. Merci!--dereference-command-line-symlink-to-dir
ait une forme courte.Je ne comprends pas très bien pourquoi la réflexion sur ce problème simple doit être si complexe - mais peut-être que je viens de poser la question dans le mauvais sens. Quoi qu'il en soit: lorsque j'avais besoin d'une fonctionnalité similaire, j'utilisais:
Cela a fait l'affaire dans mon cas. Depuis la
ls
page de manuel:Par exemple, je me suis fait un
/media/stick
raccourci pour accéder aux données de ma clé USB.ls -l /media/stick
affichera le lien réel, tandis quels -lL /media/stick
montrera le contenu sur la clé USB.Après des recherches plus approfondies sur la différence entre le fonctionnement interne de
-H
et-L
, j'ai finalement trouvé un excellent article à ce sujet sur le blog Shallow Thoughts (même avec quelques astuces de script shell pour votre plaisir!)Cela souligne les différences subtiles entre les deux options (bien mieux que le manuel d'origine!) Comme suit:
-H
- ne déréférencer que les liens explicitement mentionnés sur la ligne de commande-L
- déréférencer les liens même s'ils ne sont pas mentionnés sur la ligne de commande(Lorsque ces deux éléments sont utilisés avec des tâches quotidiennes simples , il ne devrait y avoir aucune différence dans la sortie en général.)
En outre: si vous préférez vous souvenir de la forme longue (
--option
), il est probablement moins lourd à mémoriser--dereference
que le monstre excessivement long de--dereference-command-line-symlink-to-dir
.la source
le ferait ou
Cependant, le comportement ne doit pas être différent avec et sans
-l
. Avez-vous un aliasls
?la source
ls
les drapeaux sont fous.-l
fait-H
par défaut à off, comme le fait-F
. Voir coreutils - Quels fichiers sont répertoriés .ls='ls -F'
alias en fait.