Як редагувати історію терміналів Mac OS X?


12

Як редагувати історію башів у Mac OS X? Я ввів пароль у це вікно помилково і не хочу видаляти всю свою історію.

Відповіді:


14

Редагування .bash_historyфайлу - це лише питання відкриття файлу за допомогою редактора. Є кілька способів, як ви могли цього досягти.

  1. У Терміналі просто введіть vi ~/.bash_history, а потім відредагуйте файл за своїм бажанням та збережіть. Цей варіант може бути складно, якщо ви не звикли до VI , звичайно.
  2. Зробіть файл видимим , дотримуючись цих інструкцій, наприклад, відкрийте його як будь-який інший файл, змініть його та збережіть.
  3. У Терміналі просто наберіть open ~/.bash_history -a /Applications/TextEdit.app. Ця команда відкриє файл з TextEdit , ви можете, звичайно, вибрати будь-який інший текстовий редактор. Змініть файл і збережіть.

Щоб зміни були помітні, просто перезапустіть bash.


Мені отримують "відмову у дозволі". Коли я роблю судо, я не в змозі побачити всі введені команди.
Karthick S

1
@KarthickS Ви це робите, що саме?
Текафремо

Якщо я дивлюся на вміст .bash_history, вміст відрізняється від результату команди історії. Я розпізнаю і те, і інше, і вміст файла старіший. Що станеться, якщо відкрито кілька вікон команд? Вони, схоже, не мають однакової історії команд. PS Я перевірив, що я використовую bash.
Віктор Енгель

1
Я думаю, що знайшов свою відповідь. ECHO $ ​​HISTFILE показує редагування.
Віктор Енгель

10

У терміналі введіть historyномер рядка. Наступний дзвінок history -d noted-line-number. Ви можете перевірити, чи видалено рядок, використовуючи historyще раз.


2
Це не працює на Yosemite із ZSH.
Пауло Олівейра

Питання стосувалося bash, а не zsh. Читай уважно!
Без імені_1

1
@DmitryDupelov ви праві, вибачте, що турбуєте. У будь-якому випадку це нагадування майбутнім читачам (які можуть також пропустити цю деталь). Дякую, що виправили мій коментар.
Пауло Олівейра

2
nano ~/.bash_history

коли ви зробили, ctrl+x і повертайтеся, щоб прийняти правильну відповідь чувак


0

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

Якщо ви, можливо, вже зберегли історію до ~ / .bash_history, тоді я віддаю перевагу відповіді Thecafremo, але я б запропонував додати крок виходу з терміналу, щоб переконатися, що жоден з екземплярів bash не завантажив історію і не зможе її зберегти повторно. Це особливо складно, якщо у вас є кілька терміналів і ви ввімкнули будь-яке оновлення історії команд за командою.

Фон:

  • bash зберігає історію в екземплярі оболонки
  • bash може записати цю історію у файл, що зазвичай відбувається при виході з оболонки / терміналу
  • bash може читати з файлу в історію, що зазвичай відбувається, коли ви відкриваєте оболонку / термінал
  • можна змінити поведінку за замовчуванням, щоб історія поширювалася швидше, що може перенести ваш BAD_TEXT у файл та інші вікна

Незалежно від того, який метод ви використовуєте, я додам ще один крок: перевірити успіх!

  1. Вийдіть з терміналу.app
  2. Повторно відкрийте Terminal.app
  3. Підтвердьте, що текст правопорушення не в історії - бажано таким чином, що не створюватиме додаткову історію. Тобто, не треба grep BAD_TEXT .bash_history! Ця нова команда піде в історію. Я просто відкрию .bash_history у вашому улюбленому редакторі та шукаю в ньому BAD_TEXT.

Це повинно дати вам спокій, що ви ліквідували BAD_TEXT, незалежно від того, з якою божевільною установкою ви не зможете зіткнутися.

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