Linux Befehlsreferenz

Diese Referenz gibt einen schnellen Überblick über die wichtigsten Linux-Befehle für Debian/Ubuntu. Die Befehle sind nach Themen gruppiert. Die Spalte Beispiel zeigt einen vollständigen, kopierbaren Befehl.

Navigation & Verzeichnisse

Befehl

Beispiel

Erklärung

pwd

pwd

Zeigt das aktuelle Arbeitsverzeichnis an (Print Working Directory)

cd

cd /etc/nginx

Wechselt in das angegebene Verzeichnis. cd ~ wechselt ins Heimverzeichnis, cd - ins vorherige, cd .. eine Ebene höher

ls

ls -lah /var/log

Listet Verzeichnisinhalt auf. -l Langformat, -a versteckte Dateien, -h menschenlesbare Größen, -R rekursiv

mkdir

mkdir -p /opt/meinprojekt/logs

Erstellt ein Verzeichnis. -p erstellt auch fehlende übergeordnete Verzeichnisse

rmdir

rmdir leerer-ordner

Löscht ein leeres Verzeichnis. Für nicht-leere Verzeichnisse: rm -r ordner/

tree

tree -L 2 /etc

Zeigt Verzeichnisstruktur als Baum. -L 2 begrenzt die Tiefe auf 2 Ebenen (ggf. apt install tree)

Dateiverwaltung

Befehl

Beispiel

Erklärung

touch

touch /tmp/testdatei.txt

Erstellt eine leere Datei oder aktualisiert den Zeitstempel einer vorhandenen Datei

cp

cp -r /etc/nginx /tmp/nginx-backup

Kopiert Dateien oder Verzeichnisse. -r rekursiv, -p Attribute beibehalten, -i vor Überschreiben fragen

mv

mv alte-datei.txt neue-datei.txt

Verschiebt oder benennt Dateien und Verzeichnisse um

rm

rm -rf /tmp/alte-logs/

Löscht Dateien und Verzeichnisse. -r rekursiv, -f ohne Rückfrage. Achtung: kein Papierkorb!

ln

ln -s /opt/app/bin/start /usr/local/bin/start

Erstellt Links. -s symbolischer Link (Symlink), ohne -s harter Link

find

find /var/log -name "*.log" -mtime -7

Sucht Dateien nach Name, Typ, Größe oder Änderungsdatum. -mtime -7 = in den letzten 7 Tagen geändert

locate

locate sshd_config

Schnelle Dateisuche in einer Datenbank. Datenbank aktualisieren mit updatedb (ggf. apt install mlocate)

which

which python3

Zeigt den vollständigen Pfad eines Befehls/Programms

file

file /usr/bin/bash

Bestimmt den Typ einer Datei anhand ihres Inhalts (nicht der Endung)

stat

stat /etc/passwd

Zeigt detaillierte Metadaten einer Datei: Größe, Berechtigungen, Eigentümer, Zeitstempel

Dateiinhalt anzeigen & bearbeiten

Befehl

Beispiel

Erklärung

cat

cat /etc/hosts

Gibt den gesamten Dateiinhalt aus. Mehrere Dateien: cat datei1 datei2. Für große Dateien besser less verwenden

less

less /var/log/syslog

Zeigt Datei seitenweise an. Navigation: Pfeiltasten, g Anfang, G Ende, /suchwort Suche, q beenden

head

head -20 /var/log/auth.log

Zeigt die ersten Zeilen einer Datei. Standardmäßig 10 Zeilen, -n N für N Zeilen

tail

tail -f /var/log/nginx/access.log

Zeigt die letzten Zeilen. -f verfolgt die Datei in Echtzeit (ideal für Logs)

echo

echo "Hallo Welt" >> /tmp/test.txt

Gibt Text aus. > schreibt in Datei, >> hängt an Datei an

nano

nano /etc/hosts

Einfacher Terminal-Texteditor. Steuerung über Strg+-Tastenkombinationen. Strg+O speichern, Strg+X beenden

vim

vim /etc/ssh/sshd_config

Mächtiger Terminal-Editor. Modi: Normal (Esc), Einfügen (i), Befehl (:). Speichern & beenden: :wq, nur beenden: :q!

Textverarbeitung

Befehl

Beispiel

