Befehle (Shell)

Die Kommandozeile

Auf Linux-Servern ist die Shell das primäre Werkzeug. Ein guter Linux-Administrator kennt die wichtigsten Befehle auswendig. Dieser Artikel gibt einen strukturierten Überblick über die täglich genutzten Kommandos.

Navigation und Dateiverwaltung

# Aktuelles Verzeichnis anzeigen
pwd

# Verzeichniswechsel
cd /etc
cd ~          # Heimverzeichnis
cd ..         # Verzeichnis höher
cd -          # Letztes Verzeichnis

# Verzeichnisinhalt anzeigen
ls            # einfach
ls -l         # Langformat (Rechte, Besitzer, Größe)
ls -la        # wie -l, auch versteckte Dateien (. am Anfang)
ls -lh        # wie -l, Größen menschenlesbar (KB, MB)

# Verzeichnis erstellen
mkdir neuer-ordner
mkdir -p pfad/zu/neuer/ordner    # mit allen übergeordneten Ordnern

# Dateien kopieren
cp quelle.txt ziel.txt
cp -r quellordner/ zielordner/   # Verzeichnis rekursiv kopieren

# Dateien verschieben / umbenennen
mv alte-datei.txt neue-datei.txt
mv datei.txt /tmp/

# Dateien löschen
rm datei.txt
rm -r verzeichnis/               # Verzeichnis rekursiv löschen
rm -rf verzeichnis/              # erzwungen (kein Nachfragen) – Vorsicht!

# Symbolischen Link erstellen
ln -s /pfad/zur/datei linkname

Dateiinhalt anzeigen

# Ganze Datei ausgeben
cat /etc/hostname

# Seitenweise anzeigen
less /var/log/syslog
# Steuerung: q = beenden, / = suchen, n = nächstes Ergebnis

# Ersten/letzten Zeilen anzeigen
head -n 20 logdatei.log       # erste 20 Zeilen
tail -n 50 logdatei.log       # letzte 50 Zeilen
tail -f /var/log/syslog       # live mitlesen (follow)

# Datei suchen
find / -name "sshd_config"
find /home -user username -name "*.txt"
find /var/log -mtime -1       # geändert in den letzten 24h

# In Dateien suchen
grep "error" /var/log/syslog
grep -r "passwort" /etc/      # rekursiv
grep -i "ERROR" logdatei.log  # Groß/Klein ignorieren
grep -n "sshd" /var/log/auth.log  # mit Zeilennummer

Pipes und Umleitungen

Das Pipe-Zeichen | leitet die Ausgabe eines Befehls als Eingabe an den nächsten weiter – das ist das Herzstück der Unix-Philosophie:

# Ausgabe filtern
ps aux | grep apache
cat /etc/passwd | grep bash | wc -l

# Ausgabe in Datei umleiten
echo "Hallo" > datei.txt          # überschreiben
echo "Hallo" >> datei.txt         # anhängen
ls -la > verzeichnis.txt

# Fehlerausgabe umleiten
befehl 2> fehler.txt              # nur Fehler
befehl > ausgabe.txt 2>&1         # alles in eine Datei
befehl 2>/dev/null                # Fehler unterdrücken

Text verarbeiten

# Zeilen zählen
wc -l datei.txt

# Sortieren
sort datei.txt
sort -n zahlen.txt    # numerisch sortieren
sort -r datei.txt     # umgekehrt

# Doppelte Zeilen entfernen
sort datei.txt | uniq

# Spalten extrahieren
cut -d: -f1 /etc/passwd    # erstes Feld (Trennzeichen :)

# Text ersetzen
sed 's/alt/neu/g' datei.txt
sed -i 's/alt/neu/g' datei.txt    # in-place (Datei ändern)

# Mächtiges Text-Tool
awk '{print $1}' datei.txt        # erste Spalte ausgeben
awk -F: '{print $1,$3}' /etc/passwd  # Name und UID

Systeminformationen

# Systeminformationen
uname -a                  # Kernel und Architektur
hostname                  # Hostname
uptime                    # Laufzeit und Auslastung
date                      # Datum und Uhrzeit

# Speicherverbrauch
free -h                   # RAM-Nutzung menschenlesbar
df -h                     # Festplattenbelegung

# CPU-Informationen
lscpu
nproc                     # Anzahl CPU-Kerne

# Hardware-Informationen
lshw -short               # Hardware-Übersicht
lsblk                     # Blockgeräte (Festplatten, Partitionen)
lsusb                     # USB-Geräte
lspci                     # PCI-Geräte

Shell-Hilfsmittel

# Befehlshistorie
history
history | grep ssh        # in History suchen
!!                        # letzten Befehl wiederholen
!ssh                      # letzten Befehl der mit ssh begann

# Tastenkürzel in der Shell
Strg+C    # Prozess abbrechen
Strg+Z    # Prozess pausieren (in Hintergrund)
Strg+L    # Terminal löschen (wie clear)
Strg+R    # Rückwärtssuche in History
Tab       # Autovervollständigung

# Mehrere Befehle
befehl1 ; befehl2          # nacheinander (unabhängig)
befehl1 && befehl2         # zweiter nur wenn erster erfolgreich
befehl1 || befehl2         # zweiter nur wenn erster fehlschlägt

Variablen und Umgebung

# Variable setzen
NAME="Max"
echo $NAME

# Umgebungsvariable setzen (für Kindprozesse sichtbar)
export DATABASE_URL="postgresql://localhost/db"

# Wichtige Umgebungsvariablen
echo $PATH        # Suchpfad für ausführbare Programme
echo $HOME        # Heimverzeichnis
echo $USER        # Aktueller Benutzername
echo $SHELL       # Aktuelle Shell
echo $?           # Rückgabewert des letzten Befehls (0 = Erfolg)

Zusammenfassung der wichtigsten Befehle

Befehl

Aufgabe

ls, cd, pwd

Navigation

cp, mv, rm, mkdir

Dateiverwaltung

cat, less, head, tail

Dateiinhalt anzeigen

grep, find

Suchen

| , >, >>

Pipes und Umleitungen

chmod, chown

Berechtigungen

df, free, uname

Systeminformationen

sed, awk, cut, sort

Textverarbeitung