Linux-Befehle: Übersicht mit Beispielen

Wichtige Linux-Befehle mit Beispielen: Dateisystem, Berechtigungen, Prozesse, Netzwerk, Pakete, Pipes und Redirects. Praxis-Tutorial für Einsteiger.

Portrait von Noel Lang

Noel Lang

Gründer & Fachinformatiker

Veröffentlicht: Aktualisiert: 14 Min. Lesezeit
Stilisiertes Terminalfenster mit orange leuchtenden Befehlszeilen auf dunklem Grund

Linux-Befehle sind das Werkzeug, mit dem du Linux-Systeme bedienst: vom lokalen Testsystem bis zur Cloud-VM. Diese Übersicht sortiert wichtige Kommandos nach Kategorie: Dateisystem, Berechtigungen, Prozesse, Text, Netzwerk, Pakete und Pipes. Jeder Befehl kommt mit Syntax, kurzer Erklärung und mindestens einem Praxis-Beispiel.

Wie das Terminal funktioniert

Bevor wir in die Befehle einsteigen, ein kurzer Blick darauf, was du eigentlich vor dir hast. Wenn du ein Terminal öffnest, siehst du eine sogenannte Shell: ein Programm, das auf deine Eingaben wartet, sie ausführt und die Antwort des Systems zurückgibt. Auf vielen Linux-Systemen ist das die Bash; je nach Distribution, Benutzerkonto oder Arbeitsumgebung können auch Zsh, Fish oder andere Shells voreingestellt sein.

Ein typischer Prompt sieht so aus: azubi@server:~ plus Dollarzeichen. Vor dem @ steht dein Benutzername, dahinter der Hostname. Das ~ ist dein Home-Verzeichnis (kurz für /home/azubi). Das Dollarzeichen markiert: “Ich warte auf deinen Befehl.” Wenn dort statt Dollarzeichen ein # steht, bist du als Root unterwegs. Vorsicht.

Ein Befehl besteht meist aus drei Teilen: Befehl, Optionen und Argumente. Beispiel:

ls -la /etc

ls ist der Befehl, -la sind zwei Optionen kombiniert (Lang-Format plus alle versteckten Dateien), /etc ist das Argument (welches Verzeichnis). Viele Befehle haben kurze Optionen mit einem Bindestrich (-l) und lange Optionen mit zwei Bindestrichen (--all). Die genauen Namen stehen in man BEFEHL oder BEFEHL --help.

Wichtigste Tasten im Terminal:

  • Tab: vervollständigt Befehle, Datei- und Verzeichnisnamen automatisch. Das spart Tipparbeit und reduziert Tippfehler.
  • Pfeil hoch / runter: blättert durch die History deiner letzten Befehle.
  • Strg+C: bricht einen laufenden Befehl ab.
  • Strg+L: räumt das Terminal auf (wie clear).
  • Strg+R: rückwärts in der History suchen.

Dateisystem navigieren

Das Linux-Dateisystem ist eine Baumstruktur, die mit / (Root) beginnt. Es gibt keine Laufwerksbuchstaben wie unter Windows. Alles hängt unter /. Hier die wichtigsten Verzeichnisse, die du ständig sehen wirst: /home (Benutzer-Daten), /etc (Konfigurationen), /var/log (Logs), /usr/bin (Programme), /tmp (temporäre Dateien).

pwd: Wo bin ich gerade?

pwd
# Ausgabe: /home/azubi

pwd (“print working directory”) zeigt dir, in welchem Verzeichnis du dich aktuell befindest. Bei jeder Unsicherheit ist pwd der erste Befehl, den du tippen solltest.

ls: Was ist hier drin?

ls              # Einfache Liste
ls -l           # Lang-Format mit Berechtigungen, Größe, Datum
ls -lah         # Lang-Format, alle Dateien, Größen menschenlesbar (z.B. 1.2K)
ls -la /etc     # Inhalt eines anderen Verzeichnisses

Die Option -a (“all”) zeigt auch versteckte Dateien (die mit . beginnen). -h macht Größenangaben menschenlesbar. -t sortiert nach Änderungsdatum (neueste zuerst). Die Kombination ls -lath ist im Alltag extrem nützlich, um zu sehen, was sich in einem Verzeichnis zuletzt geändert hat.

