bash - 履歴で編集中の現在のコマンドの最初の引数を取得するか、それと似ていますか? [コピー]

bash - 履歴で編集中の現在のコマンドの最初の引数を取得するか、それと似ていますか? [コピー]

私はしばしばbashプロンプトにコマンドを書き、現在の行の前の引数を取得してコマンドの他の場所に配置しようとします。

簡単な例は、ファイル名を変更したい場合です。私はできます。

  • キーmv入力
  • 移動したいファイル名を入力し、~/myTestFileWithLongFilename.txt
  • 今度は再入力せずに、最初のパラメータに指定したファイルの拡張子を変更したいと思います。

最初の引数を自動補完するために、どういうわけか履歴やbashの補完を使用できますか?

$ mv ~/myTestFileWithLongFilename.txt ~/myTestFileWithLongFilename.md

もちろん、不完全なコマンドを実行して履歴に入れてから参照できることを知っています!$

答え1

可能ですが少し面倒です。 bashは!#入力された行全体を意味します。:この場合、後に引用する特定の単語を指定できます!#:1shell-expand-line組み込みのreadlineキーバインディングControl--Altを使用して拡張できますe

答え2

このコマンドに必要な入力量を減らすには、中mvかっこ拡張を使用できます。

mv ~/myTestFileWithLongFilename.{txt,md}

中括弧の拡張は~/myTestFileWithLongFilename.txt次のように拡張されます~/myTestFileWithLongFilename.md(正しい順序が重要です{txt,md})。

bash中括弧拡張は、コマンドラインに入力するかスクリプトに入力するかにかかわらず機能します。

中括弧拡張は、文字列と実際の中​​括弧で文字列がprefix{word1,word2,word3}suffix繰り返されるたびに3つの別々の単語を生成します。または、などの中括弧拡張内で範囲を使用することもできます。prefixsuffixwordNprefixword1suffixprefixword2suffixprefixword3suffix{1..4}{p..u}

答え3

対話的にalt+を押し1、次に alt+ .(ピリオド)を入力します。

繰り返しalt+は.コマンド履歴に戻り、最後のコマンド前のコマンドからトークン#1を抽出します。 (コマンド自体はトークン#0、 alt+です0

<token-number>alt-修飾子がない場合、alt-は次のことを.行います。最後前のコマンドの引数です。たとえばmkdir foo、/ cdAlt+。戻ってディレクトリを作成し、その中にCDを挿入します。

通常、最後のトークン(変更されたキーストローク)を除くすべての場合は、上向き矢印、Ctrl-w、またはAlt + Dを押してからCtrl-yを押して単語を削除し、再インポートして混乱しないようにします。マイレコードを混ぜ合わせ、下矢印とCtrl-yをもう一度押して、編集中のコマンドラインから目的の位置にドラッグします。ところで、これはbashにあります。

答え4

を使用set -o viしてEscキーを押しますbyw$p(スペースなどを追加する必要があるかもBしれませんW)。その後、修正してください。

関連情報