ddgr - DuckDuckGo from the terminal
ddgr [OPTIONS] [KEYWORD [KEYWORD ...]]
ddgr is a command-line tool to search DuckDuckGo.
ddgr shows the title, URL and text context for each result. Results
are fetched in pages. Keyboard shortcuts are available for page navigation.
Results are indexed and a result URL can be opened in a browser using the
index number. There is no configuration file as aliases serve the same
purpose for this utility. Supports sequential searches in a single
instance.
Features
* Fast and clean (no ads, stray URLs or clutter), custom color
* Designed to deliver maximum readability at minimum space
* Instant answers (which appear in the html version of DDG)
* Specify the number of search results to show per page
* Navigate result pages from omniprompt, open URLs in browser
* Search and option completion scripts for Bash, Zsh and Fish
* DuckDuckGo Bang support (along with completion)
* Open the first result directly in browser (as in I'm Feeling Ducky)
* Non-stop searches: fire new searches at omniprompt without exiting
* Keywords (e.g. filetype:mime, site:somesite.com) support
* Limit search by time, specify region, disable safe search
* HTTPS proxy support, Do Not Track set, optionally disable User Agent
* Support custom url handler script or cmdline utility
* Comprehensive documentation, man page with handy usage examples
* Minimal dependencies
- -h, --help
- Show help text and exit.
- -n, --num=N
- Show N results per page (default 10). N must be between 0 and 25. N=0
disables fixed paging and shows actual number of results fetched per
page.
- -r,
--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. Refer to the COLORS section below for
details.
- -j, --ducky
- Open the first result in a web browser; implies --noprompt. Feeling
Ducky?
- -t,
--time=SPAN
- Time limit search [d=past day, w=past week, m=past month] (default=any
time).
- -w,
--site=SITE
- Search a site using DuckDuckGo.
- -x, --expand
- Expand URLs instead of showing only the domain name (default).
- -p,
--proxy=URI
- Tunnel traffic through an HTTP proxy. URI is of the form
[http[s]://][user:pwd@]host[:port]. The proxy server must support
HTTP CONNECT tunneling and must not block port 443 for the relevant
DuckDuckGo hosts. If a proxy is not explicitly given, the
https_proxy or HTTPS_PROXY environment variable (if
available) is used instead.
- -I, --noinstant
- Disable instant answer.
- --unsafe
- Disable safe search.
- --noua
- Disable user agent. Results are fetched faster.
- --json
- Output in JSON format; implies --noprompt.
- --gb,
--gui-browser
- Open a bang directly in a GUI browser.
- --np, --noprompt
- Perform search and exit; do not prompt for further interactions.
- --url-handler=UTIL
- Custom script or command-line utility to open urls with.
- --show-browser-logs
- Do not suppress browser output when opening result in browser; that is,
connect stdout and stderr of the browser to ddgr's stdout and stderr
instead of /dev/null. By default, browser output is suppressed (due to
certain graphical browsers spewing messages to console) unless the
BROWSER environment variable is a known text-based browser: elinks,
links, lynx, w3m or www-browser.
- -v, --version
- Show version number and exit.
- -d, --debug
- Enable debugging.
- n, p, f
- Fetch the next, previous or first set of search results.
- index
- Open the result corresponding to index in browser.
- o [index|range|a
...]
- Open space-separated result indices, numeric ranges or all indices, if 'a'
is specified, in the browser.
- O [index|range|a
...]
- Works similar to key 'o', but tries to ignore text-based browsers (even if
BROWSER is set) and open links in a GUI browser.
- d keywords
- Initiate a new DuckDuckGo search for keywords with original
options. This key should be used to search omniprompt keys (including
itself) and indices.
- x
- Toggle url expansion.
- c index
- Copy url to clipboard.
- q, ^D, double
Enter
- Exit ddgr.
- ?
- Show omniprompt help.
- *
- Any other string initiates a new search with original options.
- 1.
- DuckDuckGo hello world:
-
ddgr hello world
- 2.
- I'm Feeling Ducky search:
-
ddgr -j lucky ducks
- 3.
- DuckDuckGo Bang search 'hello world' in Wikipedia:
-
ddgr !w hello world
ddgr \!w hello world // bash-specific, need to escape ! on bash
-
- Bangs work at the omniprompt too. To look up bangs, visit
https://duckduckgo.com/bang?#bangs-list.
- 4.
- Bang alias to fire from the cmdline, open results in a GUI browser
and exit:
-
alias bang='ddgr --gb --np'
-
bang !w hello world
bang \!w hello world // bash-specific, need to escape ! on bash
- 5.
- Website specific search:
-
ddgr -w amazon.com digital camera
-
- Site specific search continues at omniprompt.
- 6.
- Search for a specific file type:
-
ddgr instrumental filetype:mp3
- 7.
- Fetch results on IPL cricket from India in English:
-
ddgr -r in-en IPL cricket
-
- To find your region parameter token visit
https://duckduckgo.com/params.
- 8.
- Search quoted text:
-
ddgr it\'s a \"beautiful world\" in spring
- 9.
- Show complete urls in search results (instead of only domain
name):
-
ddgr -x ddgr
- 10.
- Use a custom color scheme, e.g., one warm color scheme designed for
Solarized Dark:
-
ddgr --colors bjdxxy hello world
-
DDGR_COLORS=bjdxxy ddgr hello world
- 11.
- Tunnel traffic through an HTTPS proxy, e.g., a local Privoxy
instance listening on port 8118:
-
ddgr --proxy localhost:8118 hello world
-
- By default the environment variable https_proxy (or
HTTPS_PROXY) is used, if defined.
- 12.
- Look up n, p, o, O, q, d
keywords or a result index at the omniprompt: as the omniprompt
recognizes these keys or index strings as commands, you need to prefix
them with d, e.g.,
-
d n
-
d d keywords
-
d 1
Arun Prakash Jana <engineerarun@gmail.com>
https://github.com/jarun/ddgr
https://github.com/jarun/ddgr/issues
Copyright © 2016-2018 Arun Prakash Jana
<engineerarun@gmail.com>
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.