Wie man prüft, ob ein Verzeichnis in Linux existiert

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie grundlegende Linux-Befehle lernen, um die Existenz eines Verzeichnisses zu prüfen und seine Eigenschaften zu untersuchen. Sie beginnen damit, den Befehl test -d zu verwenden, um programmgesteuert zu überprüfen, ob ein Verzeichnis existiert, und zu verstehen, wie Sie seinen Exit-Status für Skripte interpretieren können.

Danach werden Sie den Befehl ls -ld erkunden, um den Inhalt eines Verzeichnisses aufzulisten und detaillierte Informationen über das Verzeichnis selbst anzuzeigen. Abschließend werden Sie den Befehl stat verwenden, um umfassende Metadaten eines Verzeichnisses zu untersuchen. Diese Fähigkeiten sind für die effektive Verwaltung von Dateisystemen und die Skriptprogrammierung in Linux unerlässlich.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") subgraph Lab Skills linux/test -.-> lab-558676{{"Wie man prüft, ob ein Verzeichnis in Linux existiert"}} linux/ls -.-> lab-558676{{"Wie man prüft, ob ein Verzeichnis in Linux existiert"}} end

Prüfen der Existenz eines Verzeichnisses mit test -d

In diesem Schritt lernen Sie, wie Sie mithilfe des test-Befehls mit der Option -d prüfen können, ob ein Verzeichnis existiert. Dies ist eine grundlegende Fähigkeit für die Skriptprogrammierung und die Automatisierung von Aufgaben in Linux.

Der test-Befehl wird verwendet, um Dateitypen zu prüfen und Werte zu vergleichen. Er wird häufig in bedingten Anweisungen in Shell-Skripten (wie if-Anweisungen) eingesetzt, um Entscheidungen auf der Grundlage der Testergebnisse zu treffen.

Die Option -d bei test prüft speziell, ob ein angegebener Pfad auf ein Verzeichnis verweist.

Probieren wir es aus. Ihr aktuelles Verzeichnis ist /home/labex/project. Dieses Verzeichnis existiert.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

test -d /home/labex/project

Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie keine Ausgabe, wenn das Verzeichnis existiert. Dies liegt daran, dass der test-Befehl bei Erfolg einen Exit-Status von 0 zurückgibt (was in Linux typischerweise "Erfolg" bedeutet) und nichts auf der Standardausgabe ausgibt.

Jetzt prüfen wir ein Verzeichnis, das nicht existiert. Geben Sie diesen Befehl ein und drücken Sie Enter:

test -d /home/labex/nonexistent_directory

Auch hier sehen Sie keine direkte Ausgabe des test-Befehls. Der Befehl gibt jedoch einen Exit-Status ungleich 0 zurück (was "Fehler" bedeutet, da das Verzeichnis nicht existiert).

Um den Exit-Status des letzten Befehls anzuzeigen, können Sie die spezielle Variable $? verwenden. Geben Sie diesen Befehl ein und drücken Sie Enter:

echo $?

Nachdem Sie die Existenz von /home/labex/project geprüft haben, sollte echo $? 0 ausgeben.
Nachdem Sie die Existenz von /home/labex/nonexistent_directory geprüft haben, sollte echo $? eine Zahl ungleich 0 ausgeben (normalerweise 1).

Das Verständnis von Exit-Statuswerten ist entscheidend für das Schreiben von Skripten, die auf den Erfolg oder Misserfolg von Befehlen reagieren können.

Auflisten des Verzeichnisinhalts mit ls -ld

In diesem Schritt lernen Sie, wie Sie den Inhalt eines Verzeichnisses auflisten und detaillierte Informationen über das Verzeichnis selbst mithilfe des ls-Befehls mit den Optionen -l und -d anzeigen können.

Der ls-Befehl ist einer der am häufigsten verwendeten Befehle in Linux. Standardmäßig listet er die Dateien und Verzeichnisse im aktuellen Verzeichnis auf.

Die Option -l liefert ein "ausführliches Listing" (long listing), das Details wie Dateiberechtigungen, Eigentum, Größe und Änderungszeit anzeigt.

Die Option -d ist wichtig, wenn Sie Informationen über das Verzeichnis selbst sehen möchten, anstatt seinen Inhalt. Ohne -d würde ls -l den Inhalt des Verzeichnisses im ausführlichen Format auflisten. Mit -d listet es den Verzeichniseintrag selbst auf.

Kombinieren wir diese Optionen, um die Details Ihres aktuellen Verzeichnisses, /home/labex/project, anzuzeigen.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

ls -ld /home/labex/project

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

