Linux Terminal Grundlagen – Die wichtigsten Befehle für Einsteiger
Das Terminal wirkt auf den ersten Blick einschüchternd – ein schwarzes Fenster mit blinkendem Cursor. Dabei ist es das mächtigste Werkzeug, das Linux zu bieten hat. Mit wenigen Befehlen erledigst du Aufgaben, die in einer grafischen Oberfläche mehrere Klicks erfordern würden.
Dieser Guide führt dich durch die grundlegenden Befehle, erklärt sie mit konkreten Beispielen und zeigt dir, wie du denkst wie ein Linux-Nutzer.
Terminal öffnen und erste Orientierung
Terminal starten
| Desktop | Tastenkürzel |
|---|---|
| GNOME | Strg + Alt + T |
| KDE | Strg + Alt + T |
| Cinnamon (Mint) | Strg + Alt + T |
| Alle | Rechtsklick auf Desktop → „Terminal öffnen" |
Der Prompt erklärt
Nach dem Öffnen siehst du etwas wie:
andre@mein-laptop:~$
Aufbau: benutzername@hostname:aktuelles-verzeichnis$
~ist eine Abkürzung für dein Home-Verzeichnis (/home/benutzername)$bedeutet: normaler Benutzer#würde bedeuten: Root (Administrator) – mit Vorsicht verwenden!
Befehle funktionieren so
befehl [optionen] [argumente]
Beispiel: ls -la /home bedeutet:
ls– Befehl (list)-la– Optionen (l = Detailansicht, a = versteckte Dateien auch zeigen)/home– Argument (welches Verzeichnis)
Navigation im Dateisystem
Das Linux-Dateisystem hat eine andere Struktur als Windows. Alles startet von der Wurzel /, es gibt keine Laufwerksbuchstaben wie C: oder D:.
Grundlegende Verzeichnisse
| Pfad | Inhalt |
|---|---|
/ |
Wurzelverzeichnis |
/home/benutzername |
Deine persönlichen Dateien |
/etc |
Systemkonfigurationsdateien |
/var/log |
Logdateien |
/usr/bin |
Installierte Programme |
/tmp |
Temporäre Dateien |
/boot |
Boot-Dateien |
Die Navigation-Befehle
# Aktuelles Verzeichnis anzeigen (print working directory)
pwd
# Ausgabe: /home/andre
# Inhalt des aktuellen Verzeichnisses anzeigen
ls
# Detaillierte Ansicht mit Berechtigungen, Größe, Datum
ls -l
# Auch versteckte Dateien anzeigen (beginnen mit .)
ls -la
# Lesbare Dateigrößen (K, M, G statt Bytes)
ls -lh
# In ein Verzeichnis wechseln
cd /etc
cd ~/Downloads # ~ steht für dein Home-Verzeichnis
cd .. # Eine Ebene nach oben
cd - # Zurück zum letzten Verzeichnis
# Home-Verzeichnis zeigen
echo $HOME
Praktisches Beispiel:
# Von irgendwo zu Downloads navigieren
cd ~/Downloads
# Inhalt anzeigen
ls -lh
# Zurück zum letzten Ort
cd -
Dateien und Verzeichnisse verwalten
Erstellen
# Leere Datei erstellen (oder Zeitstempel aktualisieren)
touch datei.txt
# Verzeichnis erstellen
mkdir mein-ordner
# Verzeichnis-Baum erstellen (auch Elternverzeichnisse)
mkdir -p projekte/web/assets/css
# Datei mit Inhalt erstellen
echo "Hallo Welt" > datei.txt
# Text an Datei anhängen (>> überschreibt NICHT, > überschreibt!)
echo "Zweite Zeile" >> datei.txt
Kopieren, Verschieben, Löschen
# Datei kopieren
cp datei.txt backup.txt
# Datei in anderes Verzeichnis kopieren
cp datei.txt ~/Downloads/
# Verzeichnis rekursiv kopieren
cp -r mein-ordner/ backup-ordner/
# Datei/Verzeichnis verschieben (auch zum Umbenennen)
mv datei.txt neue-datei.txt
mv datei.txt ~/Dokumente/
# Datei löschen
rm datei.txt
# Verzeichnis mit Inhalt löschen (VORSICHT!)
rm -r mein-ordner/
# Interaktiv nachfragen vor jedem Löschvorgang
rm -ri mein-ordner/
Wichtig:
rmlöscht endgültig – es gibt keinen Papierkorb. Immer mit Vorsicht verwenden!
Verzeichnis-Baum anzeigen
# Falls nicht installiert:
sudo apt install tree
# Verzeichnisbaum anzeigen
tree
# Nur 2 Ebenen tief
tree -L 2
# Nur Verzeichnisse
tree -d
Suchen
# Datei nach Name suchen
find /home -name "datei.txt"
# Nach Dateiendung suchen
find . -name "*.log"
# In Dateien suchen (grep)
grep "Suchbegriff" datei.txt
# Rekursiv in allen Dateien eines Verzeichnisses
grep -r "Suchbegriff" /etc/
# Groß-/Kleinschreibung ignorieren
grep -i "fehler" /var/log/syslog
Archivieren und Entpacken
# tar.gz Archiv erstellen
tar -czf archiv.tar.gz mein-ordner/
# tar.gz Archiv entpacken
tar -xzf archiv.tar.gz
# Archiv anzeigen ohne zu entpacken
tar -tzf archiv.tar.gz
# ZIP entpacken
unzip archiv.zip
# ZIP erstellen
zip -r archiv.zip mein-ordner/
Dateiinhalte anzeigen und durchsuchen
# Gesamten Inhalt einer Datei ausgeben
cat datei.txt
# Mehrere Dateien hintereinander
cat datei1.txt datei2.txt
# Mit Zeilennummern
cat -n datei.txt
# Datei seitenweise anzeigen (navigierbar)
less datei.txt
# Navigation in less: Pfeiltasten, Leertaste vor, q zum Beenden, /suche
# Erste 10 Zeilen anzeigen
head datei.txt
# Erste 20 Zeilen
head -n 20 datei.txt
# Letzte 10 Zeilen
tail datei.txt
# Letzte 50 Zeilen
tail -n 50 datei.txt
# Datei live verfolgen (z.B. Logdatei)
tail -f /var/log/syslog
# Beenden: Strg + C
# Zeilenanzahl, Wörter, Zeichen zählen
wc -l datei.txt # Zeilen
wc -w datei.txt # Wörter
wc -c datei.txt # Bytes
Ausgaben kombinieren (Pipes)
Der |-Operator leitet die Ausgabe eines Befehls als Eingabe an den nächsten weiter:
# Nur Fehler-Zeilen aus Log anzeigen
grep "error" /var/log/syslog | tail -n 50
# Prozessliste durchsuchen
ps aux | grep nginx
# Verzeichnisinhalt nach Größe sortiert
ls -lh | sort -k5 -h
# Dateien zählen
ls | wc -l
Berechtigungen verstehen und setzen
Berechtigungen lesen
ls -l datei.txt
# Ausgabe: -rw-r--r-- 1 andre andre 1234 Feb 18 10:00 datei.txt
Aufbau der Berechtigungsanzeige:
- rw- r-- r--
│ │ │ └── Andere (others): nur lesen
│ │ └─────── Gruppe (group): nur lesen
│ └──────────── Eigentümer (user): lesen + schreiben
└─────────────── Dateityp (- = Datei, d = Verzeichnis, l = Symlink)
Rechte-Tabelle:
| Zeichen | Bedeutung | Oktalwert |
|---|---|---|
r |
Lesen | 4 |
w |
Schreiben | 2 |
x |
Ausführen | 1 |
- |
Kein Recht | 0 |
Berechtigungen ändern (chmod)
# Ausführbar machen (für den Eigentümer)
chmod u+x script.sh
# Alle Rechte für Eigentümer, lesen für alle anderen
chmod 755 script.sh
# Nur Eigentümer darf lesen/schreiben
chmod 600 private.key
# Verzeichnis rekursiv ändern
chmod -R 755 mein-ordner/
Oktal-Kurzreferenz:
| Oktal | Rechte | Bedeutung |
|---|---|---|
| 755 | rwxr-xr-x | Standard für Skripte/Programme |
| 644 | rw-r--r-- | Standard für Dateien |
| 600 | rw------- | Nur Eigentümer (SSH-Keys!) |
| 700 | rwx------ | Nur Eigentümer ausführbar |
Eigentümer ändern (chown)
# Eigentümer ändern
sudo chown andre datei.txt
# Eigentümer und Gruppe ändern
sudo chown andre:www-data datei.txt
# Rekursiv
sudo chown -R andre:andre /var/www/html/
Prozesse verwalten
Prozesse anzeigen
# Aktuelle Prozesse des eigenen Benutzers
ps
# Alle Prozesse (a = alle, u = Benutzerformat, x = ohne Terminal)
ps aux
# Nur nginx-Prozesse
ps aux | grep nginx
# Live-Ansicht (beenden mit q)
top
# Interaktive Ansicht mit mehr Details (muss installiert sein)
htop
sudo apt install htop
Prozesse beenden
# Prozess anhand seiner PID beenden (sanft)
kill 1234
# Prozess erzwungen beenden
kill -9 1234
# Prozess nach Name beenden
pkill nginx
# Alle Instanzen eines Programms beenden
killall firefox
Befehle im Hintergrund ausführen
# Prozess in den Hintergrund schicken
befehl &
# Laufenden Prozess in den Hintergrund schicken
# Zuerst: Strg + Z (pausiert)
# Dann:
bg
# Hintergrundprozesse anzeigen
jobs
# Prozess wieder in den Vordergrund holen
fg
# Prozess läuft weiter, auch wenn Terminal geschlossen wird
nohup langer-befehl &
Paketverwaltung
Die Paketverwaltung ist eines der größten Stärken von Linux: Software kommt aus geprüften Quellen, wird zentral verwaltet und automatisch aktualisiert.
Debian/Ubuntu: apt
# Paketlisten aktualisieren (immer zuerst!)
sudo apt update
# Alle Pakete aktualisieren
sudo apt upgrade
# Paket installieren
sudo apt install nginx
# Mehrere Pakete auf einmal
sudo apt install curl wget git htop
# Paket entfernen (Konfiguration bleibt)
sudo apt remove nginx
# Paket mit Konfiguration entfernen
sudo apt purge nginx
# Nicht mehr benötigte Abhängigkeiten entfernen
sudo apt autoremove
# Nach Paket suchen
apt search "webserver"
# Infos zu einem Paket
apt show nginx
# Installierte Pakete auflisten
dpkg -l | grep nginx
Fedora/RHEL: dnf
sudo dnf update
sudo dnf install nginx
sudo dnf remove nginx
sudo dnf search nginx
sudo dnf info nginx
dnf list installed | grep nginx
Arch Linux: pacman
sudo pacman -Syu # System aktualisieren
sudo pacman -S nginx # Paket installieren
sudo pacman -R nginx # Paket entfernen
sudo pacman -Ss nginx # Suchen
sudo pacman -Q | grep nginx # Installiert prüfen
Netzwerk und Verbindungen
# Netzwerkinterfaces anzeigen
ip addr show
# oder kurz:
ip a
# Routing-Tabelle
ip route
# Verbindungstest
ping google.com
# Nur 4 Pakete senden
ping -c 4 1.1.1.1
# Datei herunterladen
curl -O https://example.com/datei.txt
# Datei herunterladen mit Fortschritt
wget https://example.com/datei.txt
# HTTP-Header anzeigen
curl -I https://example.com
# Offene Ports anzeigen
ss -ltnp
# Aktive Verbindungen
ss -tnp
# DNS-Auflösung testen
dig google.com
nslookup google.com
# Traceroute (Netzwerkpfad verfolgen)
traceroute google.com
# Alternativ (moderner):
mtr google.com
SSH – Verbindung zu Remote-Servern
# Mit Passwort verbinden
ssh benutzername@server-ip
# Mit Port angeben
ssh -p 2222 benutzername@server-ip
# Mit SSH-Key verbinden
ssh -i ~/.ssh/mein_key benutzername@server-ip
# Datei auf Server kopieren
scp datei.txt benutzername@server:/pfad/ziel/
# Verzeichnis auf Server kopieren
scp -r ordner/ benutzername@server:/pfad/ziel/
Mehr zu SSH: SSH-Schlüssel erstellen und sicher verwenden
Nützliche Kurzkommandos und Tricks
Tastaturkürzel im Terminal
| Kürzel | Aktion |
|---|---|
Strg + C |
Laufenden Befehl abbrechen |
Strg + Z |
Prozess pausieren (in den Hintergrund) |
Strg + D |
Terminal beenden (EOF) |
Strg + L |
Bildschirm leeren (wie clear) |
Tab |
Autovervollständigung |
Tab Tab |
Alle Möglichkeiten anzeigen |
Pfeil oben/unten |
Befehlshistorie |
Strg + R |
In Befehlshistorie suchen |
Strg + A |
Cursor zum Anfang der Zeile |
Strg + E |
Cursor zum Ende der Zeile |
Weitere nützliche Befehle
# Befehlshistorie anzeigen
history
# Letzten Befehl wiederholen
!!
# Befehl Nr. 42 aus der Historie
!42
# Letztes Argument des vorherigen Befehls
!$
# Man-Page (Handbuch) eines Befehls öffnen
man ls
man grep
# Navigation: Pfeiltasten, q zum Beenden
# Kurze Hilfe zu einem Befehl
ls --help
# Pfad eines Programms herausfinden
which python3
which nginx
# Systeminfo
uname -a # Kernel-Version
lsb_release -a # Distribution und Version
df -h # Festplattennutzung
free -h # RAM-Nutzung
uptime # Systemlaufzeit
whoami # Aktueller Benutzer
id # Benutzer-ID und Gruppen
# Datum und Uhrzeit
date
date "+%Y-%m-%d %H:%M"
# Ausgabe in Datei schreiben UND auf dem Bildschirm anzeigen
befehl | tee ausgabe.txt
# Als anderen Benutzer ausführen
sudo -u www-data befehl
# Zu Root wechseln (wenn erlaubt)
sudo -i
# Zurück: exit
Alias – eigene Kurzformen definieren
# Temporärer Alias (gilt nur in dieser Session)
alias update='sudo apt update && sudo apt upgrade -y'
alias ll='ls -lah'
# Dauerhafter Alias: in ~/.bashrc oder ~/.zshrc eintragen
echo "alias ll='ls -lah'" >> ~/.bashrc
source ~/.bashrc # Änderungen sofort übernehmen
Häufige Fehler und deren Bedeutung
command not found
bash: nginx: command not found
Bedeutung: Das Programm ist nicht installiert oder nicht im PATH.
# Prüfen ob installiert
which nginx
apt list --installed 2>/dev/null | grep nginx
# Installieren
sudo apt install nginx
Permission denied
bash: /etc/hosts: Permission denied
Bedeutung: Du hast nicht die nötigen Rechte.
# Mit sudo (Administratorrechten) ausführen
sudo nano /etc/hosts
No such file or directory
ls: cannot access 'datei.txt': No such file or directory
Bedeutung: Datei oder Verzeichnis existiert nicht an dem angegebenen Pfad.
# Aktuellen Pfad prüfen
pwd
ls
Broken pipe
Erscheint manchmal bei Pipes (|). Meist harmlos – das linke Programm wurde beendet, bevor das rechte fertig war.
sudo: command not found (seltener)
# sudo ist nicht installiert (z.B. in manchen Container-Umgebungen)
su -c "befehl" root
# oder su - , dann als root anmelden
Fazit
Das Terminal ist kein Rückschritt – es ist der direkteste Weg, mit deinem System zu kommunizieren. Die hier gezeigten Befehle decken 90 % aller alltäglichen Aufgaben ab.
Dein Lernpfad:
- Navigation und Dateiverwaltung in Fleisch und Blut üben
man-Pages nutzen, wenn du einen Befehl nicht kennst- Aliases für häufig genutzte Befehle anlegen
- Mit Pipes experimentieren – die Kraft von Linux liegt in der Kombination