ESC
Bash / Terminal-Befehle

Navigation

Befehl Optionen Beispiel Ausgabe Beschreibung
ls -la, -lh, -R ls -la /etc Dateiliste Verzeichnisinhalt anzeigen; -l langes Format, -a versteckte Dateien, -h menschenlesbare Größen
cd -, ~, .. cd ~/projects Verz. wechseln Verzeichnis wechseln; cd - geht zurück, cd ~ geht ins Home-Verzeichnis
pwd pwd /home/user Aktuelles Arbeitsverzeichnis anzeigen (vollständiger Pfad)
tree -L n, -a tree -L 2 Baumansicht Verzeichnisbaum anzeigen; -L begrenzt Tiefe (ggf. Installation nötig)
find -name -type -mtime find . -name '*.log' Dateipfade Dateien/Verzeichnisse nach Kriterien suchen
locate -i locate nginx.conf Dateipfade Schnelle Dateisuche per Datenbankindex; vorher updatedb ausführen

Dateioperationen

Befehl Optionen Beispiel Ausgabe Beschreibung
cp -r, -i, -u cp -r src/ dst/ Datei kopiert Dateien kopieren; -r für Verzeichnisse, -i fragt vor dem Überschreiben
mv -i, -n mv old.txt new.txt verschoben/umbenannt Dateien verschieben oder umbenennen; -i fragt vor dem Überschreiben
rm -r, -f, -i rm -rf dist/ gelöscht Dateien/Verzeichnisse entfernen; -r rekursiv, -f erzwingen — mit Vorsicht verwenden
mkdir -p mkdir -p a/b/c neues Verz. Verzeichnis erstellen; -p legt übergeordnete Verzeichnisse bei Bedarf an
touch touch index.html leere Datei Leere Datei erstellen oder Zeitstempel einer Datei aktualisieren
ln -s ln -s /etc/nginx nginx symlink Hardlink erstellen; -s für symbolischen Link (symlink)

Dateien Anzeigen

Befehl Optionen Beispiel Ausgabe Beschreibung
cat -n, -A cat -n file.txt Dateiinhalt Datei ausgeben; -n fügt Zeilennummern hinzu, -A zeigt nicht druckbare Zeichen
head -n N head -n 20 log.txt erste N Zeilen Erste Zeilen einer Datei anzeigen (Standard: 10)
tail -n N, -f tail -f app.log letzte N Zeilen Letzte Zeilen anzeigen; -f verfolgt neue Inhalte in Echtzeit
less /search, q less large.log seitenweise Anzeige Datei seitenweise durchblättern; / zum Suchen, q zum Beenden, Leertaste zum Blättern
wc -l, -w, -c wc -l file.txt Anzahl Zählen; -l Zeilen, -w Wörter, -c Bytes/Zeichen

Suchen & Textverarbeitung

Befehl Optionen Beispiel Ausgabe Beschreibung
grep -r -i -n -v -E grep -rn 'error' logs/ Treffer-Zeilen Textmuster suchen; -r rekursiv, -i Groß-/Kleinschreibung ignorieren, -n Zeilennummern
grep -v grep -v 'debug' app.log nicht passende Zeilen Invertierte Suche — Zeilen anzeigen, die das Muster NICHT enthalten
grep -E grep -E 'warn|error' log Treffer-Zeilen Erweitertes regex — | für ODER verwenden, + für ein oder mehrere Vorkommen
awk '{print $N}' awk '{print $1}' f Spaltenwert Muster-Aktion-Textverarbeitung; $1 erstes Feld, $NF letztes Feld
sed -i 's/a/b/g' sed -i 's/foo/bar/g' f geänderter Text Stream-Editor; s/suchen/ersetzen/g ersetzt global
sort -n -r -k N sort -n numbers.txt sortierte Ausgabe Zeilen sortieren; -n numerisch, -r umgekehrt, -k nach Spalte N sortieren
uniq -c, -d sort f | uniq -c eindeutige Zeilen Doppelte aufeinanderfolgende Zeilen entfernen; üblicherweise nach sort per Pipe genutzt

