Zshを使用してコマンドを実行したとしましょう
echo "mysecret" > file
コマンドfc -l
を使用して、エントリ番号を含む履歴を簡単に印刷できます。
1 echo "mysecret" >| file
しかし、どうすれば簡単に履歴からエントリを削除できますか?
man zshbuiltinsに対応する段落が見つかりません。
LC_ALL=C sed -i '' '/porn/d' $HISTFILE
LC_ALL=C sed -i '/porn/d' $HISTFILE
これにより、$ HISTFILEから「porn」に一致するすべての行が削除されます。
setopt HIST_IGNORE_SPACE
、上記のコマンドの前にスペース文字を追加して、$ HISTFILEに書き込まれないようにすることができます。
以下のコメントでティムが指摘した のように、接頭辞LC_ALL = Cは「不正なバイトシーケンス」の失敗を防ぎます。
これを行うためのエレガントな方法があるかどうかはわかりませんが、同様の状況でログアウトし(zshがバッファを空にして履歴をファイルに書き込むことができます)、ログインして、最後に手動で編集しました~/.zsh_history
、「危険な」行を削除します。
ZshでHIST_IGNORE_SPACEオプションを使用する場合、コマンドの前にスペース「」を付けることができ、コマンドは履歴ファイルに記憶されません。よく使用するシークレットコマンドがある場合は、次の行に沿って何かを行うことができます。
http://unsyncopated.com/blog/index.php/2007/08/18/omitting-certain-commands-from-zshs-history/