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 ls in eine Datei um (überschreibt)
>> echo "Weitere Zeile" >> datei.txt Hängt die Ausgabe von echo an eine Datei an
< touch < datei.txt Leitet den Inhalt von datei.txt als Eingabe für touch um
| echo Hallo | touch datei.txt Leitet die Ausgabe von echo als Eingabe in touch um (Pipe)

Und hier weitere Operatoren

Operator Beispiel Beschreibung
2> cp quelle.txt ziel.txt 2> fehler.txt Leitet Fehler von cp in eine Datei um (überschreibt)
2>> cp quelle.txt ziel.txt 2>> fehler.txt Hängt Fehler von cp an eine Datei an
&> mv alt.txt neu.txt &> alles.txt Leitet Ausgabe und Fehler von mv in eine Datei um (überschreibt)
&>> mv alt.txt neu.txt &>> alles.txt Hängt Ausgabe und Fehler von mv an 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/html detailliert auf, einschließlich versteckter Dateien.
  • ls -t /root: Listet Dateien und Verzeichnisse im Verzeichnis /root sortiert 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 projekte im Home-Verzeichnis (wenn es existiert).

Aufgabe

  • Wechseln Sie in das Verzeichnis /var/www und 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.txt ohne Nachfrage.

Beispiele

  • mkdir /root/neues_verzeichnis: Erstellt ein Verzeichnis namens neues_verzeichnis im Home-Verzeichnis.
  • mkdir -p /var/www/html/projekte/januar: Erstellt das Verzeichnis januar sowie 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.txt im Home-Verzeichnis.
  • rm -r /var/www/html/altes_projekt: Löscht das Verzeichnis altes_projekt und dessen gesamten Inhalt im Verzeichnis /var/www/html.

Aufgabe

  • Erstellen Sie ein neues Verzeichnis namens test_verzeichnis in Ihrem Home-Verzeichnis.
  • Entfernen Sie das Verzeichnis test_verzeichnis.
  • Erstellen Sie das Verzeichnis projekte/2023/januar im Pfad /var/www/html und 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.txt nach ziel.txt.
  • cp -r verzeichnis1 verzeichnis2: Kopiert das Verzeichnis verzeichnis1 und seinen gesamten Inhalt nach verzeichnis2.
  • cp -i quelle.txt ziel.txt: Fragt vor dem Überschreiben von ziel.txt nach 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.txt in neu.txt um.
  • mv verzeichnis1 verzeichnis2: Verschiebt das Verzeichnis verzeichnis1 nach 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/ziel verweist.
  • ln quelle.txt ziel.txt: Erstellt einen Hardlink von quelle.txt nach 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.txt nach backup_bericht.txt im Home-Verzeichnis.
  • cp -r /var/www/html/projekte /var/www/html/projekte_backup: Kopiert das Verzeichnis projekte nach projekte_backup im 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.txt nach archiv_dokument.txt im Home-Verzeichnis.
  • mv /tmp/projekt /var/www/html/projekt: Verschiebt das Verzeichnis projekt von /tmp nach /var/www/html.
  • 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.html nach index_backup.html im Verzeichnis /var/www/html.

Aufgabe

  • Kopieren Sie die Datei bericht.txt in Ihrem Home-Verzeichnis nach backup_bericht.txt.
  • Verwenden Sie die Option -v, um den Kopiervorgang anzuzeigen.
  • Verschieben Sie das Verzeichnis projekt von /tmp nach /var/www/html.
  • Erstellen Sie einen symbolischen Link von /usr/bin/python3 nach /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.

  1. Erstellen Sie eine Datei namens ersteDatei und eine weitere Datei namens zweiteDatei. Hier der Tipp, dass dies wie folgt geht: touch ersteDatei zweiteDatei
  2. Schreiben Sie Ihren Namen in die Datei echo "meinName" > ersteDatei.
  3. Kopieren Sie ersteDatei nach zweiteDatei.
  4. Benennen Sie ersteDatei in neueDatei um und nutzen Sie das Argument -i.
  5. Kopieren Sie neueDatei in eine versteckte Datei namens .versteckteDatei.
  6. Kopieren Sie neueDatei nach weitereDatei und nutzen Sie -v.
  7. Kopieren Sie neueDatei nach zusätzlicheDatei und nutzen Sie -i.
  8. Kopieren Sie weitereDatei nach .versteckteDatei und überschreiben Sie sie und nutzen Sie -iv.
  9. Kopieren Sie neueDatei nach weitereDatei und sichern Sie die alte Version mit -b.
  10. Schreiben Sie den Text "test" in weitereDatei.
  11. Kopieren Sie neueDatei nach weitereDatei und sichern Sie die alte Version mit -b.
  12. Erstellen Sie einen symbolischen Link namens neuerLink, der auf neueDatei verweist.
  13. Kopieren Sie neuerLink nach neuerLink2.
  14. Löschen Sie alle Dateien, die mit Datei enden. Hier der Tipp, dass dies mit rm *Datei geht.
  15. Beantworten Sie folgende Fragen:
    • Welche Dateien waren mit welchen Inhalten vor dem Ausführen des Befehls rm vorhanden?
    • Welche Dateien (nicht Links!) sind nach dem Befehl rm noch vorhanden?
    • Was passiert mit den Links auf Dateien, wenn die Dateien gelöscht sind?

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 ;-).