[[Vorlage(Getestet, bionic, )]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis()]] [github:gleitz/howdoi:howdoi] (gesprochen: "How do I", auf deutsch: "Wie mache ich") ist eine in [:Python:] geschrieben Kommandozeilenapplikation, mit der sich schnell Lösungen zu (einfachen) Programmierproblemen recherchieren lassen. Dazu übergibt man howdoi die gewünschten Suchbegriffe, dann wird damit im Hintergrund eine Google-Suche bei [https://stackoverflow.com/ Stackoverflow] {en} gemacht und das Ergebnis ausgeben. Wo und wie gesucht wird kann aber auch über [#Umgebungsvariablen-fuer-howdoi-setze Umgebungsvariablen] beeinflusst werden. howdoi arbeitet rein auf der Kommandozeile, es wird also keine graphische Umgebung oder ein Browser vorausgesetzt. Aber natürlich ist eine Internetverbindung notwendig. = Installation = == aus den Paketquellen == Das Paket ist seit Ubuntu 17.04 in den Paketquellen. {{{#!vorlage Paketinstallation howdoi, universe, seit [:17.04:Ubuntu 17.04] }}} == über pip == {{{#!vorlage PipInstallation howdoi }}} = Nutzung = Die allgemeine Syntax von howdoi lautet: {{{#!vorlage Befehl howdoi [OPTIONEN] SUCHBEGRIFFE }}} `SUCHBEGRIFFE` sind dabei die Begriffe, die das Problem beschreiben, nach dem man Suchen möchte. Idealerweise sind die Suchbegriffe auf Englisch. Im folgenden Beispiel wird danach gesucht, wie man in der [:Bash:] prüft, ob eine Datei existiert: {{{#!vorlage Befehl howdoi test if file exists bash }}} Ergebnis: {{{ #!/bin/bash if [ -e x.txt ] then echo "ok" else echo "nok" fi }}} Im zweiten Beispiel wird danach gesucht, wie man in Ruby einen String formatiert: {{{#!vorlage Befehl howdoi format string ruby }}} Ergebnis: {{{ name1 = "John" name2 = "Mary" "hello, #{name1}. Where is #{name2}?" }}} Standardmäßig gibt howdoi genau ein Suchergebnis aus. Unpraktisch ist, dass das Programm bei mehrzeiligen Lösungen keine Zeilenumbrüche darstellt, wodurch die Ausgabe schlechter lesbar ist. == Optionen == Die Ausgabe von howdoi kann über die folgenden Optionen beeinflusst werden: {{{#!vorlage Tabelle <-4 rowclass="titel">Optionen von howdoi +++ Option Erklärung +++ `-a`, `--all` Gibt nicht nur den Befehl / Code aus, sondern den ganzen Text der Antwort. +++ `-l`, `--link` Gibt als Ergebnis nur den Link auf den Diskussionsthread zurück, in dem die Antwort enthalten ist. +++ `-p N`, `--pos N` Gibt als Ergebnis den N-ten Suchtreffer zurück. Voreinstellung für `N` ist 1 +++ `-n ANZAHL` Gibt `ANZAHL` Ergebnise zurück. Voreinstellung für `ANZAHL` ist 1. +++ `-c` Die Ausgabe des Ergebnisses ist farbig / mit Syntaxhervorhebung +++ `-C`, `--clear-cache` Löscht den internen Suchcache von howdoi }}} == Umgebungsvariablen für howdoi setzen == Das Suchverhalten von howdoi kann über einige [:Umgebungsvariable:] beeinflusst werden. So würde z.B. {{{#!vorlage Befehl export HOWDOI_URL=askubuntu.com }}} die Suche standardmäßig bei `askubuntu.com` durchführen {{{#!vorlage Tabelle <-4 rowclass="titel">Umgebungsvariablen von howdoi +++ Variable Erklärung +++ `HOWDOI_URL` URL, bei der howdoi sucht. Voreingestellt ist `stackoverflow.com`, als Werte können die URLs der auf [https://stackexchange.com/sites?view=list#traffic stackexchange.com] {en} aufgeführten Webseiten angegeben werden +++ `HOWDOI_SEARCH_ENGINE` Suchmaschine, welche von howdoi genutzt wird. Voreingestellt ist Google, die anderen Option ist Bing. +++ `HOWDOI_COLORIZE` Wird die Variable auf `true` gesetzt, erscheint die Ausgabe immer farbig (auch ohne Angabe der Option `-c`). +++ `HOWDOI_DISABLE_CACHE` Wird die Variable auf `true` gesetzt, wird das Caching von howdoi deaktiviert. }}} == Cache manuell löschen == howdoi legt standardmäßig einen Cache an, in dem Suchergebnisse gespeichert werden. Stellt man die gleiche Anfrage erneut, erhält man das Ergebnis aus dem Cache, was schneller ist, weil keine Webabfrage nötig ist. Das Programm verwendet eine [:SQLite:] Datenbank, welche jeweils im [:Homeverzeichnis:] des Nutzers unter '''.cache/howdoi''' liegt. Löscht man die Datei, ist auch der Cache gelöscht. Alternativ kann man den Cache auch über die oben genannte Option `-C` löschen. #tag: Shell, Programmierung