Как включить хранение истории в zsh?
Долгое время я не обращал внимание на возможности команды history, но со временем объем работы в консоли вырос, и в какой то момент стало очевидно, что нужно задействовать эту возможности оболочки.
По умолчанию история работы в оболочке zsh нигде не сохраняется. С точки зрения безопасности - это правильно, ведь частенько в консоль попадают пароли (например при запуске mysql). Но, в плане удобства, history дает определенные преимущества. Она позволяет вспомнить последовательность настройки чего-либо в прошлом или ускорить ввод повторяющихся команд, поэтому если за своей рабочей машиной сидите только вы и никто к вам через плечо не заглядывает, то удобство, в конечном итоге, перевешивает безопасность.
Включаем и настраиваем history в zshrc. Для этого необходимо отредактировать
/etc/zsh/zshrc - если надо включить историю для всех пользователей. Естественно у каждого пользователя история команд будет своя.
/home/user1/.zshrc - если надо включить история только для конкретного пользователя (в нашем примере это пользователь user1)
Т.к. за своем компьютером я работаю один, то как правило редактирую /etc/zsh/zshrc, хотя в моем случае это разницы практически нет.
Запускаем редактор, например так:
sudo nano /etc/zsh/zshrc
Добавляем в /etc/zsh/zshrc:
# в этом файле будем хранить историю HISTFILE=~/.zhistory # столько команд запоминается в одной сессии zsh и будет выведено на экран по команде history HISTSIZE=1000 # столько команд хранится на диске SAVEHIST=1000 # при закрытии сессии новые команды будут накапливаться в файле истории # кроме того в файл истории будут попадать команды из разных сессий # если открыто несколько сессий одновременно setopt APPEND_HISTORY # игнорируем дублирующиеся команды setopt HIST_IGNORE_ALL_DUPS # игнорируем лишние пробелы setopt HIST_IGNORE_SPACE #игнорируем пустые строки setopt HIST_REDUCE_BLANKS
Теперь все это сохраняем и наслаждаемся историей.
Полезные команды для работы с историей:
# предыдущая команда [host:~] % !! # команда под номером 5 [host:~] % !5 # 10-я команда с конца (учитывается и команда "!-10") [host:~] % !-10