2.5.2 Dateisystembefehle und Operatoren
Übersicht über die Befehle auf dieser Seite (in fett bedeutet prüfungsrelevant):
| Befehl | Beispiel | Beschreibung | 
|---|---|---|
| ls | ls -al | Listet Dateien und Verzeichnisse detailliert auf | 
| cd | cd /home | Wechselt zum Verzeichnis /home | 
| pwd | pwd | Zeigt das aktuelle Verzeichnis an | 
| echo | echo Hallo | Gibt den Text "Hallo" auf dem Bildschirm aus | 
| mkdir | mkdir verzeichnis | Erstellt ein neues Verzeichnis | 
| rmdir | rmdir verzeichnis | Entfernt das Verzeichnis (muss leer sein) | 
| rm | rm datei.txt | Löscht die Datei datei.txt | 
| cp | cp quelle.txt ziel.txt | Kopiert die Datei quelle.txt nach ziel.txt | 
| mv | mv alt.txt neu.txt | Verschiebt oder benennt die Datei um | 
| ln | ln -s /pfad/zu/ziel ziel_link | Erstellt einen symbolischen Link ziel_link, der auf /pfad/zu/ziel verweist | 
Alle Befehle können mit jeweils spezifischen Argumenten (z. B. bei ls -al sind es die Argumente -a und -l) verwendet werden, die miteinander kombiniert werden können und die Mächtigkeit der Befehle sehr erhöhen!
Wir verwenden hier auch schon den Befehl touch, der erst im nächsten Unterkapitel behandelt wird. touch datei.txt erstellt eine leere Datei datei.txt
Zunächst die oft genutzten Operatoren
| Operator | Beispiel | Beschreibung | 
|---|---|---|
| > | ls > datei.txt | Leitet die Ausgabe von lsin eine Datei um (überschreibt) | 
| >> | echo "Weitere Zeile" >> datei.txt | Hängt die Ausgabe von echoan eine Datei an | 
| < | touch < datei.txt | Leitet den Inhalt von datei.txtals Eingabe fürtouchum | 
| | | echo Hallo | touch datei.txt | Leitet die Ausgabe von echoals Eingabe intouchum (Pipe) | 
Und hier weitere Operatoren
| Operator | Beispiel | Beschreibung | 
|---|---|---|
| 2> | cp quelle.txt ziel.txt 2> fehler.txt | Leitet Fehler von cpin eine Datei um (überschreibt) | 
| 2>> | cp quelle.txt ziel.txt 2>> fehler.txt | Hängt Fehler von cpan eine Datei an | 
| &> | mv alt.txt neu.txt &> alles.txt | Leitet Ausgabe und Fehler von mvin eine Datei um (überschreibt) | 
| &>> | mv alt.txt neu.txt &>> alles.txt | Hängt Ausgabe und Fehler von mvan eine Datei an | 
Alle Linux-Befehle sind eigentlich Programme
In Linux ist ein Befehl auch immer ein Programm. Die Befehle finden sich unter /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin oder /usr/local/sbin. So wie es für Windows den Explorer gibt, um das Dateisystem grafisch zu bearbeiten, gibt es natürlich auch für Linux eine ganze Reihe verschiedener Programme, die die Arbeit mit dem Dateisystem vereinfachen.
Befehle "ls" und "cd"
Der Befehl ls listet den Inhalt von Verzeichnissen auf. Er kann mit verschiedenen Optionen verwendet werden, um detailliertere Informationen anzuzeigen.
- -l: Zeigt eine detaillierte Liste inklusive Dateiberechtigungen, Anzahl der Links, Besitzer, Gruppe, Größe und Änderungsdatum.
- -a: Zeigt alle Dateien, einschließlich versteckter Dateien, die mit einem Punkt (- .) beginnen.
- -h: Zeigt Dateigrößen in menschenlesbarem Format (z. B. KB, MB).
- -t: Sortiert die Ausgabe nach Änderungsdatum.
Der Befehl cd wird verwendet, um das aktuelle Verzeichnis zu wechseln.
- cd /home: Wechselt zum Verzeichnis- /home.
- cd ..: Wechselt zum übergeordneten Verzeichnis.
- cd ~: Wechselt zum Home-Verzeichnis des aktuellen Benutzers.
- cd -: Wechselt zum vorherigen Verzeichnis.
Beispiele
- ls -al /var/www/html: Listet alle Dateien und Verzeichnisse im Verzeichnis- /var/www/htmldetailliert auf, einschließlich versteckter Dateien.
- ls -t /root: Listet Dateien und Verzeichnisse im Verzeichnis- /rootsortiert nach Änderungsdatum auf.
- cd /var/www/html: Wechselt zum Verzeichnis- /var/www/html.
- cd ..: Geht ein Verzeichnis nach oben.
- cd ~/projekte: Wechselt in das Verzeichnis- projekteim Home-Verzeichnis (wenn es existiert).
Aufgabe
- Wechseln Sie in das Verzeichnis /var/wwwund listen Sie alle Dateien und Verzeichnisse detailliert auf.
- Wechseln Sie in Ihr Home-Verzeichnis und zeigen Sie den Inhalt an, einschließlich versteckter Dateien.
Befehle "pwd" und "echo"
Der Befehl pwd (Print Working Directory) zeigt das aktuelle Verzeichnis an, in dem sich der Benutzer befindet.
Der Befehl echo gibt Text oder Variablenwerte auf dem Bildschirm aus.
- echo Hallo: Gibt den Text "Hallo" aus.
- echo $HOME: Gibt den Wert der Umgebungsvariable HOME aus.
- echo "Dies ist ein Test" > /root/test.txt: Schreibt den Text "Dies ist ein Test" in die Datei- /root/test.txt.
Beispiele
- pwd: Zeigt den vollständigen Pfad des aktuellen Verzeichnisses.
- echo Hallo: Gibt "Hallo" auf dem Bildschirm aus.
- echo $PATH: Zeigt den Wert der Umgebungsvariable PATH.
Aufgabe
- Verwenden Sie den Befehl pwd, um Ihr aktuelles Verzeichnis anzuzeigen.
- Geben Sie den Text "Linux ist großartig!" auf dem Bildschirm aus.
Befehle "mkdir", "rmdir" und "rm"
Der Befehl mkdir wird verwendet, um neue Verzeichnisse zu erstellen.
- mkdir verzeichnis: Erstellt ein neues Verzeichnis namens- verzeichnis.
- mkdir -p pfad/zu/verzeichnis: Erstellt ein Verzeichnis samt aller notwendigen übergeordneten Verzeichnisse.
Der Befehl rmdir entfernt leere Verzeichnisse.
- rmdir verzeichnis: Entfernt das leere Verzeichnis- verzeichnis.
Der Befehl rm wird verwendet, um Dateien oder Verzeichnisse zu löschen.
- rm datei.txt: Löscht die Datei- datei.txt.
- rm -r verzeichnis: Löscht ein Verzeichnis und seinen gesamten Inhalt rekursiv.
- rm -f datei.txt: Erzwingt das Löschen der Datei- datei.txtohne Nachfrage.
Beispiele
- mkdir /root/neues_verzeichnis: Erstellt ein Verzeichnis namens- neues_verzeichnisim Home-Verzeichnis.
- mkdir -p /var/www/html/projekte/januar: Erstellt das Verzeichnis- januarsowie alle übergeordneten Verzeichnisse im Pfad- /var/www/html/projekte.
- rmdir /root/neues_verzeichnis: Entfernt das Verzeichnis- neues_verzeichnis, wenn es leer ist.
- rm /root/test.txt: Löscht die Datei- test.txtim Home-Verzeichnis.
- rm -r /var/www/html/altes_projekt: Löscht das Verzeichnis- altes_projektund dessen gesamten Inhalt im Verzeichnis- /var/www/html.
Aufgabe
- Erstellen Sie ein neues Verzeichnis namens test_verzeichnisin Ihrem Home-Verzeichnis.
- Entfernen Sie das Verzeichnis test_verzeichnis.
- Erstellen Sie das Verzeichnis projekte/2023/januarim Pfad/var/www/htmlund entfernen Sie es anschließend rekursiv.
Befehle "cp", "mv" und "ln"
Der Befehl cp kopiert Dateien und Verzeichnisse.
- cp quelle.txt ziel.txt: Kopiert die Datei- quelle.txtnach- ziel.txt.
- cp -r verzeichnis1 verzeichnis2: Kopiert das Verzeichnis- verzeichnis1und seinen gesamten Inhalt nach- verzeichnis2.
- cp -i quelle.txt ziel.txt: Fragt vor dem Überschreiben von- ziel.txtnach einer Bestätigung (interactive).
- cp -v quelle.txt ziel.txt: Zeigt jeden Kopiervorgang im Detail an (verbose).
- cp -b quelle.txt ziel.txt: Erstellt eine Sicherung der Zieldatei, bevor sie überschrieben wird (backup).
Der Befehl mv verschiebt oder benennt Dateien und Verzeichnisse um.
- mv alt.txt neu.txt: Verschiebt oder benennt die Datei- alt.txtin- neu.txtum.
- mv verzeichnis1 verzeichnis2: Verschiebt das Verzeichnis- verzeichnis1nach- verzeichnis2.
Der Befehl ln erstellt Links zu Dateien.
- ln -s /pfad/zu/ziel ziel_link: Erstellt einen symbolischen Link namens- ziel_link, der auf- /pfad/zu/zielverweist.
- ln quelle.txt ziel.txt: Erstellt einen Hardlink von- quelle.txtnach- ziel.txt.
Unterschied symbolischer Link und Hardlink
Ein symbolischer Link (auch Symlink oder Softlink genannt) ist eine Art Verknüpfung, die auf eine andere Datei oder ein anderes Verzeichnis verweist. Ein Symlink enthält den Pfad zu der Zieldatei und funktioniert ähnlich wie eine Verknüpfung in Windows. Wenn die Zieldatei oder das Zielverzeichnis gelöscht oder verschoben wird, verweist der Symlink auf einen ungültigen Pfad und wird "broken".
Ein Hardlink hingegen ist ein weiterer Verzeichniseintrag, der auf dieselben Daten wie die ursprüngliche Datei verweist. Ein Hardlink und die ursprüngliche Datei sind ununterscheidbar, da sie denselben Inode und somit denselben Speicherort auf der Festplatte teilen. Wird die Originaldatei gelöscht, bleiben die Daten weiterhin über den Hardlink zugänglich, solange mindestens ein Hardlink existiert. Hardlinks können jedoch nicht auf Verzeichnisse verweisen und funktionieren nur innerhalb desselben Dateisystems.
Beispiele
- cp /root/bericht.txt /root/backup_bericht.txt: Kopiert die Datei- bericht.txtnach- backup_bericht.txtim Home-Verzeichnis.
- cp -r /var/www/html/projekte /var/www/html/projekte_backup: Kopiert das Verzeichnis- projektenach- projekte_backupim Verzeichnis- /var/www/html.
- cp -v /root/bericht.txt /root/backup_bericht.txt: Kopiert die Datei und zeigt den Kopiervorgang an.
- cp -b /root/bericht.txt /root/backup_bericht.txt: Kopiert die Datei und erstellt eine Sicherung der Zieldatei, falls sie bereits existiert.
- mv /root/dokument.txt /root/archiv_dokument.txt: Verschiebt die Datei- dokument.txtnach- archiv_dokument.txtim Home-Verzeichnis.
- mv /var/www/html/projekt /tmp/project: Verschiebt das Verzeichnis- projektvon- /var/www/htmlnach- /tmpund schauen Sie nach, ob es nun unter- /tmpliegt.
- ln -s /usr/bin/python3 /usr/bin/python: Erstellt einen symbolischen Link für Python.
- ln /var/www/html/index.html /var/www/html/index_backup.html: Erstellt einen Hardlink von- index.htmlnach- index_backup.htmlim Verzeichnis- /var/www/html.
Aufgabe
- Kopieren Sie die Datei bericht.txtin Ihrem Home-Verzeichnis nachbackup_bericht.txt.
- Verwenden Sie die Option -v, um den Kopiervorgang anzuzeigen.
- Verschieben Sie das Verzeichnis projektvon/tmpnach/var/www/html.
- Erstellen Sie einen symbolischen Link von /usr/bin/python3nach/usr/bin/python.
Operatoren
Der Operator > leitet die Ausgabe eines Befehls in eine Datei um und überschreibt deren Inhalt.
ls > datei.txt: Leitet die Ausgabe von ls in die Datei datei.txt um.
Der Operator >> leitet die Ausgabe eines Befehls in eine Datei um und fügt den Text ans Ende der Datei an.
echo "Weitere Zeile" >> datei.txt: Fügt die Ausgabe von echo ans Ende der Datei datei.txt an.
Der Operator 2> leitet die Standardfehlerausgabe eines Befehls in eine Datei um und überschreibt deren Inhalt.
cp quelle.txt ziel.txt 2> fehler.txt: Leitet Fehler von cp in die Datei fehler.txt um.
Der Operator 2>> leitet die Standardfehlerausgabe eines Befehls in eine Datei um und fügt den Text ans Ende der Datei an.
cp quelle.txt ziel.txt 2>> fehler.txt: Fügt Fehler von cp ans Ende der Datei fehler.txt an.
Der Operator &> leitet sowohl die Standardausgabe als auch die Standardfehlerausgabe eines Befehls in eine Datei um und überschreibt deren Inhalt.
mv alt.txt neu.txt &>> alles.txt: Fügt Ausgabe und Fehler von mv ans Ende der Datei alles.txt an.
Der Operator < leitet den Inhalt einer Datei als Eingabe für einen Befehl um.
touch < datei.txt: Verwendet den Inhalt von datei.txt als Eingabe für touch.
Der Operator | leitet die Ausgabe eines Befehls als Eingabe in einen anderen Befehl um (Pipe).
echo Hallo | touch datei.txt: Leitet die Ausgabe von echo als Eingabe in touch um.
Ein kleines Spiel zur Übung
Spiel Dateiverwaltung und Links
In diesem "Spiel" werden Sie verschiedene Dateiverwaltungsbefehle anwenden. Folgen Sie den Anweisungen und beantworten Sie die Fragen am Ende. Verwenden Sie ls -al, um den aktuellen Zustand der Verzeichnisse und Dateien zu überprüfen.
- Erstellen Sie eine Datei namens ersteDateiund eine weitere Datei namenszweiteDatei. Hier der Tipp, dass dies wie folgt geht:touch ersteDatei zweiteDatei
- Schreiben Sie Ihren Namen in die Datei echo "meinName" > ersteDatei.
- Kopieren Sie ersteDateinachzweiteDatei.
- Benennen Sie ersteDateiinneueDateium und nutzen Sie das Argument-i.
- Kopieren Sie neueDateiin eine versteckte Datei namens.versteckteDatei.
- Kopieren Sie neueDateinachweitereDateiund nutzen Sie-v.
- Kopieren Sie neueDateinachzusätzlicheDateiund nutzen Sie-i.
- Kopieren Sie weitereDateinach.versteckteDateiund überschreiben Sie sie und nutzen Sie-iv.
- Kopieren Sie neueDateinachweitereDateiund sichern Sie die alte Version mit-b.
- Schreiben Sie den Text "test" in weitereDatei.
- Kopieren Sie neueDateinachweitereDateiund sichern Sie die alte Version mit-b.
- Erstellen Sie einen symbolischen Link namens neuerLink, der aufneueDateiverweist.
- Kopieren Sie neuerLinknachneuerLink2.
- Löschen Sie alle Dateien, die mit Dateienden. Hier der Tipp, dass dies mitrm *Dateigeht.
- Beantworten Sie folgende Fragen:- Welche Dateien waren mit welchen Inhalten vor dem Ausführen des Befehls rmvorhanden?
- Welche Dateien (nicht Links!) sind nach dem Befehl rmnoch vorhanden?
- Was passiert mit den Links auf Dateien, wenn die Dateien gelöscht sind?
 
- Welche Dateien waren mit welchen Inhalten vor dem Ausführen des Befehls 
Hinweise:
- Verwenden Sie nach jedem Schritt ls -al, um den aktuellen Zustand der Verzeichnisse und Dateien zu überprüfen.
- Denken Sie nach, bevor Sie die Befehle ausführen, und kontrollieren Sie immer den aktuellen Zustand der Dateien.
- Und wenn Sie diese Hinweise erst gelesen haben, nachdem Sie schon alles gelöscht hatten, dann beginnen Sie einfach wieder von vorne. Es soll ja eine Übung sein. Aber verraten Sie es den anderen nicht, die die Übung ja auch gerne zweimal machen wollen ;-).