Fish (Shell) – Wikipedia

fish


die Fish-Shell
Basisdaten

Entwickler Axel Liljencrantz
Erscheinungsjahr 2005
Aktuelle Version 4.0.2[1]
(20. April 2025)
Betriebssystem Unixoide Betriebssysteme wie FreeBSD und Linux
Programmier­sprache Rust[2], C++[3][4], C[3]
Kategorie Shell
Lizenz GPL Version 2
deutschsprachig ja
https://fishshell.com

Auf unixoiden Betriebssystemen ist die Fish-Shell (für friendly interactive shell) eine sogenannte exotische Shell: Deren Syntax stammt weder von der Bourne-Shell (bash, ksh, zsh) noch von der C-Shell (csh, tcsh) ab. Die Fish-Shell erleichtert durch eine Autovervollständigung die Arbeit; sie schlägt abhängig von früheren Eingaben und den aktuell gemounteten Laufwerken Befehle, Optionen und Verzeichnispfade vor, diese können mit Tabulator- und Pfeiltasten ausgewählt werden. Ebenso erleichtert Fish die Arbeit, indem es Hilfe-Texte anbietet und verständliche Fehlermeldungen zurückgibt. Viele nützliche Befehle und Optionen können so, in der Konsole selbst, durch den Benutzer entdeckt werden.

Syntax und Beispiele

[Bearbeiten | Quelltext bearbeiten]

Die Syntax ähnelt einer POSIX-kompatiblen Shell wie bash, weicht aber in wichtigen Eigenschaften ab. Die Gestalter von fish glaubten, in gewisser Hinsicht sei die POSIX-Shell schlecht designt worden. Zum Beispiel kann man mit der POSIX-Syntax den Gültigkeitsbereich von Variablen nicht verändern sowie keine Arrays und keine Funktionen definieren.

# Dieser Befehl weist der Variablen "foo" den Wert "bar" zu. # fish verzichtet auf '=' als Zuweisungsoperator, da dieser wegen # seiner Leerraum-Sensitivität häufig falsch benutzt wird; zwei # Objekte müssen also nicht durch einen Operator getrennt werden. > set foo bar > echo $foo  # Der Output des Befehls 'pwd' wird in der Variable 'wd' # gespeichert. fish verwendet, ungleich bash, nicht ``, da # es mit '' verwechselt werden kann und ohnehin keine # Verschachtelung zulässt. > set wd (pwd) > set wd $(pwd) # ab Version 3.4 > echo $wd  # Arrays. 'A' ist ein Array mit fünf Werten: > set A 3 5 7 9 12 # Ein Segment eines Arrays extrahieren: > set B $A[1 2] > echo $B 3 5 # Index eines Arrays – und sogar ein Befehl ('seq 3') # kann als Index verwendet werden: > echo $A[(seq 3)] 3 5 7 # B enthält 3 und 5. Mit > set --erase A[$B] # wird das dritte und fünfte Element von A entfernt: > echo $A 3 5 9  # for-Schleife, um jpg-Dateien zu png-Dateien # umzuwandeln: > for i in *.jpg     convert $i (basename $i .jpg).png   end  # Eine Funktion definieren: > function hello     echo "Hello $argv!"   end  # Die Funktion für den späteren Gebrauch abspeichern: > funcsave hello  # Die Liste der zur Zeit in fish definierten Funktionen ansehen: > functions -n  # Den Typ eines Objektes abrufen (bei in fish definierten Funktionen wird der Programmcode angezeigt): > type file  # Aus den installierten Manpages Vorschläge für Optionen generieren: > fish_update_completions 

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Release 4.0.2. 20. April 2025 (abgerufen am 24. April 2025).
  2. github.com.
  3. a b www.openhub.net.
  4. github.com.
  5. https://raw.githubusercontent.com/fish-shell/fish-shell/master/po/de.po