0

バックグラウンド:

bash のよく知られた機能は、"alias" コマンドです。

これにより、ユーザーは、頻繁に使用されるコマンドや入力するのが煩わしいコマンドを「省略」して、コマンド全体を自分で入力し、bash プロンプトで ENTER を押したかのように実行することで、キーストロークを節約できます。

問題:

エイリアス コマンドは、ユーザーがエイリアスを入力した直後に、エイリアスに対応するコマンドを自動的に実行します。ただし、ユーザーがこの動作を望まない場合もあります。

質問:

「空白を埋める」エイリアスコマンドを作成するbashの方法はありますか? これは、Enter キーを押した後にコマンドを自動的に実行しない代わりに、ユーザーに引数を入力する機会を与えるエイリアスになります。

避けるべき落とし穴:

reverse-i-search の除外: bash の「reverse-i-search」機能は、この「穴埋め」機能要求をサポートしていますが、(明らかに) ユーザーが事前にコマンドを指定することはできません。代わりに、履歴を検索するだけです。これは、望ましい動作ではない可能性があります。

関数の除外bash 関数を使用すると、この機能要求を満たすことができますが、ユーザーが関数を作成したくない理由がある場合があるため、これは望ましい解決策ではない可能性があります。

4

2 に答える 2

2

readline2 番目 (および 3 番目と 4 番目) の読み取りでは、 functionを探していると思いますalias-expand-line。デフォルトではどのキーにもバインドされていませんが、より一般的なものshell-expand-lineは事前に -- にバインドされてMetaいます。コマンド ラインを入力し、 の代わりにそれを押すと、現在のコマンド ラインがシェルによって展開されますが、実行されません。ControleEnter

完全な展開 (パラメーター、履歴など) ではなく、エイリアスのみが必要な場合は、コマンドを使用して- - (またはその他のキーの組み合わせ) をbindにバインドできます。これにより、エイリアスのみが展開されます。MetaControlealias-expand-line

展開したら、必要に応じて行を編集できます。また、Control- x Control-を使用eして現在のコマンド ラインを開いて、$EDITORより広範な編集を行うこともできます。

于 2013-05-09T18:56:31.613 に答える
0

逆検索を除外

これを使用して、正しい一致を見つけたら、 を押しますEsc。これにより、実行前にコマンドを編集できます。

于 2013-05-09T18:26:14.920 に答える