Як повністю очистити історію башу?


254

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

Як я можу їх постійно очистити?

Відповіді:


332

У файлі ~/.bash_historyзберігається історія.

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

cat /dev/null > ~/.bash_history

Інший альтернативний спосіб - це посилання ~/.bash_historyна/dev/null

Однак,

Одним з приємних побічних ефектів є те, що записи історії мають копію в пам'яті, і вона повернеться до файлу, коли ви виходите з системи .

Щоб вирішити це, скористайтеся такою командою (працювала для мене):

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

17
ви також можете поставити вище команду в .bashrc & .bash_logout. що це означає, коли ви ввійдете в систему, буде мати чітку історію, а коли вийдете, ваша історія буде очищена
Qasim

26
Навіщо вам там / dev / null? Не > ~/.bash_hstoryвистачило б?
конфігуратор

4
так, вистачило б!
fromnaboo

3
Я спробував це зробити на малиновій коробці під час підключення через SSH. Я додав вищевказану команду (cat / dev / null> ~ / .bash_history && history -c && exit) до обох .bashrc & .bash_logout, як це запропонував @Qasim. Тепер, як тільки я підключаюсь через SSH, віддалений хост закриває з'єднання (після друку motd). Довідка: /
Розширений

14
Показує, що відбувається, коли ви сліпо робите речі, не читаючи належним чином і не розуміючи обробку та потік даних. Це також показує підводні камені поганого спілкування. Що робив devav2 - це запустити його один раз, і те, що повинен був написати Qasim, - це видалити команду exit перед тим, як додати її до скрипту входу.
Шрі

141

Що робити:

У кожній відкритій команді 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/


3
Власне, для мене працювало навпаки.
kristianp

24
У багатьох випадках ви можете комбінувати ці дві команди разом:history -cw
Елліот

2
Чомусь це не працює на Ubuntu 14.04, ймовірно, інші. Слід, але це не так. Якщо ви видаєте команду "history -cw", ви можете підтвердити стрілкою вгору, що історії вже немає, але якщо ви запустите інше вікно терміналу (на стільниці Unity) зі зрушенням + натисніть на піктограму термінала (у мене це закріплений у панелі запуску) історія команд повертається назад, незалежно від того, скільки разів ви робите "history -cw". "cat / dev / null> ~ / .bash_history" - це єдиний спосіб, який працював на мене.
Хатору Хансоу

Поки я не Ubantu, він чудово працює для моєї баш-файлу в OSX.
Скотт Біггс

3
Це історія -c, а потім історія -w, ви спочатку очищаєте історію, а потім пишете зміни. Це легко підтверджується, закриваючи термінал і відкриваючи його знову, при -w спочатку команди знову є, а -w остання історія ефективно очищається.
Hatoru Hansou

56

виконайте наступні команди, щоб назавжди очистити історію

history -c && history -w

Щасти!


3
Набагато краще прийнятої відповіді. ;)
Chiramisu

Ця відповідь була б ще кориснішою, якщо б вона пояснила, що роблять ці прапори (і тому чому / коли вони є правильними командами для використання).
LarsH

20

Існує ще один набагато простіший: запуск history -cу підказці терміналу та пішли - це всі записи у bash_historyфайлі.


Ні, це не. Вийти, увійти, стрілка вгору дає мені все. Вам також потрібна "історія -w".
stolsvik

1
Якщо ви читаєте питання ОП, то знаєте, що використання history -c- це саме той метод, який призвів до цього питання.
J.Money

10

Ще один спосіб зробити це - видалити ~/.bash_historyфайл за допомогою rm ~/.bash_historyкоманди. Коли ви входите в інший раз, .bash_historyфайл буде автоматично створений.


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

7

Очистити історію поточної оболонки:

history -c

Коли ви виходите, історія вашої поточної оболонки додається до максимальної кількості ~ / .bash_history, що є кешем попередніх історій оболонок (див. HISTFILESIZE у "man bash").

Якщо ви хочете видалити історію взагалі, вам, по суті, доведеться виповнити ~ / .bash_history, що запропоновано багатьма з перерахованих вище записів. Як от:

history -c && history -w

Це очищає історію поточної оболонки, а потім змушує історію поточної оболонки (порожній) перезаписувати ~ / .bash_history .... або якщо бути більш точним, вона змушує її перезаписати HISTFILE (що за замовчуванням до ~ / .bash_history).

Сподіваюся, це допомагає.


4
Ви відповідаєте точно, але на питання було два роки, прийняли відповіді та включили ту саму відповідь, яку і ви дали.
Чарльз Грін

6
rm ~/.bash_history; history -c; logout

Тепер увійдіть назад і переконайтесь, що стрілка не дає вам нічого.


1
@KasiyA Йдеться про сервер та сеанс ssh, тому не потрібно редагувати ...
Radu Rădeanu

0

Спробуйте це

відредагуйте свій текст .profileі додайте рядок нижче в кінці файлу

rm -f .bash_history

Таким чином, кожен раз при вході в систему він автоматично видаляє ваш .bash_history файл. Додавання параметра -r рекурсивного видалення здається небезпечним і не потрібним.

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