Mir ist aufgefallen, dass ls -l
nicht nur die Formatierung der Ausgabe geändert wird, sondern auch der Umgang mit Verzeichnissymlinks:
> ls /rmn
biweekly.sh daily.sh logs ...
> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11 2011 /rmn -> /root/maintenance/
Ich möchte eine detaillierte Auflistung der Inhalte und /rmn
keine Informationen über den /rmn
Symlink erhalten.
Eine mögliche Abhilfe besteht darin, eine Shell-Funktion zu erstellen, die ungefähr so funktioniert:
cd /rmn
ls -l
cd -
Aber das scheint zu abgedreht, zumal es die nächste Verwendung von durcheinander bringt cd -
. Gibt es einen besseren Weg?
(Ich bin auf CentOS 2.6.9)
Antworten:
Sehen Sie nach, ob Ihr ls die folgenden Optionen hat:
Wenn diese nicht helfen, können Sie Ihr Makro zum Laufen bringen, ohne es zu vermasseln,
cd -
indem Sie Folgendes tun:das läuft in einer Unterschale.
quelle
-H
, und das hat den Trick getan. Vielen Dank!--dereference-command-line-symlink-to-dir
hätte eine kurze Form.Ich verstehe nicht ganz, warum das Nachdenken über dieses einfache Problem so komplex sein muss - aber vielleicht habe ich die Frage einfach falsch verstanden. Sowieso: als ich eine ähnliche Funktionalität benötigte, verwendete ich:
Das hat in meinem Fall den Trick getan. Von der
ls
Manpage:Zum Beispiel habe ich mir eine
/media/stick
Verknüpfung erstellt, um auf die Daten auf meinem USB-Stick zuzugreifen.ls -l /media/stick
zeigt den aktuellen Link an, währendls -lL /media/stick
der Inhalt auf dem USB-Stick angezeigt wird.Nach einigen gründlichen Nachforschungen über den Unterschied zwischen dem Innenleben von
-H
und-L
bin ich schließlich auf einen ausgezeichneten Artikel zu diesem Thema im Shallow Thoughts- Blog gestoßen (der Ihnen sogar einige nette Shell-Skript-Tricks bietet!).Dies zeigt die subtilen Unterschiede zwischen den beiden Optionen (viel besser als das ursprüngliche Handbuch!) Wie folgt:
-H
- Nur die in der Befehlszeile explizit genannten Links dereferenzieren-L
- Dereferenzierung von Links, auch wenn diese in der Befehlszeile nicht erwähnt werden(Wenn diese beiden bei einfachen alltäglichen Aufgaben verwendet werden, sollte es im Allgemeinen keinen Unterschied in der Ausgabe geben.)
Außerdem: Wenn Sie sich lieber an die lange Form (
--option
) erinnern möchten , ist es höchstwahrscheinlich weniger umständlich, sie sich zu merken--dereference
als das übermäßig lange Monster von--dereference-command-line-symlink-to-dir
.quelle
würde es tun oder
Das Verhalten sollte sich jedoch nicht mit und ohne unterscheiden
-l
. Hast du einen Alias fürls
?quelle
ls
Fahnen sind verrückt.-l
macht-H
standardmäßig aus, ebenso wie-F
. Siehe coreutils - Welche Dateien werden aufgelistet .ls='ls -F'
Eigentlich war ich derjenige mit dem Pseudonym.