drwxr-xr-x 2 labex labex 4096 <Date> <Time> /home/labex/project

Lassen Sie uns diese Ausgabe analysieren:

  • d: Das erste Zeichen gibt den Dateityp an. d bedeutet, dass es sich um ein Verzeichnis handelt.
  • rwxr-xr-x: Diese Zeichen repräsentieren die Dateiberechtigungen für den Eigentümer, die Gruppe und andere.
  • 2: Die Anzahl der Hardlinks zu diesem Verzeichnis.
  • labex: Der Eigentümer des Verzeichnisses.
  • labex: Die Gruppe, der das Verzeichnis gehört.
  • 4096: Die Größe des Verzeichnisses in Bytes.
  • <Date> <Time>: Das Datum und die Uhrzeit der letzten Änderung.
  • /home/labex/project: Der Name des Verzeichnisses.

Jetzt versuchen Sie, ls -l ohne die Option -d auszuführen, um den Unterschied zu sehen. Wenn es Dateien oder Verzeichnisse in /home/labex/project gibt, werden sie aufgelistet.

ls -l /home/labex/project

Wenn /home/labex/project leer ist, sehen Sie keine Ausgabe von ls -l. Wenn es Elemente enthält, sehen Sie ein ausführliches Listing dieser Elemente.

Die Verwendung von ls -ld ist ein schneller Weg, um die Berechtigungen, das Eigentum und die Änderungszeit eines bestimmten Verzeichnisses zu prüfen, ohne alles darin aufzulisten.

Untersuchung von Verzeichnis-Metadaten mit stat

In diesem Schritt verwenden Sie den stat-Befehl, um noch detailliertere Informationen über ein Verzeichnis zu erhalten als ls -ld bietet.

Während ls -ld Ihnen eine gute Zusammenfassung gibt, liefert stat eine Fülle von Metadaten über Dateien und Verzeichnisse, einschließlich Zugriffs-, Änderungs- und Statusänderungszeiten, Blockgröße und Inode-Informationen.

Lassen Sie uns stat verwenden, um Ihr aktuelles Verzeichnis, /home/labex/project, zu untersuchen.

Geben Sie den folgenden Befehl ein und drücken Sie Enter:

stat /home/labex/project

Sie werden eine Ausgabe ähnlich der folgenden sehen:

  File: /home/labex/project
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: <device_id>     Inode: <inode_number>  Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 5000/   labex)   Gid: ( 5000/   labex)
Access: <Date> <Time>.<Nanoseconds> +<Offset>
Modify: <Date> <Time>.<Nanoseconds> +<Offset>
Change: <Date> <Time>.<Nanoseconds> +<Offset>
 Birth: -

Schauen wir uns einige der wichtigsten Informationen an:

  • File: Der Name der Datei oder des Verzeichnisses.
  • Size: Die Größe in Bytes.
  • Blocks: Die Anzahl der zugewiesenen 512-Byte-Blöcke.
  • IO Block: Die optimale I/O-Blockgröße.
  • directory: Gibt den Dateityp an.
  • Device: Die Geräte-ID, auf der die Datei gespeichert ist.
  • Inode: Die Inode-Nummer (eine eindeutige Kennung für das Dateisystemobjekt).
  • Links: Die Anzahl der Hardlinks.
  • Access: (0755/drwxr-xr-x): Berechtigungen im oktalen und symbolischen Format.
  • Uid und Gid: Die Benutzer-ID und Gruppen-ID des Eigentümers.
  • Access, Modify, Change: Zeitstempel für den letzten Zugriff, die letzte Änderung und die letzte Statusänderung.

Der stat-Befehl ist besonders nützlich, wenn Sie genaue Details über Dateisystemobjekte benötigen, insbesondere für die Skriptprogrammierung oder die Fehlersuche bei Berechtigungen und Zeitstempeln.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie in Linux überprüfen können, ob ein Verzeichnis existiert, indem Sie den test -d-Befehl verwenden. Sie haben das Testen auf vorhandene und nicht vorhandene Verzeichnisse geübt und verstanden, wie Sie den Exit-Status des Befehls mithilfe von echo $? überprüfen können, um das Ergebnis des Tests zu bestimmen. Diese grundlegende Fähigkeit ist für die Skriptprogrammierung und die Automatisierung von Aufgaben basierend auf der Existenz von Verzeichnissen unerlässlich.

Sie haben auch gelernt, wie Sie den Inhalt eines Verzeichnisses auflisten und detaillierte Informationen über das Verzeichnis selbst mithilfe des ls -ld-Befehls anzeigen können.