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

Я по ошибке ввел пароль в командной строке или в окне терминала и не хочу удалять всю свою историю. Моя оболочка - bash.

Как отредактировать историю bash в Mac OS X?

Ответы (5)

Редактирование .bash_history— это просто открытие файла в редакторе. Есть несколько способов добиться этого.

  1. В Терминале просто введите vi ~/.bash_history, затем отредактируйте файл как хотите и сохраните. Этот вариант может быть сложным, если вы, конечно, не привыкли к vi .
  2. Сделайте файл видимым , следуя этим инструкциям, например, откройте его как любой другой файл, измените его и сохраните.
  3. В Терминале просто введите open -e ~/.bash_history. Эта команда откроет файл с помощью TextEdit , вы, конечно, можете выбрать любой другой текстовый редактор. Измените файл и сохраните.

Чтобы изменения были заметны, просто перезапустите bash.

Думаю, я нашел свой ответ. echo $HISTFILEпоказывает тот, который нужно редактировать.

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

Это не работает на Yosemite с ZSH.
Вопрос был о bash, а не о zsh. Внимательно прочитайте!
@DmitryDupelov, вы правы, извините за беспокойство. В любом случае, это напоминание будущим читателям (которые тоже могут упустить эту деталь). Спасибо за исправление моего комментария.
nano ~/.bash_history

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

Я думаю, что ответ Дмитрия идеален, если он сделан до сохранения истории - по умолчанию сохранение происходит при выходе из оболочки/терминала.

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

Задний план:

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

Независимо от того, какой метод вы используете, я бы добавил один шаг: подтвердите успех!

  1. Выйти из Terminal.app
  2. Снова откройте Terminal.app
  3. Подтвердите, что оскорбительного текста нет в истории — желательно таким образом, чтобы не создавать дополнительную историю. То есть не надо grep BAD_TEXT .bash_history! Эта новая команда войдет в историю. Я бы просто открыл .bash_history в вашем любимом редакторе и поискал в нем BAD_TEXT.

Это должно дать вам уверенность в том, что вы устранили BAD_TEXT, независимо от того, с какой сумасшедшей настройкой bash вы можете столкнуться.

Есть несколько историй например bash и zsh. Вы можете сделать это с помощью нано. Для этого просто откройте терминал

С этим вы редактируете историю bash

nano $HOME/.bash_history 

При этом вы редактируете стандартную историю zsh

nano $HOME/.zsh_history 

Если вы хотите, вы можете сделать все это с помощью TextEdit.

Баш:open -t $HOME/.bash_history

Зш:open -t $HOME/.zsh_history

Давайте получим это в вопросе, запрашивающем историю zsh для лучшего эффекта.