simple multi-computer shell history
Find a file
2026-02-17 11:51:56 +01:00
internal feat: allow sync to save the histdb path 2026-02-17 11:51:56 +01:00
go.mod feat: refactor to go tool 2026-02-16 19:32:38 +01:00
go.sum feat: refactor to go tool 2026-02-16 19:32:38 +01:00
main.go feat: allow sync to save the histdb path 2026-02-17 11:51:56 +01:00
README.md feat: allow sync to save the histdb path 2026-02-17 11:51:56 +01:00
search.sh fix: sorted search 2026-02-06 08:34:00 +01:00
sync.sh fix: use git union merge driver 2026-02-06 08:54:09 +01:00

shell-history

Shell history stored in SQLite, synced via git.

Install

cd $HOME/dev/vlv
git clone git.meatbag.se:vlv/shell-history.git shell-history
mkdir histdb

cd shell-history
go build -o verbatim .

install verbatim ~/bin

Migrate from log files

verbatim import ~/dev/vlv/histdb/

zsh

~/.zshrc:

autoload -Uz compinit promptinit add-zsh-hook

histdb_dir="$HOME/dev/vlv/histdb"

_add_history() {
    if test "$(id -u)" -ne 0; then
        local cmd=$(fc -ln -1)
        cmd=${cmd//$'\n'/\\n}
        verbatim add \
            --timestamp "$(date -u +%Y-%m-%dT%H:%M:%S+00:00)" \
            --hostname "$(hostname)" \
            --dir "$(pwd)" \
            -- "$cmd"
    fi
}
add-zsh-hook precmd _add_history

# install hs (interactive search + copy to clipboard)
install scripts/hs ~/bin

Usage

verbatim [--db PATH] add --timestamp T --hostname H --dir D -- COMMAND...
verbatim [--db PATH] search [--host H] [--dir D] [--after T] [--before T] [--limit N] [QUERY...]
verbatim [--db PATH] sync [DIR]
verbatim [--db PATH] import DIR
verbatim [--db PATH] stats

Default --db: ~/.local/share/verbatim/history.db

Legacy

The old shell scripts (search.sh, sync.sh) are kept for backward compatibility during migration. They continue to work with the log files in the git repo.