Як очистити історію терміналу?


93

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

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

history -c
reset
tput reset

Вищеописані команди "очистять історію з терміналу, але коли я вийду і піднесу нову, вся моя попередня історія все ще є, і всі вони можуть бути знову перераховані за допомогою команди - історія, а також натисканням стрілки Вгору на моїй клавіатурі . Я не хочу, щоб це сталося, поки я повністю не очистив свою історію, тоді я хочу продовжувати її використовувати.

Як я можу повністю очистити свою історію терміналів - назавжди і почати свіжий?

Зверніть увагу: я не хочу виходити з терміналу без збереження історії, просто очистіть його назавжди в цьому одному екземплярі.


1
sed -i "s/$your_pass//g" ~/.bash_history...
Jasonwryan

3
@jasonwryan Сама по собі не вирішила б проблему, оскільки команда sed опиниться в історії оболонки.
Жиль

1
Я спробував використати код від @jasonwryan, але я отримав: sed: -e вираз №1, char 0: жодного попереднього регулярного виразу, який, я думаю, я знаю, чому, і це приводило мене до того, щоб придумати це з пошуку та певного розгулу: cat / dev / null> ~ / .bash_history && history -c && exit
Шамбала

1
@Gilles: ти маєш рацію: перед командою повинен бути пробіл ...
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
Клод COULOMBE

Якщо я зміню файл .bash_history безпосередньо, команда "Історія" все ще показує команди такими, якими вони були до модифікації, поки я не вийду з системи / увійдіть у систему.
Benitok

35

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

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

Це очищає історію, збережену у файлі історії, а також історію в поточному сеансі (так що не зберігається для файлу при bashвиході). Потім він виходить з оболонки. Наступний сеанс оболонки не матиме історії.


18

Замість того, щоб видаляти всі записи історії, введіть ці команди у свій термінал:

  1. history -c (для історії видалення)
  2. history -w (зберегти історію)

Цього не буде достатньо для zsh, якщо встановлено inc_append_historyабо share_historyпараметр.
сага

5

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

$ shred -u ~/.bash_history && touch ~/.bash_history

3

Як неофіт, що зіткнувся з тією ж проблемою, я вдався до досить брутальної доцільності видалення та відтворення файлу історії: -

rm .bash_history
touch .bash_history

Це спрацювало на мене, не викликаючи жодних неприємних побічних ефектів, про які я знаю.


3

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

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


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