文字列に一致するすべてのコマンドを履歴から削除する必要があります。私は試した:
$ history | grep searchstring | cut -d" " -f2 | history -d
-bash: history: -d: option requires an argument
$ history | grep searchstring | cut -d" " -f2 | xargs history -d
xargs: history: No such file or directory
$ temparg() { while read i; do "$@" "$i"; done }
$ history | grep searchstring | cut -d" " -f2 | temparg history -d
(no error, but nothing is deleted)
これを行う正しい方法は何ですか?
ベストアンサー1
このhistory
コマンドは、履歴ファイル$HISTFILE
(通常~/.history
はまたは~/.bash_history
)でのみ機能します。ファイルから行を削除すると、はるかに簡単になります。これはいくつかの方法で行うことができます。grep
1つの方法ですが、ファイルの読み込み中にファイルを上書きしないように注意する必要があります。
$ grep -v searchstring "$HISTFILE" > /tmp/history
$ mv /tmp/history "$HISTFILE"
別の方法は次のとおりですsed
。
$ sed -i '/searchstring/d' "$HISTFILE"