Как избежать повторяющихся записей в.bash_history
Одна и та же команда снова и снова появляется в моей истории. Как я могу избежать этого? Я знаю, что это возможно через HISTCONTROL но я не нашел правильный путь.
6 ответов
От bash справочная страница:
HISTCONTROL
Список значений, разделенных двоеточиями, управляющий тем, как команды сохраняются в списке истории. Если список значений включает
ignorespaceстроки, начинающиеся с пробела, не сохраняются в списке истории. Значениеignoredupsприводит к тому, что строки, соответствующие предыдущей записи истории, не будут сохранены. Значениеignorebothэто сокращение дляignorespaceа такжеignoredups, Значениеerasedupsвызывает удаление всех предыдущих строк, соответствующих текущей строке, из списка истории перед сохранением этой строки. Любое значение, отсутствующее в приведенном выше списке, игнорируется. Если HISTCONTROL не установлен или не содержит допустимого значения, все строки, прочитанные синтаксическим анализатором оболочки, сохраняются в списке истории при условии значения HISTIGNORE. Вторая и последующие строки многострочной составной команды не тестируются и добавляются в историю независимо от значения HISTCONTROL.
Поэтому поместите следующую строку в ваш ~/.bashrc:
export HISTCONTROL=ignoreboth:erasedups
Вставь это в свой ~/.bashrc:
export HISTCONTROL=ignoredups
Вы могли бы вместо этого использовать ignoreboth, Это сокращение для обоих ignorespaces (команды, начинающиеся с пробелов) и ignoredups (дубликаты).
я предпочитаю ignoredups Я считаю, что поведение по умолчанию игнорирования команд с пробелами в передней части довольно раздражает, когда я копирую команду с веб-сайта, и она не сохраняется, потому что я тоже случайно скопировал в пробел.... Но каждому своя.
Положить это в ~/.bashrc будет применять решение @ Элвина в разных сессиях как wlell
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
Источник: Linux: Bash history: настройки ignoredups и erasedups конфликтуют с общей историей между сеансами
Добавьте следующее к вашему ~/.bashrc:
export HISTCONTROL=ignoredups
Для этого вы можете использовать эту команду:
nano ~/.bashrc
Для уникальной записи каждой новой команды сложно. Сначала нужно добавить в~/.profile или похожие:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
Тогда вам нужно добавить в ~/.bash_logout:
history -a
history -w