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

16

Как все вы знаете, Mac OS X хранит все команды, которые запускаются из терминала, в самом терминале, однако я хочу удалить (например) последние 3 команды из терминала. Как я могу это сделать?

JAHelia
источник

Ответы:

12

Mac OS ничего не хранит нигде.

bash, которая является оболочкой, запущенной в терминале, хранит историю команд.

История команд терминала хранится в скрытом файле в вашем пользовательском каталоге .bash_history

Это означает, что файл: /Users/{username}/.bash_history

Вы должны включить «Показать системные файлы», чтобы увидеть его (из меню «Вид» в Finder).

Файл представляет собой просто текстовый список всего, что вы вводите в оболочке. Вы можете открыть его в TextEdit или по вашему выбору.


Вам, вероятно, следует закрыть Terminal.appвсе последние изменения в файле, прежде чем вносить изменения, иначе он может быть перезаписан из версии, Terminal.appхранящейся в памяти.

Поддельное имя
источник
2
Команды хранятся не на лету, а только при выходе из оболочки или по запросу (например, history -aили history -w). Обычно последние команды еще не в файле.
Маттео
Ой, я хотел добавить, что вы, вероятно, должны закрыть все экземпляры терминала .app перед редактированием этого файла. Исправлена.
Поддельное имя
19

Это не функция Mac OS, а функция оболочки. Предполагая, что вы используете bash (по умолчанию):

  • история команд хранится в памяти и сохраняется в файле (обычно ~/.bash_history)
  • Вы можете перечислить и редактировать историю с помощью historyкоманды

С помощью man bashSHELL BUILTIN COMMANDSразделе) вы найдете описание различных опций.

Ты можешь:

  • перечислить записи истории

    $ history
  • удалить всю историю

    $ history -c
  • удалить данную запись

    $ history -d offset
Matteo
источник
оба ответа верны, я выбрал самый ранний .. спасибо, братан ..
JAHelia
при выполнении истории -c, это говорит fc: event not found: -c. Затем я вручную открыл файл, удалил содержимое. Closed and reopened the terminalи история не существует сейчас.
любопытно
2

Для пользователей Mac Terminal

удалить историю команд bash с помощью следующей команды $ echo '' > ~/.bash_history

Для пользователей Mac zsh

удалить историю команд zsh с помощью следующей команды $ echo ''> ~/.zsh_hostory

vikbert
источник
Обратите внимание, что это удалит всю историю, а не только последние три строки.
Джон Н
0

В дополнение к редактированию текста, также, если вы старой школы, используйте «vi» для редактирования файла и удаления оскорбительных команд. Аналогичные редакторы командной строки emacs (которые имеют общие ярлыки редактирования с OS X) или nano (которые упростили навигацию и визуальную помощь о том, как сохранить и выйти из редактора, не нуждаясь в справочном листе) .

gpdeveloper
источник
1
Это будет описано в «Вы можете открыть его в TextEdit или в своем редакторе по вашему выбору », что находится в принятом ответе.
Джон Н
Мы предпочитаем, чтобы ответы стояли самостоятельно. Сейчас это больше комментарий, чем ответ. Можете ли вы добавить хотя бы имя файла для редактирования?
холме