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 Verzeichnisprojekte
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 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.txt
ohne Nachfrage.
Beispiele
mkdir /root/neues_verzeichnis
: Erstellt ein Verzeichnis namensneues_verzeichnis
im Home-Verzeichnis.mkdir -p /var/www/html/projekte/januar
: Erstellt das Verzeichnisjanuar
sowie 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.txt
im Home-Verzeichnis.rm -r /var/www/html/altes_projekt
: Löscht das Verzeichnisaltes_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 Dateiquelle.txt
nachziel.txt
.cp -r verzeichnis1 verzeichnis2
: Kopiert das Verzeichnisverzeichnis1
und seinen gesamten Inhalt nachverzeichnis2
.cp -i quelle.txt ziel.txt
: Fragt vor dem Überschreiben vonziel.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 Dateialt.txt
inneu.txt
um.mv verzeichnis1 verzeichnis2
: Verschiebt das Verzeichnisverzeichnis1
nachverzeichnis2
.
Der Befehl ln
erstellt Links zu Dateien.
ln -s /pfad/zu/ziel ziel_link
: Erstellt einen symbolischen Link namensziel_link
, der auf/pfad/zu/ziel
verweist.ln quelle.txt ziel.txt
: Erstellt einen Hardlink vonquelle.txt
nachziel.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.txt
nachbackup_bericht.txt
im Home-Verzeichnis.cp -r /var/www/html/projekte /var/www/html/projekte_backup
: Kopiert das Verzeichnisprojekte
nachprojekte_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 Dateidokument.txt
nacharchiv_dokument.txt
im Home-Verzeichnis.mv /tmp/projekt /var/www/html/projekt
: Verschiebt das Verzeichnisprojekt
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 vonindex.html
nachindex_backup.html
im Verzeichnis/var/www/html
.
Aufgabe
- Kopieren Sie die Datei
bericht.txt
in Ihrem Home-Verzeichnis nachbackup_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.
- Erstellen Sie eine Datei namens
ersteDatei
und 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
ersteDatei
nachzweiteDatei
. - Benennen Sie
ersteDatei
inneueDatei
um und nutzen Sie das Argument-i
. - Kopieren Sie
neueDatei
in eine versteckte Datei namens.versteckteDatei
. - Kopieren Sie
neueDatei
nachweitereDatei
und nutzen Sie-v
. - Kopieren Sie
neueDatei
nachzusätzlicheDatei
und nutzen Sie-i
. - Kopieren Sie
weitereDatei
nach.versteckteDatei
und überschreiben Sie sie und nutzen Sie-iv
. - Kopieren Sie
neueDatei
nachweitereDatei
und sichern Sie die alte Version mit-b
. - Schreiben Sie den Text "test" in
weitereDatei
. - Kopieren Sie
neueDatei
nachweitereDatei
und sichern Sie die alte Version mit-b
. - Erstellen Sie einen symbolischen Link namens
neuerLink
, der aufneueDatei
verweist. - Kopieren Sie
neuerLink
nachneuerLink2
. - Löschen Sie alle Dateien, die mit
Datei
enden. Hier der Tipp, dass dies mitrm *Datei
geht. - 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?
- 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 ;-).