In diesem Kapitel lernen Sie, wie Sie Verzeichnisse erstellen, Dateien kopieren, verschieben und löschen – alles über das Terminal.
Verzeichnisse erstellen (mkdir)¶
Mit mkdir erstellen Sie neue Verzeichnisse:
$ mkdir python-projekt
$ ls
python-projektMehrere Verzeichnisse auf einmal¶
$ mkdir projekt1 projekt2 projekt3
$ ls
projekt1 projekt2 projekt3Verschachtelte Verzeichnisse¶
Mit der Option -p (parents) erstellen Sie auch alle übergeordneten
Verzeichnisse:
$ mkdir -p projekte/python/bibliothek-tools
$ ls projekte/python/
bibliothek-toolsOhne -p würde dieser Befehl fehlschlagen, wenn projekte/ oder
projekte/python/ noch nicht existieren.
Leere Dateien erstellen (touch)¶
Der Befehl touch erstellt eine leere Datei (oder aktualisiert den Zeitstempel
einer existierenden Datei):
$ touch README.md
$ ls
README.mdDas ist praktisch, um schnell Platzhalter-Dateien zu erstellen:
$ touch main.py data.csv requirements.txt
$ ls
data.csv main.py README.md requirements.txtDateien kopieren (cp)¶
cp überschreibt bestehende Dateien ohne Warnung! Nutzen Sie cp -i für eine
interaktive Nachfrage.
Mit cp (copy) kopieren Sie Dateien:
$ cp quelle.txt ziel.txtDatei in ein Verzeichnis kopieren¶
$ cp main.py backup/Kopiert main.py in das Verzeichnis backup/ (Dateiname bleibt gleich).
Mehrere Dateien kopieren¶
$ cp datei1.txt datei2.txt datei3.txt zielverzeichnis/Das letzte Argument muss ein Verzeichnis sein.
Verzeichnisse kopieren¶
Für Verzeichnisse benötigen Sie die Option -r (recursive):
$ cp -r projekt/ projekt-backup/Kopiert das gesamte Verzeichnis projekt/ mit allem Inhalt nach
projekt-backup/.
Dateien und Verzeichnisse verschieben/umbenennen (mv)¶
mv = Movemv verschiebt Dateien und benennt sie um – beides ist die gleiche
Operation (Änderung des Pfades).
Mit mv (move) verschieben Sie Dateien oder benennen sie um:
Datei umbenennen¶
$ mv alter-name.txt neuer-name.txtDatei verschieben¶
$ mv datei.txt anderes-verzeichnis/Mehrere Dateien verschieben¶
$ mv datei1.txt datei2.txt zielverzeichnis/Verzeichnis umbenennen¶
$ mv altes-verzeichnis neues-verzeichnisIm Gegensatz zu cp benötigt mv keine -r Option für Verzeichnisse.
Dateien und Verzeichnisse löschen (rm, rmdir)¶
rm löscht Dateien endgültig. Es gibt keinen Papierkorb. Gelöschte Dateien
sind unwiederbringlich verloren!
Tipp: Nutzen Sie rm -i für eine Sicherheitsabfrage vor jedem Löschen.
Dateien löschen (rm)¶
$ rm datei.txtMehrere Dateien:
$ rm datei1.txt datei2.txt datei3.txtMit Sicherheitsabfrage:
$ rm -i wichtige-datei.txt
rm: remove regular file 'wichtige-datei.txt'? yLeere Verzeichnisse löschen (rmdir)¶
$ rmdir leeres-verzeichnisFunktioniert nur bei leeren Verzeichnissen!
Verzeichnisse mit Inhalt löschen (rm -r)¶
rm -rf löscht alles rekursiv ohne Nachfrage. Doppelt prüfen vor der
Ausführung!
Niemals rm -rf / ausführen (löscht das gesamte System).
Mit der Option -r (recursive) löschen Sie Verzeichnisse mit ihrem gesamten
Inhalt:
$ rm -r verzeichnis/Kombination mit -i für Sicherheit:
$ rm -ri verzeichnis/Für erzwungenes Löschen ohne Nachfrage (Vorsicht!):
$ rm -rf verzeichnis/Dateiinhalte anzeigen¶
Komplette Datei anzeigen (cat)¶
cat = Concatenatecat wurde ursprünglich zum Zusammenfügen (concatenate) mehrerer Dateien
entwickelt, wird aber meist zum Anzeigen einzelner Dateien genutzt.
$ cat README.md
# Mein Python-Projekt
Dies ist ein Beispielprojekt.Mehrere Dateien:
$ cat datei1.txt datei2.txtSeitenweise anzeigen (less)¶
Für längere Dateien ist less besser geeignet:
$ less lange-datei.txtNavigation in less:
Space oder Page Down: Eine Seite vor
b oder Page Up: Eine Seite zurück
/suchbegriff: Suchen
q: Beenden
Anfang einer Datei (head)¶
$ head datei.txtZeigt die ersten 10 Zeilen. Für eine andere Anzahl:
$ head -n 5 datei.txtZeigt die ersten 5 Zeilen.
Ende einer Datei (tail)¶
$ tail datei.txtZeigt die letzten 10 Zeilen. Praktisch für Log-Dateien:
$ tail -n 20 logfile.logZeigt die letzten 20 Zeilen.
Live-Anzeige (folgt neuen Zeilen):
$ tail -f logfile.logNützlich, um Log-Dateien in Echtzeit zu beobachten. Beenden mit Strg+C.
Praktisches Beispiel: Projektstruktur erstellen¶
Erstellen Sie eine typische Python-Projektstruktur:
$ mkdir -p python-projekt/{src,tests,docs,data}
$ cd python-projekt
$ touch README.md requirements.txt
$ touch src/main.py src/utils.py
$ touch tests/test_main.py
$ touch docs/anleitung.md
$ ls -R
.:
data docs README.md requirements.txt src tests
./data:
./docs:
anleitung.md
./src:
main.py utils.py
./tests:
test_main.pyErstellen Sie folgende Struktur und üben Sie die Befehle:
Erstellen Sie ein Verzeichnis
uebung-unixWechseln Sie in dieses Verzeichnis
Erstellen Sie drei Unterverzeichnisse:
scripts,data,outputErstellen Sie in
scripts/eine leere Dateiverarbeitung.pyKopieren Sie diese Datei nach
scripts/verarbeitung_backup.pyErstellen Sie in
data/eine Dateitest.csvListen Sie die gesamte Struktur mit
ls -RaufVerschieben Sie
scripts/verarbeitung_backup.pynachoutput/Löschen Sie das Verzeichnis
data/komplettÜberprüfen Sie mit
ls, was noch da ist
✅ Lösung
$ mkdir uebung-unix
$ cd uebung-unix
$ mkdir scripts data output
$ touch scripts/verarbeitung.py
$ cp scripts/verarbeitung.py scripts/verarbeitung_backup.py
$ touch data/test.csv
$ ls -R
.:
data output scripts
./data:
test.csv
./output:
./scripts:
verarbeitung.py verarbeitung_backup.py
$ mv scripts/verarbeitung_backup.py output/
$ rm -r data
$ ls
output scripts
$ ls -R
.:
output scripts
./output:
verarbeitung_backup.py
./scripts:
verarbeitung.pyZusammenfassung der Befehle¶
| Befehl | Bedeutung | Beispiel |
|---|---|---|
mkdir | Verzeichnis erstellen | mkdir projekte |
mkdir -p | Verschachtelte Verzeichnisse | mkdir -p a/b/c |
touch | Leere Datei erstellen | touch datei.txt |
cp | Datei kopieren | cp a.txt b.txt |
cp -r | Verzeichnis kopieren | cp -r dir1 dir2 |
mv | Verschieben/Umbenennen | mv alt.txt neu.txt |
rm | Datei löschen | rm datei.txt |
rm -r | Verzeichnis löschen | rm -r verzeichnis |
rmdir | Leeres Verzeichnis löschen | rmdir leer |
cat | Datei anzeigen | cat datei.txt |
less | Seitenweise anzeigen | less datei.txt |
head | Anfang anzeigen | head datei.txt |
tail | Ende anzeigen | tail datei.txt |