Linux-Cheatsheet

Linux ist das Betriebssystem auf allen Pool-Rechnern und Rechenservern des Instituts. Für viele Aufgaben genügt eine grafische Oberfläche; die volle Stärke entfaltet Linux auf der Kommandozeile (Terminal). Hier die wichtigsten Befehle für den Einstieg.

Linux unterscheidet bei Datei- und Verzeichnisnamen Groß- und Kleinschreibung: Datei.txt und datei.txt sind zwei verschiedene Dateien.
01 · Erste Schritte

Hilfreich von Anfang an

Tab-Ergänzung, Befehlshistorie und das eingebaute Handbuch.

Tab-Ergänzung und Befehlshistorie

Tab ergänzt Befehle und Dateinamen automatisch – spart Tipparbeit und Tippfehler.
Mit / durch frühere Befehle navigieren.

man – Handbuch aufrufen

Zeigt die vollständige Dokumentation eines Befehls:

$ man ls          # Handbuch für "ls"
$ man man         # Handbuch für "man"

Scrollen: Leertaste (Seite vor), b (zurück), q (beenden).

Verzeichnisse und Dateien

ls – Verzeichnisinhalt auflisten

Zeigt Dateien und Unterverzeichnisse an.

$ ls              # Inhalt des aktuellen Verzeichnisses
$ ls -l           # ausführliche Liste (Rechte, Größe, Datum)
$ ls -la          # wie -l, zeigt auch versteckte Dateien (. am Anfang)
$ ls Verz/        # Inhalt eines anderen Verzeichnisses

pwd – Aktuelles Verzeichnis anzeigen

Zeigt den vollständigen Pfad des aktuellen Verzeichnisses.

$ pwd

cd – Verzeichnis wechseln

$ cd Verzeichnis  # wechselt in "Verzeichnis"
$ cd              # wechselt ins Home-Verzeichnis (~)
$ cd ..           # eine Ebene höher
$ cd -            # zum vorherigen Verzeichnis zurück

mkdir – Verzeichnis erstellen

$ mkdir neues_verz            # erstellt "neues_verz"
$ mkdir -p pfad/zu/verz       # erstellt alle Zwischenverzeichnisse

Dateien lesen und bearbeiten

cat – Datei ausgeben

$ cat datei.txt               # gibt Inhalt aus
$ cat datei1.txt datei2.txt   # gibt beide Dateien hintereinander aus

less – Datei seitenweise lesen

Für große Dateien besser geeignet als cat.

$ less datei.txt

Navigation: Leertaste (vor), b (zurück), /Suchbegriff (suchen), q (beenden).

head, tail, wc – Anfang, Ende, Statistik

$ head datei.txt              # erste 10 Zeilen
$ head -n 50 datei.txt        # erste 50 Zeilen
$ tail -n 20 datei.txt        # letzte 20 Zeilen
$ tail -f log.txt             # Datei live verfolgen (z. B. Logs)

$ wc datei.txt                # Zeilen, Wörter, Bytes
$ wc -l datei.txt             # nur Zeilen zählen

nano – einfacher Texteditor

Anfängerfreundlich, alle wichtigen Tastenkürzel werden unten in der Statuszeile angezeigt.

$ nano datei.txt              # Datei öffnen oder neu anlegen

Wichtigste Shortcuts: Strg+O speichern, Strg+X beenden, Strg+K Zeile ausschneiden, Strg+W suchen.

Stattdessen vim erwischt? Mit Esc, :q!, Enter kommst du wieder raus – ganz ohne Speichern.

Kopieren, Verschieben, Löschen

cp und mv – Kopieren und Verschieben

Das Ziel wird ohne Rückfrage überschrieben!
Befehl Wirkung
cp quelle ziel Kopiert Datei quelle nach ziel
cp -r quellverz/ zielverz/ Kopiert ein Verzeichnis rekursiv
mv quelle ziel Verschiebt oder benennt um

rm – Löschen

Gelöschte Dateien sind nicht ohne weiteres wiederherstellbar! Eingabe sorgfältig prüfen.
$ rm datei.txt        # löscht eine Datei
$ rm -i datei.txt     # fragt vor dem Löschen nach (sicherer)
$ rm -r verz/         # löscht ein Verzeichnis rekursiv

Suchen

grep – Dateiinhalt durchsuchen

Durchsucht Dateien nach Mustern (reguläre Ausdrücke).

