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 |
| |
ps aux | grep apache2 |
Leitet die Ausgabe aller laufenden Prozesse ps aus als Eingabe in grep um (Pipe) und zeigt damit nur die apache2-Prozesse an |
< |
grep 'Autor' < datei.txt |
Leitet den Inhalt von datei.txt als Eingabe in grep um und zeigt nur die Zeilen an, die Autor enthalten. Das Zeichen < wird in der Praxis selten verwendet, da man ebenso direkt schreiben könnte: grep 'Autor' datei.txt (also ohne <). |
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/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 Verzeichnisprojekteim 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 namensverzeichnis.mkdir -p pfad/zu/verzeichnis: Erstellt ein Verzeichnis samt aller notwendigen übergeordneten Verzeichnisse.
Der Befehl rmdir entfernt leere Verzeichnisse.
rmdir verzeichnis: Entfernt das leere Verzeichnisverzeichnis.
Der Befehl rm wird verwendet, um Dateien oder Verzeichnisse zu löschen.
rm datei.txt: Löscht die Dateidatei.txt.rm -r verzeichnis: Löscht ein Verzeichnis und seinen gesamten Inhalt rekursiv.rm -f datei.txt: Erzwingt das Löschen der Dateidatei.txtohne Nachfrage.
Beispiele
mkdir /root/neues_verzeichnis: Erstellt ein Verzeichnis namensneues_verzeichnisim Home-Verzeichnis.mkdir -p /var/www/html/projekte/januar: Erstellt das Verzeichnisjanuarsowie alle übergeordneten Verzeichnisse im Pfad/var/www/html/projekte.rmdir /root/neues_verzeichnis: Entfernt das Verzeichnisneues_verzeichnis, wenn es leer ist.rm /root/test.txt: Löscht die Dateitest.txtim Home-Verzeichnis.rm -r /var/www/html/altes_projekt: Löscht das Verzeichnisaltes_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 Dateiquelle.txtnachziel.txt.cp -r verzeichnis1 verzeichnis2: Kopiert das Verzeichnisverzeichnis1und seinen gesamten Inhalt nachverzeichnis2.cp -i quelle.txt ziel.txt: Fragt vor dem Überschreiben vonziel.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 Dateialt.txtinneu.txtum.mv verzeichnis1 verzeichnis2: Verschiebt das Verzeichnisverzeichnis1nachverzeichnis2.
Der Befehl ln erstellt Links zu Dateien.
ln -s /pfad/zu/ziel ziel_link: Erstellt einen symbolischen Link namensziel_link, der auf/pfad/zu/zielverweist.ln quelle.txt ziel.txt: Erstellt einen Hardlink vonquelle.txtnachziel.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 Dateibericht.txtnachbackup_bericht.txtim Home-Verzeichnis.cp -r /var/www/html/projekte /var/www/html/projekte_backup: Kopiert das Verzeichnisprojektenachprojekte_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 Dateidokument.txtnacharchiv_dokument.txtim Home-Verzeichnis.mv /var/www/html/projekt /tmp/project: Verschiebt das Verzeichnisprojektvon/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 vonindex.htmlnachindex_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 (stdin) an einen Befehl weiter.
grep 'Autor' < datei.txt: Leitet den Inhalt von datei.txt an grep weiter und zeigt nur die Zeilen an, die „Autor“ enthalten.
In der Praxis wird < eher selten verwendet, da man genauso grep 'Autor' datei.txt schreiben kann.
Der Operator | leitet die Ausgabe eines Befehls (stdout) als Eingabe in einen anderen Befehl weiter (Pipe).
ps aux | grep apache2: Leitet die Prozessliste an grep weiter und filtert nur die Prozesse, die „apache2“ enthalten.
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 ;-).