Можете ли вы поделиться мудростью по использованию HISTIGNORE в Bash?

26

Я читал man-страницы для bash в самолете и наткнулся на переменную HISTIGNORE. Чтобы проверить это, я немедленно отредактировал свой .profile, чтобы определить эту переменную:

export HISTIGNORE = ls

Я проверил это, и это здорово! Он исключает простые команды 'ls' из моей истории, не исключая более интересных команд с длинными путями, но недавно собрав много мудрости из SU, я очень хочу узнать, что другие суперпользователи могут порекомендовать другим командам или извлечь другие уроки.

Что вы можете рассказать об использовании переменной HISTIGNORE в bash?

шалфей
источник

Ответы:

29

Я игнорирую lsбез команд, bg, fg, exit, pwd, clear, mountи umount:

Если вы включите это в вашу HISTIGNOREстроку, вы можете подавить все, что пожелаете, добавив пробел в начале команды:

"[ \t]*" 

Это мое HISTIGNORE:

HISTIGNORE="&:ls:[bf]g:exit:pwd:clear:mount:umount:[ \t]*"

Я исключил некоторые другие вещи, которые у меня есть, которые представляют собой повторяющиеся команды, уникальные для моего сервера. Все, что вы делаете просто, полезно исключить.

У меня есть другие вещи, которые я забыл добавить, но я далеко от своего Linux-бокса, поэтому у меня не хватает памяти.

Стэнли Уильямс
источник
6
Если значение HISTCONTROLвключает «ignorespace» или «ignoreboth», команды, начинающиеся с пробела, в истории не указываются. Если значение включает «ignore dups» или «ignoreboth», оно совпадает с «&» в HISTIGNORE.
Приостановлено до дальнейшего уведомления.
Для меня это также оказалось полезным для его игнорирования самой historyкоманды.
con-f-use
2
использование "[ \t]*"игнорирует команду, начинающуюся с пробела или t. Вы хотитеHISTIGNORE=$'&:ls:[bf]g:exit:pwd:clear:mount:umount:[ \t]*'
Грегори Пакош
14

Не сохраняйте тривиальные одно- и двухсимвольные команды в списке истории:

HISTIGNORE='?:??'

Если extglobопция включена, вы также можете использовать расширенные шаблоны, например,

HISTIGNORE='a*( )'
Евгений Ярмаш
источник