コマンドを履歴に残さない


33

私はbashを使用していますが、いくつかのコマンドが履歴に保持されないようにしたいと思います。

  • 次のコマンドに対してのみそれを行うことは可能ですか?
  • セッション全体でそれを行うことは可能ですか?

コマンドライン引数でパスワードを非表示にすることが目標である場合、psを介してパスワードが表示されることに注意してください
Benitok

回答:


36

そして、私は別の答えを思い出しました。これはあなたの質問に対する実際の答えです。

HISTCONTROLに「ignorespace」がある場合、bashはスペース文字で始まる行を記憶しません。現在のシェルの履歴にも表示されず、もちろん$ HISTFILEに保存されます。

〜/ .bashrcにHISTCONTROL = 'ignoreboth:erasedups'エクスポートしています

bashのmanページの詳細は次のとおりです。

ヒストコントロール
  コマンドの実行方法を制御する値のコロン区切りリスト
  履歴リストに保存されました。値のリストに含まれている場合
  ignorespace、スペース文字で始まる行は
  履歴リストに保存されました。ignoreupsの値は行を引き起こします
  保存されない前の履歴エントリと一致します。値
  ignorebothは、ignorespaceおよびignoreupsの省略形です。価値
  erasedupsにより、以前のすべての行が現在の行と一致します
  その行が保存される前に履歴リストから削除されます。
  上記のリストにない値は無視されます。HISTCONTROLが
  設定されていない、または有効な値が含まれていない
  シェルパーサーは、値に応じて履歴リストに保存されます
  HISTIGNOREの。複数行の2行目以降
  複合コマンドはテストされず、履歴に追加されます
  HISTCONTROLの値に関係なく。

1
スペーストリックの+1:D-
ペトリュス

19

グーグルから学んだ歴史の教訓は次のとおりです。

特定の文字列を無視するように履歴を設定できます。この例では、コマンドls、passwd、および文字スペースが前に付いたコマンドは無視しました。

export HISTIGNORE = "ls:passwd:"

セッションの履歴を無効にするには、次を発行できます。

HISTSIZE = 0をエクスポート

参照


7

履歴から最後のコマンドを削除するだけの場合は、を押してUp-arrow、続けてCtrl - U(行の先頭まで消去)を押してからUp-arrowもう一度押します。

このように履歴から個々の行を消去できます。上矢印または検索などを使用して、編集中の現在のコマンドラインにし、を押しCtrl - UてからUp-arrowまたはDown-arrowを押して、別の履歴行に移動します。

ある日、偶然にこれを発見しました。文書化されているかどうかはわかりません。

ただし、一般に、現在のシェルの履歴をまったく保存しないことで、次のように簡単になります。

HISTFILE=/dev/null

3

HISTFILE変数を設定解除できます。からman bash

  履歴ファイル
         コマンド履歴が保存されるファイルの名前(HIS-
         下のTORY)。デフォルト値は〜/ .bash_historyです。設定されていない場合、
         対話式シェルの場合、コマンド履歴は保存されません
         終了します。

これにより、シェルが終了する前にコマンドがローカルシェル履歴に表示されるのを防ぐことはできないと思います。



1

誰もこのメソッドを書いていないので、そうするつもりです。

history -d $((HISTCMD-1)) && history -d <command or number of command>

history -d 指定されたエントリを履歴から削除します。

HISTCMD次に実行されるコマンドのcommand_numberを格納します。したがって、(HISTCMD-1)は最後に実行されたコマンドを指します。

https://asciinema.org/a/dtxpuovhty0obhln50soqypt2の仕組みを示す短いbashムービーを作成しました

コマンドを実行した後、コマンド自体も削除されるため、矢印を上に移動してもコマンドは表示されないため、頻繁に使用する予定がある場合は、エイリアスを作成することをお勧めします。

alias hc='history -d $((HISTCMD-1)) && history -d $1'

その後、次のことができます。

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