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


230

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

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

私は後で自分自身を探して.bash_history、そこからものを削除することに気付いたので、最初にそこに記録するのを止めることができればはるかに簡単でしたか、少なくともそうでない場所に記録しようとすることができました許可され、それを記録しないことになります。


6
まあ、おそらくあなたはあなたの歴史が他の人に読まれるのは妄想的ですか?
スパラフーク

6
@Sparhawk:まあ、それは部分的にそれであり、パーティーは私が将来上向きになったときにおそらく致命的なメンテナンスコマンドを誤って実行したくない!:D

19
追加するだけで、自分を正当化する必要はありません「他の人に見られたくないものではない」。それも私にとって完全に正当な理由でしょう。(特に、誰もがあなたが「隠すもの」を持っていることに対して有罪に見えるようにしようとするこの時代と時代に)
-ereOn

2
2つのタブを開き、最初のタブで作業を行い、2番目のタブで作業を行い、最初のタブの前に2番目のタブを閉じた場合、最初のタブの履歴のみが書き込まれるようです.bash_history。(Ubuntu 15.04はターミナルを台無しにしました。幸運なことに、これはライブUSBです。)
Hitechcomputergeek

回答:


265

履歴に入れずにコマンドを実行します。

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

例: Spaceecho "Some secret text"

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


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

  • を実行するSpaceset +o historySpaceshopt -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


他の興味深い答え:


7
history -d行を削除するために使用する場合、これは行の内容を削除しますが、実行したという事実を削除することはできませんhistory -dset +o history実行する前に初めて使用する場合を除くhistory -d
AJFaraday

1
それはただ超差し止め論理を思い出させた、それはすべてです;)
AJFaraday

4
(OT)差止命令は、人々が何かを公開することを禁止する法的文書です。また、極度の差止命令により、公開することが拒否されたという事実を公開することも禁止されています。一部の論理的議論は、何らかの情報を公開する能力を否定されたということを公開できるかどうかを尋ねます。そして、それは循環的な議論になります。
AJファラデー

1
@Helioユーザーが「適切な」コピー方法を知っている方が良いと思います-特に誤ってテキストを選択してしまう場合。スペースの作り方がわかりません。スペースがあることをもっと明確にしたいのですが。[スペース]は少し不器用に見えます
ティム

2
このunset HISTFILEアプローチは、.bash_historyまだ記述されていないすべてのコマンドに対しても遡及的に機能します。
カスペルド

40

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

このコマンドを実行する前に端末を閉じないでください。


これはすべての履歴を削除しませんか?
ヘリオ

6
これは、その特定の端末セッションの履歴のみを削除します。
モイティルビスワ

28

shopt -uo history 最善を尽くすべきです。

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

で再度ログを有効にできますshopt -so history-sおよび-uはそれぞれ設定および設定解除されます)。

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


17

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

kill -9 $$

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


7
別名「頭の中で自分を撃つ」:)。これには、コマンドを書く前に何かをすることを覚えておく必要がないという利点があります。
グイド

3
私は、増分履歴書き込みでのzshを使用するので、私はこれが私の場合には動作しないだろう
ウェイン・ヴェルナー

13

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

unset HISTFILE

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

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

HISTFILE=$HOME/.bash_history

1
そして、現在のセッションでこれを逆転させ、継続させる簡単な方法はありますか?

@ParanoidPanda現在のセッションで元に戻すコマンドを追加しました。
ブルーニ

1
@ParanoidPanda:なぜHISTFILE現在のセッションで再設定するコマンドが必要なのですか?(シークレットコマンドを実行した後でも)変更を元に戻すと、終了時に変更が履歴に保存されます。
ヘリオ

@Helio:ああ、違う

1
@ ParanoidPanda、Helioは終了時に履歴が保存されるため、これに関しては正しいようです。私はそれを考えていませんでした。
ブルーニ

10

現在のシェルセッションの履歴行を変更できます。履歴をたどって(たとえば、UpまたはCtrl+を使用P)、実行せずに変更すると、変更されたバージョンの行のみが保存されます。任意の方法で変更できます。適切な選択肢には、Ctrl+ Uを使用Esc#して行を完全にブランクにするか、または使用して#コメント文字を先頭に配置することが含まれます。

行を実行せずに残すには、ヒットしないように注意してくださいReturnEnter)。私がしていることは、を介して歴史の最新の行に戻ることEsc>です。

(がEsc続く代わりに>、ほとんどの端末ではAlt、長押しして押すことができます。上記>Esc#提案にも同じことが言えます。)

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


6

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

 chattr +i .bash_history

5

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

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


1

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


1

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.