Виключаючи збереження деяких команд в історії башів


31

Чи є спосіб , щоб виключити такі команди , як rm -rf, svn revertвід того , отримувати зберігається в Баш історії? Насправді я, помилково, неодноразово видавав їх, навіть не маючи намір робити, просто тому, що я швидко все роблю, і це сталося. Отже, це втрачає багато роботи, яку я робив до цього часу.


3
Можливо, вас зацікавить serverfault.com/questions/48769/…
Люк М,

Відповіді:


53

Вам може знадобитися $HISTIGNORE: "Список шаблонів, розділених двокрапкою, використовується для визначення, які командні рядки слід зберігати у списку історії." Цей рядок у вашому ~ / .bashrc повинен виконувати цю роботу:

HISTIGNORE='rm *:svn revert*'

Також ви можете додати пробіл на початку команди, щоб виключити його з історії. Це працює до тих пір, поки $HISTCONTROLмістить ignorespaceабо ignoreboth, що є типовим для будь-якого дистрибутива, який я використовував.


4
простір - це те, як я завжди робив це.
Роб

Раніше я випадково вводив додаткові y, зрештою cp(змушений cp -i) переходити. Тож я відчула себе yяк alias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'... Але HISTIGNOREкращий метод, як це виглядає. :) Спасибі.
anishsane

2
Просто щоб бути більш чітко: ви можете додати export HISTCONTROL="ignorespace"в свій файл ~/.bashrcігнорувати команди , які починаються з пробілами.
Айдан Фельдман

@AidanFeldman не за замовчуванням на macOS
akauppi

ПРИМІТКА: пробіл повинен бути включений, коли ми вводимо командний рядок, а не HISTIGNORE.
Гаян Веракутті

6

Хоча дещо відрізняється від питання про ОП, коли я навмисно не хочу, щоб команди зберігалися в історії башів, я приставлю їх пробілом. Працює в Ubuntu та його варіантах, не впевнений, чи працює він у всіх системах.


6
Залежить від $HISTCONTROL(див. Мою відповідь).
l0b0

@ l0b0 вірно, дякую за вказівку.
k4rtik

1

Зазвичай я вбиваю свій баш-екземпляр, коли в історії робив те, чого не хочу.

kill -9 $$

$$ представляє поточний процес - баш, коли ви запустите його з оболонки. Ви можете використовувати $ BASHPID, але це більше, набравши текст :-)


2
Деякі налаштування Bash (наприклад, це ) зберігатимуть історію після кожної команди, і в цьому випадку це не спрацює.
l0b0

1
Я раніше це робив. але налаштування HISTFILE=/dev/null- кращий варіант.
anishsane

просто HISTFILE=працює і в bash, і в ksh.
kubanczyk

абоunset HISTFILE
Тодд Уолтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.