Automatically index your shell history in a full-text search database. Magic!
- Uses SQLite3's excellent FTS4 extension to provide full-text search.
- Respects
HISTTIMEFORMAT
if set.
- Bash
Download the latest release and extract it somewhere on your $PATH
.
Alternatively, install Duiker from source. To build the package you will need:
- jq
- Rust 1.17+ (install with rustup)
Simply run:
make install
Import your existing shell history:
HISTTIMEFORMAT='%s ' history | duiker import -
If you want to automatically import your shell history on-the-fly, you
can add duiker import
to your PROMPT_COMMAND
[1].
Run duiker magic
to print a shell snippet that automatically imports
your last command into Duiker:
duiker magic
Configure this shell snippet as part of your PROMPT_COMMAND
. Run
duiker magic --help
for an example.
Duiker indexes your shell history in an SQLite3 full-text search table.
You can use any MATCH
[2] expression to search the database:
$ duiker search git 2017-04-13 15:50:02 git staged 2017-04-13 15:50:14 git commit -a 2017-04-13 15:55:07 git diff
$ duiker search '(git OR fossil) diff' 2017-04-27 15:15:01 git diff 2017-04-27 15:15:49 git diff 2017-04-28 14:49:19 fossil diff 2017-04-28 14:53:09 fossil diff src/main.rs
$ duiker search 'sqlite*' 2017-03-04 19:00:42 sqlite3 db.sqlite 2017-03-04 19:13:11 rm db.sqlite
Duiker only supports Bash at present. Pull requests for other shells welcome.
MIT
[1] | https://www.gnu.org/software/bash/manual/html_node/Controlling-the-Prompt.html#Controlling-the-Prompt |
[2] | https://sqlite.org/fts3.html#full_text_index_queries |