Zum Inhalt springen

Atuin

Magischer Shell-Verlaufsmanager mit SQLite-Speicherung, verschlüsselter Synchronisierung und Volltextsuche über Maschinen und Sitzungen hinweg.

BefehlBeschreibung
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | shInstallation über offizielles Skript
brew install atuinInstallation auf macOS mit Homebrew
cargo install atuinInstallation von crates.io
pacman -S atuinInstallation auf Arch Linux
apt install atuinInstallation auf Debian/Ubuntu (falls verfügbar)
dnf install atuinInstallation auf Fedora
nix-env -i atuinInstallation auf NixOS
scoop install atuinInstallation auf Windows mit Scoop
atuin --versionInstallierte Version anzeigen
BefehlBeschreibung
atuin init bash >> ~/.bashrcInitialisierung für Bash
atuin init zsh >> ~/.zshrcInitialisierung für Zsh
atuin init fish >> ~/.config/fish/config.fishInitialisierung für Fish
atuin init nushellNushell-Initialisierungsbefehle anzeigen
# Bash — zu ~/.bashrc hinzufügen
eval "$(atuin init bash)"

# Zsh — zu ~/.zshrc hinzufügen
eval "$(atuin init zsh)"

# Fish — zu ~/.config/fish/config.fish hinzufügen
atuin init fish | source

# Zsh mit deaktivierter Pfeiltaste nach oben (nur Ctrl+R verwenden)
eval "$(atuin init zsh --disable-up-arrow)"
BefehlBeschreibung
Ctrl + RInteraktive Verlaufssuche öffnen
Suchanfrage nach Ctrl + R eingebenVerlauf interaktiv filtern
EnterAusgewählten Befehl ausführen
TabBefehl einfügen ohne auszuführen
Ctrl + R erneutZwischen Suchmodi wechseln
↑ / ↓Suchergebnisse navigieren
EscapeSuche abbrechen
Ctrl + DAusgewählten Eintrag aus Verlauf löschen
Alt + 1-4Filtermodus wechseln (global/host/sitzung/verzeichnis)
BefehlBeschreibung
atuin history listAktuellen Befehlsverlauf anzeigen
atuin history list --cmd-onlyNur Befehle anzeigen (keine Metadaten)
atuin history list --format "{time} {command}"Benutzerdefiniertes Ausgabeformat
atuin history list --reverseÄlteste zuerst anzeigen
atuin history list -n 50Letzte 50 Befehle anzeigen
atuin history countGesamtanzahl des Verlaufs anzeigen
atuin history lastLetzten Befehl anzeigen
Atuin wechselt mit Ctrl+R zwischen 4 Suchmodi:

1. Fuzzy    — Trifft Zeichen in beliebiger Reihenfolge (wie fzf)
2. Prefix   — Trifft vom Anfang des Befehls
3. Fulltext — Trifft exakte Teilstrings überall
4. Skim     — Skim-artiges Fuzzy-Matching

