Zum Inhalt springen

Fish (Shell)

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Januar 2018 um 17:01 Uhr durch PerfektesChaos (Diskussion | Beiträge) (tk kl). Sie kann sich erheblich von der aktuellen Version unterscheiden.
fish

Basisdaten

Entwickler Axel Liljencrantz
Erscheinungsjahr 2005
Aktuelle Version 2.7.0
Betriebssystem Unixoide Betriebssysteme wie FreeBSD und Linux
Programmier­sprache Rust[1], C++[2][3], C[2]
Kategorie Shell
Lizenz GPL Version 2
http://fishshell.com/

Auf unixoiden Betriebssystemen ist die Fish-Shell (für friendly interactive shell) eine sogenannte exotische Konsole: Deren Syntax stammt weder von der Bourne-Shell (bsh, 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 automatisch Befehle und Verzeichnispfade vor. 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

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 besitzt die POSIX-Syntax kein variable scoping, keine Arrays und keine Funktionen.

# Dieser Befehl weist der Variable 'bar' die Variable 'foo' zu.
# fish verzichtet auf '=' als Zuweisungsoperator, da fish
# ohnehin whitespace-sensitiv ist; 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)
> 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

Einzelnachweise

  1. github.com.
  2. a b www.openhub.net.
  3. github.com.