cd: Verzeichnis wechseln

cd /etc/nginx           # Absoluter Pfad
cd nginx                # Relativer Pfad (von hier aus)
cd ..                   # Eine Ebene hoch
cd ~                    # Ins Home-Verzeichnis
cd -                    # Zurück zum letzten Verzeichnis

Wer cd ohne Argument tippt, landet im Home-Verzeichnis. Der Punkt . bezeichnet das aktuelle Verzeichnis, .. das übergeordnete. Beides taucht in vielen Pfaden auf.

find: Dateien suchen

find . -name "*.log"            # Alle .log-Dateien ab aktuellem Verzeichnis
find /var/log -type f -size +10M   # Logs über 10 MB
find . -mtime -1                # In letzten 24 Stunden geändert

find ist mächtig und unverzichtbar, sobald du nicht mehr weißt, wo etwas liegt. Erstes Argument ist immer das Startverzeichnis, dann kommen Filter. -name sucht nach Dateinamen (Wildcards in Anführungszeichen!), -type f filtert auf Dateien (vs. d für Verzeichnisse), -size nach Größe, -mtime nach Änderungszeit.

Dateien & Verzeichnisse anlegen, kopieren, löschen

Die Brot-und-Butter-Befehle der Linux-Arbeit. Du wirst sie täglich nutzen.

mkdir, touch: Verzeichnisse und Dateien anlegen

mkdir projekte                     # Verzeichnis anlegen
mkdir -p projekte/web/src          # Verschachtelt mit -p (parent dirs)
touch index.html                   # Leere Datei anlegen
touch src/{app,utils,config}.js    # Drei Dateien auf einmal (Brace Expansion)

Ohne -p meckert mkdir, wenn ein Eltern-Verzeichnis fehlt oder das Ziel schon existiert. Mit -p wird beides ignoriert. Praktisch beim Anlegen von Projekt-Strukturen.

cp: Kopieren

cp config.yml backup.yml           # Eine Datei
cp -r src/ backup/                 # Verzeichnis rekursiv (mit -r)
cp -a src/ backup/                 # Archiv-Modus: Berechtigungen, Symlinks etc. erhalten

mv: Verschieben oder Umbenennen

mv old.txt new.txt                 # Umbenennen
mv datei.txt /tmp/                 # In anderes Verzeichnis verschieben
mv *.log archive/                  # Alle .log-Dateien verschieben

Linux unterscheidet nicht zwischen “verschieben” und “umbenennen”. Beides ist mv. Wenn das Ziel ein vorhandenes Verzeichnis ist, wird hineinverschoben. Wenn es nicht existiert, wird umbenannt.

rm: Löschen (mit Vorsicht!)

rm datei.tmp                       # Datei löschen
rm -i datei.tmp                    # Mit Rückfrage (interactive)
rm -r ordner/                      # Verzeichnis rekursiv
rm -rf node_modules/               # Rekursiv und ohne Nachfrage (gefährlich!)

Achtung: rm kennt keinen Papierkorb. Was gelöscht ist, ist weg. Moderne GNU-Coreutils schützen die Wurzel / standardmäßig vor direktem rekursivem Löschen, aber falsche Pfade, Wildcards oder Variablen können trotzdem ganze Verzeichnisse zerstören. Faustregel: Bei rm -rf mit Variablen oder Wildcards zuerst mit printf, echo oder find prüfen, was gleich gelöscht würde.

Berechtigungen verstehen und setzen

Berechtigungen sind die häufigste Frustquelle für Linux-Anfänger. Die gute Nachricht: das System dahinter ist erstaunlich einfach. Jede Datei und jedes Verzeichnis hat drei Dimensionen: Owner (Eigentümer), Group (Gruppe), Other (alle anderen). Für jede Dimension gibt es drei Rechte: read (lesen), write (schreiben), execute (ausführen).

Berechtigungen anzeigen

ls -l
# Beispiel-Ausgabe:
# -rwxr-xr-- 1 azubi staff 1234 Apr 17 10:00 script.sh

