Dateisystemoperationen in der Shell

ShellShellBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie verschiedene Dateiprüfungen (file tests) in der Shell durchführen. Dateiprüfungen sind essentielle Werkzeuge zum Überprüfen der Eigenschaften von Dateien und Verzeichnissen im Dateisystem. Am Ende dieses Labs sind Sie mit den gängigen Dateiprüfbefehlen (file test commands) und ihrer Verwendung vertraut, was grundlegende Fähigkeiten für die Arbeit mit Dateien in Linux-Umgebungen sind.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) shell(("Shell")) -.-> shell/VariableHandlingGroup(["Variable Handling"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) shell(("Shell")) -.-> shell/ControlFlowGroup(["Control Flow"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") shell/VariableHandlingGroup -.-> shell/variables_decl("Variable Declaration") shell/VariableHandlingGroup -.-> shell/variables_usage("Variable Usage") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") shell/ControlFlowGroup -.-> shell/if_else("If-Else Statements") shell/ControlFlowGroup -.-> shell/cond_expr("Conditional Expressions") subgraph Lab Skills linux/echo -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} shell/variables_decl -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} shell/variables_usage -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} linux/touch -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} linux/chmod -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} linux/mkdir -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} shell/if_else -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} shell/cond_expr -.-> lab-388821{{"Dateisystemoperationen in der Shell"}} end

Erstellen einer Testdatei

Bevor wir mit Dateioperationen beginnen, ist es wichtig, unsere Arbeitsumgebung zu verstehen. In Linux arbeiten Sie immer in einem bestimmten Verzeichnis, und es ist entscheidend zu wissen, wo Sie sich im Dateisystem befinden.

  1. Öffnen Sie ein Terminal in der WebIDE. Hier geben Sie Ihre Befehle ein.

  2. Erstellen Sie eine neue Datei mit dem Namen test_file.txt:

    touch test_file.txt

    Der Befehl touch wird verwendet, um eine leere Datei zu erstellen. Wenn die Datei bereits existiert, aktualisiert er den Zeitstempel der Datei, ohne ihren Inhalt zu ändern.

  3. Fügen Sie der Datei etwas Inhalt hinzu:

    echo "This is a test file for our lab." > test_file.txt

    Dieser Befehl verwendet echo, um den Text auszugeben, und >, um diese Ausgabe in die Datei umzuleiten. Seien Sie vorsichtig mit >, da es den vorhandenen Inhalt der Datei überschreiben wird.

  4. Überprüfen Sie den Dateiinhalt:

    cat test_file.txt

    cat ist die Abkürzung für "concatenate", wird aber oft verwendet, um den Inhalt einer Datei anzuzeigen. Sie sollten die Nachricht "This is a test file for our lab." sehen.

Wenn Sie einen Fehler machen oder von vorne beginnen möchten, können Sie die Datei immer mit rm test_file.txt entfernen und ab Schritt 1 erneut beginnen.

Prüfen der Dateiexistenz

Nachdem wir eine Datei erstellt haben, lernen wir nun, wie man prüft, ob eine Datei existiert. Dies ist eine häufige Aufgabe in Shell-Skripten, insbesondere wenn Sie Operationen an Dateien ausführen müssen.

  1. Erstellen Sie eine neue Skriptdatei mit dem Namen file_exists.sh:

    touch file_exists.sh
  2. Fügen Sie der Datei den folgenden Inhalt hinzu:

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -e "$filename" ]; then
      echo "$filename exists"
    else
      echo "$filename does not exist"
    fi

    Lassen Sie uns dies aufschlüsseln:

    • #!/bin/bash wird als Shebang bezeichnet. Es teilt dem System mit, dass dies ein Bash-Skript ist.
    • Wir setzen eine Variable filename auf "test_file.txt".
    • Die if-Anweisung prüft, ob die Datei existiert. -e ist eine Prüfung, die true zurückgibt, wenn die Datei existiert.
    • Wir verwenden echo, um eine Nachricht auszugeben, je nachdem, ob die Datei existiert oder nicht.
  3. Speichern Sie die Datei und verlassen Sie den Editor.

  4. Machen Sie das Skript ausführbar:

    chmod +x file_exists.sh
  5. Führen Sie das Skript aus:

    ./file_exists.sh

    Sie sollten die Ausgabe "test_file.txt exists" sehen.

  6. Jetzt testen wir mit einer nicht existierenden Datei. Zuerst benennen wir unsere Testdatei um:

    mv test_file.txt non_existent.txt

    Dieser Befehl benennt test_file.txt in non_existent.txt um.

  7. Ändern Sie das Skript, um auf den ursprünglichen Dateinamen "test_file.txt" zu prüfen:

    nano file_exists.sh

    Ändern Sie die Variable filename auf "test_file.txt", wenn sie nicht bereits auf diesen Wert gesetzt ist.

  8. Führen Sie das Skript erneut aus:

    ./file_exists.sh

    Sie sollten die Ausgabe "test_file.txt does not exist" sehen.

Dieses Skript zeigt, wie man die Existenz einer Datei prüft, was von entscheidender Bedeutung ist, wenn Ihr Skript mit Dateien arbeiten muss, die vorhanden oder nicht vorhanden sein können.

Prüfen der Verzeichnisexistenz

