mirror of
https://github.com/atuinsh/atuin.git
synced 2024-11-22 00:03:49 +01:00
✨ Magical shell history
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
hook.zsh | ||
README.md |
A'tuin
Through the fathomless deeps of space swims the star turtle Great A’Tuin, bearing on its back the four giant elephants who carry on their shoulders the mass of the Discworld.
atuin
manages and synchronizes your shell history! Instead of storing
everything in a text file (such as ~/.history), atuin
uses a sqlite database.
This lets us do all kinds of analysis on it!
As well as the expected command, this stores
- duration
- exit code
- working directory
- hostname
- time
- a unique session ID
Install
atuin
needs a recent version of Rust + Cargo! It's best to use rustup for.
cargo install atuin
and then add this to your ~/.zshrc
export ATUIN_SESSION=$(atuin uuid)
_atuin_preexec(){
id=$(atuin history start $1)
export ATUIN_HISTORY_ID="$id"
}
_atuin_precmd(){
local EXIT="$?"
[[ -z "${ATUIN_HISTORY_ID}" ]] && return
atuin history end $ATUIN_HISTORY_ID --exit $EXIT
}
add-zsh-hook preexec _atuin_preexec
add-zsh-hook precmd _atuin_precmd
We're not replacing anything here, so your default shell history file will still be written to!
Usage
Import history
atuin import auto # detect shell, then import
atuin import zsh # specify shell
List history
atuin history list