Modi während der Suche mit Ctrl+R wechseln, oder einen Standard
in der Konfigurationsdatei festlegen.
BefehlBeschreibung
atuin search queryVerlauf von der Kommandozeile durchsuchen
atuin search "git commit"Nach bestimmtem Befehl suchen
atuin search --cwdVerlauf nur für aktuelles Verzeichnis durchsuchen
atuin search --sessionVerlauf nur für aktuelle Sitzung durchsuchen
atuin search --globalGesamten Verlauf über alle Maschinen durchsuchen
atuin search --interactiveInteraktive Oberfläche öffnen
BefehlBeschreibung
atuin search --after "2024-01-01"Nach bestimmtem Datum suchen
atuin search --before "yesterday"Vor bestimmter Zeit suchen
atuin search --after "1 hour ago"Innerhalb der letzten Stunde suchen
atuin search --after "3 days ago"Innerhalb der letzten 3 Tage suchen
atuin search --after "last week"Innerhalb der letzten Woche suchen
atuin search --before "2024-06-01" --after "2024-01-01"Datumsbereich
BefehlBeschreibung
atuin search --exit 0Nur erfolgreiche Befehle suchen
atuin search --exit 1Nur fehlgeschlagene Befehle suchen
atuin search --exit 127”Befehl nicht gefunden”-Fehler suchen
atuin search --limit 50Anzahl der Ergebnisse begrenzen
BefehlBeschreibung
atuin search --cwd /path/to/dirNach bestimmtem Arbeitsverzeichnis filtern
atuin search --hostname myserverNach Hostname filtern
atuin search --session SESSION_IDNach Sitzungs-ID filtern
atuin search --duration ">5s"Nach Ausführungsdauer filtern
atuin search --duration "<100ms"Schnelle Befehle finden
BefehlBeschreibung
atuin search --format "{time} {command}"Zeit und Befehl anzeigen
atuin search --format "{duration} {command}"Dauer und Befehl anzeigen
atuin search --format "{host} {command}"Hostname und Befehl anzeigen
atuin search --format "{user} {directory} {command}"Vollständiger Kontext
# Alle fehlgeschlagenen Docker-Befehle finden
atuin search docker --exit 1

# Git-Operationen der letzten Woche finden
atuin search git --after "1 week ago"

# Lang laufende Befehle finden (>30 Sekunden)
atuin search --duration ">30s"

# Befehle in einem bestimmten Projekt finden
atuin search --cwd ~/projects/myapp

# Befehle von Ihrem Arbeitslaptop finden
atuin search --hostname work-mbp
BefehlBeschreibung
atuin register -u username -e email -p passwordSync-Konto erstellen
atuin login -u username -p passwordBei Sync-Konto anmelden
atuin login -u username -p password -k KEYMit Verschlüsselungsschlüssel anmelden
atuin logoutVom Sync-Konto abmelden
atuin accountKontostatus anzeigen
atuin account deleteSync-Konto löschen
atuin keyVerschlüsselungsschlüssel anzeigen (diesen speichern!)
atuin statusSynchronisierungsstatus anzeigen
BefehlBeschreibung
atuin syncVerlauf mit Server synchronisieren
atuin sync -fVollständige Synchronisierung erzwingen
atuin sync --forceErneutes Hochladen des gesamten Verlaufs erzwingen
Alle Daten sind Ende-zu-Ende-verschlüsseltServer sieht nie Klartextverlauf
# Ersteinrichtung auf Maschine 1
atuin register -u myname -e me@example.com -p mypassword
atuin key  # DIESEN SCHLÜSSEL SPEICHERN — wird für andere Maschinen benötigt
atuin sync

# Einrichtung auf Maschine 2
atuin login -u myname -p mypassword -k IHR_VERSCHLÜSSELUNGSSCHLÜSSEL
atuin sync

# Ihr Verschlüsselungsschlüssel sieht so aus:
# abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

# Ohne den Schlüssel kann der Server Ihren Verlauf nicht entschlüsseln.
# Wenn Sie den Schlüssel verlieren, ist Ihr synchronisierter Verlauf unwiederbringlich.
# Eigenen Atuin-Sync-Server betreiben
docker run -d \
  --name atuin-server \
  -p 8888:8888 \
  -v atuin-data:/config \
  ghcr.io/atuinsh/atuin:latest \
  server start

# Client auf den selbst gehosteten Server verweisen
# In ~/.config/atuin/config.toml:
# sync_address = "http://your-server:8888"
BefehlBeschreibung
atuin import autoShell-Verlauf automatisch erkennen und importieren
atuin import bashAus Bash-Verlauf importieren
atuin import zshAus Zsh-Verlauf importieren
atuin import zsh-hist-dbAus Zsh hist-db Plugin importieren
atuin import fishAus Fish-Verlauf importieren
atuin import reshAus RESH-Verlauf importieren
atuin import nuAus Nushell-Verlauf importieren
atuin import nu-hist-dbAus Nushell SQLite-Verlauf importieren
# Shell automatisch erkennen und importieren
atuin import auto

