Linux im GriffSoftware

Neu: cli.help – Praktische Hilfe im Terminal, auf Deutsch

Das Pladoyer für Terminal und Command-Line-Interface(CLI)-Programme hatten wir schon. Aber Hand auf's Herz, wer kann sich schon die ganze Syntax merken? Wer weiß auswändig, wie man Listen miteinander vergleicht? Oder wo die Klammern und Anführungszeichen bei, naja, so ziemlich jedem Tool hinkommen? Und die Option --help? Beschränkt sich auf abstrakte Beschreibungen, gerade für Einsteiger und Gelegenheitsnutzer oft zu wenig. cli.help setzt hier an und bietet praktische Beispiele, auf Deutsch, direkt im Terminal und ohne Installation.

Inhalt

cli.help in Kürze Das Projekt Inhalte von cli.help Technische Umsetzung Mitmachen! Lizenz Sponsoring, Vermarktung, Synergien, Verbreitung

cli.help in Kürze

Für die Eiligen, hier die Kurzform: Über die URL cli.help gibt es in der Form cli.help/TOOLNAME Beispiele für den Aufruf üblicher "Linux-Tools" - die aber längst auch unter Windows und natürlich macOS zur Verfügung stehen. Das wären zum Beispiel Dinge wie ls, chmod, md5sum, touch, echo und so weiter. Und auch die Kombination solcher Tools ist häufig Thema.

Die Nutzung ist ganz einfach und überall verfügbar, wo das Tool curl läuft - also auf jedem Linux und BSD und unter Windows beispielsweise in der Git Bash for Windows oder im Linux-Subsystem:

curl cli.help
curl cli.help/chmod
curl cli.help/ls
curl cli.help/yes
...

Die Ausgabe sieht dann beispielsweise so aus:

tee
Die cli.help-Seite von tee.

Status: Bislang gibt es Hilfe zu 84 Programmen, den GNU Core Utilities - eine Liste bekommt Ihr über:

curl cli.help/liste

Und wenn Ihr Euch den ganzen Krempel mal von hinten anschauen wollt, guckt auf der Github-Projektseite vorbei.

Projekt: cli.help

Man Pages sind lang, oft sehr technisch und theoretisch. Die --help-Hilfe beschreibt nur abstrakt die verfügbaren Optionen, aber nicht, wie man sie einsetzt. Dass das problematisch ist, haben schon andere gesehen: Die Projekte tldr, heat und eg bieten ebenfalls bessere Hilfe im Linux-Terminal. Und mit curl cheat.sh kommt Ihr auch schon recht weit.

cli.help macht nun ein paar Dinge anders:

Keine Installation: Für die oben genannten Tools gibt es Clients, die man auf seinem Linux installieren kann/muss. Das macht die Darstellung einfacher und bietet viel mehr Möglichkeiten, macht es aber auch unnötig kompliziert. curl taugt als Client super und ist schlicht immer schon da.

Deutsch first: Wer weiß, ob es cli.help irgendwann mal auf Englisch geben wird, aber primär ist hier alles auf Deutsch gehalten.

Mehr Praxis: Ihr werdet bei cli.help-Hilfen häufig deutlich komplexere Aufrufe finden, teils auch die Verwendung der jeweiligen Tools in Schleifen, Abfrage und Pipes. Mal als Beispiel: Der Befehl seq ist schnell erklärt, er gibt eine Sequenz von Zahlen aus. Aber was hilft Euch das jetzt? Was Ihr vermutlich wissen wollt ist: Wie funktioniert das Ding in einer Schleife?

for i in $(seq 1 10); do echo Hallo; done

Ergebnis: Es wird zehn mal Hallo ausgegeben. Natürlich sind auch viele Basics enthalten, Schleifen und dergleichen kommen dann meist am Ende.

Eure eigenen Spickzettel: Auf der Github-Projektseite findet Ihr eine Vorlage, mit der Ihr eigene Cheasheets anlegen und dann über curl cli.help/EUER-SPICKZETTEL abrufen könnt. Die Seiten sind dann öffentlich für jedermann zugänglich, dafür gibt es aber auch keine Registrierung, inhaltliche Beschränkungen (außer illegalem Quatsch ...) oder sonstigen Nervkram. Mehr dazu bei Github.