Ähnlich wie bei der Prüfung der Dateiexistenz können wir auch prüfen, ob ein Verzeichnis existiert. Dies ist nützlich, wenn Ihr Skript mit Verzeichnissen arbeiten muss, die vorhanden oder nicht vorhanden sein können.

  1. Erstellen Sie eine neue Skriptdatei mit dem Namen dir_exists.sh:

    touch dir_exists.sh
  2. Fügen Sie der Datei den folgenden Inhalt hinzu:

    #!/bin/bash
    
    dirname="test_directory"
    if [ -d "$dirname" ]; then
      echo "$dirname exists"
    else
      echo "$dirname does not exist"
    fi

    Dieses Skript ähnelt stark unserem Skript zur Prüfung der Dateiexistenz, verwendet jedoch -d anstelle von -e. Der -d-Test prüft speziell auf die Existenz eines Verzeichnisses.

  3. Speichern Sie die Datei und verlassen Sie den Editor.

  4. Machen Sie das Skript ausführbar:

    chmod +x dir_exists.sh
  5. Führen Sie das Skript aus:

    ./dir_exists.sh

    Sie sollten die Ausgabe "test_directory does not exist" sehen.

  6. Jetzt erstellen wir das Verzeichnis und führen das Skript erneut aus:

    mkdir test_directory
    ./dir_exists.sh

    Sie sollten jetzt die Ausgabe "test_directory exists" sehen.

    mkdir ist der Befehl zum Erstellen eines neuen Verzeichnisses.

Dieses Skript zeigt, wie man die Existenz eines Verzeichnisses prüft. Dies kann besonders nützlich sein in Skripten, die Verzeichnisse erstellen, ändern oder löschen müssen.

Prüfen der Dateiberechtigungen

In Linux hat jede Datei und jedes Verzeichnis zugeordnete Berechtigungen, die bestimmen, wer diese lesen, schreiben oder ausführen darf. In diesem Schritt lernen wir, wie man Dateiberechtigungen prüft, insbesondere ob eine Datei lesbar ist.

  1. Zuerst benennen wir unsere Datei wieder in ihren ursprünglichen Namen um:

    mv non_existent.txt test_file.txt
  2. Erstellen Sie eine neue Skriptdatei mit dem Namen file_readable.sh:

    touch file_readable.sh
  3. Fügen Sie der Datei den folgenden Inhalt hinzu:

    #!/bin/bash
    
    filename="test_file.txt"
    if [ -r "$filename" ]; then
      echo "You have read permission for $filename"
    else
      echo "You do not have read permission for $filename"
    fi

    Dieses Skript verwendet den -r-Test, der prüft, ob die Datei für den aktuellen Benutzer lesbar ist.

  4. Speichern Sie die Datei und verlassen Sie den Editor.

  5. Machen Sie das Skript ausführbar:

    chmod +x file_readable.sh
  6. Führen Sie das Skript aus:

    ./file_readable.sh

    Sie sollten die Ausgabe "You have read permission for test_file.txt" sehen.

  7. Jetzt entfernen wir die Leseberechtigung und führen das Skript erneut aus:

    chmod -r test_file.txt
    ./file_readable.sh

    Sie sollten jetzt die Ausgabe "You do not have read permission for test_file.txt" sehen.

    chmod -r entfernt die Leseberechtigungen von der Datei.

  8. Stellen Sie die Leseberechtigung wieder her:

    chmod +r test_file.txt

    Es ist wichtig, die Berechtigungen wiederherzustellen, damit wir nicht versehentlich unsere Datei unlesbar lassen.

Dieses Skript zeigt, wie man Dateiberechtigungen prüft. Das Verständnis und die Verwaltung von Dateiberechtigungen ist von entscheidender Bedeutung für die System-Sicherheit und den ordnungsgemäßen Betrieb von Skripten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie man grundlegende Dateisystemoperationen in der Shell ausführt. Sie haben Skripte erstellt, um die Existenz von Dateien und Verzeichnissen sowie die Dateiberechtigungen zu prüfen. Diese Fähigkeiten sind grundlegend für die Arbeit mit Dateien und Verzeichnissen in Linux-Umgebungen und bilden die Grundlage für komplexere Shell-Skripting-Aufgaben.

Sie haben geübt:

  1. Das Verständnis Ihrer Arbeitsumgebung
  2. Das Erstellen und Manipulieren von Dateien
  3. Das Schreiben und Ausführen von Shell-Skripten
  4. Das Prüfen auf die Existenz von Dateien und Verzeichnissen
  5. Das Überprüfen von Dateiberechtigungen

Diese Fähigkeiten werden Ihnen bei der weiteren Arbeit mit Linux-Systemen und der Entwicklung fortschrittlicherer Shell-Skripte von Wert sein. Denken Sie immer daran, die Existenz von Dateien und Verzeichnissen zu prüfen, bevor Sie Operationen an ihnen ausführen, um Fehler in Ihren Skripten zu vermeiden. Achten Sie auch auf die Dateiberechtigungen, wenn Sie mit sensiblen Daten oder Systemdateien arbeiten.

Im weiteren Verlauf möchten Sie möglicherweise fortgeschrittenere Dateiprüfungen erkunden, andere Shell-Skripting-Konstrukte wie Schleifen und Funktionen lernen und üben, diese Konzepte zu kombinieren, um komplexere und leistungsfähigere Skripte zu erstellen.