Shell Grundlagen
Die wichtigsten Befehle fuer die Arbeit auf Linux-Servern. Grundwissen fuer jeden IT-Administrator.
🐚 Was ist eine Shell?
Die Shell (auch Terminal, Kommandozeile oder CLI) ist eine textbasierte Schnittstelle zum Betriebssystem. Statt mit der Maus zu klicken, gibst du Befehle als Text ein.
user@server:~$ ls -la
total 32
drwxr-xr-x 4 user user 4096 Jan 15 10:00 .
drwxr-xr-x 3 root root 4096 Jan 10 08:00 ..
-rw-r--r-- 1 user user 220 Jan 10 08:00 .bashrc
Warum Shell statt GUI?
- Schneller - Ein Befehl statt 10 Klicks
- Automatisierbar - Scripts können Aufgaben wiederholen
- Remote - Server haben oft keine GUI
- Mächtig - Volle Kontrolle über das System
🧭 Navigation - Sich bewegen
Die grundlegendsten Befehle um im Dateisystem zu navigieren.
| Befehl | Beschreibung | Beispiel |
|---|---|---|
| pwd | Aktuelles Verzeichnis anzeigen | /home/user |
| cd | Verzeichnis wechseln | cd /var/log |
| cd .. | Ein Verzeichnis hoch | cd .. |
| cd ~ | Zum Home-Verzeichnis | cd ~ |
| cd - | Zum vorherigen Verzeichnis | cd - |
# Wo bin ich?
pwd
# → /home/user
# Gehe zu /var/log
cd /var/log
# Ein Verzeichnis hoch
cd ..
# Zurück zum letzten Verzeichnis
cd -
📂 Dateien anzeigen
Verzeichnisinhalte und Datei-Informationen anzeigen.
# Einfache Liste
ls
# Detaillierte Liste mit versteckten Dateien
ls -la
# Nur Verzeichnisse
ls -d */
# Nach Datum sortiert (neueste zuerst)
ls -lt
# Mit Dateigrössen in lesbar (KB, MB, GB)
ls -lh
# Rekursiv (alle Unterverzeichnisse)
ls -R
ls -la Output erklaert:
drwxr-xr-x 4 user group 4096 Jan 15 10:00 verzeichnis │└┬┘└┬┘└┬┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Name │ │ │ │ │ │ │ │ └─ Datum/Zeit │ │ │ │ │ │ │ └─ Grösse in Bytes │ │ │ │ │ │ └─ Gruppe │ │ │ │ │ └─ Besitzer │ │ │ │ └─ Anzahl Links │ │ │ └─ Rechte für alle │ │ └─ Rechte für Gruppe │ └─ Rechte für Besitzer └─ d=Directory, -=Datei, l=Link
📖 Dateien lesen
Verschiedene Möglichkeiten um Dateiinhalte anzuzeigen.
# Ganze Datei anzeigen
cat datei.txt
# Mit Zeilennummern
cat -n datei.txt
# Erste 10 Zeilen
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
# Live mitlesen (für Logs!)
tail -f /var/log/syslog
# Scrollbar durchsuchen
less datei.txt
# (q zum Beenden, / zum Suchen)
tail -f ist dein Freund
Mit tail -f siehst du neue Log-Einträge in Echtzeit.
Perfekt zum Debuggen! Beende mit Ctrl+C.
📝 Dateien verwalten
Dateien und Verzeichnisse erstellen, kopieren, verschieben und löschen.
# Leere Datei erstellen
touch neue-datei.txt
# Verzeichnis erstellen
mkdir neuer-ordner
# Verschachtelte Verzeichnisse erstellen
mkdir -p pfad/zu/neuem/ordner
# Datei kopieren
cp quelle.txt ziel.txt
# Verzeichnis kopieren (rekursiv)
cp -r ordner/ neuer-ordner/
# Datei verschieben/umbenennen
mv alte-datei.txt neue-datei.txt
# In anderes Verzeichnis verschieben
mv datei.txt /pfad/zum/ziel/
# Datei löschen
rm datei.txt
# Verzeichnis löschen (rekursiv)
rm -r ordner/
# Ohne Nachfrage löschen (Vorsicht!)
rm -rf ordner/
rm -rf ist gefaehrlich!
rm -rf löscht alles ohne Nachfrage und ohne Papierkorb.
Ein Tippfehler wie rm -rf / home/user (Leerzeichen!) kann das System zerstören.
Immer doppelt prüfen!
🔍 Suchen
Dateien finden und in Dateien suchen.
# Datei nach Name finden
find /pfad -name "datei.txt"
# Mit Wildcard
find /var/log -name "*.log"
# Nur Verzeichnisse
find /home -type d -name "config"
# Dateien grösser als 100MB
find / -size +100M
# Dateien der letzten 7 Tage
find /var/log -mtime -7
# Text in Datei suchen
grep "suchbegriff" datei.txt
# Rekursiv in allen Dateien
grep -r "error" /var/log/
# Gross/Klein ignorieren
grep -i "Error" datei.txt
# Mit Zeilennummer
grep -n "suchbegriff" datei.txt
# Nur Dateinamen anzeigen
grep -l "suchbegriff" *.txt
# Invertiert (Zeilen OHNE Begriff)
grep -v "debug" app.log
Kombinieren
find und grep kombinieren:
find /var/log -name "*.log" -exec grep "error" \;
✂️ Text-Processing
Mächtige Werkzeuge zum Bearbeiten und Filtern von Text.
# Erste Spalte (getrennt durch :)
cut -d: -f1 /etc/passwd
# Spalten 1 und 3
cut -d: -f1,3 /etc/passwd
# Zeichen 1-10
cut -c1-10 datei.txt
# Alphabetisch sortieren
sort datei.txt
# Numerisch sortieren
sort -n zahlen.txt
# Umgekehrt sortieren
sort -r datei.txt
# Nach Spalte sortieren (3. Spalte)
sort -k3 -t: /etc/passwd
# Duplikate entfernen
sort datei.txt | uniq
# Duplikate zählen
sort datei.txt | uniq -c
# Nur Duplikate anzeigen
sort datei.txt | uniq -d
# Spalte 1 ausgeben (Leerzeichen-getrennt)
awk '{print $1}' datei.txt
# Spalten 1 und 3
awk '{print $1, $3}' datei.txt
# Mit Trennzeichen
awk -F: '{print $1}' /etc/passwd
# Bedingte Ausgabe
awk '$3 > 1000 {print $1}' /etc/passwd
# Summe berechnen
awk '{sum += $1} END {print sum}' zahlen.txt
# Zeilen zählen
awk 'END {print NR}' datei.txt
# Ersetzen (erstes Vorkommen pro Zeile)
sed 's/alt/neu/' datei.txt
# Alle Vorkommen ersetzen
sed 's/alt/neu/g' datei.txt
# Datei direkt ändern
sed -i 's/alt/neu/g' datei.txt
# Zeile löschen (Zeile 5)
sed '5d' datei.txt
# Zeilen mit Pattern löschen
sed '/pattern/d' datei.txt
# Nur bestimmte Zeilen
sed -n '10,20p' datei.txt
Praktisches Beispiel
Log-Analyse: Top 10 IP-Adressen mit meisten Requests:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10 📦 Archivierung & Komprimierung
Dateien zusammenpacken, komprimieren und entpacken.
# Archiv erstellen
tar -cvf archiv.tar ordner/
# Archiv erstellen + gzip komprimieren
tar -czvf archiv.tar.gz ordner/
# Archiv erstellen + bzip2 (bessere Kompression)
tar -cjvf archiv.tar.bz2 ordner/
# Archiv entpacken
tar -xvf archiv.tar
# tar.gz entpacken
tar -xzvf archiv.tar.gz
# In bestimmtes Verzeichnis entpacken
tar -xzvf archiv.tar.gz -C /ziel/ordner/
# Inhalt anzeigen ohne zu entpacken
tar -tvf archiv.tar.gz
# ZIP erstellen
zip -r archiv.zip ordner/
# ZIP entpacken
unzip archiv.zip
# In bestimmtes Verzeichnis
unzip archiv.zip -d /ziel/ordner/
# Inhalt anzeigen
unzip -l archiv.zip
# Datei komprimieren (ersetzt Original!)
gzip datei.txt
# → datei.txt.gz
# Dekomprimieren
gunzip datei.txt.gz
# Original behalten
gzip -k datei.txt
Welches Format?
- .tar.gz - Linux Standard, gute Balance
- .tar.bz2 - Bessere Kompression, langsamer
- .zip - Windows-kompatibel
- .tar.xz - Beste Kompression, am langsamsten
🔐 Berechtigungen
Dateirechte und Besitzer verwalten.
Berechtigungen verstehen:
rwx r-x r-- │││ │││ │││ │││ │││ └┴┴─ Alle anderen (read) │││ └┴┴───── Gruppe (read + execute) └┴┴────────── Besitzer (read + write + execute) r = read (4) Lesen w = write (2) Schreiben x = execute (1) Ausführen
# Ausführbar machen
chmod +x script.sh
# Nur Besitzer darf alles
chmod 700 geheim.txt
# Besitzer: rwx, Gruppe: rx, Andere: rx
chmod 755 script.sh
# Besitzer: rw, Gruppe: r, Andere: r
chmod 644 datei.txt
# Rekursiv für Verzeichnis
chmod -R 755 ordner/
# Besitzer ändern
chown user datei.txt
# Besitzer und Gruppe ändern
chown user:gruppe datei.txt
# Rekursiv
chown -R user:gruppe ordner/
👥 Benutzer & Gruppen
Benutzer und Gruppen auf dem System verwalten.
# Neuen Benutzer erstellen
sudo useradd -m -s /bin/bash username
# Mit Home-Verzeichnis und Kommentar
sudo useradd -m -c "Max Mustermann" -s /bin/bash max
# Passwort setzen
sudo passwd username
# Benutzer löschen
sudo userdel username
# Benutzer + Home löschen
sudo userdel -r username
# Benutzer-Info anzeigen
id username
# Wer bin ich?
whoami
# Benutzer wechseln
su - username
# Als root arbeiten
sudo -i
# Gruppe erstellen
sudo groupadd entwickler
# Benutzer zu Gruppe hinzufügen
sudo usermod -aG entwickler username
# Benutzer aus Gruppe entfernen
sudo gpasswd -d username entwickler
# Gruppen eines Benutzers anzeigen
groups username
# Alle Gruppen anzeigen
cat /etc/group
# Befehl als root
sudo command
# Als anderer Benutzer
sudo -u username command
# sudo-Berechtigungen bearbeiten
sudo visudo
# Letzten Befehl als root wiederholen
sudo !!
sudoers Syntax
In /etc/sudoers:
username ALL=(ALL:ALL) ALL
%admin ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt
⚙️ Systemd & Services
Services (Dienste) starten, stoppen und verwalten mit systemd.
# Service starten
sudo systemctl start nginx
# Service stoppen
sudo systemctl stop nginx
# Service neu starten
sudo systemctl restart nginx
# Konfiguration neu laden (ohne Neustart)
sudo systemctl reload nginx
# Status anzeigen
sudo systemctl status nginx
# Beim Booten automatisch starten
sudo systemctl enable nginx
# Autostart deaktivieren
sudo systemctl disable nginx
# Ist Service aktiv?
systemctl is-active nginx
# Ist Service enabled?
systemctl is-enabled nginx
# Alle Services anzeigen
systemctl list-units --type=service
# Fehlgeschlagene Services
systemctl --failed
# Alle Logs
journalctl
# Logs eines Services
journalctl -u nginx
# Live-Logs (wie tail -f)
journalctl -u nginx -f
# Logs seit heute
journalctl --since today
# Logs der letzten Stunde
journalctl --since "1 hour ago"
# Logs mit Priorität error und höher
journalctl -p err
# Boot-Logs
journalctl -b
# Kernel-Logs
journalctl -k
# Speicherplatz der Logs
journalctl --disk-usage
# Alte Logs löschen (älter als 7 Tage)
sudo journalctl --vacuum-time=7d
Service-Datei erstellen
Eigenen Service unter /etc/systemd/system/meinservice.service:
[Unit] Description=Mein Service After=network.target [Service] Type=simple User=www-data ExecStart=/usr/bin/python3 /opt/app/main.py Restart=always [Install] WantedBy=multi-user.target
Dann: sudo systemctl daemon-reload
🌐 Netzwerk
Netzwerk-Konfiguration und Diagnose.
# Alle Netzwerk-Interfaces
ip a
ip addr show
# Nur IPv4
ip -4 a
# Bestimmtes Interface
ip a show eth0
# Interface aktivieren/deaktivieren
sudo ip link set eth0 up
sudo ip link set eth0 down
# IP-Adresse hinzufügen
sudo ip addr add 192.168.1.100/24 dev eth0
# Routing-Tabelle
ip route
ip r
# Default Gateway setzen
sudo ip route add default via 192.168.1.1
# Ping (Erreichbarkeit)
ping -c 4 google.com
# Traceroute (Weg zum Ziel)
traceroute google.com
# oder
mtr google.com
# DNS-Abfrage
dig google.com
dig google.com MX
nslookup google.com
# Welche IP hat ein Hostname
host google.com
# Reverse DNS
host 8.8.8.8
# Offene Ports anzeigen
ss -tulpn
# t=TCP, u=UDP, l=listening, p=process, n=numeric
# Aktive Verbindungen
ss -tan
# Verbindungen zu bestimmtem Port
ss -tan | grep :443
# Welcher Prozess nutzt Port?
sudo lsof -i :80
# Alle Listening-Ports
sudo netstat -tulpn
# Port-Scan (wenn nmap installiert)
nmap -p 1-1000 localhost
# GET-Request
curl https://api.example.com
# Mit Headers
curl -I https://example.com
# POST mit JSON
curl -X POST -H "Content-Type: application/json" \
-d '{"key":"value"}' https://api.example.com
# Download
wget https://example.com/file.zip
# Download mit curl
curl -O https://example.com/file.zip
# Follow Redirects
curl -L https://example.com Netzwerk-Debugging
Typische Reihenfolge bei Netzwerkproblemen:
ip a- Habe ich eine IP?ping 8.8.8.8- Funktioniert Routing?ping google.com- Funktioniert DNS?curl -I https://ziel.com- Funktioniert HTTP?
🔑 SSH & Remote-Zugriff
Sichere Verbindungen zu anderen Servern.
# Einfache Verbindung
ssh user@server.example.com
# Mit Port
ssh -p 2222 user@server.example.com
# Mit SSH-Key
ssh -i ~/.ssh/mykey user@server.example.com
# Befehl ausführen ohne Login
ssh user@server "ls -la /var/log"
# X11-Forwarding (GUI-Apps remote)
ssh -X user@server
# Ed25519 Key (empfohlen)
ssh-keygen -t ed25519 -C "user@email.com"
# RSA Key (älter, breiter kompatibel)
ssh-keygen -t rsa -b 4096 -C "user@email.com"
# Key auf Server kopieren
ssh-copy-id user@server.example.com
# Manuell: Public Key anzeigen
cat ~/.ssh/id_ed25519.pub
# → Auf Server in ~/.ssh/authorized_keys einfügen
# ~/.ssh/config für einfachere Verbindungen
cat ~/.ssh/config
~/.ssh/config Beispiel:
Host webserver
HostName 192.168.1.100
User admin
Port 22
IdentityFile ~/.ssh/id_ed25519
Host produktiv
HostName prod.example.com
User deploy
ForwardAgent yes
Dann einfach: ssh webserver
# Datei zum Server
scp datei.txt user@server:/pfad/ziel/
# Datei vom Server
scp user@server:/pfad/datei.txt ./
# Verzeichnis kopieren
scp -r ordner/ user@server:/pfad/ziel/
# Mit SFTP (interaktiv)
sftp user@server
# → put, get, ls, cd, etc.
SSH-Sicherheit
- Nutze SSH-Keys statt Passwörter
- Deaktiviere root-Login:
PermitRootLogin no - Nutze fail2ban gegen Brute-Force
- Ändere den Standard-Port (optional)
💾 Disk Management
Festplatten, Partitionen und Dateisysteme verwalten.
# Dateisystem-Belegung
df -h
# Nur lokale Dateisysteme
df -hl
# Verzeichnisgrösse
du -sh /var/log
# Grösste Verzeichnisse
du -sh /* | sort -rh | head -10
# Grösste Dateien finden
find / -type f -size +100M -exec ls -lh \; 2>/dev/null
# Alle Block-Devices
lsblk
# Mit Dateisystem-Info
lsblk -f
# Detaillierte Disk-Info
sudo fdisk -l
# Partitionen eines Disks
sudo fdisk -l /dev/sda
# Interaktiv partitionieren
sudo fdisk /dev/sdb
# m = Hilfe, n = neue Partition, w = schreiben
# Device mounten
sudo mount /dev/sdb1 /mnt/usb
# Mit Optionen
sudo mount -o ro /dev/sdb1 /mnt/usb # read-only
# Unmounten
sudo umount /mnt/usb
# Alle Mounts anzeigen
mount | grep ^/dev
# fstab für permanente Mounts
cat /etc/fstab
# ext4 Dateisystem
sudo mkfs.ext4 /dev/sdb1
# XFS Dateisystem
sudo mkfs.xfs /dev/sdb1
# Dateisystem prüfen
sudo fsck /dev/sdb1
# Label setzen
sudo e2label /dev/sdb1 "BackupDisk"
fstab Eintrag
Automatisch beim Boot mounten in /etc/fstab:
/dev/sdb1 /mnt/backup ext4 defaults,nofail 0 2
⚙️ Prozesse verwalten
Laufende Programme anzeigen und kontrollieren.
# Alle Prozesse
ps aux
# Prozesse als Baum
pstree
# Interaktiv (wie Task Manager)
htop # oder: top
# Nach Name suchen
ps aux | grep nginx
# Prozess-ID finden
pgrep nginx
# Speicher-Nutzung
free -h
# CPU-Info
lscpu
# System-Last
uptime
# Prozess beenden (freundlich)
kill PID
# Prozess sofort beenden
kill -9 PID
# Nach Name beenden
pkill nginx
# Alle mit diesem Namen
killall nginx
# Befehl im Hintergrund starten
command &
# In Hintergrund schieben
# Ctrl+Z (pausieren), dann:
bg
# Zurück in Vordergrund
fg
# Hintergrund-Jobs anzeigen
jobs
# Läuft weiter nach Logout
nohup command &
# Oder mit screen/tmux
screen -S mysession
# Ctrl+A, D zum Detachen
screen -r mysession # wieder verbinden
htop ist meist nicht vorinstalliert: apt install htop
🔀 Pipes & Redirection
Die wahre Macht der Shell: Befehle kombinieren und Output umleiten.
# Output eines Befehls als Input für den nächsten
cat log.txt | grep "error" | wc -l
# → Zählt Zeilen mit "error"
# Prozesse nach Speicher sortieren
ps aux | sort -k 4 -rn | head -10
# Nur bestimmte Spalten anzeigen
cat /etc/passwd | cut -d: -f1
# Output in Datei schreiben (überschreibt!)
ls -la > dateiliste.txt
# Output anhängen
echo "neue zeile" >> datei.txt
# Fehler in Datei
command 2> errors.txt
# Output UND Fehler in Datei
command > output.txt 2>&1
# Output verwerfen
command > /dev/null 2>&1
# UND - zweiter Befehl nur bei Erfolg
command1 && command2
# ODER - zweiter Befehl nur bei Fehler
command1 || command2
# Sequenziell (egal ob Erfolg)
command1 ; command2
# Subshell
(cd /tmp && ls) # ändert cwd nicht dauerhaft
# Command Substitution
echo "Heute ist $(date)"
files=$(ls *.txt) Praktisches Beispiel
Alle IP-Adressen aus einem Log extrahieren und zählen:
grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' access.log | sort | uniq -c | sort -rn | head -20
⏰ Cron & Scheduled Tasks
Automatische Ausführung von Befehlen zu bestimmten Zeiten.
# Eigene Cron-Jobs bearbeiten
crontab -e
# Cron-Jobs anzeigen
crontab -l
# Cron-Jobs eines anderen Users (als root)
sudo crontab -u username -l
# System-Crontabs
ls /etc/cron.d/
ls /etc/cron.daily/
ls /etc/cron.hourly/
Cron-Syntax:
┌───────────── Minute (0-59) │ ┌─────────── Stunde (0-23) │ │ ┌───────── Tag des Monats (1-31) │ │ │ ┌─────── Monat (1-12) │ │ │ │ ┌───── Wochentag (0-7, 0 und 7 = Sonntag) │ │ │ │ │ * * * * * command
# Jeden Tag um 3:00 Uhr
0 3 * * * /opt/backup.sh
# Alle 15 Minuten
*/15 * * * * /opt/check.sh
# Montag bis Freitag um 9:00
0 9 * * 1-5 /opt/report.sh
# Jeden 1. des Monats um 0:00
0 0 1 * * /opt/monthly.sh
# Alle 5 Minuten, Mo-Fr, 9-17 Uhr
*/5 9-17 * * 1-5 /opt/business-hours.sh
# Mit Log-Output
0 * * * * /opt/script.sh >> /var/log/script.log 2>&1
# Mit Umgebungsvariablen
PATH=/usr/local/bin:/usr/bin
0 3 * * * backup-tool --full
Cron-Debugging
- Logs:
grep CRON /var/log/syslog - Volle Pfade nutzen (cron hat minimales PATH)
- Output umleiten für Debugging
- Zeitzone beachten:
timedatectl
🌍 Umgebungsvariablen
Variablen die Shell-Sitzungen und Programme konfigurieren.
# Alle Umgebungsvariablen
env
printenv
# Einzelne Variable anzeigen
echo $PATH
echo $HOME
echo $USER
# Variable setzen (nur aktuelle Shell)
MYVAR="wert"
export MYVAR="wert" # auch für Kindprozesse
# Variable löschen
unset MYVAR $PATH # Verzeichnisse für ausführbare Programme
$HOME # Home-Verzeichnis des Benutzers
$USER # Aktueller Benutzername
$PWD # Aktuelles Verzeichnis
$SHELL # Aktive Shell
$EDITOR # Standard-Editor
$LANG # Sprache/Locale
$PS1 # Prompt-Format
# Für einzelnen Benutzer: ~/.bashrc oder ~/.profile
echo 'export MYVAR="wert"' >> ~/.bashrc
source ~/.bashrc # neu laden
# System-weit: /etc/environment
sudo nano /etc/environment
# KEY=value (ohne export!)
# Oder in /etc/profile.d/
sudo nano /etc/profile.d/custom.sh
export MYVAR="wert"
PATH erweitern
Eigenes bin-Verzeichnis zum PATH hinzufügen:
export PATH="$HOME/bin:$PATH" → In ~/.bashrc für dauerhaft
⚡ Nuetzliche Einzeiler
# Speicherplatz anzeigen
df -h
# RAM-Nutzung
free -h
# System-Uptime und Last
uptime
# Kernel-Version
uname -r
# OS-Version
cat /etc/os-release
# Alle installierten Pakete
dpkg -l # Debian/Ubuntu
rpm -qa # RHEL/CentOS
# Die 10 grössten Dateien finden
find / -type f -exec du -h + 2>/dev/null | sort -rh | head -10
# Verzeichnis-Grössen sortiert
du -sh */ | sort -rh
# Leere Dateien finden
find . -type f -empty
# Dateien älter als 30 Tage löschen
find /tmp -type f -mtime +30 -delete
# Dateien nach Endung zählen
find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn
# Zeilen zählen
wc -l datei.txt
# Wörter zählen
wc -w datei.txt
# Letzte Zeile einer Datei
tail -1 datei.txt
# Datei ohne Leerzeilen
grep -v '^$' datei.txt
# Einzigartige Zeilen (sortiert)
sort datei.txt | uniq
# Unterschiede zwischen Dateien
diff datei1.txt datei2.txt
# Eigene öffentliche IP
curl ifconfig.me
# Port offen?
nc -zv server.com 443
# Webseite herunterladen
wget -r -np https://example.com/docs/
# JSON pretty-print
curl -s api.example.com | jq .
# Header anzeigen
curl -I https://example.com
# Befehlshistorie durchsuchen
history | grep "suchbegriff"
# oder Ctrl+R
# Letzten Befehl wiederholen
!!
# Letztes Argument wiederverwenden
!$
# Befehl mit sudo wiederholen
sudo !!
# Aktuelles Datum für Dateinamen
date +%Y-%m-%d_%H%M%S
# → 2025-01-15_143022
Tastenkuerzel
Navigation
- Tab - Autovervollständigung
- ↑↓ - Befehlshistorie
- Ctrl+R - Historie durchsuchen
- Ctrl+A - Zeilenanfang
- Ctrl+E - Zeilenende
- Ctrl+W - Wort löschen
- Alt+B/F - Wort zurück/vor
Kontrolle
- Ctrl+C - Befehl abbrechen
- Ctrl+Z - In Hintergrund
- Ctrl+D - Shell beenden / EOF
- Ctrl+L - Bildschirm löschen
- Ctrl+U - Zeile löschen
- Ctrl+K - Bis Zeilenende löschen
- Ctrl+Y - Gelöschtes einfügen