Die Zeichenkette -rwxr-xr-- liest sich so: das erste Zeichen ist der Typ (- = Datei, d = Verzeichnis, l = Symlink). Dann drei mal drei Zeichen für Owner, Group, Other. rwx = volle Rechte, r-x = lesen + ausführen, r-- = nur lesen.

chmod: Berechtigungen setzen

chmod 755 script.sh        # Owner: rwx, Group: r-x, Other: r-x
chmod 644 datei.txt        # Owner: rw-, Group: r--, Other: r--
chmod +x script.sh         # Add execute für alle
chmod u+w datei.txt        # User (=Owner) bekommt write

Die Zahlen sind oktal: r=4, w=2, x=1, addiert. 755 heißt also: Owner 4+2+1=7 (rwx), Group 4+0+1=5 (r-x), Other 4+0+1=5 (r-x). Faustregeln: Skripte 755, Konfigurationen 644, sensitive Dateien (z.B. SSH-Keys) 600.

chown: Eigentümer ändern

sudo chown azubi datei.txt              # Nur Owner ändern
sudo chown azubi:staff datei.txt        # Owner und Group
sudo chown -R www-data:www-data /var/www  # Rekursiv (-R)

Eigentümer ändern darf nur Root, also brauchst du sudo. chown -R ist klassisch beim Aufsetzen von Webservern, wo das gesamte Web-Verzeichnis dem Webserver-User gehören muss.

Prozesse beobachten und beenden

Jedes laufende Programm ist ein Prozess mit einer eindeutigen Prozess-ID (PID). Die folgenden Befehle helfen dir, das System zu durchschauen und Prozesse zu kontrollieren.

ps, top, htop: Was läuft gerade?

ps aux                       # Alle Prozesse, alle User, ausführlich
ps aux | grep nginx          # Nur Nginx-Prozesse
top                          # Live-Sicht, nach CPU sortiert
htop                         # Komfortabler (oft nachzuinstallieren)

ps aux ist statisch: ein Snapshot. top aktualisiert live. htop ist eine farbige, interaktive Variante mit Maus-Support, die du oft nachinstallieren musst (sudo apt install htop). In top beendest du mit q.

kill: Prozess beenden

kill 1234                    # Höflich beenden (SIGTERM)
kill -9 1234                 # Hart beenden (SIGKILL): letzter Ausweg
killall nginx                # Alle Prozesse mit dem Namen
pkill -f "node server.js"    # Pattern-Match auf Kommando

Erst höflich (kill PID), dann hart (kill -9). SIGTERM gibt dem Prozess Gelegenheit, aufzuräumen. SIGKILL beendet sofort, Datenkorruption möglich. Reserve-Aktion.

Textverarbeitung in der Shell

Linux ist textorientiert. Viele Konfigurationen, Logs und Daten landen in Dateien oder Streams. Die folgenden Tools helfen dir, Text direkt in der Shell zu lesen, zu filtern und auszuwerten.

cat, less: Dateien anzeigen

cat /etc/hostname              # Komplette Datei ausgeben
cat datei1.txt datei2.txt      # Mehrere konkatenieren
less /var/log/syslog           # Seitenweise (q zum Beenden)

cat ist gut für kurze Dateien, schlecht für lange (Terminal flutet). Für alles über 50 Zeilen lieber less: scrollen mit Pfeiltasten oder Leertaste, suchen mit /, beenden mit q.

head, tail: Anfang oder Ende

head datei.txt                 # Erste 10 Zeilen
head -n 50 datei.txt           # Erste 50 Zeilen
tail datei.txt                 # Letzte 10 Zeilen
tail -f /var/log/nginx/access.log   # "Follow": Live-Verfolgen

tail -f ist der wichtigste Befehl beim Debuggen von Servern. Öffne ein Terminal, lass den Log laufen, mache deine Aktion, beobachte was passiert. Beenden mit Strg+C.

grep: Nach Mustern suchen

grep "error" app.log                 # Alle Zeilen mit "error"
grep -i "error" app.log              # Case-insensitive
grep -r "TODO" src/                  # Rekursiv in Verzeichnis
grep -v "DEBUG" app.log              # Alles AUSSER "DEBUG"
grep -c "error" app.log              # Nur die Anzahl zählen