Berechtigungen

Befehl Optionen Beispiel Ausgabe Beschreibung
chmod 755, 644, +x chmod +x script.sh Rechte geändert Dateiberechtigungen ändern; 755=rwxr-xr-x, 644=rw-r--r--
chown -R user:group chown -R www-data:www-data /var/www Eigentümer geändert Dateibesitzer und Gruppe ändern; -R rekursiv
ls -la ls -la /var/www Rechte-Auflistung Berechtigungen, Eigentümer, Gruppe und Größe aller Dateien anzeigen
umask 022, 027 umask 022 Standard-Rechte Standard-Berechtigungsmaske für neue Dateien setzen (022 → 644 für Dateien)
sudo -u user sudo systemctl restart nginx erhöhter Befehl Befehl als Superuser ausführen; -u führt als anderer Benutzer aus

Prozessverwaltung

Befehl Optionen Beispiel Ausgabe Beschreibung
ps aux, -ef ps aux | grep nginx Prozessliste Prozesse auflisten; aux=alle Benutzer, -ef=vollständiges Format
top q, k, M top Live-Ansicht Interaktiver Prozessmonitor; q beenden, k beenden, M nach Speicher sortieren
htop F3, F9 htop Live-Ansicht Erweitertes top mit Farben; F3 suchen, F9 beenden (ggf. Installation nötig)
kill -9, -15 kill -9 1234 Signal gesendet Signal an PID senden; -15 SIGTERM (geordnet), -9 SIGKILL (erzwungen)
killall -9, -u killall node Signal gesendet Alle Prozesse mit dem angegebenen Namen beenden
jobs -l jobs -l Jobliste Hintergrund- und gestoppte Jobs der aktuellen Shell auflisten
bg / fg %N fg %1 fortgesetzt bg schickt Job in den Hintergrund, fg holt ihn in den Vordergrund

Netzwerk

Befehl Optionen Beispiel Ausgabe Beschreibung
curl -o -L -X -H -d curl -O https://example.com/f Antwort Daten über HTTP/FTP übertragen; -L Weiterleitungen folgen, -o in Datei speichern
wget -O -r -q wget -q https://example.com gespeicherte Datei Dateien herunterladen; -O Ausgabe umbenennen, -r rekursiv, -q ruhig
ping -c N ping -c 4 google.com RTT ms Netzwerkverbindung testen; -c begrenzt die Paketanzahl
ssh -i -p -L ssh user@host -p 2222 Shell Sichere Shell; -i Schlüsseldatei, -p Port, -L lokale Port-Weiterleitung
scp -r -P -i scp file user@host:~/ kopiert Sicheres Kopieren über SSH; -r rekursiv, -P Port (Großbuchstabe)
netstat -tuln netstat -tuln Portliste Netzwerkverbindungen anzeigen; -t TCP, -u UDP, -l lauschend, -n numerisch
ss -tuln ss -tuln Portliste Moderner Ersatz für netstat; schneller und detaillierter

Archive & Komprimierung

Befehl Optionen Beispiel Ausgabe Beschreibung
tar -czf -czf out.tar.gz tar -czf arc.tar.gz dir/ Archiv Komprimiertes gzip-Tarball erstellen; c=erstellen, z=gzip, f=Dateiname
tar -xzf -xzf file.tar.gz tar -xzf arc.tar.gz -C /tmp entpackt gzip-Tarball entpacken; x=entpacken, -C Zielverzeichnis
tar -tf tar -tf archive.tar.gz Dateiliste Inhalt eines Tarballs auflisten ohne zu entpacken
zip -r, -9 zip -r out.zip dir/ Zip-Datei Zip-Archiv erstellen; -r rekursiv, -9 maximale Komprimierung
unzip -d, -l unzip archive.zip -d out/ entpackt Zip entpacken; -d Zielverzeichnis, -l Inhalt auflisten ohne zu entpacken
gzip / gunzip -k, -d gzip -k file.txt komprimiert Einzelne Datei gzip-komprimieren; -k Original behalten, gunzip zum Dekomprimieren

