BashでCtrl-Rを使用して前のコマンドを検索すると、コマンドが空白で始まると機能しないのはなぜですか?前のコマンドと一致させることはできますか?
$ date
Fri Nov 23 ... 2018
(failed reverse-i-search)` date': cd database/
答え1
環境変数の値を確認してくださいHISTCONTROL
。値にignorespace
またはが含まれている場合、スペースでignoreboth
始まるコマンドはコマンド履歴に追加されません。
からman bash
:
HISTControl:コマンドが履歴リストにどのように格納されるかを制御するコロンで区切られた値のリスト。値のリストに空白の無視が含まれている場合、空白文字で始まる行は履歴リストに保存されません。無視された値のため、前の履歴エントリと一致する行は保存されません。 ignorebothの値はignorespaceとignoredupsの略です。削除された値を使用すると、現在の行と一致するすべての前の行が行を保存する前に履歴リストから削除されます。上記のリストにない値は無視されます。 HISTControl が設定されていない場合、または有効な値が含まれていない場合、シェルパーサーによって読み取られたすべての行は、HISTIGNORE 値に従って履歴リストに保存されます。複数行の複合コマンドの 2 行目以降の行はテストされず、HISTControl 値に関係なく履歴に追加されます。
答え2
これは意図的なものです。スペースはコマンドの解釈を変更しません。履歴は空白で始まるコマンドを無視するため、記録したくないコマンドを入力できます。これを実行している間、同じコンピュータ上の誰かがあなたを覗くことができるので、これはセキュリティメカニズムではないかもしれません。
再構成できると思います。 History 以下の bash マニュアルを参照してください。