Erklärung

grep

grep -i "error" /var/log/syslog

Durchsucht Dateien nach Textmuster. -i case-insensitive, -r rekursiv, -n Zeilennummer, -v invertiert

sed

sed -i 's/alt/neu/g' konfiguration.conf

Stream-Editor für Text-Ersetzungen. -i bearbeitet die Datei direkt, g ersetzt alle Vorkommen in einer Zeile

awk

awk '{print $1, $4}' /var/log/nginx/access.log

Verarbeitet Text zeilenweise. Gibt bestimmte Felder aus ($1 = 1. Feld, $NF = letztes Feld). Felder durch Leerzeichen getrennt

cut

cut -d: -f1 /etc/passwd

Schneidet Spalten aus Zeilen. -d: Trennzeichen Doppelpunkt, -f1 erstes Feld (Benutzernamen aus passwd)

sort

sort -k5 -n -r datei.txt

Sortiert Zeilen. -k5 nach Spalte 5, -n numerisch, -r umgekehrt, -u Duplikate entfernen

uniq

sort datei.txt | uniq -c

Entfernt doppelte aufeinanderfolgende Zeilen. -c zählt Vorkommen. Vorher meist sort nötig

wc

wc -l /etc/passwd

Zählt Zeilen (-l), Wörter (-w) und Zeichen (-c) in einer Datei oder Eingabe

tr

echo "Hallo" | tr 'a-z' 'A-Z'

Ersetzt oder löscht einzelne Zeichen. Hier: Kleinbuchstaben in Großbuchstaben umwandeln

diff

diff /etc/hosts /tmp/hosts-backup

Vergleicht zwei Dateien und zeigt Unterschiede an. -u unified Format (wie Git-Diff)

tee

apt upgrade 2>&1 | tee upgrade.log

Leitet Ausgabe gleichzeitig auf Bildschirm und in eine Datei. Nützlich zum Mitprotokollieren

xargs

find /tmp -name "*.tmp" | xargs rm -f

Liest Argumente von der Eingabe und übergibt sie einem Befehl. Ideal um find-Ergebnisse weiterzuverarbeiten

Berechtigungen & Benutzer

Befehl

Beispiel

Erklärung

chmod

chmod 755 /opt/app/start.sh

Ändert Dateiberechtigungen. Oktal: 7=rwx, 6=rw-, 5=r-x, 4=r--. Symbolisch: chmod u+x datei

chown

chown -R www-data:www-data /var/www/html

Ändert Eigentümer und Gruppe. -R rekursiv für gesamte Verzeichnisstruktur

chgrp

chgrp admins /etc/spezial.conf

Ändert nur die Gruppe einer Datei (ohne Eigentümer zu ändern)

umask

umask 022

Setzt die Standard-Berechtigungsmaske für neu erstellte Dateien. 022 = neue Dateien bekommen 644, Verzeichnisse 755

whoami

whoami

Zeigt den Namen des aktuell angemeldeten Benutzers

id

id username

Zeigt UID, GID und Gruppenmitgliedschaften eines Benutzers

sudo

sudo systemctl restart nginx

Führt einen Befehl mit root-Rechten aus. sudo -i öffnet eine root-Shell. sudo -u benutzer befehl als anderer Benutzer

su

su - deploy

Wechselt den Benutzer. - übernimmt auch die Umgebungsvariablen des Zielbenutzers (Login-Shell)

useradd

useradd -m -s /bin/bash -G sudo username

Legt neuen Benutzer an. -m Heimverzeichnis, -s Standard-Shell, -G zusätzliche Gruppen

usermod

usermod -aG docker username

Ändert Benutzerattribute. -aG fügt Benutzer einer zusätzlichen Gruppe hinzu (-a = append, nicht ersetzen)

userdel

userdel -r altbenutzer

Löscht einen Benutzer. -r entfernt auch Heimverzeichnis und Mailbox

passwd

passwd username

Setzt oder ändert das Passwort eines Benutzers. Ohne Argument: eigenes Passwort ändern

groupadd

groupadd entwickler

Erstellt eine neue Gruppe

groups

groups username

Zeigt alle Gruppen eines Benutzers

Prozesse & Systemüberwachung

Befehl

Beispiel

Erklärung

ps

ps aux | grep nginx