Gemacht für Pfosten. Mmmh, klingt nicht so gut wie CLI for Dummies ... Egal ;) Soll einfach heißen: Wenn Ihr etwas eingebt, was es auf cli.help nicht gibt, landet Ihr immer auf einer Seite, die weiterhilft. Und viele Seiten gibt es unter mehreren Namen - ein Tribut an das schwache menschliche Gedächtnis. So gibt es etwa die Übersicht aller derzeit verfügbaren Seiten über cli.help/befehle, aber auch über die Seiten liste, kommandos, tools, programme und list.

Unfug! Der Terminal ist ein riesiger Spielplatz mit jeder Menge Spielzeug - das muss nicht immer ganz ernst sein. Einer der besten Tipps für so ziemlich jede Kommandozeilenaktivität: Leitet einfach alles nach cowsay um - selbst ein Datum wird dadurch großartig:

date | cowsay

Die Rosenmontagskuh eben.

Inhalte

Zur Veröffentlichung gibt es zunächst die bereits erwähnten GNU Core Utilities, deren 84 Einträge schon eine Menge erklären. Andere Bereiche sind im Aufbau oder wachsen kontinuierlich:

Infoseiten: Die Startseite gibt es über start, index, main, hilfe, help.

Programmliste: Verfügbar über befehle, liste, kommandos, tools, programme und list.

Tools: Hier werden noch die Bash Builtins (bash-interne Funktionen) folgen, typische Linux-Standard-Tools wie sed, awk, grep, curl, tar und so weiter, ein paar eher exotische Dinge wie html2text, professionelle Werkzeuge wie rsync oder netcat und wer weiß was noch alles.

Thematische Übersichten: Das wird wohl der spannendste Teil von cli.help. Es wird Seiten geben, die bestimmte Themenkomplexe abhandeln, beispielsweise Nutzerverwaltung, Textverarbeitung und Netzwerk. Über cli.help/nutzer bekommt Ihr dann die wichtigsten Befehle zum Anlegen, Löschen und sonstigem Verwalten von Nutzern und deren Konten.

Aliasse: Willkürliche Sammlung von Aliassen und Einzeilern über aliasse.

Nutzer-Cheatsheets: Eure eigenen Spickzettel über curl cli.help/cheatsheet_FOOBAR - das FOOBAR könnt Ihr frei wählen.

Dumps: In den Seiten alles, komplett und dump liegen schlicht und ergreifend alle Inhalte von cli.help - zum einfachen Durchsuchen:

curl cli.help/dump | grep "while"

Der Output wird nicht super aussehen, aber mit ein paar grep-Kenntnissen ist das durchaus nützlich. (Tipp: curl cli.help/grep - bald zumindest ... ;) )

Technik

Technisch sollte cli.help vor allem eines sein: Simple as fuck. Es handelt sich um schlichte Textdateien, die über ANSI-Escape-Sequenzen hübsch bunt werden - wie genau das geht, seht Ihr hier. Die Dateien liegen alle im Web-Root auf cli.help. Das einzige Quäntchen Technik hier: Über die .htaccess-Datei werden Aufrufe aus Browser an Browser-freundliche Varianten im Ordner "html" weitergeleitet, also etwa cli.help/ls nach cli.help/html/ls.html. Im Grunde sind da jeweils nur Kopfbereich und ANSI-Escape-Sequenzen herausgefiltert und ein paar Umbrüche gesetzt.

Die Entwicklung des Ganzen findet auf Github statt, wo sich alle Inhalte von cli.help befinden sowie aktuelle Infos über Status & Co.

Mitmachen!

Bei einem Open-Source-Projekt mitzuhelfen war selten so einfach:

  • Über Vorlage-Datei neue Tools hinzufügen - einreichen via Github oder Mail.
  • Bestehende Dateien erweitern - über Github.
  • Beispiele für vorhandene/neue Tools einreichen - auch ohne Vorlage, einfach als Text per Mail.
  • cli.help empfehlen und verlinken - kaum etwas hilft mehr als viele Nutzer.
  • Anregungen, Kritik, Hohn und Spott - füttert uns mit Feedback.

Und an alle Entwicker von CLI-Tools: Bloß keine Hemmungen, Seiten für Eure eigenen Tools einzusenden! Je mehr, desto besser. Das gilt natürlich nicht nur für freie Software, auch COTS ist willkommen.

