bash履歴検索(Ctrl-R)にオートコンプリートを適用するには?

bash履歴検索(Ctrl-R)にオートコンプリートを適用するには?

コンテキスト

Bashに事前に入力してください:良い

Bashシェルが使用中の場合(初期化、コマンドの実行)、次のことができます。次のプロンプトの前に入力してください。

シェルがプログラムを開始すると、プログラムはキーストロークをキャプチャしますが、実行中のプログラムがない場合、またはプログラムが入力をキャプチャしない場合、入力した内容はプロンプトの後にシェルに挿入されます。

たとえば、と入力してsleep 5Enterを押し、次に入力してlsEnterを押します。 ls省電力モードが完了した後に実行されます。実際の生活では、他の多くのプログラムに置き換えlsられます。これは典型的なcprsync事前に入力してください入力する内容を事前に知ることで時間が大幅に節約されます。

複数のコマンドをコピーして貼り付けて、順番に実行できるので本当に良いです。

実際のユースケースには、シェルの初期化に時間がかかる状況が含まれます。何らかの理由でコンピュータが遅くなったり、シェルが遅いネットワークリンクにある可能性があります。

Bashで履歴を検索:良い

Bashプロンプトで入力してCtrl-R履歴を検索できます。

これにより、以前のコマンドラインまたはコマンドラインシーケンスのいくつかを再利用するときに貴重な時間を節約できます。を押してCtrl-R、検索したいコマンドの一般的な文字をいくつか入力し、Ctrl-Oそこに記録されているコマンドを再生するのに必要なだけ押します。

履歴検索に事前に入力する:どのように?

しかし、限界があります。私は上記の順序を頻繁に使用します。たとえば、Ctrl-R lsシェルプロンプトが実際に表示される前に入力すると、そのCtrl-R部分は無視されますがls表示されます。

その結果、 を入力する前にシェルプロンプトが表示されるのを待つ必要があるため、Ctrl-R時間を節約できます。

質問

Ctrl-R事前に入力してもクレジットを受け取る方法はありますか?

ベストアンサー1

あなたのCtrl- はrカーネルベースのターミナルクッキーライン処理エンジンによってブロックされています。

を実行すると、sleep端末はベーキングモードになり、カーネルベースのttyラインエディタが動作していることを意味します。 ttyラインエディタは基本的なコマンドライン編集をサポートしています。消去キー(通常Ctrl- h(バックスペース)またはに設定されているDel)と終了キー(通常Ctrl-U)は、このモードで使用できる最もよく知られている特別な編集キーです。この行エディタは便利です。 readlineやcurseを使用しない対話型ユーティリティを使用して、端末から入力行全体を読み取ることができ、ユーザーは入力を変更できます。

ただし、このモードでは別の特殊キーが有効になっています。stty -a名前の下の他のキー設定と一緒に出力に表示できますrprnt。デフォルト設定は... you推測できます... Ctrl- r。このキーの機能は、他のターミナル出力によってコマンドラインが破損したり、誤ってソートされた場合に現在のコマンドラインを再描画することです。

これを防ぐには、を使用して機能を無効にできますstty rprnt undef

Ctrl個人的には、私は再描画命令として解釈されることに慣れており、rそうしようとするたびにbash何か他のことをするという事実に驚きました!

おすすめ記事