Zeigt laufende Prozesse. aux: alle Benutzer, detailliert, auch ohne Terminal. Ausgabe enthält PID, CPU, RAM, Befehl

top

top

Interaktive Echtzeit-Prozessübersicht. q beenden, k Prozess beenden (PID eingeben), M nach RAM sortieren

htop

htop

Modernere interaktive Prozessübersicht mit Farben und Mausbedienung. Muss ggf. installiert werden: apt install htop

kill

kill -9 1234

Sendet ein Signal an einen Prozess per PID. -15 SIGTERM (höflich), -9 SIGKILL (sofort, nicht abfangbar)

pkill

pkill -f "python3 mein-skript.py"

Beendet Prozesse nach Name oder Muster. -f durchsucht die gesamte Befehlszeile, nicht nur den Prozessnamen

pgrep

pgrep -a nginx

Sucht PIDs nach Prozessname. -a zeigt auch Befehlszeile. Nützlich vor kill

jobs

jobs

Zeigt Hintergrundprozesse der aktuellen Shell. fg %1 holt Job 1 in den Vordergrund, bg %1 schickt ihn in den Hintergrund

nohup

nohup ./backup.sh > backup.log 2>&1 &

Lässt einen Prozess nach dem Schließen des Terminals weiterlaufen. Ausgabe in Datei umleiten empfohlen

nice / renice

nice -n 19 ./cpu-intensiv.sh

Startet Prozess mit niedrigerer Priorität (19 = niedrigste, -20 = höchste). renice ändert die Priorität laufender Prozesse

Systemd & Dienste

Befehl

Beispiel

Erklärung

systemctl start

systemctl start nginx

Startet einen Dienst sofort (nur für die aktuelle Session)

systemctl stop

systemctl stop nginx

Stoppt einen laufenden Dienst

systemctl restart

systemctl restart ssh

Stoppt und startet den Dienst neu – Verbindungsunterbrechung möglich

systemctl reload

systemctl reload nginx

Konfiguration neu laden ohne Neustart – nur wenn der Dienst das unterstützt

systemctl status

systemctl status ssh

Zeigt Status, letzten Start, Logs und Konfiguration eines Dienstes

systemctl enable

systemctl enable --now nginx

Richtet Autostart beim Boot ein. --now aktiviert auch sofort. disable deaktiviert den Autostart

systemctl --failed

systemctl --failed

Zeigt alle Dienste die fehlgeschlagen sind – wichtig zur Fehlersuche nach dem Boot

journalctl

journalctl -u nginx -f

Liest das systemd-Journal. -u filtert nach Dienst, -f Echtzeit, -b seit letztem Boot, -p err nur Fehler

systemctl daemon-reload

systemctl daemon-reload

Liest alle Unit-Dateien neu ein – nötig nach dem Erstellen oder Ändern von Service-Dateien in /etc/systemd/system/

Paketverwaltung (APT)

Befehl

Beispiel

Erklärung

apt update

apt update

Aktualisiert die Paketlisten aus den Repositories. Installiert keine Pakete – immer vor apt upgrade ausführen

apt upgrade

apt upgrade -y

Aktualisiert alle installierten Pakete. -y beantwortet alle Rückfragen automatisch mit Ja

apt install

apt install -y curl wget htop

Installiert ein oder mehrere Pakete mit ihren Abhängigkeiten

apt remove

apt remove nginx

Deinstalliert ein Paket, lässt Konfigurationsdateien zurück

apt purge

apt purge nginx

Deinstalliert ein Paket vollständig inklusive aller Konfigurationsdateien

apt autoremove

apt autoremove

Entfernt nicht mehr benötigte Abhängigkeitspakete (Waisen)

apt search

apt search webserver

Durchsucht die Paketlisten nach Name und Beschreibung

apt show

apt show nginx

Zeigt Details zu einem Paket: Version, Abhängigkeiten, Beschreibung

apt list

apt list --installed | grep nginx

Listet Pakete. --installed nur installierte, --upgradable verfügbare Updates

dpkg -l

dpkg -l | grep -i python

Listet alle installierten Pakete (dpkg-Ebene). Nützlich für detaillierte Paketlisten

dpkg -i

apt install ./paket.deb

