Fish (Friendly Interactive Shell) ist eine moderne Kommandozeilen-Shell, die seit 2005 von Axel Liljencrantz entwickelt wird. Sie ist bewusst nicht POSIX-kompatibel und legt den Fokus auf Komfort: Syntax-Highlighting, Autosuggestions und Tab-Vervollständigung funktionieren ohne Konfiguration. Das Ziel: eine Shell, die direkt nach dem Start für Einsteiger wie Profis angenehm bedienbar ist.
Erste Schritte
fish # interaktive Sitzung starten
fish_config # Konfiguration im Browser (Web-UI)
fish_add_path ~/bin # Verzeichnis dauerhaft zum PATH hinzufügen
help # Dokumentation im Browser öffnen
Die Konfigurationsdatei liegt unter ~/.config/fish/config.fish und wird beim Start automatisch ausgeführt.
Befehle und Eigenheiten
- Autosuggestions: Fish zeigt während der Eingabe graue Vorschläge an; mit
→oderCtrl-Fwird der Vorschlag übernommen. - Variablen:
set -l(lokal),set -g(global),set -U(universell, über Sitzungen hinweg dauerhaft),set -x(exportiert). Stattexport VAR=wertschreibt manset -gx VAR wert. - Funktionen:
function name ... enddefiniert Funktionen,funcedbearbeitet sie interaktiv,funcsavespeichert sie dauerhaft. - Aliase:
alias ll "ls -l"erzeugt intern eine Funktion;abbrdefiniert Abkürzungen, die erst nach Leertaste expandiert werden. - Events:
emitsendet eigene Events,--on-eventregistriert Handler — damit lassen sich Prompts, cd-Wechsel und Timer steuern. - Completions:
completeergänzt eigene Vervollständigungen für beliebige Kommandos. - Schleifen und Bedingungen:
for x in a b c; echo $x; end,if ...; else; end,while ...; end. - Verlauf:
historyzeigt und durchsucht die Historie;cd -wechselt zum vorherigen Verzeichnis.
Erweiterungen
Fisher ist der verbreitete Plugin-Manager für Fish (fisher install plugin). Viele Konfigurations-Frameworks wie Oh My Fish sind inzwischen weniger aktiv, weil Fish viele Features bereits eingebaut mitbringt.
Verwandte Grundlagen: Zsh-Befehle, Xonsh-Befehle und die klassische Bash.