Fish (Shell)

Auf unixoiden Betriebssystemen ist die Fish-Shell (für friendly interactive shell) eine sogenannte exotische Konsole: Deren Syntax stammt weder von der Bourne-Shell (bash, ksh, zsh) noch von der C-Shell (csh, tcsh) ab. Interessant an der Fish-Shell ist, dass eine mächtige Autovervollständigung die Arbeit erleichtert; 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.

fish

die Fish-Shell
Basisdaten
Entwickler Axel Liljencrantz
Erscheinungsjahr 2005
Aktuelle Version 3.6.1[1]
(25. März 2023)
Betriebssystem Unixoide Betriebssysteme wie FreeBSD und Linux
Programmiersprache C++[2], C[2], Rust[3]
Kategorie Shell
Lizenz GPL Version 2
deutschsprachig ja
https://fishshell.com

Syntax und Beispiele

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

  1. released March 25, 2023. 25. März 2023 (abgerufen am 4. Juni 2023).
  2. www.openhub.net.
  3. github.com.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.