grep ist eines der meistgenutzten Linux-Tools. Es nimmt Eingabe (Datei oder Pipe), filtert nach Mustern, gibt nur passende Zeilen aus. Mit -r wird ein ganzes Verzeichnis durchsucht. Perfekt zum Wiederfinden vergessener Code-Stellen.

wc, sort, uniq: Zählen und Sortieren

wc -l datei.txt              # Anzahl Zeilen
wc -w datei.txt              # Anzahl Worte
sort datei.txt               # Alphabetisch sortieren
sort -n zahlen.txt           # Numerisch sortieren
uniq                         # Doppelte aufeinanderfolgende Zeilen entfernen
sort log.txt | uniq -c       # Vorkommen zählen (zusammen mit sort)

Netzwerk-Befehle

Sobald du Server bedienst, brauchst du Netzwerk-Werkzeuge. Diese hier decken viele Alltagssituationen ab.

ip: IP-Adressen und Routen

ip a                         # Alle Netzwerk-Schnittstellen mit IPs
ip r                         # Routing-Tabelle
ip link show                 # Interfaces mit Status (up/down)

ip a ersetzt in modernen Linux-Umgebungen meist das alte ifconfig. Du siehst alle Interfaces (lo = Loopback, eth0 oder ens3 = Ethernet, wlan0 = WLAN) und ihre IPs.

ping, curl, wget: Verbindungen testen

ping 1.1.1.1                 # Erreichbarkeit prüfen
ping -c 3 example.com        # Nur 3 Pings senden
curl https://example.com     # HTTP-Anfrage, Body ausgeben
curl -I https://example.com  # Nur Header (HEAD)
wget https://example.com/datei.zip   # Datei herunterladen

ping testet, ob ein Host auf ICMP-Anfragen antwortet; Firewalls können solche Antworten blockieren, obwohl der Dienst erreichbar ist. Mit curl testest du HTTP/HTTPS, APIs, Header und POST-Requests. wget ist auf Datei-Downloads ausgelegt.

ss: Offene Ports und Verbindungen

ss -tulpn                    # TCP, UDP, listening, programs, numerisch
ss -t state established      # Aktive TCP-Verbindungen

ss ist auf modernen Linux-Systemen das Standardwerkzeug für Sockets und ersetzt in vielen Anleitungen das ältere netstat. Mit ss -tulpn siehst du, welche Programme auf welchen Ports lauschen. Auf manchen Systemen brauchst du für Prozessnamen und PIDs Root-Rechte, also zum Beispiel sudo ss -tulpn.

Software installieren mit apt, dnf & Co.

Linux installiert Software über Paketmanager. Welcher zuständig ist, hängt von der Distribution ab: apt (Debian, Ubuntu), dnf (Fedora, RHEL, CentOS), pacman (Arch). Hier die Standards für Ubuntu/Debian.

sudo apt update                # Paketliste aktualisieren
sudo apt upgrade               # Alle installierten Pakete aktualisieren
sudo apt install nginx         # Paket installieren
sudo apt remove nginx          # Paket deinstallieren
sudo apt purge nginx           # Paket + Konfiguration löschen
apt search keyword             # Nach Paketen suchen
apt show nginx                 # Details zu einem Paket

Die zwei wichtigsten: apt update (holt nur die Liste der verfügbaren Pakete, installiert nichts) und apt upgrade (installiert die Updates). Nutze -y erst, wenn du weißt, welche Änderungen anstehen; auf Lern- und Produktivsystemen solltest du Paketentfernungen oder größere Upgrades bewusst prüfen. Auf Servern: regelmäßig patchen, häufig automatisiert via unattended-upgrades oder über das Patch-Management deines Betriebs.

Auf Fedora/RHEL/CentOS: dnf install, dnf upgrade, dnf search. Die Grundidee ist ähnlich, aber Optionen und Paketnamen unterscheiden sich.

Systeminfo, Speicher & Logs

Systeminformationen

