Dateisystem-Operationen in der Shell

ShellBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie verschiedene Dateitests in der Shell durchführen. Dateitests sind unverzichtbare Werkzeuge, um die Eigenschaften von Dateien und Verzeichnissen im Dateisystem zu überprüfen. Am Ende dieses Labs werden Sie mit den gängigen Befehlen für Dateitests und deren Anwendung vertraut sein – eine grundlegende Fertigkeit für die Arbeit in Linux-Umgebungen.

Erstellen einer Testdatei

Bevor wir mit den Dateioperationen beginnen, ist es wichtig, unsere Arbeitsumgebung zu verstehen. In Linux arbeiten Sie immer innerhalb eines bestimmten Verzeichnisses, 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. Falls die Datei bereits existiert, aktualisiert er den Zeitstempel der Datei, ohne deren 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 nutzt echo, um den Text auszugeben, und >, um diese Ausgabe in die Datei umzuleiten. Seien Sie vorsichtig mit >, da es vorhandene Inhalte in der Datei überschreibt.

  4. Überprüfen Sie den Dateiinhalt:

    cat test_file.txt

    cat steht für "concatenate" (verknüpfen), wird aber häufig verwendet, um den Inhalt einer Datei anzuzeigen. Sie sollten die Nachricht "This is a test file for our lab." sehen.

Falls Ihnen ein Fehler unterläuft oder Sie von vorne beginnen möchten, können Sie die Datei jederzeit mit rm test_file.txt löschen und wieder bei Schritt 1 anfangen.

Testen 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 auf 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 den folgenden Inhalt in die Datei ein:

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

    Lassen Sie uns das Ganze 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 ein Test, der wahr zurückgibt, wenn die Datei vorhanden ist.
    • Wir verwenden echo, um eine Nachricht auszugeben, je nachdem, ob die Datei existiert oder nicht.
  3. Speichern Sie die Datei und beenden 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 sehen: "test_file.txt exists"

  6. Testen wir nun eine nicht existierende 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 so, dass es nach dem ursprünglichen Dateinamen "test_file.txt" sucht:

    nano file_exists.sh

    Stellen Sie sicher, dass die Variable filename auf "test_file.txt" gesetzt ist.

  8. Führen Sie das Skript erneut aus:

    ./file_exists.sh

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

Dieses Skript zeigt, wie man die Existenz einer Datei prüft – eine kritische Funktion, wenn Ihr Skript mit Dateien arbeiten muss, die eventuell nicht vorhanden sind.

Testen der Verzeichnisexistenz

Ähnlich wie bei der Dateiexistenz können wir auch prüfen, ob ein Verzeichnis existiert. Dies ist nützlich, wenn Ihr Skript mit Ordnern arbeiten muss, die möglicherweise erst erstellt werden müssen.

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

    touch dir_exists.sh
  2. Fügen Sie den folgenden Inhalt in die Datei ein:

    #!/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 Dateiexistenz, verwendet jedoch -d anstelle von -e. Der Test -d prüft spezifisch auf die Existenz eines Verzeichnisses.

  3. Speichern Sie die Datei und beenden 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 sehen: "test_directory does not exist"

  6. Erstellen wir nun das Verzeichnis und führen das Skript erneut aus:

    mkdir test_directory
    ./dir_exists.sh

    Nun sollten Sie die Ausgabe sehen: "test_directory exists"

    mkdir ist der Befehl zum Erstellen eines neuen Verzeichnisses.

Dieses Skript demonstriert die Prüfung auf Verzeichnisse. Dies ist besonders hilfreich in Skripten, die Verzeichnisse erstellen, ändern oder löschen müssen.

Testen von Dateiberechtigungen

In Linux sind mit jeder Datei und jedem Verzeichnis Berechtigungen verknüpft, die festlegen, wer sie lesen, beschreiben oder ausführen darf. In diesem Schritt lernen wir, wie man Dateiberechtigungen prüft, speziell ob eine Datei lesbar ist.

  1. Benennen wir zuerst 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 den folgenden Inhalt in die Datei ein:

    #!/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 Test -r, der prüft, ob die Datei für den aktuellen Benutzer lesbar ist.

  4. Speichern Sie die Datei und beenden 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 sehen: "You have read permission for test_file.txt"

  7. Entziehen wir nun die Leseberechtigung und führen das Skript erneut aus:

    chmod -r test_file.txt
    ./file_readable.sh

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

    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 die Datei nicht versehentlich unlesbar hinterlassen.

Dieses Skript zeigt, wie man Dateiberechtigungen überprüft. Das Verständnis und die Verwaltung von Berechtigungen sind entscheidend für die Systemsicherheit und das reibungslose Funktionieren von Skripten.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie grundlegende Dateisystem-Operationen in der Shell durchführen. Sie haben Skripte erstellt, um die Existenz von Dateien und Verzeichnissen sowie Dateiberechtigungen zu prüfen. Diese Fähigkeiten sind fundamental für die Arbeit mit Linux-Systemen und bilden die Basis für komplexere Aufgaben in der Shell-Programmierung.

Sie haben folgendes geübt:

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

Diese Kenntnisse werden sehr wertvoll sein, wenn Sie weiterhin mit Linux-Systemen arbeiten und fortgeschrittene Shell-Skripte entwickeln. Denken Sie daran, immer die Existenz von Dateien und Verzeichnissen zu prüfen, bevor Sie Operationen darauf ausführen, um Fehler in Ihren Skripten zu vermeiden. Achten Sie zudem stets auf die Dateiberechtigungen, wenn Sie mit sensiblen Daten oder Systemdateien arbeiten.

Im weiteren Verlauf können Sie fortgeschrittenere Dateitests erkunden, andere Konstrukte der Shell-Programmierung wie Schleifen und Funktionen kennenlernen und üben, diese Konzepte zu kombinieren, um leistungsfähigere Skripte zu erstellen.