{"type":"rich","html":"<div style=\"width: 640; height: 426; font-family: sans-serif,arial,freesans;\" ><div id=\"shared_container_1194730685\" class=\"shared_container\"><div id=\"shared_header_1194730685\" class=\"shared_header\"><a href=\"https:\/\/hub.hubzilla.hu\/channel\/pcw\"><img src=\"https:\/\/klacker.org\/images\/default_profile_photos\/rainbow_man\/48.png\" alt=\"PepeCyBs Welt\" height=\"32\" width=\"32\" loading=\"lazy\" \/><\/a><span><a href=\"https:\/\/hub.hubzilla.hu\/channel\/pcw\">PepeCyBs Welt<\/a>  wrote the following  <a href=\"https:\/\/klacker.org\/item\/e789773f-d70a-4760-acd0-3c5405024ef1\">post <\/a><span class=\"autotime\" title=\"2025-02-25T15:30:59+01:00\">Tue, 25 Feb 2025 15:30:59 +0100<\/span><\/span><\/div><div id=\"reshared-content-1194730685\" class=\"reshared-content\"><strong>How much is the fish?<\/strong><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/59815126-bb69-4731-80e9-0e70781f851a\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 512px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/59815126-bb69-4731-80e9-0e70781f851a-2.jpg\" \/><\/a><br \/><br \/><strong><em>Dieser Artikel wurde erstmals am 21. August 2016 ver\u00f6ffentlicht.<\/em><\/strong><br \/><br \/>Eher zuf\u00e4llig bin in vor Kurzem \u00fcber die Shell <strong>\u201efish\u201c<\/strong> gestolpert\u2026 also ich habe davon gelesen. Also schnell mal installiert und aufgerufen. Ok\u2026 ist halt ne Shell, dachte ich. Ein wenig bunter, aber nix\u2026 Mooooooment\u2026 Schon beim Eintippen der ersten Kommandos f\u00e4llt auf, dass da doch einiges anders ist. Es werden direkt bei der Eingabe Vorschl\u00e4ge gemacht, ein Tippen auf TAB \u00f6ffnet dann eine Liste aller Kommandos, die so beginnen, wie die ersten eingegebenen Buchstaben\u2026 und durch<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/5d5a3c16-7f1a-4b09-9d0a-916000edff37\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 300px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/5d5a3c16-7f1a-4b09-9d0a-916000edff37-2.png\" \/><\/a><br \/><br \/>diese Liste kann man mit den Cursortasten navigieren und mit der Eingabetaste den Befehl ausw\u00e4hlen.<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/e1d2bf3e-c42e-424a-b97c-b20ebd67d913\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 300px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/e1d2bf3e-c42e-424a-b97c-b20ebd67d913-2.png\" \/><\/a><br \/><br \/>Das ist ja schon m\u00e4chtig komfortabel. Gibt man help ein, so wird der System-Webbrowser gestartet (oder wenn er schon offen ist, ein neuer Tab ge\u00f6ffnet) und die Hilfeseite ge\u00f6ffnet.<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/d3b41288-002b-4660-bf57-24afa70fb3c0\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 300px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/d3b41288-002b-4660-bf57-24afa70fb3c0-2.png\" \/><\/a><br \/><br \/>Hier findet man alle internen Kommandos von fish und die Kontrollstrukturen zur Shellprogrammierung. Au\u00dferdem ein FAQ-Bereich und ein Tutorial. Insgesamt ist die Dokumentation wirklich sehr ausf\u00fchrlich\u2026 so sollte das auch sein. Weitere Informationen , insbesondere zur Shell-Programmierung und zum Erstellen von Completions (automatische Vervollst\u00e4ndigung) findet man auch bei <a href=\"https:\/\/stackoverflow.com\/\" target=\"_blank\" rel=\"nofollow noopener\">stack overflow<\/a>, wenn man im Suchfeld fish<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/029e9331-bf1f-457d-966a-a54604819b08\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 300px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/029e9331-bf1f-457d-966a-a54604819b08-2.png\" \/><\/a><br \/><br \/>oder fishshell eingibt. Will man fish konfigurieren, so kann man das von Hand erledigen, es geht aber auch recht einfach \u00fcber ein Web-Interface. Gibt man fish_config ein, so startet Fish einen einfachen lokalen Webserver, \u00f6ffnet den Browser und man landet auf der Konfigurationsseite. Auf dieser Seite kann man sehr einfach die Farben und den Prompt einstellen, Funktionen und Variablen anschauen, die History anschauen und Eintr\u00e4ge daraus l\u00f6schen, Bindings anschauen und schlie\u00dflich Abbreviations (Abk\u00fcrzungen f\u00fcr Befehlszeilen) bearbeiten.&nbsp;&nbsp; Die Installation wird auf der <strong><a href=\"https:\/\/fishshell.com\/\" target=\"_blank\" rel=\"nofollow noopener\">Homepage von fish<\/a><\/strong> gut erl\u00e4utert\u2026 bei meinem Debian war das mit einem<br \/><br \/><code class=\"inline-code\">sudo apt-get install fish<\/code><br \/><br \/>im Handumdrehen erledigt, weil sich das Programm in den offiziellen Quellen befindet. Eine wirklich tolle Angelegenheit ist auch die TAB-Selection von Parametern auch externer Programme. Gibt man ein Kommando ein und dann den \u201e-\u201c oder \u201e--\u201c f\u00fcr einen Parameter und bet\u00e4tigt die TAB-Taste, dann wird eine Auswahlliste der Parameter<br \/><br \/><a class=\"zrl\" href=\"https:\/\/klacker.org\/photos\/pcw\/image\/3459be90-4dbe-413c-8f2c-8feb6efe8a37\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" loading=\"eager\" style=\"width: 300px; max-width: 100%;\" alt=\"Image\/photo\" title=\"\" class=\"\" src=\"https:\/\/klacker.org\/photo\/3459be90-4dbe-413c-8f2c-8feb6efe8a37-2.png\" \/><\/a><br \/><br \/>angezeigt (mit Erl\u00e4uterungen), die man auch wieder mit den Cursortasten ausw\u00e4hlen kann. Schon nach kurzer Zeit habe ich festgestellt, dass fish f\u00fcr mich echt perfekt f\u00fcr die t\u00e4gliche Arbeit ist. Diese Shell wird zwar oft als \u201eEinsteiger-Shell\u201c angepriesen, aber weshalb sollte ich auf Komfort verzichten, nur weil ich mich mit der bash auch gut auskenne. Wenn ich es bequemer haben kann, dann lasse ich mir das auch gefallen. Deshalb ist fish jetzt als Standard-Shell bei mir eingestellt. Anfangs muss man sich aber auch ein wenig umstellen, weil die sich doch ziemlich vom POSIX-Standard, den man von bash und co. gewohnt ist, unterscheidet. Es gibt aber auch noch einige weitere Quellen im Internet, wo teilweise auch auf diese Besonderheiten oder Unterschiede eingegangen wird. Die erste \u201eHerausforderung\u201c f\u00fcr mich war der Midnight Commander (mc). Ich habe unter bash immer das Wrapper-Script verwendet, mit dem man nach Beenden des mc im letzten ausgew\u00e4hlten Verzeichnis landet. Nun, diese Scripts funktionieren NICHT! Weder die (ba)sh-, noch die csh-Version. Aber ich war echt erstaunt, wie schnell sich das mit Bordmitteln der fish erledigen lie\u00df. Viel einfacher, als man denken mag. In der Shell kann man Funktionen erstellen (der Editor ist auch angenehm komfortabel). Also habe ich eine Funktion \u201em\u201c erstellt: <br \/><pre><code>function m<br \/>&nbsp;&nbsp;\/usr\/bin\/mc -P ~\/.temp\/mcwd<br \/>&nbsp;&nbsp;cd (cat ~\/.temp\/mcwd)<br \/>&nbsp;&nbsp;rm ~\/.temp\/mcwd<br \/>end<\/code><\/pre> Und siehe da\u2026 das hat schon funktioniert. Die Eingabe von \u201em\u201c in der Shell startete den mc und nach Beendigung landete man im letzten Verzeichnis. Prima! Wenn man eine solche Funktion erstellt hat und loggt sich aus, ist sie aber leider wieder weg. Fish hat aber ein Konfigurationsverzeichnis (~\/.config\/fish\/) und dort gibt es ein Unterverzeichnis f\u00fcr Funktionen, die beim Einloggen automatisch eingelesen werden und so dann zur Verf\u00fcgung stehen. Man muss aber daf\u00fcr keinen extra Editor bem\u00fchen, die Funktion einh\u00e4mmern und dann dort als Datei abspeichern. Hat man die Funktion in der Shell erstellt und man ist zufrieden damit, so gen\u00fcgt es das Kommando funcsave zu verwenden. Damit wird die Funktion automatisch im Autostart-Verzeichnis gespeichert. Also rasch<br \/><br \/><code class=\"inline-code\">funcsave m<\/code><br \/><br \/>eingegeben\u2026 und seither steht mir m dauerhaft zur Verf\u00fcgung. Weil man sich aber daran gew\u00f6hnt hat, \u201emc\u201c einzugeben, wenn man den Midnight Commander starten will, habe ich noch ein entsprechendes Alias definiert (das l\u00e4uft so, wie man es von der bash kennt):<br \/><br \/><code class=\"inline-code\">alias mc \u201em\u201c<\/code><br \/><br \/>Um dieses Alias auch direkt nach jedem Login zur Verf\u00fcgung zu haben tr\u00e4gt man die Zeile einfach in die Datei config.fish ein (~\/.config\/fish\/config.fish), die man ggf. erst erzeugen muss (touch config.fish), wenn sie noch nicht vorhanden ist. Die ganze Angelegenheit hat mich incl. \u201eEinarbeitungszeit\u201c in die Systematik von fish vielleicht ne Viertelstunde gekostet. Fish ist wirklich einfach! Das war jetzt hier auch nur ein ganz kurzer und kleiner Einblick\u2026 es gibt noch unz\u00e4hlige wirklich tolle Features. wenn man sich durch die Dokumentation gelesen hat, ist man schlauer\u2026 und man entdeckt immer wieder neue M\u00f6glichkeiten. Ach, ein kleines \u201eSchmankerl\u201c f\u00e4llt mir gerade noch ein\u2026 Hat man sich in ein Verzeichnis gehangelt und dort liegt eine Datei, die man mit dem Standard-Programm f\u00fcr den Dateityp \u00f6ffnen m\u00f6chte, so gibt man ganz einfach nur<br \/><br \/><code class=\"inline-code\">open &lt;Dateiname&gt;<\/code><br \/><br \/>ein\u2026 schon wird die Datei mit der voreingestellten Anwendung ge\u00f6ffnet. odt-Dateien sind bei mir z. B. mit LibreOffice 5.1 verkn\u00fcpft. Habe ich nun eine Datei \u201eDokument.odt\u201c und ich gebe in fish<br \/><br \/><code class=\"inline-code\">open Dokument.odt<\/code><br \/><br \/>ein, wird LO-Writer gestartet und die Datei ge\u00f6ffnet. Das ist schon sehr praktisch. Ich kann es echt empfehlen, sich fish einmal anzuschauen. Das ist auch kein \u201eR\u00fcckschritt\u201c. Ich bin ja selbst auch mit bash sehr fit, habe aber die Vorteile von fish f\u00fcr mich entdeckt und genie\u00dfe den gr\u00f6\u00dferen Komfort.<br \/><hr \/><br \/>Links:<br \/><br \/>[1]: <a href=\"https:\/\/fishshell.com\/\" target=\"_blank\" rel=\"nofollow noopener\">Fish-Webseite<\/a><br \/>[2]: <a href=\"https:\/\/geowarin.github.io\/the-missing-fish-shell-tutorial.html\" target=\"_blank\" rel=\"nofollow noopener\">The missing fish shell tutorial<\/a><br \/>[3]: <a href=\"https:\/\/www.ibm.com\/developerworks\/aix\/library\/au-spunix_fish\/\" target=\"_blank\" rel=\"nofollow noopener\">Speaking UNIX: Go fish!<\/a><br \/>[4]: <a href=\"https:\/\/github.com\/fish-shell\/fish-shell\/wiki\/Shell-Translation-Dictionary\" target=\"_blank\" rel=\"nofollow noopener\">Shell Translation Dictionary<\/a> (\u00dcbersicht, um (ba)sh-Kommandos in fish umzusetzen)<br \/>[5]: <a href=\"https:\/\/github.com\/starrhorne\/Fish-Shell-Scripts\" target=\"_blank\" rel=\"nofollow noopener\">starrhorne\/Fish-Shell-Scripts<\/a><br \/>[6]: <a href=\"https:\/\/github.com\/zmalltalker\/fish-nuggets\" target=\"_blank\" rel=\"nofollow noopener\">zmalltalker\/fish-nuggets<\/a>a<\/div><\/div><br \/><\/div>","width":640,"height":426}