2190899

Fish-Shell für Linux: Terminal komfortabler und einsteigerfreundlicher

26.04.2016 | 10:52 Uhr |

„Fish“ ist die Abkürzung für „Friendly interactive shell“. Da es unter Linux ohne Kommandozeile kaum geht, kann Fish mit seinem Fokus auf interaktive Hilfen insbesondere bei Linux-Einsteigern punkten.

Nur keine Illusionen: Auch Fish ist eine Shell, die fundamentale Kenntnisse der wichtigsten Kommandos voraussetzt. Befehle wie „cp“, „chmod“ oder „ls“ sind nicht anders einzugeben als bei Bash & Co. Aber Fish bringt sprechende Farbe ins Spiel, macht selbständig ergänzende Angebote zu partiellen Eingaben und informiert bei Syntaxfehlern vorbildlich über mögliche Korrekturen. Wer sich als Novize auf die Linux-Shell begibt, erhält in der Tat eine „freundlichere“ Umgebung als die Bash. Einsteiger sind die Zielgruppe: Wer sich nämlich die Bash häuslich eingerichtet hat, wird diese Investitionen kaum auf Fish übertragen wollen – die Unterschiede in Bedienung und Scriptkonzept sind zu groß.

Lese-Tipp: Die 10 wichtigsten Linux-Befehle für Einsteiger

Die ersten Schritte mit Fish

Fish ist in den offiziellen Repositories der meisten Distributionen enthalten und lässt sich daher etwa in Ubuntu und Mint im Prinzip mit

sudo apt-get install fish

nachinstallieren. Es empfiehlt sich jedoch, die neueste Version zu beziehen, die insbesondere bei der HTML-Konfiguration (siehe unten) einiges dazugelernt hat. Fish kann in Version 2.2.0 folgendermaßen aus dem Entwickler-PPA bezogen werden:

sudo add-apt-repository ppa:fish-shell/nightly-master
sudo apt-get update
sudo apt-get install fish

Öffnen Sie dann über das Startmenü oder Dash das Terminal, das vermutlich mit der Standard-Shell Bash startet. Mit der Eingabe fish wechseln Sie zur neuen Shell. Geben Sie dort etwa als ersten Befehl ls ein und drücken Sie dann die Tabulatortaste. Wie auch die Bash-Shell zeigt Fish nun alle passenden Befehle wie „lscpu“, „lsof“, „lsusb“ an, jedoch mit zwei wesentlichen Unterschieden: Erstens liefert Fish jeweils eine Kurzerklärung, zweitens (und wichtiger) können Sie den gewünschten Befehl mit der Cursortaste ansteuern und mit Eingabetaste direkt auf den Prompt befördern.

Ausgeführt wird das Kommando erst nach einem weiteren Return, denn in vielen Fällen müssen Sie ja die Befehlszeile um weitere Parameter ergänzen. Wenn Sie die Tabtaste ohne Vorgabe drücken, dann zeigt Fish die Dateien des aktuellen Verzeichnisses, die sich mit Cursortaste markieren und mit Eingabetaste auf die Kommandozeile holen lassen.

Lese-Tipp: Die Linux-Konsole im Griff - Shell-Tipps und -Tricks

Bei der Befehlseingabe hilft Fish automatisch mit: Wenn die ersten Buchstaben wie ein Kommando beginnen, das in der Historyliste auftaucht oder im Systempfad zu finden ist, schlägt Fish diese Ergänzung vor, die Sie mit Cursor-rechts sofort auf die Kommandozeile übernehmen können. Durch Farbcodes signalisiert die Shell außerdem, ob die die bisherige Eingabe als sinnvoll oder fehlerhaft beurteilt (auf Basis der verfügbaren Befehle): Wird die Eingabe rot, deutet das auf einen Tippfehler.

Fish zeigt passende Programme an, markiert sie und kann sie auf die Kommandozeile holen.
Vergrößern Fish zeigt passende Programme an, markiert sie und kann sie auf die Kommandozeile holen.

Konfiguration über den Standardbrowser

Ein Alleinstellungsmerkmal von Fish ist die Konfiguration über den Webbrowser (an den auch die Dokumentation nach Kommando „help“ übertragen wird). Nach Eingabe von

fish_config

öffnet sich der Browser und bietet sieben Hauptpunkte, von denen „functions“, „variables“ und „bindings“ (Tastenkonfiguration) nur informativen Charakter haben. Über „colors“ und „prompt“ können Sie aus vorgegebenen Farbschemata und Prompts auswählen, die „colors“ mit „Customize“ sogar individuell anpassen. Mit „Set Theme“ oder „Set Prompt“ übernehmen Sie dann das Ergebnis. Der Punkt „history“ zeigt lediglich den Befehlsverlauf und kann einzelne Kommandos daraus löschen. Wichtiger sind „abbreviations“, da Sie hier Kurzbefehle gemäß den Aliases anderer Shells anlegen können – wenngleich dies natürlich auch auf der Kommandozeile geht, etwa mit