Umgebung & Shell

Befehl Optionen Beispiel Ausgabe Beschreibung
env env | grep PATH var=wert Alle Umgebungsvariablen ausgeben; per Pipe mit grep filtern
export export NODE_ENV=production Variable gesetzt Umgebungsvariable für die aktuelle Sitzung und Kindprozesse setzen
echo $VAR echo $HOME Wert Variablenwert ausgeben; ${VAR} zur Abgrenzung in Zeichenketten verwenden
which which node Pfad Vollständigen Pfad der ausführbaren Datei eines Befehls anzeigen
alias alias ll='ls -la' Kurzbefehl Befehlskürzel erstellen; in ~/.bashrc eintragen für dauerhafte Nutzung
source source ~/.bashrc neu geladen Datei im aktuellen Shell-Kontext ausführen (auch: . ~/.bashrc)
history !N, !! history | tail -20 Befehlsliste Befehlshistorie anzeigen; !! wiederholt letzten, !N führt den N-ten Befehl aus

Git Kurzreferenz

Befehl Optionen Beispiel Ausgabe Beschreibung
git init git init my-project Repository erstellt Neues Git-Repository im Verzeichnis initialisieren
git clone --depth 1 git clone url Repository geklont Remote-Repository klonen; --depth 1 für flachen Klon
git status -s git status -s Änderungen Status des Arbeitsverzeichnisses anzeigen; -s Kurzformat
git add -A, -p git add -p gestaged Änderungen stagen; -A alle, -p interaktiver Patch-Modus
git commit -m, --amend git commit -m 'msg' committet Gestagte Änderungen committen; --amend letzten Commit ändern
git push -u origin git push -u origin main gepusht Zum Remote pushen; -u setzt den Upstream-Tracking-Branch
git pull --rebase git pull --rebase synchronisiert Remote-Änderungen holen und integrieren; --rebase statt Merge
git log --oneline --graph git log --oneline -10 Verlauf Commit-Verlauf anzeigen; --oneline kompakt, --graph visueller Branch
git stash pop, list git stash pop wiederhergestellt Nicht committete Arbeit vorübergehend speichern; pop zum Wiederherstellen
git diff --staged git diff --staged Diff Änderungen anzeigen; --staged zeigt gestagte, aber noch nicht committete Änderungen

Häufig gestellte Fragen

sh (Bourne Shell) ist die ursprüngliche Unix-Shell, standardisiert durch POSIX. bash (Bourne Again Shell) ist ihr Nachfolger und Obermenge, der Arrays, erweiterte Testsyntax [[]], arithmetische Expansion $(( )), Verlauf, Tab-Vervollständigung und mehr hinzufügt. Auf den meisten Linux-Systemen ist /bin/sh ein Symlink zu bash oder dash (eine nur-POSIX leichte Shell).

Drei Schritte: (1) Füge eine Shebang-Zeile als allererste Zeile hinzu: #!/bin/bash. (2) Mache es ausführbar mit chmod +x script.sh. (3) Führe es mit ./script.sh aus (das ./ ist nötig, weil das aktuelle Verzeichnis standardmäßig nicht in $PATH ist). Um es von überall auszuführen, verschiebe es in ein Verzeichnis in deinem PATH.

Bash hat drei Standardströme: stdin (0), stdout (1), stderr (2). stdout in Datei umleiten: command > file.txt (überschreiben) oder command >> file.txt (anhängen). stderr umleiten: command 2> errors.txt. Beides umleiten: command > output.txt 2>&1. Ausgabe verwerfen: command > /dev/null 2>&1. stdout pipen: command1 | command2.