uname -a                     # Kernel und Architektur
lsb_release -a               # Distribution und Version
uptime                       # Wie lange läuft das System
free -h                      # RAM-Nutzung (menschenlesbar)
df -h                        # Speicherplatz pro Mount
du -sh /var/log              # Wieviel Platz braucht ein Verzeichnis

df -h beantwortet “ist die Platte voll?”. du -sh ordner/ beantwortet “warum ist die Platte voll?”. Die Kombination findet die meisten Speicher-Probleme in Sekunden.

Dienste & Logs (systemd)

systemctl status nginx       # Status eines Dienstes
systemctl restart nginx      # Dienst neu starten
systemctl enable nginx       # Beim Boot starten
systemctl list-units --failed   # Alle fehlgeschlagenen Dienste
journalctl -u nginx          # Logs eines bestimmten Dienstes
journalctl -u nginx -f       # Logs live verfolgen
journalctl --since "1 hour ago"   # Zeitraum eingrenzen
dmesg | tail                 # Kernel-Meldungen (z.B. Hardware-Probleme)

Auf vielen aktuellen Linux-Distributionen ist systemd Standard. Wer dort einen Dienst startet, stoppt oder im Log sucht, nutzt systemctl und journalctl. In älteren, sehr kleinen oder spezialisierten Systemen können andere Init-Systeme im Einsatz sein; prüfe im Zweifel die Dokumentation deiner Distribution.

Pipes & Redirects: das Herz der Shell

Hier kommt ein zentrales Shell-Konzept: Pipes und Redirects. Du verkettest kleine Tools zu komplexeren Workflows. Wenn du das verstehst, kannst du kleine Auswertungen direkt auf der Kommandozeile bauen, ohne sofort ein Skript zu schreiben.

| Pipe: Ausgabe weitergeben

ps aux | grep nginx                   # Prozesse durch grep filtern
cat app.log | grep error | wc -l      # Anzahl Error-Zeilen zählen
ls -la | sort -k 5 -n -r | head       # Größte Dateien zuerst

Das Pipe-Symbol | nimmt die Standardausgabe des linken Befehls und gibt sie als Standardeingabe an den rechten weiter. Daraus baust du beliebig lange Ketten.

>, >>: Ausgabe in Datei umleiten

ls -la > liste.txt           # Schreibt (überschreibt!) in liste.txt
ls -la >> liste.txt          # Hängt an die Datei an
echo "hallo" > test.txt      # "hallo" in test.txt
command > /dev/null 2>&1     # Ausgabe und Fehler verwerfen

> überschreibt, >> hängt an. 2>&1 leitet auch Fehler (Stream 2) auf die Standardausgabe (Stream 1) um. /dev/null ist das schwarze Loch: alles, was dort hineinfließt, ist weg.

&&, ||: Logische Verkettung

sudo apt update && sudo apt upgrade      # Nur upgrade, wenn update klappt
make test || echo "Tests failed!"        # Echo, wenn Tests fehlschlagen
mkdir -p ordner && cd ordner             # In neues Verzeichnis wechseln

&& = “und nur dann, wenn der erste Befehl erfolgreich war”. || = “oder, wenn der erste fehlschlug”. Damit baust du mini-Workflows ohne Skripte.

Die 10 Befehle, die du jeden Tag brauchst

BefehlWofür
ls -lahVerzeichnis-Inhalt mit Details
cd PFADVerzeichnis wechseln
pwdWo bin ich?
cat/lessDatei anzeigen
grep MUSTER DATEIIm Inhalt suchen
find . -name "..."Datei finden
ps aux | grep ...Prozesse finden
tail -f LOGLog live verfolgen
systemctl status XDienst-Status
sudo apt install XSoftware installieren

Wer diese 10 sicher beherrscht, findet sich auf den meisten Linux-Servern zurecht. Alles weitere ergibt sich aus Praxis und Bedarf.

Häufige Fehler beim Arbeiten mit Linux-Befehlen