Installiert eine lokale .deb-Datei. apt install ./datei.deb löst dabei Abhängigkeiten automatisch auf

Netzwerk

Befehl

Beispiel

Erklärung

ip addr

ip addr show ens18

Zeigt IP-Adressen der Netzwerkschnittstellen. Kurzform: ip a. Ersetzt das veraltete ifconfig

ip route

ip route show

Zeigt die Routing-Tabelle. Kurzform: ip r. Default-Gateway: ip route add default via 192.168.1.1

ip link

ip link set ens18 up

Verwaltet Netzwerkschnittstellen. up/down aktiviert/deaktiviert eine Schnittstelle

ping

ping -c 4 8.8.8.8

Testet Erreichbarkeit eines Hosts. -c 4 sendet nur 4 Pakete. ping6 für IPv6

traceroute

traceroute 8.8.8.8

Verfolgt den Weg eines Pakets durch das Netz. tracepath als Alternative ohne root-Rechte

ss

ss -tulpen

Zeigt offene Ports und Verbindungen. -t TCP, -u UDP, -l listening, -p Prozess, -n numerisch. Ersetzt netstat

nslookup

nslookup google.com 8.8.8.8

DNS-Abfrage. Zweites Argument: alternativer DNS-Server. dig google.com für detailliertere Ausgabe

dig

dig MX fisipedia.de

Detaillierte DNS-Abfrage. Record-Typen: A, AAAA, MX, CNAME, NS, TXT. Scriptbar, bevorzugt gegenüber nslookup

curl

curl -I https://example.com

Überträgt Daten per URL (HTTP, FTP, ...). -I nur Header, -o datei speichern, -s silent, -L Weiterleitungen folgen

wget

wget -O /tmp/datei.tar.gz https://example.com/datei.tar.gz

Lädt Dateien aus dem Web herunter. -O Ausgabedatei, -q leise, -r rekursiv (Mirror)

netplan apply

netplan apply

