[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [github:gleitz/howdoi:howdoi] (gesprochen: "How do I", auf deutsch: "Wie mache ich") ist eine in [:Python:] geschriebene 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 ausgegeben. Wo und wie gesucht wird, kann aber auch über [#Umgebungsvariablen-fuer-howdoi-setzen 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 = Es gibt zwar in den Paketquellen ein Paket [packages:howdoi:] (''universe''), allerdings ist die darin enthaltene Version des Programms stark veraltet, sodass viele Fehler auftreten können. Darum sollte via [:pip:] installiert werden. {{{#!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: {{{ if [ ! -f /tmp/foo.txt ]; then echo "File not found!" fi }}} Im zweiten Beispiel wird danach gesucht, wie man in Ruby einen String formatiert: {{{#!vorlage Befehl howdoi format string ruby }}} Ergebnis: {{{ ame1 = "John" name2 = "Mary" "hello, #{name1}. Where is #{name2}?" }}} Standardmäßig gibt howdoi genau ein Suchergebnis aus. == 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 und Dateien, welche jeweils im [:Homeverzeichnis:] des Nutzers unter '''.cache/howdoi''' liegen. Löscht man die Dateien, ist auch der Cache gelöscht. Alternativ kann man den Cache auch über die oben genannte Option `-C` löschen. = Links = * [http://gleitz.github.io/howdoi/ Projektseite] {en} * [http://gleitz.github.io/howdoi/howdoi_advanced_usage/ Hinweise] {en} zur fortgeschrittenen Nutzung von howdoi #tag: Shell, Programmierung