abbr x "nautilus $PWD"

Beachten Sie bei der Browserkonfiguration, dass jeder Befehl auf der Shell die Verbindung sofort kappt. Die HTML-Oberfläche bleibt zwar geöffnet, ist aber dann funktionslos.

Lese-Tipp: Terminal-Tuning - Linux-Tricks für mehr Komfort

Aliases, Abbreviations und Funktionen

Fish will eigentlich alle individuellen Scriptanpassungen über „Functions“ erledigen. Aliases sind aus Kompatibilätsgründen an Bord – aber nur sehr eingeschränkt. Die oben angelegte „Abbreviation“ ließe sich zwar auch mit

alias x "nautilus $PWD"

anlegen, jedoch gilt das Alias nur für die laufende Shell, während eine „Abbreviation“ dauerhaft funktioniert.

Fish nutzt „Abbreviations“ statt Aliases.
Vergrößern Fish nutzt „Abbreviations“ statt Aliases.

Das standardmäßig geladene Initialscript der Shell ist „~/.config/fish/config.fish“. Hier können Sie Variablen oder Befehle unterbringen, die Sie in jeder Shell-Sitzung brauchen. Das eigentliche Spielfeld für eigene Scripts aber sind die Functions. Vordefinierte und global geltende Funktionen liegen unter „/usr/share/fish“, eigene benutzerdefinierte Funktionen lassen sich im Home-Verzeichnis unter „~/.config/fish/functions“ anlegen. Die Datei muss die Erweiterung „.fish“ tragen, könnte also etwa „fu.fish“ heißen und muss nach diesem Muster gestrickt sein:

function fu
cd $HOME/.config/fish/functions
end

Der Name der Funktion „fu“ muss also identisch sein mit dem Dateinamen „fu“. Das Konzept ist nicht schwierig, und einfache Navigationsfunktionen wie diese sind schnell manuell erstellt. Fish will hier dem Nutzer weiter entgegenkommen und bietet die zwei Befehle „funced“ und „funcsave“ zum Editieren und Speichern neuer Funktionen. Nach

funced neue_fu

erscheint das Dreizeilen-Minimalgerüst der Funktion gleich mit dem richtigen Funktionsnamen. Nach Editieren und abschließender Eingabetaste legt Fish eine Datei unter „/tmp“ ab, die wiederum mitfuncsave neue_fu in die Benutzerkonfiguration übernommen wird („~/.config/fish/functions“) und ab sofort gilt. Dennoch wird jeder halbwegs begabte Scriptbastler das umständliche Gespann „funced“ und „funcsave“ eher meiden, zumal der integrierte Editor von „funced“ nur mühsam zu handhaben ist.

Integration in das System

Um Fish zur Standard-Shell zu machen, die der Terminalemulator dann automatisch lädt, hilft folgender Befehl:

chsh -s /usr/bin/fish

Mitchsh -s /bin/bash kommen Sie gegebenenfalls wieder zur Bash zurück. Das Setzen einer neuen Standard-Shell erfordert eine Neuanmeldung am System. Alternativ genügt es natürlich auch, für Fish eine passende Verknüpfung anzulegen. Der Startaufruf für das Standardterminal unter Ubuntu und Mint lautet dann so:

gnome-terminal –e fish

Einbau in Linux Mint: Suchen Sie im Startmenü das „Terminal“, klicken Sie es mit rechter Maustaste an und wählen Sie „Zur Leiste hinzufügen“. Danach klicken Sie mit rechter Maustaste auf das neue Symbol in der Hauptleiste und wählen „Bearbeiten“. Ergänzen Sie dann die „command“-Zeile zu „gnome-commander -e fish“.

Einbau in Ubuntu: Kopieren Sie den Terminalstarter unter „/usr/share/applications“ in Ihr Home-Verzeichnis. Öffnen Sie die Datei in einen Editor wie gedit und ergänzen in der Sektion „[Desktop Entry]“ mindestens die Zeile

Exec=gnome-terminal

mit „-e fish“. Sie können auch nach „Name=“ die Vorgabe „Terminal“ zu „Fish“ ändern. Die gespeicherte Datei kann per Drag & Drop in den Ubuntu-Starter integriert werden.

0 Kommentare zu diesem Artikel
2190899