Die wichtigsten Linux-Befehle gliedern sich in Gruppen: Navigation (pwd, ls, cd), Dateiarbeit (cp, mv, rm, mkdir), Rechte (chmod, chown), Pakete (apt), Prozesse (ps, top, kill), Suche und Textverarbeitung (find, grep, sed, awk), Netzwerk (ip, ss, curl) und Dienste (systemctl, journalctl). Unten finden Sie Tabellen mit Befehlen und Beispielen, die den Großteil der Arbeit im Terminal abdecken.
Dieser Spickzettel zu Linux-Befehlen ist nach Aufgaben gegliedert: eine Datei finden, ein Paket installieren, einen hängenden Prozess beenden, eine Zeile aus einem Log herausziehen, einen Port prüfen. Die Befehle sind auf Ubuntu und Debian getestet; fast alles funktioniert auch auf anderen Distributionen, der Unterschied liegt vor allem beim Paketmanager.
Hilfe und Hinweise
| Befehl | Was er tut |
man ls | vollständiges Handbuch zum Befehl; Beenden mit q, Suche mit /Wort |
ls --help | kurze Übersicht der Optionen |
type cd | was es ist: eingebauter Befehl, Alias oder Datei |
which python3 | Pfad zur ausführbaren Datei |
history | Befehlsverlauf; !123 wiederholt Befehl Nummer 123 |
Strg+R | Suche im Verlauf |
Strg+C / Strg+D | Befehl abbrechen / Shell schließen |
Im Dateisystem navigieren
| Befehl | Was er tut |
pwd | aktuelles Verzeichnis |
ls -la | alle Dateien, auch versteckte, mit Rechten und Größen |
ls -lh | Größen in lesbarer Form (K, M, G) |
ls -lt | Sortierung nach Änderungszeit |
cd /var/log | in einen absoluten Pfad wechseln |
cd .. / cd ~ / cd - | eine Ebene nach oben / ins Home-Verzeichnis / ins vorherige Verzeichnis |
tree -L 2 | Verzeichnisbaum mit zwei Ebenen (Paket tree) |
Arbeiten mit Dateien und Verzeichnissen
| Befehl | Was er tut |
touch datei.txt | leere Datei anlegen oder Änderungszeit aktualisieren |
mkdir -p a/b/c | Verzeichnisse samt übergeordneten anlegen |
cp datei.txt sicherung.txt | Datei kopieren |
cp -r quelle/ ziel/ | Verzeichnis rekursiv kopieren |
mv alt.txt neu.txt | umbenennen oder verschieben |
rm datei.txt | Datei löschen (ohne Papierkorb) |
rm -r verzeichnis/ | Verzeichnis mit Inhalt löschen; -f — ohne Nachfrage, vorsichtig |
rmdir verzeichnis | leeres Verzeichnis löschen |
ln -s /opt/app/current app | symbolischer Link |
stat datei.txt | Details: Größe, Rechte, Inode, Zeitstempel |
file bild.bin | Dateityp anhand des Inhalts bestimmen |
Inhalte ansehen
| Befehl | Was er tut |
cat datei | ganze Datei ausgeben |
less datei | seitenweise anzeigen, Suche mit /, Beenden mit q |
head -n 20 datei | die ersten 20 Zeilen |
tail -n 50 datei | die letzten 50 Zeilen |
tail -f /var/log/syslog | eine Datei in Echtzeit verfolgen |
wc -l datei | Anzahl der Zeilen |
diff a.conf b.conf | Unterschiede zwischen Dateien |
Rechte und Besitzer
| Befehl | Was er tut |
chmod +x skript.sh | Ausführung erlauben |
chmod 644 datei | rw-r--r--: Besitzer schreibt, alle anderen lesen |
chmod 755 verzeichnis | rwxr-xr-x: typisch für Verzeichnisse und Skripte |
chmod 600 ~/.ssh/id_ed25519 | nur der Besitzer: für private Schlüssel |
sudo chown www-data:www-data datei | Besitzer und Gruppe ändern |
sudo chown -R alice /srv/app | Besitzer rekursiv ändern |
id | Ihre UID, GID und Gruppen |
sudo -i | Root-Shell |
sudo usermod -aG docker alice | Benutzer einer Gruppe hinzufügen |
Pakete (apt, Debian und Ubuntu)
| Befehl | Was er tut |
sudo apt update | Paketlisten aus den Repositorys aktualisieren |
sudo apt upgrade | installierte Pakete aktualisieren |
sudo apt install nginx | Paket installieren |
sudo apt remove nginx | entfernen, Konfigurationsdateien bleiben; purge — mit Konfiguration |
sudo apt autoremove | nicht mehr benötigte Abhängigkeiten entfernen |
apt search htop | Paket suchen |
apt show nginx | Beschreibung und Version |
dpkg -l | grep nginx | prüfen, ob ein Paket installiert ist |
dpkg -L nginx | welche Dateien das Paket installiert hat |
Auf RHEL, Fedora und Rocky Linux entsprechen dem dnf install, dnf remove, dnf upgrade und rpm -qa.
Umgebung und Profil
| Befehl | Was er tut |
echo $PATH | wo die Shell nach Programmen sucht |
env | alle Umgebungsvariablen |
export APP_ENV=prod | Variable für die aktuelle Sitzung und Kindprozesse setzen |
alias ll='ls -la' | Abkürzung für einen Befehl |
source ~/.bashrc | Profil neu einlesen, ohne sich abzumelden |
crontab -e / crontab -l | cron-Aufgaben bearbeiten / anzeigen |
Prozesse
| Befehl | Was er tut |
ps aux | alle Prozesse mit Benutzer, CPU und Speicher |
ps aux | grep nginx | einen Prozess finden |
pgrep -a nginx | PID und Befehlszeile anhand des Namens |
top / htop | Auslastung in Echtzeit |
kill 1234 | den Prozess um Beendigung bitten (SIGTERM) |
kill -9 1234 | erzwungen beenden (SIGKILL) — letzter Ausweg |
pkill -f "python app.py" | Beenden anhand eines Treffers in der Befehlszeile |
befehl &, jobs, fg | Start im Hintergrund und Verwaltung der Aufgaben |
nohup ./job.sh & | der Prozess übersteht das Schließen des Terminals |
free -h | Speicher und Swap |
uptime | Laufzeit und mittlere Last |
strace -p 1234 | Systemaufrufe eines Prozesses |
Dienste und Logs (systemd)
| Befehl | Was er tut |
systemctl status nginx | Zustand des Dienstes und die letzten Log-Zeilen |
sudo systemctl start|stop|restart nginx | starten, stoppen, neu starten |
sudo systemctl reload nginx | Konfiguration neu einlesen, ohne zu stoppen |
sudo systemctl enable --now nginx | Autostart aktivieren und sofort starten |
systemctl --failed | fehlgeschlagene Units |
journalctl -u nginx -f | Dienst-Log in Echtzeit |
journalctl -u nginx --since "1 hour ago" | Log der letzten Stunde |
journalctl -p err -b | Fehler seit dem letzten Systemstart |
Dateien finden
| Befehl | Was er tut |
find /var/log -name "*.log" | nach Namen suchen |
find . -type f -mtime -1 | Dateien, die am letzten Tag geändert wurden |
find / -size +500M 2>/dev/null | große Dateien, Zugriffsfehler ausgeblendet |
find . -name "*.tmp" -delete | suchen und löschen |
du -sh * | Größe jedes Eintrags im Verzeichnis |
df -h | freier Speicher auf den Dateisystemen |
Text suchen und verarbeiten: grep, sed, awk, jq
| Befehl | Was er tut |
grep "error" app.log | Zeilen mit dem Wort |
grep -i -n "error" app.log | ohne Beachtung der Groß-/Kleinschreibung, mit Zeilennummern |
grep -r "listen" /etc/nginx/ | rekursiv durch ein Verzeichnis |
grep -v "DEBUG" app.log | Zeilen, in denen das Wort fehlt |
grep -c "500" access.log | Anzahl der Treffer |
grep -E "warn|error" app.log | erweiterte reguläre Ausdrücke |
sed 's/alt/neu/g' datei | ersetzen und das Ergebnis ausgeben |
sed -i 's/8080/9090/' app.conf | direkt in der Datei ersetzen |
sed -n '10,20p' datei | Zeilen 10–20 ausgeben |
awk '{print $1}' access.log | das erste Feld jeder Zeile |
awk -F: '{print $1}' /etc/passwd | Benutzernamen (Trennzeichen :) |
awk '$9 == 500' access.log | Zeilen, in denen das neunte Feld 500 ist |
sort | uniq -c | sort -rn | Wiederholungen zählen und nach Häufigkeit sortieren |
cut -d, -f2 daten.csv | die zweite Spalte einer CSV-Datei |
jq '.items[].name' daten.json | Felder aus JSON extrahieren |
Beispiel für eine Pipeline: die zehn IP-Adressen mit den meisten Anfragen an nginx.
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
Umleitung und Pipelines
| Konstrukt | Was er tut |
befehl > ausgabe.txt | Ausgabe in eine Datei schreiben (überschreiben) |
befehl >> ausgabe.txt | ans Ende der Datei anhängen |
befehl 2> fehler.txt | Fehler umleiten |
befehl > alles.log 2>&1 | Ausgabe und Fehler in eine Datei |
befehl1 | befehl2 | Ausgabe des einen Befehls als Eingabe des anderen |
befehl | tee ausgabe.txt | auf dem Bildschirm zeigen und speichern |
befehl1 && befehl2 | den zweiten nur ausführen, wenn der erste erfolgreich war |
befehl1 || befehl2 | den zweiten ausführen, wenn der erste fehlgeschlagen ist |
Archive
| Befehl | Was er tut |
tar -czf backup.tar.gz verzeichnis/ | packen und mit gzip komprimieren |
tar -xzf backup.tar.gz | entpacken |
tar -tzf backup.tar.gz | Inhalt anzeigen |
zip -r seite.zip seite/ / unzip seite.zip | zip-Archive |
Netzwerk
| Befehl | Was er tut |
ip a | Schnittstellen und IP-Adressen |
ip r | Routing-Tabelle |
ping -c 4 8.8.8.8 | Erreichbarkeit eines Hosts |
ss -tulpn | offene Ports und die Prozesse dahinter |
dig example.com / nslookup example.com | DNS-Abfrage |
curl -I https://example.com | nur die Antwort-Header |
curl -s https://api.example.com | jq | API-Anfrage mit formatiertem JSON |
wget URL | Datei herunterladen |
traceroute example.com | Weg der Pakete zum Host |
ssh benutzer@host | mit einem Server verbinden |
ssh-keygen -t ed25519 | SSH-Schlüsselpaar erzeugen |
scp datei benutzer@host:/tmp/ | Datei auf den Server kopieren |
rsync -avz verzeichnis/ benutzer@host:/srv/verzeichnis/ | ein Verzeichnis synchronisieren |
sudo ufw status | Firewall-Regeln |
System und Festplatten
| Befehl | Was er tut |
uname -a | Kernel und Architektur |
cat /etc/os-release | Distribution und Version |
hostnamectl | Hostname und Systeminformationen |
lsblk | Festplatten und Partitionen |
sudo mount /dev/sdb1 /mnt | eine Partition einhängen |
who / w | wer gerade angemeldet ist |
sudo reboot / sudo shutdown -h now | Neustart / Herunterfahren |
Fazit
Für die tägliche Arbeit reichen ein paar Dutzend Befehle: ls, cd, cp, mv, rm, chmod, sudo, apt, ps, kill, systemctl, journalctl, grep, find, ss, curl und ssh. Bewahren Sie diesen Spickzettel auf und sehen Sie hinein, bis die Befehle in Fleisch und Blut übergehen. Alle Befehlsgruppen behandelt unser Linux-Kurs praxisnah.
Wie beende ich man oder less?
Drücken Sie q. Für die Suche tippen Sie einen Schrägstrich und das Wort ein; mit n springen Sie zum nächsten Treffer.
Wie beende ich den Editor vim?
Drücken Sie Esc, tippen Sie dann :q! und Enter, um ohne Speichern zu beenden, oder :wq, um zu speichern und zu beenden. Einsteiger bearbeiten Dateien oft einfacher mit nano.
Warum ist rm -rf gefährlich?
Der Befehl löscht ohne Rückfrage und ohne Papierkorb, und ein Fehler im Pfad (etwa ein überflüssiges Leerzeichen vor dem Sternchen) kann das falsche Verzeichnis entfernen. Prüfen Sie den Pfad vorher mit ls.
Wie wiederhole ich den letzten Befehl mit sudo?
Tippen Sie sudo !! — die Shell setzt den vorherigen Befehl vollständig ein.
Wie stoppe ich einen hängenden Befehl im Terminal?
Strg+C sendet ein Unterbrechungssignal. Reagiert der Befehl nicht, finden Sie seine PID mit ps oder pgrep in einem anderen Terminal und beenden ihn mit kill.