bash履歴に「危険な」コマンドが記録されないように、.bashrc
ファイルに次の行を追加しました。
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
これはうまく機能しますが、副作用があります。マシンで実行されたコマンドの完全な履歴が表示されません。実験用に複数のマシンがあり、実行されたすべてのコマンドを表示できるようにしたいとします。bash internal history
を使用して実行されたコマンドを表示し、おそらく今日の日付のgrepを使用します。
history | grep Sep-28
私がしたいのは、「危険な」コマンドもログに記録#
することですが、行の先頭にa を付けて、誤って履歴からコマンドを実行しても、損害が発生しないようにすることです。
これが可能かどうかはわかりません。
更新と説明:
これが私にとって問題である主な理由は、私は通常複数の端末からマシンに接続されており、1つの端末で実行されたコマンドはすぐに他の端末の履歴に読み込まれるからです。これは以下によって達成されます
PROMPT_COMMAND="history -a; history -c; history -r"
私が2つの端末を開いていると想像してみましょう。1つでは、いくつかのcat /dev/foo > file.out
プロセスを実行しています。2番目では、で進行状況を確認しls -lAhF
ます。and (つまり、履歴の最後のコマンド)をls
押して繰り返します。すぐに最初のコマンドが終了するなどとして、歴史からの最後のコマンドは、もはやありませんが、。注意しないと、catを再び起動してfile.outを上書きします。UpENTERls
cat /dev/foo > file.out
私が達成したいのは、catコマンドの前にを付けて#
、実行されないようにすることです。しかし、私はまだ履歴に表示し、コメントを外すことで(長いコマンドの場合)再利用できます。
watch ls -lAhF
またはを使用できますwhile sleep 1; do ls -lAhf; done
。ファイルサイズを監視する代わりにpv /dev/foo > file.out
(ivarch.com/programs/pv.shtml)を使用できます。