Wendet Netzwerkkonfiguration aus /etc/netplan/*.yaml an. netplan try testet mit 5s Timeout

hostname

hostnamectl set-hostname server01

Zeigt oder setzt den Hostnamen. hostnamectl ändert dauerhaft, hostname nur für die aktuelle Session

ufw

ufw allow 443/tcp

Verwaltet die UFW-Firewall. ufw enable/disable, allow/deny PORT/PROTOKOLL, status verbose

SSH & Dateiübertragung

Befehl

Beispiel

Erklärung

ssh

ssh -i ~/.ssh/id_ed25519 username@192.168.1.10

Verbindet per SSH. -i privater Schlüssel, -p anderer Port, -L Port-Forwarding

ssh-keygen

ssh-keygen -t ed25519 -C "server-key"

Generiert SSH-Schlüsselpaar. Ed25519 ist empfohlen. Schlüssel landen in ~/.ssh/

ssh-copy-id

ssh-copy-id username@192.168.1.10

Kopiert den lokalen Public Key auf den Remote-Server in ~/.ssh/authorized_keys

scp

scp -r /lokaler/ordner/ username@server:/ziel/

Kopiert Dateien über SSH. -r rekursiv. Download: scp username@server:/datei .

rsync

rsync -avz --delete /backup/ username@server:/backup/

Synchronisiert Verzeichnisse effizient (nur Änderungen). -a Archivmodus, -v verbose, -z komprimiert, --delete löscht auf Ziel

sftp

sftp username@192.168.1.10

Interaktive Dateiübertragung über SSH. Befehle: ls, put datei, get datei, cd, exit

Speicher & Dateisystem

Befehl

Beispiel

Erklärung

df

df -h

Zeigt freien Speicherplatz aller Partitionen. -h menschenlesbar (KB, MB, GB)

du

du -sh /var/log/*

Zeigt Speicherverbrauch von Verzeichnissen. -s Zusammenfassung, -h menschenlesbar. Mit sort -h sortieren

free

free -h

Zeigt RAM-Nutzung: gesamt, belegt, frei, Buffer/Cache, verfügbar (available = tatsächlich nutzbar)

lsblk

lsblk -f

Listet alle Block-Geräte (Festplatten, Partitionen). -f zeigt Dateisystemtyp und UUID

mount

mount /dev/sdb1 /mnt/daten

Hängt ein Dateisystem in den Verzeichnisbaum ein. Dauerhaft: Eintrag in /etc/fstab

umount

umount /mnt/daten

Hängt ein Dateisystem aus. Schlägt fehl wenn das Gerät noch benutzt wird (lsof +D /mnt/daten zeigt belegende Prozesse)

fdisk

fdisk -l

Verwaltet MBR-Partitionstabellen. -l listet alle Festplatten und Partitionen (benötigt root)

mkfs

mkfs.ext4 /dev/sdb1

Formatiert eine Partition mit dem gewünschten Dateisystem. Varianten: mkfs.ext4, mkfs.xfs, mkfs.vfat

Archivierung & Komprimierung

Befehl

Beispiel

Erklärung

tar

tar -czf backup.tar.gz /etc/nginx/

Erstellt oder entpackt Archive. -c erstellen, -x entpacken, -z gzip, -j bzip2, -f Dateiname, -v verbose

tar -xzf

tar -xzf backup.tar.gz -C /tmp/entpackt/

Entpackt ein .tar.gz-Archiv. -C gibt das Zielverzeichnis an

gzip / gunzip

gzip -k datei.txt

Komprimiert einzelne Dateien (.gz). -k behält Originaldatei. gunzip datei.gz entpackt

zip / unzip

zip -r archiv.zip ordner/

Erstellt ZIP-Archive (Windows-kompatibel). unzip archiv.zip entpackt, unzip -l archiv.zip listet Inhalt

Systeminformationen

Befehl

Beispiel

Erklärung

uname

uname -a

Zeigt Systeminformationen. -a alle Infos inkl. Kernel-Version und Architektur

hostname

hostname -I

Zeigt den Hostnamen. -I zeigt alle IP-Adressen des Hosts

uptime

uptime

Zeigt wie lange das System läuft, Anzahl der angemeldeten Benutzer und CPU-Auslastung (Load Average)

lscpu

lscpu

Zeigt CPU-Informationen: Architektur, Kerne, Threads, Taktfrequenz, Cache

lspci

lspci -v

Listet alle PCI-Geräte (Netzwerkkarten, Grafikkarten, ...). -v ausführlich

lsusb

lsusb

Listet alle angeschlossenen USB-Geräte

cat /etc/os-release

cat /etc/os-release

Zeigt Informationen zur installierten Linux-Distribution: Name, Version, ID

lshw

lshw -short

Zeigt detaillierte Hardware-Informationen (ggf. apt install lshw). -short kompakte Übersicht

dmesg

dmesg | tail -30

Zeigt Kernel-Ringpuffer (Hardware-Erkennungs- und Boot-Meldungen). Nützlich bei Hardware-Problemen

env

env | grep PATH

Zeigt alle Umgebungsvariablen. export VARIABLE=Wert setzt eine Umgebungsvariable

date

date "+%Y-%m-%d %H:%M:%S"

Zeigt oder setzt Datum und Uhrzeit. Mit Formatstring für eigene Ausgabe

timedatectl

timedatectl set-timezone Europe/Berlin

Verwaltet Zeitzone und NTP-Synchronisation. timedatectl status zeigt aktuellen Status

Shell & Skripting

Befehl

Beispiel

Erklärung

history

history | grep apt

Zeigt Befehlshistorie. !N führt Befehl Nummer N erneut aus, !! letzten Befehl wiederholen, Strg+R rückwärts suchen

alias

alias ll='ls -lah'

Erstellt einen Befehlsalias. Dauerhaft: Alias in ~/.bashrc eintragen und source ~/.bashrc ausführen

source

source ~/.bashrc

Führt eine Datei in der aktuellen Shell aus (lädt Konfiguration neu ohne neue Shell zu öffnen)

crontab

crontab -e

Bearbeitet die crontab des aktuellen Benutzers. Format: Minute Stunde Tag Monat Wochentag Befehl. -l anzeigen, -r löschen

screen / tmux

tmux new -s meine-session

Terminal-Multiplexer – Sessions laufen weiter nach Verbindungsabbruch. tmux: Strg+B D trennen, tmux attach wieder verbinden

bash skript.sh

bash -x debug-skript.sh

Führt ein Shell-Skript aus. -x Debug-Modus zeigt jeden ausgeführten Befehl