Fish (Shell)
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.
fish
| |
---|---|
die Fish-Shell | |
Basisdaten
| |
Entwickler | Axel Liljencrantz |
Erscheinungsjahr | 2005 |
Aktuelle Version | 3.7.1[1] (19. März 2024) |
Aktuelle Vorabversion | 4.0b1[2][3] (17. Dezember 2024) |
Betriebssystem | Unixoide Betriebssysteme wie FreeBSD und Linux |
Programmiersprache | Rust[4], C++[5][6], C[5] |
Kategorie | Shell |
Lizenz | GPL Version 2 |
deutschsprachig | ja |
https://fishshell.com |
Syntax und Beispiele
BearbeitenDie 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
Weblinks
BearbeitenEinzelnachweise
Bearbeiten- ↑ Release 3.7.1. 19. März 2024 (abgerufen am 22. März 2024).
- ↑ Fish Shell 4.0 Beta Released With C++ Code Ported To Rust. 19. Dezember 2024 (englisch, abgerufen am 19. Dezember 2024).
- ↑ fish-shell 4.0b1, now in Rust. 17. Dezember 2024 (englisch, abgerufen am 19. Dezember 2024).
- ↑ github.com.
- ↑ a b www.openhub.net.
- ↑ github.com.
- ↑ https://raw.githubusercontent.com/fish-shell/fish-shell/master/po/de.po