Как очистить историю терминала?

93

Я использую Linux Mint 17.1 Rebecca около 2 дней и случайно набрал свой пароль в терминале, который теперь отображается в списке истории команд, которые я ранее набирал.

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

history -c
reset
tput reset

Вышеприведенные команды «очистят» историю от терминала, но когда я выхожу и поднимаю новую, вся моя предыдущая история все еще там, и ее можно снова отобразить, используя команду - history, а также нажав стрелку ВВЕРХ на моей клавиатуре , Я не хочу, чтобы это произошло, пока я полностью не очистил свою историю, а затем я хочу продолжать использовать ее.

Как мне полностью очистить историю моего терминала - навсегда и начать все заново?

Обратите внимание: я не хочу выходить из терминала без сохранения истории, просто очистите его навсегда в этом случае.

Шамбала
источник
1
sed -i "s/$your_pass//g" ~/.bash_history...
Джейсонвриан
3
@jasonwryan Это само по себе не решит проблему, так как команда sed окажется в истории оболочки.
Жиль
1
Я попытался использовать код из @jasonwryan, но я получил: sed: -e выражение # 1, char 0: никакого предыдущего регулярного выражения, которое, я думаю, я знаю, почему, и это привело меня к поиску этого из поиска и некоторого возни: cat / dev / null> ~ / .bash_history && history -c && exit
Шамбала
1
@ Жиль: вы правы: перед командой должен быть пробел ...
jasonwryan

Ответы:

145

resetили tput resetтолько делает вещи в терминал. История полностью управляется оболочкой, которая остается неизменной.

history -cочищает вашу историю в текущей оболочке. Этого достаточно (но излишне), если вы только что ввели свой пароль и не вышли из этой оболочки или явно сохранили ее историю.

Когда вы выходите из bash, история сохраняется в файле истории, который по умолчанию находится .bash_historyв вашем домашнем каталоге. Точнее, история, созданная во время текущего сеанса, добавляется в файл; записи, которые уже присутствуют, не затрагиваются. Чтобы перезаписать файл истории текущей историей оболочки, запустите history -w.

Вместо удаления всех ваших записей истории, вы можете открыть .bash_historyв редакторе и удалить строки, которые вы не хотите сохранять. Вы также можете сделать это внутри bash, менее удобно, используя historyдля отображения всех записей, затем history -dдля удаления ненужных записей и, наконец, history -wдля сохранения.

Обратите внимание, что даже после того, как вы отредактировали файл истории, возможно, ваш пароль все еще присутствует где-то на диске из более ранней версии файла. Он не может быть восстановлен через файловую систему, но все еще может быть (но, вероятно, нелегко) найти его, напрямую обращаясь к диску. Если вы используете этот пароль в другом месте и ваш диск будет украден (или кто-то получит доступ к диску), это может быть проблемой.

жилль
источник
1
Мне нравится ваш ответ, и я приму, как вы сказали, довольно много вещей, которые я не знал, которые очень полезны. Я также изменю свой пароль!
Шамбала
Сначала введите, historyчтобы проверить содержимое журнала истории и номера строк, которые вы хотите удалить, предполагается, что вы хотите удалить номер строки 1000 в журнале истории, затемhistory -d 1000
Клод КОЛУМБ
Если я изменю файл .bash_history напрямую, команда history будет по-прежнему отображать команды такими, какими они были до изменения, до тех пор, пока я не выйду из системы и не
войду в нее
35

Я попробовал историю -c, но история возвращается, как только мы уходим, и снова открывается. Это помогло мне.

cat /dev/null > ~/.bash_history && history -c && exit

Это очищает историю, сохраненную в файле истории, а также историю в текущем сеансе (чтобы она не сохранялась в файл при bashвыходе). Затем он выходит из оболочки. Следующий сеанс оболочки не будет иметь истории.

athul
источник
18

Вместо удаления всех ваших записей истории, введите эти команды в вашем терминале:

  1. history -c (для удаления истории)
  2. history -w (сохранить историю)
user171143
источник
Это не будет достаточно с Zsh, если inc_append_historyили share_historyопция установлена.
сага
5

Поскольку здесь есть проблема безопасности, вам следует рассмотреть возможность безопасного удаления файла истории.

$ shred -u ~/.bash_history && touch ~/.bash_history
C0D3R3D
источник
3

Будучи неофитом, столкнувшимся с той же проблемой, я прибег к довольно жестокой возможности удаления и повторного создания файла истории:

rm .bash_history
touch .bash_history

Это сработало для меня, не вызывая каких-либо неприятных побочных эффектов, о которых я знаю.

Волосатый Джо
источник
3

Тип: history -c; rm ~/.bash_history

history -cочищает историю вашего текущего сеанса, rm ~/.bash_historyочищает вашу долгосрочную историю, поэтому history -c; rm ~/.bash_historyочищает оба.

ЭНТОНИ
источник
объяснение может помочь ОП лучше понять.
Дворняга