Mein Terminal Setup: Zsh, Starship & Co
Ich verbringe viel Zeit im Terminal. Mit dem richtigen Setup macht das sogar Spaß.
Zsh statt Bash
Bash ist okay. Zsh ist besser.
apt install zsh
chsh -s $(which zsh)
Ausloggen, einloggen, fertig.
Warum Zsh?
- Bessere Tab-Completion
- Syntax Highlighting
- Auto-Suggestions
- Bessere History-Suche
Starship Prompt
Vergiss Oh-My-Zsh. Starship ist schneller und einfacher.
curl -sS https://starship.rs/install.sh | sh
In ~/.zshrc:
eval "$(starship init zsh)"
Konfiguration
~/.config/starship.toml:
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"
[directory]
truncation_length = 3
truncate_to_repo = true
[git_branch]
symbol = " "
[git_status]
conflicted = "⚔️ "
ahead = "⬆️ "
behind = "⬇️ "
diverged = "🔱 "
untracked = "📁 "
stashed = "📦 "
modified = "📝 "
staged = "✅ "
[docker_context]
symbol = " "
disabled = false
[nodejs]
symbol = " "
[python]
symbol = " "
[cmd_duration]
min_time = 2000
show_milliseconds = false
Zeigt Git-Status, aktive Node/Python-Version, Docker-Context, Command-Duration...
Zsh Plugins (ohne Framework)
Kein Oh-My-Zsh nötig. Manuell installieren:
Syntax Highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
~/.zsh/zsh-syntax-highlighting
In ~/.zshrc:
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Auto-Suggestions
git clone https://github.com/zsh-users/zsh-autosuggestions.git \
~/.zsh/zsh-autosuggestions
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
Zeigt Vorschläge basierend auf History. → zum Übernehmen.
Nützliche Aliases
In ~/.zshrc:
# Navigation
alias ..="cd .."
alias ...="cd ../.."
alias ll="ls -lah"
# Git
alias g="git"
alias gs="git status"
alias gc="git commit"
alias gp="git push"
alias gl="git log --oneline -10"
# Docker
alias d="docker"
alias dc="docker compose"
alias dps="docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
alias dlogs="docker compose logs -f"
# Server
alias ports="netstat -tulpn"
alias myip="curl -s ifconfig.me"
# Safety nets
alias rm="rm -i"
alias mv="mv -i"
alias cp="cp -i"
Weitere Tools
fzf - Fuzzy Finder
apt install fzf
Ctrl+R wird zum Game-Changer: Fuzzy-Suche durch History.
bat - Besseres cat
apt install bat
alias cat="batcat"
Syntax Highlighting für jede Datei.
eza - Besseres ls
cargo install eza
# oder
apt install eza # ab Debian 13
alias ls="eza"
alias ll="eza -la --git"
alias tree="eza --tree"
Icons, Git-Status, bessere Farben.
htop / btop
apt install btop
Schöneres top.
ncdu - Disk Usage
apt install ncdu
ncdu /
Interaktiv sehen was Platz frisst.
tldr - Vereinfachte Man Pages
apt install tldr
tldr docker
Zeigt praktische Beispiele statt endloser Man-Pages.
Meine .zshrc
Minimales Setup:
# Starship
eval "$(starship init zsh)"
# Plugins
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
# History
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=~/.zsh_history
setopt HIST_IGNORE_DUPS
setopt SHARE_HISTORY
# Aliases
alias ll="eza -la --git"
alias dc="docker compose"
alias g="git"
alias gs="git status"
# fzf
[ -f /usr/share/doc/fzf/examples/key-bindings.zsh ] && \
source /usr/share/doc/fzf/examples/key-bindings.zsh
# PATH
export PATH="$HOME/.local/bin:$PATH"
Server vs Lokal
Auf Servern halte ich es minimal:
- Zsh
- Starship
- Syntax Highlighting
- Basis-Aliases
Lokal dann mehr:
- fzf
- eza
- bat
- tmux
tmux Basics
Für lange SSH-Sessions:
apt install tmux
tmux new -s work # Neue Session
tmux attach -t work # Session wieder öffnen
Ctrl+b d # Detach
Ctrl+b % # Split vertikal
Ctrl+b " # Split horizontal
Session überlebt Disconnect.
Fazit
Ein gutes Terminal-Setup spart täglich Zeit:
- Zsh statt Bash
- Starship für Info auf einen Blick
- Plugins für Highlighting und Suggestions
- Aliases für Tipparbeit
- Tools die CLI erträglich machen
Einmal einrichten, ewig profitieren.