%20Verzeichnis%20auflisten%3F.png)
Wenn ls den Inhalt des aktuellen Verzeichnisses auflistet, gibt es einen ähnlichen Befehl, der den Inhalt eines nicht aktuellen Verzeichnisses auflistet, ohne cd zu verwenden?
Antwort1
Geben Sie anschließend ls
einfach den Pfad des Verzeichnisses ein, das Sie auflisten möchten, und Sie erhalten es. Stellen Sie sich vor, Sie befinden sich in Ihrem Home-Verzeichnis, möchten aber auflisten /etc
. Führen Sie es einfach aus ls /etc
, und Sie erhalten es aufgelistet.
Antwort2
ls
werde das tun.
Die Syntax dafür ls
lautet:
ls flags file-or-directory-names
Für das, was ich nennefile-or-directory-names
können Sie Dateien im aktuellen Verzeichnis auflisten, um nur bestimmte Dateien aufzulisten. Beispielsweise ls -l foo bar
listet nur Informationen zu foo
und auf bar
(in Langform, wie ich das -l
Flag angegeben habe). ls baz*go
listet alle Dateien auf, deren Namen mit beginnen baz
und mit enden go
(sofern vorhanden).
Aber wenn Sie einVerzeichnisnamelistet ls
den Inhalt vondieses Verzeichnisanstelle des aktuellen Verzeichnisses.
Um den Inhalt von aufzulisten /var/log
, führen Sie einfach Folgendes aus:
ls /var/log
Wenn Sie einerelativPfad für das Verzeichnis eingibt, also einen, der nicht mit einem beginnt /
, dann wird nach diesem Verzeichnis im aktuellen Verzeichnis gesucht (genau wie nach Dateien). Es werden aber trotzdem dieInhaltdes Verzeichnisses, wie Sie möchten.
Als Randbemerkung: Manchmal möchten Sie vielleicht nicht dieInhalteines Verzeichnisses, sondern listen Sie das Verzeichnis einfach so auf, wie eine Datei aufgelistet würde. Dazu können Sie das -d
Flag übergeben. Dies wird beispielsweise /var/log
in Langform angezeigt (nicht in seinerInhalt, sondern /var/log
sich selbst):
ls -ld /var/log
Antwort3
Nachdem ich die akzeptierte Antwort gesehen hatte, war ich immer noch nicht zufrieden. Woher kannte Daniel die Lösung? Natürlich habe ich die Manpage selbst gelesen und konnte immer noch nicht herausfinden, wie.
Die Manpage von ls
lautet:
Beschreibung: Listet Informationen zu den DATEIEN auf (standardmäßig das aktuelle Verzeichnis) ...
Da war nichts Nützliches. Dann habe ich im POSIX-Programmierhandbuch nachgesehen:
Für jeden Operanden, der eine Datei vom Typ „Verzeichnis“ benennt, soll ls die Namen der im Verzeichnis enthaltenen Dateien sowie alle angeforderten zugehörigen Informationen schreiben.
Diese Zeile erklärt das Verhalten des Befehls in der akzeptierten Lösung. Der FILE
Operand ls
KANN ein Verzeichnis sein und ls
listet den Inhalt dieses Verzeichnisses auf. Genau das, was der OP wollte. ABER die Implementierung unter Linux kann von der hier gegebenen Spezifikation abweichen. Wir sind also auf dem richtigen Weg, aber noch nicht am Ziel.
Dann habe ich nach dem Handbuch des GNU- coreutils
Pakets gesucht, zu dem ls
es gehört. Hier ist, was ich gefunden habe:
Bei Befehlszeilenargumenten ohne Optionen, bei denen es sich um Verzeichnisse handelt, listet ls standardmäßig den Inhalt der Verzeichnisse auf ...
Das erklärt es.