Как удалить запись из истории в ZSH
Скажем, я выполнил команду с помощью zsh
echo "mysecret" > file
Я могу легко распечатать историю, включая номера записей, с помощью команды fc -l
:
1 echo "mysecret" >| file
Но как я могу легко удалить запись из истории?
Я не могу найти соответствующий абзац в man zshbuiltins.
Ответы
Ответ 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/