1. ホーム
  2. バッシュ

[解決済み】前のコマンドの引数を使用するには?

2022-03-26 07:50:01

質問

私は、以下のことを知っています。 エスケープ + . は、最後のコマンドの最後の引数を与えます。

しかし、私は最後のコマンドの最初の引数に興味があります。 そのためのキーバインドがあるのでしょうか?

同じように、最後のコマンドからn番目の引数を取得する汎用的な方法はないでしょうか。 私は、bashスクリプトの中で $0 , $1 などがありますが、これらはコマンドラインでは使えません。

また、前のコマンドの第0引数を繰り返し実行するのはどうでしょうか。 エスケープ + . ?

解決方法は?

と同じように M-. (メタドットまたはエスクドットまたはアルトドット)は、読み取り線機能 yank-last-arg , M-C-y (meta-control-y or esc-ctrl-y or ctrl-alt-y) は読み上げ機能です。 yank-nth-arg . を指定しない場合 n の場合、直前のコマンドの第1引数をヤンクします。

引数を指定するには、Escapeを押しながら数字を押すか、Altを押しながら数字を押してください。以下のようになります。 Alt - - で負の数を指定し始め、Altを離し、数字を押します(これは引数のリストの最後から数えます)。

次のコマンドを入力します。

$ echo a b c d e f g
a b c d e f g

次のプロンプトで、次のように入力します。 echo (次のスペースを含む)、次に

プレス Alt - Ctrl - y と表示されるようになりました。

$ echo a

を押さずに 入力 を実行します。

押す Alt - 3 オルト - Ctrl - y

プレス Alt - - 2 オルト - Ctrl - y

これでわかると思います。

$ echo ace

ちなみに echo を引数0として選択することで、行に表示されます。

プレス Alt - 0 Alt - Ctrl - y

編集する

オリジナルに追加した質問にお答えします。

を押すことができます。 Alt - 0 を繰り返し押してください。 Alt - . で前のコマンドをステップ実行します(arg 0)。同様に アルト - - を繰り返すと オルト - . を実行すると、前の次から最後の引数をステップ実行することができます。

履歴の特定の行に適切な引数がない場合、ベルが鳴らされます。

よく使う組み合わせがある場合は、1回のキー操作で実行できるようにマクロを定義することができます。この例では、前のコマンドの第2引数を呼び出すために Alt - シフト - Y . このキーストロークの代わりに、利用可能な任意のキーストロークを選択することができます。繰り返し押して、前のものをステップアップすることができます。

試しに、Bashのプロンプトでマクロを入力してみてください。

bind '"\eY": "\e2\e."'

永続化させるには、次の行を ~/.inputrc ファイルに記述します。

"\eY": "\e2\e."

残念ながら、これは arg 0 や負の引数番号では動作しないようです。