Atuin заменяет стандартный файл истории оболочки на базу SQLite. Кроме текста команды он запоминает код возврата, длительность, каталог и имя хоста, поэтому поиск «та команда, что упала вчера в проекте» становится реальным. История ищется нечётко, синхронизируется между машинами в зашифрованном виде и не конфликтует с обычным HISTFILE. Ниже — установка, подключение к bash и zsh, импорт, настройка и безопасность.

Зачем это нужно

Стандартный поиск по Ctrl+R работает с плоским файлом и не знает контекста. Atuin индексирует всю историю и позволяет фильтровать по каталогу, коду возврата и времени. База живёт локально в ~/.local/share/atuin/history.db, работает без сети, а синхронизация включается отдельно.

  • нечёткий поиск и подсветка совпадений;
  • фильтр по текущему каталогу и успешности команды;
  • статистика: частые команды, время работы, ошибки;
  • общая история на ноутбуке, домашнем сервере и рабочей машине;
  • собственный сервер синхронизации вместо облака.

Установка

Официальный установщик кладёт бинарник в ~/.atuin/bin и добавляет путь в профиль. Если не хочется запускать скрипт, соберите из исходников через cargo — результат тот же.

curl --proto '=https' --tlsv1.2 -LsSf https://setup.atuin.sh | sh
source ~/.bashrc
atuin --version
cargo install atuin

Проверьте, что в PATH попал нужный бинарник: which atuin. В Debian и Ubuntu пакет может отсутствовать или отставать, поэтому установщик предпочтительнее. Для обновления позже достаточно повторить установку.

Подключение к оболочке

Atuin встраивается в оболочку через init-хук: он перехватывает Enter, сохраняет команду с метаданными и подменяет стрелку вверх на свой поиск. Для bash и zsh строки добавляются в конец конфигурации.

echo 'eval "$(atuin init bash)"' >> ~/.bashrc
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
echo 'atuin init fish | source' >> ~/.config/fish/config.fish
exec $SHELL -l

После перезапуска оболочки нажмите стрелку вверх: откроется интерфейс поиска. Ctrl+R продолжит работать по-старому, пока вы не переназначите его. В zsh хук должен идти после инициализации oh-my-zsh, иначе привязки клавиш перезапишутся.

Импорт старой истории

При первом запуске Atuin может предложить импорт. Команда import auto определяет оболочку по переменным окружения, но надёжнее указать её явно. Дубликаты отсекаются по содержимому, времени и каталогу.

atuin import auto
atuin import bash
atuin history list
atuin stats

Если история большая, импорт занимает минуту-две. Файл ~/.bash_history при этом не удаляется — Atuin читает его, но не переписывает. Старые записи без метаданных получат пустые поля длительности и кода возврата, это нормально.

Поиск на практике

Интерактивный режим открывается командой atuin search -i. Внутри работают стрелки, Tab для вставки без выполнения и Enter для запуска. Фильтры можно задавать прямо в строке поиска префиксами.

atuin search -i
atuin search --limit 50 docker
atuin search --exit 1
atuin search --cwd . --before "2026-01-01"

Режим поиска задаётся в конфиге: fuzzy прощает опечатки, prefix ищет по началу, fulltext — по словам. Фильтр по умолчанию тоже настраивается: global, host, session, directory или workspace. Для работы в большом проекте удобен directory — в выдаче останутся команды из текущей папки.

Синхронизация между машинами

Синхронизация идёт через сервер Atuin, но содержимое шифруется на клиенте: сервер видит только зашифрованные блобы. Ключ выводится из пароля, поэтому резервную копию ключа стоит сохранить заранее, а пароль — в менеджере секретов.

Синхронизация не перезаписывает базу целиком: клиент забирает новые записи по курсору и объединяет их, поэтому параллельная работа на двух машинах не приводит к потере команд.

atuin register -u alice -e alice@example.com -p 'StrongPassphrase'
atuin login -u alice -p 'StrongPassphrase'
atuin sync
atuin key

Команда atuin key печатает ключ шифрования. Не публикуйте его: любой, кто получил ключ и доступ к серверу, прочитает историю. Для проверки состояния есть atuin doctor — она показывает версию, путь к базе, настройки синхронизации и наличие ключа.

atuin doctor
atuin info
atuin sync
atuin stats

Если синхронизация не идёт, проверьте системное время: расхождение часов ломает подпись запросов. Второй частый случай — разные версии клиента на машинах, обновите обе.

Свой сервер и конфиг

Для организации удобно поднять собственный сервер Atuin в Docker и указать его в конфиге. Это обычный self-hosted сервис для внутренней инфраструктуры.

docker run -d --name atuin -p 8888:8888 -v atuin-data:/data atuinsh/atuin:latest server start
curl -s http://127.0.0.1:8888
mkdir -p ~/.config/atuin
nano ~/.config/atuin/config.toml

Файл ~/.config/atuin/config.toml хранит плоские ключи без секций. В нём включается автосинхронизация, отключается проверка обновлений и настраивается внешний вид интерфейса. После правки перезапустите оболочку, чтобы применить настройки.

auto_sync = true
sync_address = "http://atuin.internal:8888"
search_mode = "fuzzy"
filter_mode = "directory"
style = "compact"
inline_height = 20

Приватность и безопасность

История команд — один из самых недооценённых источников утечек. В неё попадают токены, пароли, переданные аргументом, строки подключения к базе и внутренние адреса. Перед включением синхронизации просмотрите архив и настройте фильтры.

history_filter = ["^export .*KEY", "token", "password"]
cwd_filter = ["/home/.*/secrets"]

Фильтры не дают гарантии: секрет может оказаться в середине команды. Надёжнее не передавать пароли аргументами, а использовать переменные окружения или файлы с правами 600. Для общей машины база истории должна быть доступна только владельцу — проверьте права на каталог.

chmod 700 ~/.local/share/atuin
chmod 600 ~/.local/share/atuin/history.db
ls -l ~/.local/share/atuin
stat -c '%a %U %n' ~/.local/share/atuin/history.db

Чек-лист

  • Atuin установлен и хук прописан в конфигурации оболочки.
  • Старая история импортирована, дубликаты не мешают поиску.
  • Пароль и ключ синхронизации сохранены в менеджере секретов.
  • Фильтры исключают команды с токенами и паролями.
  • Права на каталог истории — 700, на базу — 600.
  • Проверена синхронизация хотя бы между двумя машинами.
  • Для парка машин поднят собственный сервер и указан в конфиге.

Итог

Atuin превращает историю команд из линейного файла в удобную базу с контекстом. Установка занимает минуты, импорт старой истории проходит автоматически, а синхронизация решает проблему «на другой машине этой команды нет». Главное — отнестись к истории как к чувствительным данным: настроить фильтры, проверить права и не хранить ключ шифрования где попало. Тогда инструмент экономит время каждый день и не создаёт новую поверхность атаки.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте