Magical shell history
Go to file
Ellie Huxtable fbaeedbba4 Minor fixes
2021-02-13 20:55:06 +00:00
src Minor fixes 2021-02-13 20:55:06 +00:00
.gitignore Initial commit 2020-10-05 00:59:28 +01:00
Cargo.lock Minor fixes 2021-02-13 20:55:06 +00:00
Cargo.toml Minor fixes 2021-02-13 20:55:06 +00:00
hook.zsh Add session to hook 2021-02-13 20:48:40 +00:00
README.md Minor fixes 2021-02-13 20:55:06 +00:00

A'tuin

Through the fathomless deeps of space swims the star turtle Great ATuin, 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