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.
Zur Navigation springen Zur Suche springen
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.