# Zsh-Verlauf spezifisch importieren
atuin import zsh

# Prüfen wie viele Einträge importiert wurden
atuin history count

# Import überprüfen
atuin search --limit 5
BefehlBeschreibung
atuin statsVerlaufsstatistiken anzeigen
atuin stats --count 20Top 20 meistverwendete Befehle anzeigen
atuin stats --period dayStatistiken für heute
atuin stats --period weekStatistiken für diese Woche
atuin stats --period monthStatistiken für diesen Monat
atuin stats --period allGesamtstatistiken
atuin history countGesamte Verlaufseinträge
$ atuin stats --count 10
┌─────────┬─────────────────┬───────┐
│ Rank    │ Command         │ Count │
├─────────┼─────────────────┼───────┤
│ 1       │ git status      │  1847 │
│ 2       │ ls              │  1523 │
│ 3       │ cd              │  1201 │
│ 4       │ git diff        │   987 │
│ 5       │ vim             │   842 │
│ 6       │ git add         │   756 │
│ 7       │ docker ps       │   689 │
│ 8       │ npm run         │   534 │
│ 9       │ git commit      │   498 │
│ 10      │ make            │   423 │
└─────────┴─────────────────┴───────┘

Befehle gesamt:   45.231
Einzigartige Befehle:   8.432
BefehlBeschreibung
~/.config/atuin/config.tomlHauptkonfigurationsdatei
atuin default-configStandardkonfiguration ausgeben
BefehlBeschreibung
search_mode = "fuzzy"Fuzzy-Suchmodus festlegen
search_mode = "prefix"Präfix-Suchmodus festlegen
search_mode = "fulltext"Volltext-Suchmodus festlegen
search_mode = "skim"Skim-Fuzzy-Suchmodus festlegen
filter_mode = "global"Standardmäßig gesamten Verlauf durchsuchen
filter_mode = "host"Standardmäßig aktuellen Host durchsuchen
filter_mode = "session"Standardmäßig aktuelle Sitzung durchsuchen
filter_mode = "directory"Standardmäßig aktuelles Verzeichnis durchsuchen
filter_mode_shell_up_key_binding = "session"Pfeiltaste nach oben sucht aktuelle Sitzung
BefehlBeschreibung
style = "compact"Kompakten UI-Stil verwenden
style = "full"Vollständigen UI-Stil verwenden
style = "auto"Automatisch basierend auf Terminal erkennen
inline_height = 40Inline-Suchhöhe festlegen
show_preview = trueBefehlsvorschau-Panel anzeigen
show_help = trueTastenkürzel-Hilfe anzeigen
show_tabs = trueFiltermodus-Tabs anzeigen
max_preview_height = 4Maximale Zeilen für Vorschau
# ~/.config/atuin/config.toml

## Datenbankeinstellungen
db_path = "~/.local/share/atuin/history.db"

## Sucheinstellungen
search_mode = "fuzzy"
filter_mode = "global"
filter_mode_shell_up_key_binding = "host"

## UI-Einstellungen
style = "auto"
inline_height = 40
show_preview = true
show_help = true
show_tabs = true
max_preview_height = 4
invert = false

## Verlaufseinstellungen
update_check = true
sync_frequency = "5m"
sync_address = "https://api.atuin.sh"

## Tastenkürzel (Standard)
# Ctrl+R = Suche
# Pfeiltaste nach oben = Suche (wenn nicht deaktiviert)
# Tab = Akzeptieren ohne Ausführung
# Enter = Akzeptieren und ausführen

## Geheimnis-Filter — Befehle mit Geheimnissen nicht aufzeichnen
history_filter = [
  "^export.*TOKEN",
  "^export.*SECRET",
  "^export.*PASSWORD",
  "^export.*KEY",
  ".*AWS_SECRET.*",
]

## Bestimmte Befehle ignorieren
history_filter = [
  "^ls$",
  "^cd$",
  "^pwd$",
  "^exit$",
  "^clear$",
]

