Magischer Shell-Verlaufsmanager mit SQLite-Speicherung, verschlüsselter Synchronisierung und Volltextsuche über Maschinen und Sitzungen hinweg.
| Befehl | Beschreibung |
|---|
curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh | Installation über offizielles Skript |
brew install atuin | Installation auf macOS mit Homebrew |
cargo install atuin | Installation von crates.io |
pacman -S atuin | Installation auf Arch Linux |
apt install atuin | Installation auf Debian/Ubuntu (falls verfügbar) |
dnf install atuin | Installation auf Fedora |
nix-env -i atuin | Installation auf NixOS |
scoop install atuin | Installation auf Windows mit Scoop |
atuin --version | Installierte Version anzeigen |
| Befehl | Beschreibung |
|---|
atuin init bash >> ~/.bashrc | Initialisierung für Bash |
atuin init zsh >> ~/.zshrc | Initialisierung für Zsh |
atuin init fish >> ~/.config/fish/config.fish | Initialisierung für Fish |
atuin init nushell | Nushell-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)"
| Befehl | Beschreibung |
|---|
Ctrl + R | Interaktive Verlaufssuche öffnen |
Suchanfrage nach Ctrl + R eingeben | Verlauf interaktiv filtern |
Enter | Ausgewählten Befehl ausführen |
Tab | Befehl einfügen ohne auszuführen |
Ctrl + R erneut | Zwischen Suchmodi wechseln |
↑ / ↓ | Suchergebnisse navigieren |
Escape | Suche abbrechen |
Ctrl + D | Ausgewählten Eintrag aus Verlauf löschen |
Alt + 1-4 | Filtermodus wechseln (global/host/sitzung/verzeichnis) |
| Befehl | Beschreibung |
|---|
atuin history list | Aktuellen Befehlsverlauf anzeigen |
atuin history list --cmd-only | Nur Befehle anzeigen (keine Metadaten) |
atuin history list --format "{time} {command}" | Benutzerdefiniertes Ausgabeformat |
atuin history list --reverse | Älteste zuerst anzeigen |
atuin history list -n 50 | Letzte 50 Befehle anzeigen |
atuin history count | Gesamtanzahl des Verlaufs anzeigen |
atuin history last | Letzten 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.
| Befehl | Beschreibung |
|---|
atuin search query | Verlauf von der Kommandozeile durchsuchen |
atuin search "git commit" | Nach bestimmtem Befehl suchen |
atuin search --cwd | Verlauf nur für aktuelles Verzeichnis durchsuchen |
atuin search --session | Verlauf nur für aktuelle Sitzung durchsuchen |
atuin search --global | Gesamten Verlauf über alle Maschinen durchsuchen |
atuin search --interactive | Interaktive Oberfläche öffnen |
| Befehl | Beschreibung |
|---|
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 |
| Befehl | Beschreibung |
|---|
atuin search --exit 0 | Nur erfolgreiche Befehle suchen |
atuin search --exit 1 | Nur fehlgeschlagene Befehle suchen |
atuin search --exit 127 | ”Befehl nicht gefunden”-Fehler suchen |
atuin search --limit 50 | Anzahl der Ergebnisse begrenzen |
| Befehl | Beschreibung |
|---|
atuin search --cwd /path/to/dir | Nach bestimmtem Arbeitsverzeichnis filtern |
atuin search --hostname myserver | Nach Hostname filtern |
atuin search --session SESSION_ID | Nach Sitzungs-ID filtern |
atuin search --duration ">5s" | Nach Ausführungsdauer filtern |
atuin search --duration "<100ms" | Schnelle Befehle finden |
| Befehl | Beschreibung |
|---|
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
| Befehl | Beschreibung |
|---|
atuin register -u username -e email -p password | Sync-Konto erstellen |
atuin login -u username -p password | Bei Sync-Konto anmelden |
atuin login -u username -p password -k KEY | Mit Verschlüsselungsschlüssel anmelden |
atuin logout | Vom Sync-Konto abmelden |
atuin account | Kontostatus anzeigen |
atuin account delete | Sync-Konto löschen |
atuin key | Verschlüsselungsschlüssel anzeigen (diesen speichern!) |
atuin status | Synchronisierungsstatus anzeigen |
| Befehl | Beschreibung |
|---|
atuin sync | Verlauf mit Server synchronisieren |
atuin sync -f | Vollständige Synchronisierung erzwingen |
atuin sync --force | Erneutes Hochladen des gesamten Verlaufs erzwingen |
| Alle Daten sind Ende-zu-Ende-verschlüsselt | Server 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"
| Befehl | Beschreibung |
|---|
atuin import auto | Shell-Verlauf automatisch erkennen und importieren |
atuin import bash | Aus Bash-Verlauf importieren |
atuin import zsh | Aus Zsh-Verlauf importieren |
atuin import zsh-hist-db | Aus Zsh hist-db Plugin importieren |
atuin import fish | Aus Fish-Verlauf importieren |
atuin import resh | Aus RESH-Verlauf importieren |
atuin import nu | Aus Nushell-Verlauf importieren |
atuin import nu-hist-db | Aus 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
| Befehl | Beschreibung |
|---|
atuin stats | Verlaufsstatistiken anzeigen |
atuin stats --count 20 | Top 20 meistverwendete Befehle anzeigen |
atuin stats --period day | Statistiken für heute |
atuin stats --period week | Statistiken für diese Woche |
atuin stats --period month | Statistiken für diesen Monat |
atuin stats --period all | Gesamtstatistiken |
atuin history count | Gesamte 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
| Befehl | Beschreibung |
|---|
~/.config/atuin/config.toml | Hauptkonfigurationsdatei |
atuin default-config | Standardkonfiguration ausgeben |
| Befehl | Beschreibung |
|---|
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 |
| Befehl | Beschreibung |
|---|
style = "compact" | Kompakten UI-Stil verwenden |
style = "full" | Vollständigen UI-Stil verwenden |
style = "auto" | Automatisch basierend auf Terminal erkennen |
inline_height = 40 | Inline-Suchhöhe festlegen |
show_preview = true | Befehlsvorschau-Panel anzeigen |
show_help = true | Tastenkürzel-Hilfe anzeigen |
show_tabs = true | Filtermodus-Tabs anzeigen |
max_preview_height = 4 | Maximale 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
| Taste | Beschreibung |
|---|
Ctrl + R | Suche öffnen / Suchmodus wechseln |
↑ / ↓ | Ergebnisse navigieren |
Enter | Ausgewählten Befehl ausführen |
Tab | Befehl einfügen ohne auszuführen |
Escape | Suche abbrechen |
Ctrl + D | Ausgewählten Verlaufseintrag löschen |
Alt + 1 | Zu globalem Filter wechseln |
Alt + 2 | Zu Host-Filter wechseln |
Alt + 3 | Zu Sitzungs-Filter wechseln |
Alt + 4 | Zu Verzeichnis-Filter wechseln |
Ctrl + U | Suchanfrage löschen |
Ctrl + W | Wort rückwärts löschen |
| Befehl | Beschreibung |
|---|
~/.local/share/atuin/history.db | Standard-Datenbankspeicherort |
| Datenbank verwendet SQLite-Format | Kann 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;"
-
Bestehenden Verlauf zuerst importieren — Sofort nach der Installation atuin import auto ausführen, um mit einer reichhaltigen Verlaufsdatenbank statt von Null zu starten.
-
Fuzzy-Suchmodus verwenden — search_mode = "fuzzy" für die flexibelste Übereinstimmung setzen. Während einer Suche kann jederzeit mit Ctrl+R zu anderen Modi gewechselt werden.
-
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.
-
Verschlüsselungsschlüssel speichern — atuin key ausführen und den Schlüssel in einem Passwort-Manager speichern. Bei Verlust ist der synchronisierte Verlauf von anderen Maschinen dauerhaft unwiederbringlich.
-
Synchronisierung zwischen Maschinen einrichten — Verschlüsselte Synchronisierung ist Atuins Killerfeature. Ein Konto registrieren und alle Maschinen konfigurieren, um überall einheitlichen Verlauf zu haben.
-
Verzeichnisbezogene Suche verwenden — Alt+4 während der Suche drücken, um auf Befehle zu filtern, die im aktuellen Verzeichnis ausgeführt wurden — perfekt für projektspezifische Workflows.
-
Pfeiltaste nach oben anpassen — filter_mode_shell_up_key_binding = "host" setzen, damit die Pfeiltaste nach oben nur Befehle der aktuellen Maschine zeigt, während Ctrl+R global sucht.
-
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.
-
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.
-
Kompakten Stil für kleine Terminals verwenden — style = "compact" setzen, wenn in geteilten Terminal-Panels mit begrenztem vertikalen Platz gearbeitet wird.