コマンドが履歴に追加されないようにする方法はありますか?履歴ファイルに入れないようにしたいコマンドがありますが、メモリに保存されている履歴を検索するときに、そこに入れてもかまいませんが、それほど心配はありません。これを防ぐ方法はありますか?または、戻って履歴ファイルを編集する必要がありますか?.
pdate:これがシェル固有である可能性があることに気付きませんでした。私のシェルはzsh
です。シェルでこれを行う方法を他のシェルに知ってもらうために、他のシェルについて回答することを歓迎します。
ZSHで:
最初の挿入setopt HIST_IGNORE_SPACE
から~/.zshrc
。再度ログインした後、履歴に保存したくないコマンドの前にspace
を付けることができます。
ユーザーマニュアル から、次の3つのオプションを使用して、特定の行を履歴に含めないようにすることができます。
コマンドを繰り返し実行している場合は、シェルの履歴無視機能を使用できます。 sshを実行するsecret.server.comやFTPファイルの送信先などがあり、secret.server.comを保存する行を保存したくないとします。
bash
では、次のように設定します
HISTIGNORE="*secret.server.com*"
一方、zsh
ではパラメーターが呼び出されます
HISTORY_IGNORE="*secret.server.com*"
コロンで区切って複数のパターンをリストできます。各パターンは完全な入力行と照合されるため、*を含める必要がある場合があります。たとえば、次はfortune
を履歴から除外しますが、fortune -l
を保存します。
HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*:ytalk*:fortune"
HISTIGNOREを設定すると、リストしたパターンに一致するものは何も.bash_history
/.zsh_history
に保存されず、パターンに一致する場合、前のコマンドを通常呼び出す上矢印キーでさえ機能しません。
Bashでは、HISTCONTROL
変数を使用します。
HISTCONTROL=ignorespace
(またはHISTCONTROL=ignoreboth
)に設定します。今後、スペースで行を開始すると、履歴にされません。これにより、一部の構成ファイルにnot-to-be-beclosed-commandを含めることを回避できます。
そのような場合でも、たまたまスペースを追加するのを忘れて戻りたいと思っています。履歴のエントリを削除するには、history -d <index>
を使用します。index
は、history
コマンドで見つかった番号です(最初の列)。
単発の最も簡単な方法は
$ $Shell
$$ unset HISTFILE
$$ secret-command
$$ exit
$
どこ $
は初期シェルのプロンプトを表し、$$
はサブシェルのプロンプトを表します。これはbashとzshで機能します。 kshではHISTFILE=/notwritable
代わりに。重要なのは、コマンドが実行されたときではなく、履歴ファイルが書き込まれたときのHISTFILE
の値です。 Bash、ksh、およびzshは、終了時に履歴ファイルに書き込みます(zshは、構成によってはより頻繁に実行できます)。
または、bashまたはzshで特定のパターンに一致する行を無視することもできます(これは他の回答ですでにカバーされています)。
Zshのもう1つの可能性は
% fc -p
% secret-command
% fc -P
fc -p
現在の履歴リストをスタックにプッシュし、保存ファイルに関連付けられていない新しい履歴リストを開始します。 fc -P
保存されていない履歴リストをスタックからポップし、それを完全に忘れます。
プロセスの実行中、コマンドとその引数(および一部のシステムではその環境)がプロセステーブル(ps
出力)に表示されます。 rootは システムアカウンティングデータベース で過去のコマンドを確認でき、ユーザーの制御なしでより多くのログを記録できます。また、実行したコマンド(ファイルの変更時間など)を大まかに示すことができるあらゆる種類の法医学的な証拠が存在するでしょう。だから、あなたは断固とした盗聴者に対してプライバシーを手に入れません。