Back to Blog
terminal productivity tools

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:

  1. Zsh statt Bash
  2. Starship für Info auf einen Blick
  3. Plugins für Highlighting und Suggestions
  4. Aliases für Tipparbeit
  5. Tools die CLI erträglich machen

Einmal einrichten, ewig profitieren.

Made with by Daniel Hiller

|