FehlerUrsacheLösung
Permission deniedDu hast keine Rechte für diese Aktionls -la DATEI prüfen, ggf. chmod/chown anpassen oder sudo nutzen
command not foundBefehl nicht installiert oder nicht im PATHwhich BEFEHL prüfen, ggf. sudo apt install PAKET
No such file or directoryTippfehler im Pfad oder Datei existiert nichtpwd und ls zur Orientierung; absolute Pfade nutzen
Argument list too long* matcht zu viele Dateienfind ... -exec ... + oder xargs verwenden
Pipe scheinbar ohne WirkungProgramm puffert AusgabeMit stdbuf -oL zwingen, zeilenweise zu schreiben
mv: cannot stat ...Datei existiert nicht (Tippfehler oder falsches Verzeichnis)Mit ls prüfen, was wirklich da ist

Faustregel bei jedem Fehler: erst die Fehlermeldung lesen (sie ist meist eindeutig), dann prüfen, ob du im richtigen Verzeichnis bist (pwd), dann ob die Datei wirklich existiert (ls), dann ob du die Berechtigungen hast (ls -la).

Nächster Schritt

Diese Befehle sind das Fundament. Wer das systematisch in die Praxis bringen will, geht so weiter:

  • SSH Key erstellen & Server absichern: der nächste sinnvolle Schritt: einen echten Server administrieren und ihn vor Angreifern absichern.
  • Bash-Scripting üben: wer regelmäßig dieselben Befehlsketten tippt, lernt frühzeitig, sie als Skript zu speichern. Starte mit kleinen Automationen wie Backup, Log-Auswertung oder Dateisortierung.
  • Lexikon-Eintrag Shell und CLI: Begriffe, die du als Linux-User regelmäßig hörst.

Technische Quellen

Die Top 10 für den Einstieg sind: pwd (wo bin ich), ls (was ist hier), cd (wechseln), cat / less (anzeigen), cp / mv / rm (kopieren, verschieben, löschen), mkdir (anlegen), grep (suchen), man (Hilfe lesen). Damit deckst du viele Alltags-Aufgaben ab.

Wiederholung schlägt Auswendiglernen. Tippe einen Befehl 30-50 Mal in echten Situationen, dann sitzt er. Hilfreich sind außerdem: ein Cheatsheet als PDF auf dem Desktop, Tab-Completion aktiv nutzen, History (Pfeil hoch) für wiederkehrende Befehle, und in /etc/bash_aliases eigene Kurzformen anlegen (z.B. alias ll=“ls -lah”).

Die Tabelle auf dieser Seite ist die aktuelle Referenz. Du kannst sie im Browser drucken oder als PDF speichern. Für Details zu einzelnen Befehlen nutze man BEFEHL oder BEFEHL —help direkt auf der Linux-Kommandozeile.

Ein Linux-Befehl ist ein einzelner Aufruf in der Shell (z.B. ls oder grep). Ein Bash-Skript ist eine Datei mit mehreren Befehlen, oft mit Variablen, Bedingungen und Schleifen. Skripte automatisieren wiederkehrende Aufgaben. Eine Datei beginnend mit #!/bin/bash und ausführbar gemacht (chmod +x) ist ein Bash-Skript.

Drei Wege: (1) man BEFEHL: zeigt die ausführliche Manual-Seite (mit q beenden). (2) BEFEHL —help: meist eine kurze Zusammenfassung der Optionen. (3) tldr BEFEHL: eine community-gepflegte, kompakte Beispiel-Sammlung (vorher zu installieren mit sudo apt install tldr).

macOS basiert auf BSD-Unix, daher funktionieren viele Befehle ähnlich (manche Optionen unterscheiden sich, z.B. bei sed oder ls). Unter Windows kannst du via WSL2 (Windows Subsystem for Linux) ein echtes Ubuntu installieren und alle Befehle wie auf einem Linux-Server nutzen. cmd und PowerShell sind eigene Shells; sie haben einige ähnliche Befehle oder Aliase, aber nicht dieselbe Linux-Umgebung.

LinuxTerminalBefehleServer
Portrait von Noel Lang

Noel Lang

Fachinformatiker für Anwendungsentwicklung, baut Lernplattformen für IT-Azubis und schreibt hier über alles rund um den IT-Berufseinstieg.

Alle Artikel von Noel

Weiterlesen.

Alle Artikel