Terminal pogryzł człowieka: ddgr

Jak za pomocą terminala dogadać się z kaczką? Teoretycznie bezsensowne zadanie w istocie jest trywialnym wykorzystaniem dostępności popularnej przeglądarki Duck Duck Go. Oczywiście za pomocą linii komend i polecenia ddgr.

ddgr – tak, Duck Duck Go w terminalu
Jakkolwiek ekstrawagancko by to nie brzmiało, to uzyskiwanie w terminalu podpowiedzi wprost z wyszukiwarki internetowej ma swoje zalety. Przykład? Nikt przy zdrowych zmysłach nie lubi przełączać się z terminala na inne okna, a jeżeli już musi to zrobić to tylko i wyłącznie w celu zaczerpnięcia języka. Tudzież innych informacji. To dlatego ddgr jest aż tak ciekawym narzędziem, bowiem bez odrywania rąk od klawiatury możemy wskoczyć wprost w objęcia pożądanej wiedzy. Jak? A tak:

ddgr kbps

… i w mgnieniu oka otrzymamy listę stron na których będziemy mogli doczytać o co chodzi z tymi kbps. Wybór numeru z interesującym nas URLem przeniesie nas do przeglądarki graficznej.

Oczywiście funkcjonalność ddgr nie sprowadza się tylko do tego. To proste polecenie zawiera całkiem sporą liczbę przełączników i parametrów którymi możemy regulować wyniki zapytań.

usage: ddgr [-h] [-n N] [-r REG] [-C] [--colors COLORS] [-j] [-t SPAN]
            [-w SITE] [-x] [-p URI] [--unsafe] [--noua] [--json] [--gb] [--np]
            [--url-handler UTIL] [--show-browser-logs] [-v] [-d]
            [KEYWORD [KEYWORD ...]]

DuckDuckGo from the terminal.

positional arguments:
  KEYWORD               search keywords

optional arguments:
  -h, --help            show this help message and exit
  -n N, --num N         show N (0<=N<=25) results per page (default 10); N=0
                        shows actual number of results fetched per page
  -r REG, --reg REG     region-specific search e.g. 'us-en' for US (default);
                        visit https://duckduckgo.com/params
  -C, --nocolor         disable color output
  --colors COLORS       set output colors (see man page for details)
  -j, --ducky           open the first result in a web browser; implies --np
  -t SPAN, --time SPAN  time limit search [d (1 day), w (1 wk), m (1 month)]
  -w SITE, --site SITE  search sites using DuckDuckGo
  -x, --expand          Show complete url in search results
  -p URI, --proxy URI   tunnel traffic through an HTTPS proxy; URI format:
                        [http[s]://][user:pwd@]host[:port]
  --unsafe              disable safe search
  --noua                disable user agent
  --json                output in JSON format; implies --np
  --gb, --gui-browser   open a bang directly in gui browser
  --np, --noprompt      perform search and exit, do not prompt
  --url-handler UTIL    custom script or cli utility to open results
  --show-browser-logs   do not suppress browser output (stdout and stderr)
  -v, --version         show program's version number and exit
  -d, --debug           enable debugging

omniprompt keys:
  n, p, f               fetch the next, prev or first set of search results
  index                 open the result corresponding to index in browser
  o [index|range|a ...] open space-separated result indices, ranges or all
  O [index|range|a ...] like key 'o', but try to open in a GUI browser
  d keywords            new DDG search for 'keywords' with original options
                        should be used to search omniprompt keys and indices
  x                     toggle url expansion
  c index               copy url to clipboard
  q, ^D, double Enter   exit ddgr
  ?                     show omniprompt help
  *                     other inputs are considered as new search keywords

Wygląda przerażająco? Niekoniecznie. W większości przypadków zainteresuje nas jedynie parametr -num (liczba wyświetlanych wyników), -j (pierwszy wynik otwierany od razu w przeglądarce) i polecenia z „pseudo” linii komend ddgr (omniprompt keys).

Oczywiście co to za narzędzie tekstowe które korzysta z graficznej przeglądarki graficznej. Ale jest sposób i na to:

BROWSER=w3m ddgr nasze-zapytanie

W miejsce w3m możemy użyć jakiejkolwiek innej tekstowej przeglądarki naszego życia: elinks, links, lynx. Do sprawnego odpytywania warto również zaznajomić się z „ciosami specjalnymi” Duck Duck Go – np. Bangs, które pozwalają przeszukiwać zasoby konkretnych stron:

ddgr !w kbps

… co przeszuka Wikipedię na wypadek wspomnianego hasła kbps.

Innymi słowy ddgr może doskonale wkomponować się w nasze środowisko tekstowe, pozwolić na stworzenie interesujących aliasów (program jako taki nie korzysta z pliku z ustawieniami) oraz umożliwia przeglądanie wyników w tekstowej przeglądarce. Wszystko po to, aby nie opuszczać rubieży opiekuńczego terminala. Na tym oczywiście nie kończą się możliwości ddgr.

No teraz pozostaje tylko pobrać nam wspomniany program. Na Githubie znajdziemy dokładną rozpiskę, jak instalować ddgr na przeróżnych dystrybucjach. W przypadku Ubuntu 16.04/17.10 i Mint 18.xx będzie to:

sudo add-apt-repository ppa:twodopeshaggy/jaru
sudo apt-get update
sudo apt-get install ddgr

Arch Linux i Manjaro:

yaourt -S ddgr