コマンドが履歴に追加されるのを防ぐ方法はありますか?

コマンドが履歴に追加されるのを防ぐ方法はありますか?

コマンドが履歴に追加されるのを防ぐ方法はありますか?私のヒストリファイルにアーカイブしたい命令がありますが、メモリに保存されたヒストリを検索してみるとそれほど問題ではありませんが、そこにいるかはあまり気になりません。これを防ぐ方法はありますか?それとも、戻って自分の履歴ファイルを編集する必要がありますか?

修正する:私はこれがシェルに固有のものかもしれないことを知りませんでした。私のシェルはですzsh。人々が自分のシェルでこれを行う方法を知るために、他のシェルに答えることができます。

答え1

ZSHから:

まずsetopt HIST_IGNORE_SPACE~/.zshrc次のspaceコマンドまで消えないので、その行をしばらく再利用または編集できます。

~からユーザーマニュアル、次の3つのオプションを使用して、特定の行がレコードにまったく入らないようにすることができます。

  • HIST_IGNORE_SPACE空白の前に付いたコマンドを保存しないでください
  • HIST_NO_STORE保存されない歴史FC-1)注文する
  • HIST_NO_FUNCTIONS関数定義を保存しない

答え2

このコマンドを繰り返し実行すると、シェルの履歴を無視する機能を使用する必要があります。 Secret.server.com、FTPファイルなどへのSSHアクセス権がありますが、Secret.server.comを参照する行を保存したくないとします。

bash設定する前に

HISTIGNORE="*secret.server.com*"

そしてzshパラメータから

HISTORY_IGNORE="*secret.server.com*"

HISTIGNOREコロンで区切られた複数のパターンを含めることができます。HISTORY_IGNORE単一のパターンを指定しますが、パターンにはパイプで区切られた代替パターンを含めることができます。各パターンは以下に関連しています。すべての入力ラインしたがって、*を含める必要があるかもしれません。たとえば、以下はfortune履歴から除外されますが、保存されますfortune -l

HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*|ytalk*|fortune"

HISTIGNOREを設定すると、リストされたパターンと一致する項目は.bash_history/に保存されず、.zsh_historyパターンと一致すると上矢印キー(通常は前のコマンドを呼び出す)も機能しません。

答え3

BashではこのHISTCONTROL変数を使用してください。

HISTCONTROL=ignorespace(または)に設定してくださいHISTCONTROL=ignoreboth。これからはスペースで始める、そうですいいえ歴史の中に保存してください。これにより、特定の構成ファイルに文書化されていないコマンドが含まれないようにすることができます。

それにもかかわらず、スペースを追加することを忘れて、戻ってきたいです。履歴から項目を削除するには、およびhistory -d <index>コマンドindexで見つかった数字history(最初の列)を使用します。

答え4

最も簡単なワンタイム方法は次のとおりです。

$ $SHELL
$$ unset HISTFILE
$$ secret-command
$$ exit
$

これは$初期シェルのプロンプトを表し、サブシェルの$$プロンプトを表します。これはbashとzshの両方で機能します。 kshでは、代わりにこれを行う必要がありますHISTFILE=/notwritable。重要なのは、HISTFILEコマンドが実行されたときではなく、履歴ファイルが書き込まれたときの値です。 Bash、ksh、およびzshは終了時に履歴ファイルに書き込みます(zshは設定によってはこれをより頻繁に実行できます)。

あるいは、特定のパターンに一致する行を無視するようにbashまたはzshに指示することもできます(他の回答ですでにこれに対処しています)。

zshのもう一つの可能​​性は

% fc -p
% secret-command
% fc -P

fc -p現在の履歴リストをスタックにプッシュし、保存したファイルとは別に新しいリストを起動します。fc -P保存されていないレコードをスタックから取り出し、完全に忘れてください。

プロセスが実行されると、コマンドとその引数(および一部のシステムではその環境)がプロセステーブル(ps出力)に表示されます。ルートは過去のコマンドを見ることができますシステム会計データベース、ユーザーの制御なしでより多くのロギングを実行できます。また、実行したコマンド(ファイルの変更時間など)を大まかに示すさまざまな法医学的証拠があります。したがって、あなたは断固たる盗聴者からプライバシーを取得できません。

関連情報