duiker

Automatically index your shell history in a full-text search database. Magic!


Keywords
bash, fts, full-text-search, history, shell, sqlite, sqlite3
License
MIT
Install
pip install duiker==0.1.0

Documentation

duiker

Automatically index your shell history in a full-text search database. Magic!

Features

  • Uses SQLite3's excellent FTS4 extension to provide full-text search.
  • Respects HISTTIMEFORMAT if set.

Requirements

  • Bash
  • Python 3

Install

Install from pip:

pip install duiker

Or, simply download the single Python file and add it to your PATH.

Setup

Import your existing shell history:

history | duiker import -

Configuration

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.

Searching

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

Limitations

Duiker only supports Bash at present. Pull requests for other shells welcome.

License

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