kind: reference

Terminal: Dateien und Verzeichnisse

Die Befehle aus Dateien und Verzeichnisse zum Nachschlagen. Die Beispiele beziehen sich auf die Beispieldateien von dort, laufen aber genauso mit deinen eigenen Dateien. Zu fast jedem Befehl zeigt man befehl alle Optionen.

1. Sich zurechtfinden

Wo bin ich, was liegt hier?

Befehl Was er tut
pwd zeigt das aktuelle Verzeichnis (»print working directory«)
ls listet das aktuelle Verzeichnis auf
ls -l mit Rechten, Besitzer, Größe in Bytes und Datum; ein d vorne heißt Verzeichnis
ls -lh Größen lesbar: 9.8M statt 10180401
ls -la auch versteckte Dateien, deren Name mit . beginnt
tree alle Unterverzeichnisse als Baum; tree sandbox nur einen Teil
file * den Typ jeder Datei, nach ihrem Inhalt, nicht nach der Endung

Das Verzeichnis wechseln

Befehl Wohin
cd working-with-files in ein Unterverzeichnis
cd .. eine Ebene nach oben
cd ~ oder nur cd ins Home-Verzeichnis, im Workspace /workspace
cd ~/working-with-files von überall aus an diese Stelle
cd - zurück ins vorige Verzeichnis

Pfade mit Leerzeichen brauchen Anführungszeichen oder einen Backslash vor jedem Leerzeichen: cd "United States" oder cd United\ States. Die Tab-Taste setzt die Backslashes von selbst.

2. Dateien ansehen

Inhalt anzeigen

Befehl Was er tut
cat alice.txt gibt die ganze Datei aus; bei langen Dateien bleibt nur das Ende stehen
less alice.txt seitenweise lesen: Pfeiltasten, Bild↑ Bild↓, / sucht, Q beendet
head words.txt die ersten 10 Zeilen; head -n 3 die ersten 3
tail words.txt die letzten 10 Zeilen; tail -f log.txt zeigt neue Zeilen, sobald sie dazukommen
hd alice.txt | less die einzelnen Bytes in hexadezimaler Schreibweise

less zeigt bei Bildern und Archiven, was darin steckt (Bildgröße, Dateiliste). Bei anderen Dateien fragt es, ob es sie trotzdem zeigen soll: Mit Y siehst du die Bytes als Zeichen, lesbar ist das nicht.

3. Dateien bearbeiten

Editoren im Terminal

Editor Öffnen Speichern Beenden
nano nano hello.txt StrgO, dann Enter StrgX
vim vim hello.txt, schreiben nach I Esc, dann :w und Enter Esc, dann :q und Enter; :q! ohne Speichern
emacs emacs hello.txt StrgX, dann StrgS StrgX, dann StrgC

touch hello.txt legt eine leere Datei an oder setzt bei einer vorhandenen das Datum auf jetzt. vimtutor übt vim in etwa 30 Minuten.

4. Suchen, zählen, sortieren

Suchen mit grep

Befehl Findet
grep everybody alice.txt die Zeilen, in denen everybody steht
grep -i everybody alice.txt auch Everybody und EVERYBODY
grep -n … mit Zeilennummern
grep -c … nur die Zahl der Zeilen
grep -ri welcome . in allen Dateien hier und in allen Unterverzeichnissen
grep -o -E "[A-Za-z]+" alice.txt nur die Treffer selbst, hier jedes Wort einzeln; -E für reguläre Ausdrücke

Pipelines und Umleitungen

Mit | wird die Ausgabe eines Befehls zur Eingabe des nächsten, mit > landet sie in einer Datei.

Baustein Was er tut
wc alice.txt zählt Zeilen, Wörter und Bytes; wc -l nur Zeilen
sort sortiert Zeilen alphabetisch
uniq fasst gleiche Zeilen zusammen, die direkt untereinander stehen (deshalb vorher sort); -i ohne Groß- und Kleinschreibung
… | less eine lange Ausgabe seitenweise
… > words.txt Ausgabe in eine Datei, die dabei überschrieben wird
… >> words.txt Ausgabe ans Ende einer Datei anhängen
grep -o -E "[A-Za-z]+" alice.txt | sort | uniq -i | wc -l

Wie viel Platz?

du -h zeigt, wie viel Platz jedes Verzeichnis belegt, die letzte Zeile ist die Summe. du -h -d 1 geht nur eine Ebene tief, du -sh nennt nur die Summe.

5. Archive

Herunterladen, packen und entpacken

Befehl Was er tut
wget ADRESSE lädt eine Datei ins aktuelle Verzeichnis
tar xvf archiv.tar.gz entpackt ein tar-Archiv (auch .tar.bz2, .tgz); x extract, v zeigt jede Datei, f dann der Dateiname
tar cvzf archiv.tar.gz ordner packt einen Ordner in ein Archiv (c create, z mit gzip)
unzip zork.zip entpackt ein ZIP-Archiv
gzip alice.txt komprimiert zu alice.txt.gz; gzip -d entpackt
bzip2 alice.txt komprimiert stärker zu alice.txt.bz2; bzip2 -d entpackt

gzip und bzip2 ersetzen die Datei durch die gepackte Fassung und umgekehrt; danach gibt es nur noch eine von beiden.

6. Aufräumen

Anlegen, kopieren, verschieben

Befehl Was er tut
mkdir sandbox legt ein Verzeichnis an
mkdir -p a/b/c auch alle Verzeichnisse dazwischen
cp jay.webm sandbox kopiert eine Datei in ein Verzeichnis
cp ../alice.txt . kopiert hierher; . ist das aktuelle Verzeichnis
cp -r zork-master sandbox kopiert ein Verzeichnis mit allem, was darin ist
mv jay.webm nested verschiebt eine Datei
mv alice.txt alice-in-wonderland.txt benennt um

cp und mv überschreiben eine vorhandene Datei am Ziel ohne Rückfrage. Mit -i fragen sie vorher.

Löschen

Befehl Was er tut
rmdir empty löscht ein Verzeichnis, aber nur, wenn es leer ist
rm alice.txt löscht eine Datei
rm -r zork-master löscht ein Verzeichnis mit allem, was darin ist
Im Terminal gibt es keinen Papierkorb: Was rm löscht, ist weg. Hast du einen Checkpoint oder einen Git-Commit, holst du dort den alten Stand zurück.

7. Tasten im Terminal

Weniger tippen

Taste Was sie tut
Tab ergänzt Befehle, Datei- und Verzeichnisnamen; zweimal zeigt alle Möglichkeiten
↑ ↓ holt frühere Befehle zurück
StrgC bricht den laufenden Befehl ab
StrgL oder clear leert das Terminal
Q beendet less, man und lange Ausgaben von git log
* steht für beliebige Zeichen: ls *.txt, file *
./zork startet ein Programm im aktuellen Verzeichnis