Linux Kommandozeile - Essentieller Guide
Linux Kommandozeile - Essentieller Guide
Meistern Sie das Linux/macOS Terminal mit diesem umfassenden Befehlsguide.
Einleitung: Die Macht der Kommandozeile
Die Kommandozeile ist eines der mächtigsten Werkzeuge im Arsenal eines jeden Entwicklers und Systemadministrators. Während grafische Oberflächen intuitiv sind, bietet das Terminal eine Geschwindigkeit, Flexibilität und Automatisierungsmöglichkeit, die mit keiner GUI erreicht werden kann. Im Jahr 2026 ist die Beherrschung der Kommandozeile wichtiger denn je -- ob für DevOps, Cloud-Computing, Containerisierung oder einfach die tägliche Entwicklungsarbeit.
Dieser umfassende Guide behandelt alle essentiellen Linux- und macOS-Terminal-Befehle, von grundlegender Navigation bis hin zu fortgeschrittener Textverarbeitung und Systemverwaltung. Selbst erfahrene Entwickler werden hier nĂĽtzliche Tipps und Tricks finden.
Navigation und Dateisystem
Verzeichnisse navigieren
# Aktuelles Verzeichnis anzeigen
pwd
# Verzeichnis wechseln
cd /pfad/zum/verzeichnis
# Ins Home-Verzeichnis wechseln
cd ~
cd # Kurzform
# Ins vorherige Verzeichnis wechseln
cd -
# Ein Verzeichnis nach oben
cd ..
# Zwei Verzeichnisse nach oben
cd ../..
# Verzeichnisinhalt auflisten
ls
# Detaillierte Auflistung mit versteckten Dateien
ls -la
# Nach Änderungszeit sortiert (neueste zuerst)
ls -lt
# Nach Größe sortiert (größte zuerst)
ls -lS
# Menschenlesbare Dateigrößen
ls -lh
# Verzeichnisbaum anzeigen
tree -L 2 # 2 Ebenen tief
tree -I node_modules # node_modules ausschlieĂźen
Dateien und Verzeichnisse erstellen
# Leere Datei erstellen oder Zeitstempel aktualisieren
touch neue-datei.txt
# Mehrere Dateien gleichzeitig erstellen
touch datei1.txt datei2.txt datei3.txt
# Verzeichnis erstellen
mkdir neues-verzeichnis
# Verschachtelte Verzeichnisse erstellen
mkdir -p projekt/src/components/utils
# Verzeichnis mit spezifischen Berechtigungen erstellen
mkdir -m 755 sicheres-verzeichnis
Dateien kopieren, verschieben und löschen
# Datei kopieren
cp quelle.txt ziel.txt
# Verzeichnis rekursiv kopieren
cp -r quell-ordner/ ziel-ordner/
# Kopieren mit Fortschrittsanzeige (bei groĂźen Dateien)
rsync -ah --progress quelle/ ziel/
# Datei verschieben/umbenennen
mv alte-datei.txt neue-datei.txt
# Datei in anderes Verzeichnis verschieben
mv datei.txt /pfad/zum/ziel/
# Datei löschen
rm datei.txt
# Verzeichnis und Inhalt löschen
rm -r verzeichnis/
# Löschen mit Bestätigung
rm -i datei.txt
# Leeres Verzeichnis löschen
rmdir leeres-verzeichnis
Dateiinhalte anzeigen und bearbeiten
Dateien lesen
# Gesamte Datei anzeigen
cat datei.txt
# Datei mit Zeilennummern anzeigen
cat -n datei.txt
# Erste 20 Zeilen anzeigen
head -20 datei.txt
# Letzte 20 Zeilen anzeigen
tail -20 datei.txt
# Datei in Echtzeit verfolgen (z.B. Log-Dateien)
tail -f /var/log/syslog
# Letzte 100 Zeilen verfolgen
tail -f -n 100 logdatei.log
# Seitenweises Durchblättern
less datei.txt
# Navigation in less:
# Leertaste = nächste Seite
# b = vorherige Seite
# / = suchen
# q = beenden
# Dateiinhalt in umgekehrter Reihenfolge
tac datei.txt
# Wortanzahl, Zeilenanzahl, Zeichenanzahl
wc datei.txt
wc -l datei.txt # Nur Zeilen
wc -w datei.txt # Nur Wörter
Textsuche mit grep
# Nach Muster in Datei suchen
grep "suchbegriff" datei.txt
# GroĂź-/Kleinschreibung ignorieren
grep -i "suchbegriff" datei.txt
# Rekursiv in allen Dateien suchen
grep -r "suchbegriff" /pfad/zum/verzeichnis/
# Zeilennummern anzeigen
grep -n "suchbegriff" datei.txt
# Nur Dateinamen anzeigen (die den Suchbegriff enthalten)
grep -l "suchbegriff" *.txt
# Reguläre Ausdrücke verwenden
grep -E "^(fehler|warnung):" logdatei.log
# Invertierte Suche (Zeilen OHNE Suchbegriff)
grep -v "unwichtig" datei.txt
# Kontext anzeigen (3 Zeilen vor und nach dem Treffer)
grep -C 3 "fehler" logdatei.log
# Anzahl der Treffer
grep -c "fehler" logdatei.log
Testen und verfeinern Sie Ihre regulären Ausdrücke mit unserem Regex-Tester, bevor Sie sie in grep-Befehlen einsetzen.
Textverarbeitung mit sed und awk
# Text ersetzen mit sed
sed 's/alt/neu/' datei.txt # Erste Ăśbereinstimmung pro Zeile
sed 's/alt/neu/g' datei.txt # Alle Ăśbereinstimmungen
sed -i 's/alt/neu/g' datei.txt # Datei direkt bearbeiten
sed -i.bak 's/alt/neu/g' datei.txt # Mit Backup
# Bestimmte Zeilen löschen
sed '5d' datei.txt # Zeile 5 löschen
sed '3,7d' datei.txt # Zeilen 3-7 löschen
sed '/muster/d' datei.txt # Zeilen mit Muster löschen
# Text einfĂĽgen
sed '3i\Neue Zeile hier' datei.txt # Vor Zeile 3 einfĂĽgen
sed '3a\Neue Zeile hier' datei.txt # Nach Zeile 3 einfĂĽgen
# Spalten extrahieren mit awk
awk '{print $1}' datei.txt # Erste Spalte
awk '{print $1, $3}' datei.txt # Erste und dritte Spalte
awk -F',' '{print $2}' daten.csv # CSV: zweite Spalte
# Bedingte Verarbeitung mit awk
awk '$3 > 100 {print $1, $3}' daten.txt # Nur Zeilen wo Spalte 3 > 100
# Summe einer Spalte berechnen
awk '{summe += $2} END {print summe}' daten.txt
# Eindeutige Werte zählen
awk '{count[$1]++} END {for (k in count) print k, count[k]}' daten.txt
Dateisuche
find -- Dateien finden
# Dateien nach Name suchen
find /pfad -name "*.txt"
# GroĂź-/Kleinschreibung ignorieren
find /pfad -iname "*.jpg"
# Nach Dateityp suchen
find /pfad -type f # Nur Dateien
find /pfad -type d # Nur Verzeichnisse
find /pfad -type l # Nur Symlinks
# Nach Größe suchen
find /pfad -size +100M # Größer als 100 MB
find /pfad -size -1k # Kleiner als 1 KB
# Nach Änderungszeit suchen
find /pfad -mtime -7 # In den letzten 7 Tagen geändert
find /pfad -mtime +30 # Vor mehr als 30 Tagen geändert
find /pfad -newer referenz.txt # Neuer als referenz.txt
# Gefundene Dateien verarbeiten
find /pfad -name "*.log" -exec rm {} \; # Löschen
find /pfad -name "*.js" -exec grep -l "TODO" {} \; # Durchsuchen
find /pfad -name "*.tmp" -delete # Kurzform für Löschen
# Kombination von Kriterien
find /pfad -name "*.py" -size +1M -mtime -30
# Bestimmte Verzeichnisse ausschlieĂźen
find /pfad -name "*.js" -not -path "*/node_modules/*"
Moderne Alternativen
# fd -- schnellere Alternative zu find
fd "\.txt$" /pfad
fd -e js -e ts src/ # Nur .js und .ts Dateien
# ripgrep (rg) -- schnellere Alternative zu grep
rg "suchbegriff" /pfad
rg -t js "function" # Nur in JavaScript-Dateien
rg -l "TODO" # Nur Dateinamen
rg -C 3 "fehler" # Mit Kontext
# fzf -- interaktive Fuzzy-Suche
find . -type f | fzf
cat datei.txt | fzf # Interaktive Zeilensuche
Berechtigungen und EigentĂĽmer
Berechtigungen verstehen
Linux-Dateiberechtigungen bestehen aus drei Gruppen (EigentĂĽmer, Gruppe, Andere) mit jeweils drei Berechtigungen (Lesen, Schreiben, AusfĂĽhren):
-rwxr-xr-- 1 benutzer gruppe 4096 Mär 15 10:00 datei.txt
│├─┤├─┤├─┤
│ │ │ └── Andere: Lesen (4)
│ │ └───── Gruppe: Lesen+Ausführen (5)
│ └───────── Eigentümer: Lesen+Schreiben+Ausführen (7)
└─────────── Dateityp (- = Datei, d = Verzeichnis, l = Symlink)
Berechtigungen ändern
# Numerisch (Oktal)
chmod 755 skript.sh # rwxr-xr-x
chmod 644 datei.txt # rw-r--r--
chmod 600 geheim.key # rw-------
chmod 777 temp/ # rwxrwxrwx (NICHT empfohlen!)
# Symbolisch
chmod u+x skript.sh # EigentĂĽmer: AusfĂĽhren hinzufĂĽgen
chmod g-w datei.txt # Gruppe: Schreiben entfernen
chmod o-rwx privat.txt # Andere: Alle Berechtigungen entfernen
chmod a+r public.txt # Alle: Lesen hinzufĂĽgen
# Rekursiv
chmod -R 755 verzeichnis/
# Eigentümer ändern
chown benutzer:gruppe datei.txt
chown -R benutzer:gruppe verzeichnis/
Prozessverwaltung
# Laufende Prozesse anzeigen
ps aux # Alle Prozesse
ps aux | grep node # Nach node-Prozessen filtern
ps -ef --forest # Prozessbaum anzeigen
# Echtzeit-ProzessĂĽbersicht
top
htop # Verbesserte Version (muss installiert werden)
# Prozess beenden
kill PID # Sanft beenden (SIGTERM)
kill -9 PID # Erzwungen beenden (SIGKILL)
killall node # Alle node-Prozesse beenden
pkill -f "node server.js" # Nach Muster beenden
# Prozess im Hintergrund starten
./langlaeufer.sh &
# Hintergrundprozesse anzeigen
jobs
# Prozess in den Vordergrund holen
fg %1
# Prozess in den Hintergrund schieben
bg %1
# Prozess vom Terminal lösen
nohup ./skript.sh &
disown %1
# Port-Nutzung prĂĽfen
lsof -i :3000 # Wer nutzt Port 3000?
ss -tlnp # Alle lauschenden Ports
Netzwerk-Befehle
# Netzwerkkonfiguration anzeigen
ip addr # Linux
ifconfig # macOS
# Erreichbarkeit prĂĽfen
ping google.de
ping -c 5 google.de # Nur 5 Pakete senden
# DNS-Auflösung
dig google.de
nslookup google.de
host google.de
# HTTP-Anfragen mit curl
curl https://api.beispiel.de
curl -s https://api.beispiel.de | jq . # JSON formatiert
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "Test"}' https://api.beispiel.de/benutzer
# Datei herunterladen
curl -O https://beispiel.de/datei.zip
wget https://beispiel.de/datei.zip
# Offene Verbindungen anzeigen
netstat -tuln
ss -tuln
# Netzwerk-Pfad verfolgen
traceroute google.de
mtr google.de # Interaktive Version
Verwenden Sie unseren JSON-Formatierer, um JSON-Antworten von curl-Befehlen ĂĽbersichtlich darzustellen.
Komprimierung und Archivierung
# tar -- Archiv erstellen
tar -czf archiv.tar.gz verzeichnis/ # Gzip-komprimiert
tar -cjf archiv.tar.bz2 verzeichnis/ # Bzip2-komprimiert
tar -cJf archiv.tar.xz verzeichnis/ # XZ-komprimiert (beste Kompression)
# tar -- Archiv entpacken
tar -xzf archiv.tar.gz
tar -xzf archiv.tar.gz -C /ziel/pfad/ # In bestimmtes Verzeichnis
# tar -- Inhalt anzeigen ohne Entpacken
tar -tzf archiv.tar.gz
# zip und unzip
zip -r archiv.zip verzeichnis/
unzip archiv.zip
unzip archiv.zip -d /ziel/pfad/
unzip -l archiv.zip # Inhalt anzeigen
# Einzelne Datei komprimieren
gzip datei.txt # Erstellt datei.txt.gz (Original wird gelöscht)
gzip -k datei.txt # Original behalten
gunzip datei.txt.gz # Entpacken
Pipes und Umleitungen
Pipes und Umleitungen sind das HerzstĂĽck der Unix-Philosophie -- kleine Programme, die zusammenarbeiten.
# Pipe: Ausgabe eines Befehls als Eingabe für den nächsten
ls -la | grep ".txt"
cat logdatei.log | grep "ERROR" | wc -l
# Ausgabe in Datei umleiten (ĂĽberschreiben)
echo "Hallo Welt" > datei.txt
ls -la > verzeichnisliste.txt
# Ausgabe an Datei anhängen
echo "Neue Zeile" >> datei.txt
# Fehlerausgabe umleiten
befehl 2> fehler.log
# Standardausgabe UND Fehlerausgabe umleiten
befehl > ausgabe.log 2>&1
befehl &> alles.log # Kurzform (Bash)
# Eingabe aus Datei
sort < unsortiert.txt > sortiert.txt
# tee: Ausgabe gleichzeitig anzeigen und in Datei schreiben
befehl | tee ausgabe.log
befehl | tee -a ausgabe.log # Anhängen statt überschreiben
# xargs: Argumente aus der Standardeingabe
find . -name "*.tmp" | xargs rm
echo "datei1 datei2 datei3" | xargs touch
cat urls.txt | xargs -P 4 curl -O # 4 parallele Downloads
Praktische Einzeiler
# Die 10 größten Dateien im aktuellen Verzeichnis finden
du -ah . | sort -rh | head -10
# Alle leeren Dateien finden und löschen
find . -type f -empty -delete
# Alle Dateien mit einer Erweiterung umbenennen
for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
# Text in mehreren Dateien ersetzen
find . -name "*.txt" -exec sed -i 's/alt/neu/g' {} +
# Festplattennutzung nach Verzeichnis
du -sh */ | sort -rh
# Anzahl der Dateien pro Verzeichnis
find . -type f | cut -d/ -f2 | sort | uniq -c | sort -rn
# Doppelte Dateien finden (nach MD5-Hash)
find . -type f -exec md5sum {} + | sort | uniq -w32 -dD
# CSV-Spalte extrahieren und sortieren
cut -d',' -f3 daten.csv | sort | uniq -c | sort -rn
# Systemressourcen-Ăśbersicht
echo "CPU:"; uptime; echo "RAM:"; free -h; echo "Disk:"; df -h /
Shell-Scripting Grundlagen
#!/bin/bash
# Einfaches Backup-Skript
# Variablen
QUELLE="/home/benutzer/dokumente"
ZIEL="/backup/$(date +%Y-%m-%d)"
LOG="/var/log/backup.log"
# Funktion fĂĽr Logging
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG"
}
# PrĂĽfen ob Quellverzeichnis existiert
if [ ! -d "$QUELLE" ]; then
log "FEHLER: Quellverzeichnis $QUELLE existiert nicht"
exit 1
fi
# Zielverzeichnis erstellen
mkdir -p "$ZIEL"
# Backup durchfĂĽhren
log "Backup gestartet: $QUELLE -> $ZIEL"
rsync -avh --progress "$QUELLE/" "$ZIEL/" 2>&1 | tee -a "$LOG"
# Ergebnis prĂĽfen
if [ $? -eq 0 ]; then
log "Backup erfolgreich abgeschlossen"
else
log "FEHLER: Backup fehlgeschlagen"
exit 1
fi
# Alte Backups bereinigen (älter als 30 Tage)
find /backup/ -maxdepth 1 -type d -mtime +30 -exec rm -rf {} +
log "Alte Backups bereinigt"
NĂĽtzliche Aliase und Konfiguration
FĂĽgen Sie diese Aliase zu Ihrer ~/.bashrc oder ~/.zshrc hinzu:
# Navigation
alias ..='cd ..'
alias ...='cd ../..'
alias ll='ls -lah'
alias la='ls -A'
# Sicherheit
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Git
alias gs='git status'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph --all'
# Entwicklung
alias serve='python3 -m http.server 8080'
alias myip='curl -s ifconfig.me'
alias ports='ss -tuln'
# NĂĽtzliche Funktionen
mkcd() { mkdir -p "$1" && cd "$1"; }
extract() {
case "$1" in
*.tar.gz) tar -xzf "$1" ;;
*.tar.bz2) tar -xjf "$1" ;;
*.tar.xz) tar -xJf "$1" ;;
*.zip) unzip "$1" ;;
*.gz) gunzip "$1" ;;
*) echo "Unbekanntes Format: $1" ;;
esac
}
Fazit
Die Kommandozeile ist ein Werkzeug, das mit der Übung immer mächtiger wird. Beginnen Sie mit den grundlegenden Befehlen für Navigation und Dateiverwaltung, und erweitern Sie Ihre Fähigkeiten schrittweise auf Textverarbeitung, Netzwerk und Scripting. Die Investition in das Erlernen der Kommandozeile zahlt sich täglich aus -- in Form von gesparter Zeit, besserer Automatisierung und tieferem Systemverständnis.
Nutzen Sie unseren Regex-Tester zum Erstellen und Testen von regulären Ausdrücken für grep und sed. Der JSON-Formatierer hilft beim Formatieren von API-Antworten, und der Base64-Kodierer kann für schnelle Kodierungsaufgaben im Terminal nützlich sein.
Verwandte Ressourcen
- Git-Befehle Spickzettel -- Ergänzende Git-Befehle
- TypeScript Best Practices 2026 -- Moderne Entwicklungspraktiken
- API-Sicherheit Best Practices -- APIs per curl testen und absichern
- Regex-Tester -- Reguläre Ausdrücke online testen