Подтвердить что ты не робот

Как удалить запись из истории в ZSH

Скажем, я выполнил команду с помощью zsh

echo "mysecret" > file

Я могу легко распечатать историю, включая номера записей, с помощью команды fc -l:

1  echo "mysecret" >| file

Но как я могу легко удалить запись из истории?

Я не могу найти соответствующий абзац в man zshbuiltins.

4b9b3361

Ответ 1

* BSD/Darwin:

LC_ALL=C sed -i '' '/porn/d' $HISTFILE

Linux (GNU sed):

LC_ALL=C sed -i '/porn/d' $HISTFILE

Это удалит все строки, соответствующие "порно" от вашего $ HISTFILE.

С помощью setopt HIST_IGNORE_SPACE вы можете добавить вышеуказанную команду к пробелу, чтобы предотвратить ее запись в $ HISTFILE.

Как отметил Тим в своем комментарии ниже, префикс LC_ALL = C предотвращает сбой "недопустимой последовательности байтов".

Ответ 2

Я не знаю, есть ли какой-то элегантный метод для этого, но в подобных ситуациях я вышел из системы (позволяя zsh очистить свой буфер и записать мою историю в файл), затем войти в систему и, наконец, вручную отредактировал ~/.zsh_history, удалив "опасную" строку.

Ответ 3

Если вы используете опцию HIST_IGNORE_SPACE в zsh, вы можете добавлять команды с пробелом "", и они не будут запоминаться в файле истории. Если у вас есть секретные команды, которые вы обычно используете, вы можете сделать что-то в этом направлении:

http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/