Lizenz

Das ganze cli.help-Projekt steht unter der Lizenz CC-BY-SA. Soll heißen: Ihr könnt es nach blieben nutzen, Änderungen vornehmen und es weiterverteilen. Voraussetzungen: Derivate müssen wiederum unter der CC-BY-SA stehen, der Urheber muss genannt werden und seit der neuesten Version der Lizenz müsst Ihr eigene Änderungen kenntlich machen. Aber das nur als Mini-Mini-Kurzversion, lest besser die Kurzfassung von CC selbst oder die gesamte Lizenz - Grundsätzliches dazu habe ich mal bei Dev-Insider beschrieben.

Sollte sich jemand nicht sicher sein oder Inhalte unter einer anderen (kompatiblen) Lizenz benötigen: Einfach fragen, Lizenzen sollen Nutzung schließlich nicht verhindern.

Sponsoring, Vermarktung, Synergien

Weihnachten 2022, cli.help wird in 10.000 Linux-Schulungen pro Jahr genutzt und hat --help als Standard-Hilfe abgelöst - Sponsors welcome ;) Man wird ja noch träumen dürfen ... Nichtsdestoweniger: Wer an einer Zusammenarbeit interessiert ist, eigene CLI-Hilfe-Inhalte über die so hübsche cli.help-Domain anbieten möchte, das Projekt sponsorn will oder sonstige förderliche Ideen hat - wir sind für alles offen, was der Verbreitung hilft.

Das gilt natürlich auch für die Kollegen der schreibenden Zunft: Wenn Ihr Lesern gerne regelmäßig Infos direkt im Terminal anbieten wollt, warum nicht über einen eigenen Ordner wie cli.help/MEIN-BLOG/? Darüber könntet Ihr etwa Skripte oder Anleitungen zu Artikeln direkt in den Terminal bringen - oder auch einfach klassische Cheasheets.

Und wenn Ihr es tatsächlich bis hierher geschafft habt: Wir hätten da noch ein eigenes Projekt, das Linux-Quartett.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

9 Kommentare

  1. Hi, leider bekomme ich nur 148 Dateien, der download mit wget hat return code 8, z.B. ist basename nicht dabei, schätz so ca. 30-40 Dateien werden nicht mit runtergeladen. Wäre toll, wenn es eine gzip Datei mit allen zum Download hätte.

    Vg, Mike

    1. Danke für den Hinweis: basename war tatsächlich in der Zeile verrutscht. Ansonsten sollten das alle Dateien sein, manuell zusammenkopiert komme ich auf 141 Dateien, über curl waren da ein paar Doppelte bei. Insofern dürfte es bei Dir bis auf basename eigentlich komplett sein.

      Dennoch, hier das Ganze als ZIP.

  2. Nette Idee!

    Da cli.help –> curl verwendet, funktioniert das nur, wenn der aufrufende Rechner mit diesem ominösen Internetz verbunden ist. Richtig?

    (Klar ist das eh meistens der Fall, wollte nur sichergehen…)

    1. Ja, mit curl funktioniert das nur online. Falls Du die Hilfe offline nutzen willst, kannst Du aber einfach alle Dateien herunterladen und dann in der Form

      cat chmod
      cat printf
      cat ...
      

      auslesen – die Formatierung bleibt dabei erhalten. Ich werde irgendwann mal eine einzelne Datei zum Download bereitstellen, derzeit müsste man alle Dateien einzeln herunterladen:

       wget $(curl cli.help/liste | tail -n +24 | head -n -5 | nl -s"cli.help/" | cut -c7-)
      

      wget wird hier einfach die Liste mit allen Dateien/URLs übergeben, tail, head und cut schneiden nur überflüssigen Kram aus und nl ergänzt die reinen Dateinamen zu URLs.

      Und Danke für die Anregung! Wenn man mal einen Rechner aufsetzt oder reine Offline-Projekte mit dem Raspberry Pi oder dergleichen vorhat, ist eine Offline-Variante vielleicht ganz nützlich.

      1. Natürlich genügt auch ein simples

        git clone https://github.com/bili123/cli-help.git
        

        Allerdings ist dann auch der ganze überflüssige Kram wie Readme, HTML-Ordner etc. dabei.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Schaltfläche "Zurück zum Anfang"