История команд в терминале — полезная вещь, но со временем она может превращаться в беспорядочный список повторов. В macOS по умолчанию используется оболочка Zsh, и она позволяет легко настроить фильтрацию дубликатов, чтобы одинаковые команды не засоряли историю.
В этой статье разберём, как отключить сохранение повторяющихся строк и сделать историю чище и удобнее.
Почему в истории появляются дубликаты
Когда вы несколько раз подряд запускаете одну и ту же команду, Zsh сохраняет каждый вызов отдельно:
ls
ls
ls
В результате история раздувается, и искать нужные команды становится сложнее. Однако Zsh поддерживает специальные опции, позволяющие автоматически удалять дубликаты или просто не записывать их.
Отключение дубликатов истории в Zsh (по умолчанию в macOS)
Чтобы изменить поведение истории, нужно добавить несколько опций в файл настроек оболочки.
1. Откройте файл .zshrc
nano ~/.zshrc
2. Добавьте настройки, убирающие дублирующиеся команды
# Не сохранять повторяющиеся команды
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_ALL_DUPS
# Удалять дубли перед сохранением
setopt HIST_SAVE_NO_DUPS
# Не сохранять команды, начинающиеся с пробела
setopt HIST_IGNORE_SPACE
# Убирать лишние пробелы в командах
setopt HIST_REDUCE_BLANKS
3. Примените изменения
source ~/.zshrc
Теперь одинаковые команды будут отображаться в истории только один раз — самая последняя версия.
Настройка аналогичного поведения в Bash
Если вы используете Bash, включить удаление дублей тоже можно.
1. Откройте файл настроек
nano ~/.bash_profile
2. Добавьте строки:
# Не записывать дубликаты
export HISTCONTROL=ignoredups:erasedups
# Корректное ведение истории между сессиями
shopt -s histappend
3. Примените изменения:
source ~/.bash_profile
Итог
Удаление дубликатов из истории терминала — простой способ сделать работу в macOS удобнее. Достаточно добавить несколько опций в .zshrc или .bash_profile, и история будет автоматически очищаться от повторов. Это особенно полезно тем, кто активно работает в терминале и использует историю для быстрого доступа к ранее выполненным командам.
Добавить комментарий