$ grep "Suchbegriff" datei.txt        # sucht in einer Datei
$ grep -r "Suchbegriff" verz/         # sucht rekursiv in Verzeichnis
$ grep -i "suchbegriff" datei*        # Groß-/Kleinschreibung ignorieren
$ grep -n "Suchbegriff" datei.txt     # zeigt Zeilennummern

find – Dateien finden

$ find . -name "*.pdf"            # alle PDF-Dateien ab aktuellem Verzeichnis
$ find ~ -name "*.tex" -newer x   # .tex-Dateien, neuer als Datei x

Wildcards (Globbing)

Die Shell ersetzt diese Platzhalter vor Befehlsausführung durch passende Dateinamen:

$ ls *.tex                    # alle Dateien, die auf .tex enden
$ rm bild_?.png               # bild_1.png, bild_a.png … (genau 1 Zeichen)
$ ls daten_[0-9].csv          # daten_0.csv … daten_9.csv
$ cp projekt/* backup/        # alle Dateien aus projekt/ kopieren

Umleitungen und Pipes

Mit Umleitungsoperatoren können Ausgaben umgeleitet und Programme miteinander verbunden werden.

$ ls -l > liste.txt           # Ausgabe in Datei schreiben (überschreibt)
$ ls -l >> liste.txt          # Ausgabe anhängen (nicht überschreiben)
$ sort < liste.txt            # Datei als Eingabe verwenden

$ ls -l | grep ".pdf"         # Ausgabe von ls an grep weitergeben (Pipe)
$ cat datei.txt | sort | uniq # sortieren und doppelte Zeilen entfernen

Berechtigungen

chmod – Dateiberechtigungen ändern

Linux verwaltet Berechtigungen für Besitzer, Gruppe und alle anderen (Lesen r, Schreiben w, Ausführen x).

$ chmod +x skript.sh          # Ausführungsrecht hinzufügen
$ chmod 644 datei.txt         # rw-r--r-- (Standardrecht für Dateien)
$ chmod 755 verz/             # rwxr-xr-x (Standardrecht für Verzeichnisse)

Archive packen und entpacken

Befehl Wirkung
tar -czvf archiv.tar.gz verz/ Verzeichnis als .tar.gz packen
tar -xzvf archiv.tar.gz .tar.gz entpacken
tar -tvf archiv.tar.gz Inhalt anzeigen, ohne zu entpacken
zip -r archiv.zip verz/ · unzip archiv.zip ZIP-Archive packen / entpacken

Prozesse im Hintergrund

Wichtig auf den Rechenservern: Prozesse so starten, dass sie weiterlaufen, auch wenn die SSH-Verbindung trennt.

Befehl Wirkung
befehl & im Hintergrund starten
Strg+Z laufenden Prozess pausieren
bg pausierten Prozess im Hintergrund weiterlaufen lassen
fg in den Vordergrund holen
jobs eigene Hintergrundprozesse auflisten
nohup befehl & Prozess von Terminal abkoppeln (überlebt SSH-Logout)

Für lange Sessions ist allerdings tmux oder screen meist komfortabler – siehe SSH-Seite.

Weitere nützliche Befehle

Befehl Wirkung
whoami Aktuellen Benutzernamen anzeigen
df -h Belegten Speicherplatz anzeigen
du -sh verz/ Größe eines Verzeichnisses anzeigen
ps aux Laufende Prozesse anzeigen
kill PID Prozess mit der angegebenen PID beenden
history Befehlshistorie anzeigen
du -sh ~ Eigenen Home-Speicherverbrauch anzeigen
hostname Aktuellen Server-Namen anzeigen (hilfreich beim Server-Hopping)
which befehl Pfad zum Programm anzeigen
befehl --help Schnelle Optionsübersicht (kürzer als man)

mc – Midnight Commander

Wer lieber mit einem visuellen Dateimanager arbeitet:

$ mc

Tastatur-Shortcuts der Shell

Diese funktionieren in fast jeder Bash- oder Zsh-Sitzung – ein massiver Produktivitätsgewinn:

Shortcut Wirkung
Strg+R Rückwärtssuche in der Befehlshistorie (zum Wiederfinden alter Befehle)
Strg+L Bildschirm leeren (wie clear)
Strg+C Laufenden Befehl abbrechen
Strg+D Eingabe beenden / Shell beenden
Strg+A · Strg+E Cursor an Zeilenanfang / -ende
Strg+U · Strg+K Zeile vor / nach Cursor löschen
Alt+. letztes Argument des vorigen Befehls einfügen