## Sync-Einstellungen
sync_frequency = "5m"
# sync_address = "https://api.atuin.sh"  # Standardserver
# sync_address = "http://localhost:8888"  # Selbst gehostet
TasteBeschreibung
Ctrl + RSuche öffnen / Suchmodus wechseln
↑ / ↓Ergebnisse navigieren
EnterAusgewählten Befehl ausführen
TabBefehl einfügen ohne auszuführen
EscapeSuche abbrechen
Ctrl + DAusgewählten Verlaufseintrag löschen
Alt + 1Zu globalem Filter wechseln
Alt + 2Zu Host-Filter wechseln
Alt + 3Zu Sitzungs-Filter wechseln
Alt + 4Zu Verzeichnis-Filter wechseln
Ctrl + USuchanfrage löschen
Ctrl + WWort rückwärts löschen
BefehlBeschreibung
~/.local/share/atuin/history.dbStandard-Datenbankspeicherort
Datenbank verwendet SQLite-FormatKann mit jedem SQLite-Tool abgefragt werden
sqlite3 ~/.local/share/atuin/history.db ".tables"Datenbanktabellen auflisten
# Datenbank direkt mit SQLite öffnen
sqlite3 ~/.local/share/atuin/history.db

# Gesamteinträge zählen
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT COUNT(*) FROM history;"

# Am längsten laufende Befehle finden
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT command, duration FROM history
   ORDER BY duration DESC LIMIT 10;"

# Befehle nach Verzeichnis
sqlite3 ~/.local/share/atuin/history.db \
  "SELECT cwd, COUNT(*) as cnt FROM history
   GROUP BY cwd ORDER BY cnt DESC LIMIT 10;"
  1. Bestehenden Verlauf zuerst importieren — Sofort nach der Installation atuin import auto ausführen, um mit einer reichhaltigen Verlaufsdatenbank statt von Null zu starten.

  2. Fuzzy-Suchmodus verwendensearch_mode = "fuzzy" für die flexibelste Übereinstimmung setzen. Während einer Suche kann jederzeit mit Ctrl+R zu anderen Modi gewechselt werden.

  3. Geheimnisse aus dem Verlauf filtern — Muster zu history_filter in der Konfiguration hinzufügen, um das Aufzeichnen von Befehlen mit Tokens, Passwörtern und API-Keys zu verhindern.

  4. Verschlüsselungsschlüssel speichernatuin key ausführen und den Schlüssel in einem Passwort-Manager speichern. Bei Verlust ist der synchronisierte Verlauf von anderen Maschinen dauerhaft unwiederbringlich.

  5. Synchronisierung zwischen Maschinen einrichten — Verschlüsselte Synchronisierung ist Atuins Killerfeature. Ein Konto registrieren und alle Maschinen konfigurieren, um überall einheitlichen Verlauf zu haben.

  6. Verzeichnisbezogene Suche verwendenAlt+4 während der Suche drücken, um auf Befehle zu filtern, die im aktuellen Verzeichnis ausgeführt wurden — perfekt für projektspezifische Workflows.

  7. Pfeiltaste nach oben anpassenfilter_mode_shell_up_key_binding = "host" setzen, damit die Pfeiltaste nach oben nur Befehle der aktuellen Maschine zeigt, während Ctrl+R global sucht.

  8. Selbst gehosteten Server einrichten — Bei der Arbeit mit sensiblen Daten einen eigenen Atuin-Server mit Docker betreiben für vollständige Kontrolle über den synchronisierten Verlauf.

  9. Statistiken regelmäßig überprüfen — Regelmäßig atuin stats ausführen, um Muster zu verstehen und Befehle zu identifizieren, die als Alias effizienter wären.

  10. Kompakten Stil für kleine Terminals verwendenstyle = "compact" setzen, wenn in geteilten Terminal-Panels mit begrenztem vertikalen Platz gearbeitet wird.