bashの履歴を取得して、スペースを前に付けて実行したコマンドのみを覚えてください!


10

空白で始まるターミナルで実行されたコマンドは、コマンド履歴ファイルに記録されません。しかし、逆を取得する方法はありますか?履歴はスペースで始まるもののみを記録する必要がありますか?

回答:


12

以下のようなコマンドを使用して、2つの変数(HISTIGNORE a HISTCONTROL)を設定することにより、デフォルトのUbuntu設定を元に戻すことができます。

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredups履歴の動作を変更して、重複する行のみを無視し、スペースで始まる行を無視しないようにします。(HISTCONTROL=重複を保持したい場合は、HISTCONTROLを空の文字列(を使用)に設定することもできますが、通常は不要です。)

HISTIGNORE='!( *)'履歴は、スペースで始まらないすべての行を無視します。( *)スペースで始まるすべての行に一致しますが、先頭!が一致を否定するため、スペースで始まらないすべてに一致します。そして、HISTIGNOREパターンと一致するものはすべて、履歴によって無視されます。(この後者のオプションでは、bashをextglobオン、オンで実行する必要がありますが、これshopt -s extglobはUbuntuのデフォルト設定です。)

これを永続的にする場合は、上記の2つのコマンドをに含めることを忘れないでください~/.bashrc


おかげで、それがまさに私が欲しかったものです。変更を.bashrc..に保存しました。bashが使用するすべてcdのs、lss、その他の日常的なコマンドを記録しないようにするために、それが必要でした。それらのいくつかのコマンドのために、私は歴史の中で必要なことを、私は今、接頭辞を使用することができます。..
精密

1
@rustyいくつかの些細なコマンドのみを除外したい場合はHISTIGNORE='ls*:cd*'lsまたはcdで始まるすべての行を履歴が無視するようにするのが良いかもしれません。他のコマンドでそのリストを拡張し:、コマンドの間に。ただし、「上矢印キー」でアクセスできるコマンド呼び出し機能もこの履歴を使用するため、無視するものを設定した場合、「」で無視されたコマンドを呼び出すことはできません。上矢印」。
鷹匠

SSHコマンドは無視したいが、ssh-copy-idまたはのようなコマンドは無視したかったssh-keygen。ではHISTIGNOREssh\ *他の無視されたコマンドに" " を含めました。スペース文字のエスケープは必須のようです。
user38537

2

" プレフィックスが空白の端末で実行されたコマンドは、コマンド履歴ファイルに記録されません "

はい、そうです。

端末履歴


1
それはbashの設定です;-)
Rinzwind '20

コマンドの前に空白を入れます。`sudo apt-get update`のように
Avinash Raj

HISTCONTROL変数の値は何ですか?
グレン・ジャックマン、2014

@AvinashRaj:ええ、「これは記録されません」というコマンドを参照してください。スペースを入れます(コマンドラインと履歴の両方に表示されます)。したがって、そのようには機能しません。多分それを構成することができます(HISTCONTROLを使用)。しかし、デフォルトではそうではありません。
MrVaykadji 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.