atuin 0.4.0

atuin - magical shell history
atuin-0.4.0 is not a library.

A'tuin manages and synchronizes your shell history! Instead of storing everything in a text file (such as ~/.history), A'tuin uses a sqlite database. While being a little more complex, this allows for more functionality.

As well as the expected command, A'tuin stores

  • duration
  • exit code
  • working directory
  • hostname
  • time
  • a unique session ID

Supported Shells

  • zsh

Install

AUR

A'tuin is available on the AUR

yay -S atuin # or your AUR helper of choice

With cargo

atuin needs a nightly version of Rust + Cargo! It's best to use rustup for getting set up there.

rustup default nightly

cargo install atuin

From source

rustup default nightly
git clone https://github.com/ellie/atuin.git
cd atuin
cargo install --path .

Shell plugin

Once the binary is installed, the shell plugin requires installing. Add

eval "$(atuin init)"

to your .zshrc/.bashrc/whatever your shell uses.

Usage

History search

By default A'tuin will rebind ctrl-r and the up arrow to search your history.

You can prevent this by putting

export ATUIN_BINDKEYS="false"

into your shell config.

Import history

atuin import auto # detect shell, then import

or

atuin import zsh  # specify shell

List history

List all history

atuin history list

List history for the current directory

atuin history list --cwd

atuin h l -c # alternative, shorter version

List history for the current session

atuin history list --session

atuin h l -s # similarly short

Stats

A'tuin can calculate statistics for a single day, and accepts "natural language" style date input, as well as absolute dates:

$ atuin stats day last friday

+---------------------+------------+
| Statistic           | Value      |
+---------------------+------------+
| Most used command   | git status |
+---------------------+------------+
| Commands ran        |        450 |
+---------------------+------------+
| Unique commands ran |        213 |
+---------------------+------------+

$ atuin stats day 01/01/21 # also accepts absolute dates

It can also calculate statistics for all of known history:

$ atuin stats all

+---------------------+-------+
| Statistic           | Value |
+---------------------+-------+
| Most used command   |    ls |
+---------------------+-------+
| Commands ran        |  8190 |
+---------------------+-------+
| Unique commands ran |  2996 |
+---------------------+-------+

Config

A'tuin is configurable via TOML. The file lives at ~/.config/atuin/config.toml, and looks like this:

[local]
dialect = "uk" # or us. sets the date format used by stats
server_address = "https://atuin.elliehuxtable.com/" # the server to sync with

[local.db]
path = "~/.local/share/atuin/history.db" # the local database for history

...what's with the name?

A'tuin is named after "The Great A'tuin", a giant turtle from Terry Pratchett's Discworld series of books.