コマンドの前に空白文字を追加すると、履歴から消えます。しかし、これはまたコマンドを編集して再実行することを困難にする。
メモリではなく永続レコードからのみ消えるようにスペース監査コマンドの弱いバージョンを作成するにはどうすればよいですか?
`command` ` command` I want
Saved to .bash_history: Yes No No
Can uparrow, edit and re-execute: Yes No Yes
ベストアンサー1
私の知る限り、bashにはそのような機能はありません。
考えられる解決策の1つは、コマンドをエイリアスまたは関数に入れ、コマンド履歴からエイリアス/関数定義を省略することです。エイリアス/関数は引き続き使用でき、その使用法は履歴ファイルに書き込まれますが、関数定義自体はメモリにのみ保持されます。たとえば、次のセッションでは、コマンドはmysql -p$(mysql_password)
履歴ファイルに書き込まれますが、コマンドのalias mysql_password=…
前にスペースがあるため、パスワード自体は履歴ファイルに書き込まれません。
$ HISTCONTROL=ignorespace
$ alias mysql_password=$(echo swordfish)
$ mysql -p$(mysql_password)
関数定義を編集するにはdeclare -f foo
(alias foo
エイリアスとして)を使用して印刷し、出力を使用して新しい関数を定義できます(外部エディタが役に立つかもしれません)。shell-expand-line
ライン読み取り機能)でなければなりませんC-M-e
。
またはzshに切り替えて設定します。HISTORY_IGNORE
変える。このパターンに一致するコマンドはメモリ履歴に保存されますが、履歴ファイルには書き込まれません。コマンドごとに決定することはできませんが、#dontstore
in commandやsetなどのタグを含めることができますHISTORY_IGNORE='\#dontstore'
。