web-dev-qa-db-ja.com

端末「シークレットモード」?

私はターミナルを頻繁に使用し、時にはコマンドを実行していますが、これは他の人に見られたくないものではありませんが、誤って矢印を押して誤って実行すると多くのトラブルを引き起こすコマンドが増えます。

だから、特定のコマンドの実行時に履歴の記録を停止し、実行した後にのみ記録を開始できるターミナルの「シークレットモード」があるのか​​、それを作成できるのか疑問に思っていますもう一度履歴の記録を開始し、「シークレットモード」を終了するか、単にターミナルを再起動しますか?

後で.bash_historyからデータを削除することに気付いたので、そもそもそこで記録を停止するか、少なくともどこかに記録しようとしたらもっと簡単だったはずです。許可されず、記録しないだけになります。

230
user364819

コマンドを履歴に入れずに実行する:

コマンドの前にスペースを入れるだけです。 Bashは、先頭にスペースが追加されたコマンドを無視します。

例: Spaceecho "Some secret text"

注:これは、HISTCONTROL変数がignorespaceまたはignorebothに設定されている場合にのみ機能します。


履歴を一時的に無効にします:

  • 走る Spaceset +o historyまたは Spaceshopt -uo historyは履歴を無効にします。
  • set -o historyまたはshopt -so historyを実行して、再度有効にします。

現在のセッションの履歴を無効にします(セッションからのコマンドを覚えていません):

unset HISTFILE

注:コマンドを押すと表示されます Up ターミナルを閉じるまで。


履歴からコマンドを削除します:

走る Spacehistory | grep "part of your secret command"

以前に実行されたコマンドのリストが次の形式で表示されます。

casa@portátil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

コマンドの左側でエントリ番号を選択します。でコピーできます Ctrl+Shift+C

走る Spacehistory -d <number>ここで、<number>は、エントリを削除するエントリ番号です。
その番号を貼り付けることができます Ctrl+Shift+V


その他の興味深い回答:

264
Helio

作業後にコマンドhistory -cwを追加することにより、特定の端末セッションの履歴を簡単に削除できます。コマンドを実行する前に端末を閉じないでください。

40
Moithil Biswas

shopt -uo history が最善を尽くすはずです。

HISTFILE(など)変数を削除しても、 Up 履歴が記録されますが、ディスクにプッシュされません。これはあなたにとってポジティブなことかもしれませんし、そうでないかもしれませんが、あなたがそれについて言及したならば、私はあなたがより良いものを望んでいると思います。 shopt履歴設定を変更すると、履歴メカニズム全体がトリガーされなくなります。

shopt -so history-sおよび-uがそれぞれ設定および設定解除されます)を使用して、ロギングをオンに戻すことができます。

コマンド自体はおそらくログに記録されるため、変数をクリアする前に履歴に追加されるのを停止するためのスペースを先頭に追加してください。

28
Oli

履歴ファイルにログを記録せずに現在のシェルを強制終了する別の方法は次のとおりです。

kill -9 $$

これにより、bash(およびおそらく他のシェルも)自身にSIGKILLシグナルを送信し、その場でそれを殺し、ディスクに何かを書き込むことを防ぎます。

17
dolt

現在のセッションのコマンド履歴を一時的に無効にするには、HISTFILE環境変数を一時的に設定解除できます。

unset HISTFILE

セッションがアクティブな間は、通常どおり履歴にアクセスできますが、ディスクには保存されません。

同じセッションでリバースするには(すべての変更が記録されます)

HISTFILE=$HOME/.bash_history
13
Bruni

現在のシェルセッションの履歴行を変更できます。歴史をさかのぼる場合(例: Up または Ctrl+P)、行を変更せずに実行せずに、変更されたバージョンの行のみが保存されます。任意の方法で変更できます。適切な選択には、使用が含まれます Ctrl+U 行を完全に空白にするか、 Esc# #コメント文字を先頭に配置します。

行を実行せずに残すには、ヒットしないことを忘れないでください Return (Enter)。私がしていることは、履歴の最新の行に戻ることです Esc>

(の代わりに Esc に続く >、ほとんどの端末で保持できます Alt を押す >;同じことが Esc# 上記の提案。)

注:この方法では、以前のセッションのエントリを永続的に変更することはできません。これらの変更は、セッションの終了時にHISTFILEに適用されません。

10
echristopherson

.bash_historyを読み取り専用にすることもできます。最初にファイルを空にしてから実行します:

 chattr +i .bash_history
6
Webtm

画面セッションで機密コマンドを実行し、完了したらセッションを破棄できます。

または、そのスクリーンセッションを存続させたまま、切り離して、実際には別の方法で危険なコマンドに上矢印を使用できるようにする場合にのみアクセスできます。

5
keag

tmuxscreenなどの端末マルチプレクサを使用することもできます。したがって、tmuxまたはscreenの履歴は保存されません。

1
vusan

個人的にはmkshを使用しており、このシェルにはデフォルトで履歴ファイルがありません。つまり、mkshdash(デフォルトで付属)などの代替シェルを起動して、ユーザーに見せたくないコマンドを実行し、終了したら終了できます。 bash履歴には、代替シェルを起動したことが記録されるだけです。

1