Вопрос: Как очистить историю bash?


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

Как я могу удалить их навсегда?


219
2017-09-23 05:44


Источник




Ответы:


Файл ~/.bash_history хранит историю.

Чтобы полностью очистить историю bash на сервере, откройте терминал и введите

cat /dev/null > ~/.bash_history

Другой альтернативный способ - связать ~/.bash_history в /dev/null

Однако,

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

Чтобы обойти это, используйте следующую команду (работая для меня):

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

284
2017-09-23 05:51



вы также можете поставить команду выше в .bashrc & .bash_logout. что это означает, когда вы входите в систему u, у вас будет четкая история, и когда вы выйдете из системы, ваша история будет очищена - Qasim
Зачем вам нужен / dev / null? не было бы > ~/.bash_hstory быть достаточным? - configurator
да, этого было бы достаточно! - fromnaboo
Я попытался сделать это на коробке малины, подключенной через SSH. Я добавил указанную выше команду (cat / dev / null> ~ / .bash_history && history -c && exit) в оба .bashrc & .bash_logout, как это было предложено @Qasim. Теперь, как только я подключился через SSH, удаленный хост закрывает соединение (после печати motd). Помогите :/ - Advanced
Идет, чтобы показать, что происходит, когда вы слепо делаете вещи, не читая должным образом и не понимая обработки и потока данных. Это также показывает подводные камни плохой связи. То, что Devav2 сделал, запускалось за один раз, и что Qasim должен был написать, это удалить команду exit, прежде чем добавлять ее в скрипт входа. - Sri


Что делать:

В каждый Откройте оболочку bash (вы можете открыть несколько терминалов):

history -c
history -w

Зачем: Как указано выше, history -c опустошает файл ~/.bash_history, Важно отметить, что оболочка bash не сразу обновляет историю до файла bash_history. Поэтому важно: (1) очистить историю до файла и (2) очистить историю, во всех терминалах, Это то, что делают команды выше.

Справка: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


115
2018-04-11 20:55



На самом деле, для меня это работало наоборот. - kristianp
Во многих случаях вы можете объединить эти две команды: history -cw - Elliot
По какой-то причине это не работает на Ubuntu 14.04, возможно, другие. Он должен, но это не так. Если вы выдаете команду «history -cw», вы можете подтвердить стрелкой вверх, что история больше не существует, но если вы запустите другое окно терминала (на рабочем столе Unity) со сдвигом + щелчок по значку терминала (у меня есть это прикрепленный в панели запуска) история команд возвращается, не имеет значения, сколько раз вы делаете «history -cw». «cat / dev / null> ~ / .bash_history» - единственный способ, который работал для меня. - Hatoru Hansou
Хотя я не Ubantu, отлично работает для моей оболочки bash в OSX. - Scott Biggs
Это история -c, а затем history -w, вы сначала очистите историю, а затем напишите изменения. Это легко подтвердить, закрыв терминал и снова открыв его, с помощью -w сначала снова появятся команды, причем -w последняя история эффективно очищается. - Hatoru Hansou


выполните следующие команды, чтобы очистить историю навсегда

history -c && history -w

удачи!


43
2017-08-12 12:39





Еще один гораздо более простой: запуск history -c в командной строке терминала и исчезли все записи в bash_history файл.


19
2018-03-10 18:10



Нет. Выйдите из системы, войдите в систему, стрелка вверх даст мне все. Вам нужна «история -w». - stolsvik
Если вы прочитаете вопрос OP, вы знаете, что используя history -c это точный метод, который привел к этому вопросу. - J.Money


Другой способ сделать это - удалить ~/.bash_history файл с помощью rm ~/.bash_history команда. Когда вы входите в другое время, .bash_history файл будет автоматически создан.


10
2017-09-23 06:18



По крайней мере, на некоторых ОС ~ / .bash_history записывается на диск при выходе из системы - не уверен в * buntus. - d-_-b


Очистить текущую историю оболочки:

history -c

Когда вы выходите из системы, ваша текущая история оболочки добавляется к ~ / .bash_history, которая является кешем предыдущих историй снарядов, до максимального числа (см. HISTFILESIZE в «man bash»).

Если вы хотите полностью удалить историю, то вам, по сути, придется выпустить ~ / .bash_history, о которой многие из вышеперечисленных записей предложили. Такие как:

history -c && history -w

Это очищает историю текущей оболочки, а затем заставляет историю текущей (пустой) оболочки перезаписывать ~ / .bash_history .... или, если быть более точным, она заставляет ее перезаписывать HISTFILE (по умолчанию это ~ / .bash_history).

Надеюсь это поможет.


5
2017-07-10 17:05



Вы отвечаете точно, но вопрос был два года, принял ответы и включил тот же ответ, который вы дали. - Charles Green


rm ~/.bash_history; history -c; logout

Теперь войдите в систему и убедитесь, что ваша стрелка не дает вам ничего.


4
2017-10-01 19:16



@KasiyA Речь идет о сервере и сеансе ssh, поэтому нет необходимости редактировать ... - Radu Rădeanu


Попробуй это

отредактируйте .profile и добавьте строку ниже в конце файла

rm -f .bash_history

таким образом, каждый раз, когда вы входите в систему, он автоматически удалит ваш файл .bash_history. Добавление опции -r recursive remove кажется опасным и не требуется.


0
2017-08-30 18:06