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.
Öffnen Sie ein Terminal in der WebIDE. Hier geben Sie Ihre Befehle ein.
Erstellen Sie eine neue Datei mit dem Namen
test_file.txt:touch test_file.txtDer Befehl
touchwird verwendet, um eine leere Datei zu erstellen. Falls die Datei bereits existiert, aktualisiert er den Zeitstempel der Datei, ohne deren Inhalt zu ändern.Fügen Sie der Datei etwas Inhalt hinzu:
echo "This is a test file for our lab." > test_file.txtDieser 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.Überprüfen Sie den Dateiinhalt:
cat test_file.txtcatsteht 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.
Erstellen Sie eine neue Skriptdatei mit dem Namen
file_exists.sh:touch file_exists.shFü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" fiLassen Sie uns das Ganze aufschlüsseln:
#!/bin/bashwird als Shebang bezeichnet. Es teilt dem System mit, dass dies ein Bash-Skript ist.- Wir setzen eine Variable
filenameauf "test_file.txt". - Die
if-Anweisung prüft, ob die Datei existiert.-eist 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.
Speichern Sie die Datei und beenden Sie den Editor.
Machen Sie das Skript ausführbar:
chmod +x file_exists.shFühren Sie das Skript aus:
./file_exists.shSie sollten die Ausgabe sehen: "test_file.txt exists"
Testen wir nun eine nicht existierende Datei. Zuerst benennen wir unsere Testdatei um:
mv test_file.txt non_existent.txtDieser Befehl benennt
test_file.txtinnon_existent.txtum.Ändern Sie das Skript so, dass es nach dem ursprünglichen Dateinamen "test_file.txt" sucht:
nano file_exists.shStellen Sie sicher, dass die Variable
filenameauf "test_file.txt" gesetzt ist.Führen Sie das Skript erneut aus:
./file_exists.shSie 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.
Erstellen Sie eine neue Skriptdatei mit dem Namen
dir_exists.sh:touch dir_exists.shFü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" fiDieses Skript ähnelt stark unserem Skript zur Dateiexistenz, verwendet jedoch
-danstelle von-e. Der Test-dprüft spezifisch auf die Existenz eines Verzeichnisses.Speichern Sie die Datei und beenden Sie den Editor.
Machen Sie das Skript ausführbar:
chmod +x dir_exists.shFühren Sie das Skript aus:
./dir_exists.shSie sollten die Ausgabe sehen: "test_directory does not exist"
Erstellen wir nun das Verzeichnis und führen das Skript erneut aus:
mkdir test_directory ./dir_exists.shNun sollten Sie die Ausgabe sehen: "test_directory exists"
mkdirist 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.
Benennen wir zuerst unsere Datei wieder in ihren ursprünglichen Namen um:
mv non_existent.txt test_file.txtErstellen Sie eine neue Skriptdatei mit dem Namen
file_readable.sh:touch file_readable.shFü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" fiDieses Skript verwendet den Test
-r, der prüft, ob die Datei für den aktuellen Benutzer lesbar ist.Speichern Sie die Datei und beenden Sie den Editor.
Machen Sie das Skript ausführbar:
chmod +x file_readable.shFühren Sie das Skript aus:
./file_readable.shSie sollten die Ausgabe sehen: "You have read permission for test_file.txt"
Entziehen wir nun die Leseberechtigung und führen das Skript erneut aus:
chmod -r test_file.txt ./file_readable.shNun sollten Sie die Ausgabe sehen: "You do not have read permission for test_file.txt"
chmod -rentfernt die Leseberechtigungen von der Datei.Stellen Sie die Leseberechtigung wieder her:
chmod +r test_file.txtEs 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:
- Verständnis Ihrer Arbeitsumgebung
- Erstellen und Bearbeiten von Dateien
- Schreiben und Ausführen von Shell-Skripten
- Testen auf Existenz von Dateien und Verzeichnissen
- Ü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.



