最後のコマンドの引数を使用してコマンドを実行します


34

コマンドを実行するとき、最後のコマンドの引数を指定してコマンドを実行する必要がある場合があります。どうすればこれができますか?

もちろん、矢印キーとの使用以外Delのキーを:... DelDelDel... Del<new_command>

回答:


45

たとえば、次のコマンドを実行すると:

mkdir long_path_here/new_dir

ほとんどの場合、最近作成したディレクトリに移動します。次の「ショートカット」を使用してこれを行うことができます。

  • cd Esc.- cdを押してからEsc続けて押します.(同時にではありません)。前のコマンドに引数がない場合、前のコマンド自体を取得します。
  • cd !*-この場合、previuosコマンドからすべての引数を取得します。前のコマンドに引数がない場合、何も取得しません。
  • cd Alt+ .-タイプcdとプレスの後Alt.(同じ時間で)。実際、この方法を使用して.(リリースせずにAlt)を押し続けると、すべてのコマンドの最後の引数が履歴から取得されます。コマンドに引数がない場合、コマンド自体を取得します。

一般的に:<command> Esc.または<command> !*または<command> Alt+ .


うわー、あなたは私に私が今後数年間で消耗してしまっていた何百時間も保存
pranavk

32

前のコマンドのすべての引数、または最後の引数だけが必要な場合は、いくつかのショートカットがあります。

  • すべての引数について: <command> !*
  • 最後の引数のみ: <command> !$

例:

ls foo/ bar/
ls !* # Gives the results of ls foo/ bar/

ls foo/ bar/
ls !$ # Gives the results of ls bar/

前のコマンドの引数リストから単一の引数が必要な場合は、次を使用できます。 <command> !!:<argNumber>

例:

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/

2
!単一のargバージョンには1つだけが必要です(例:)!:2。デフォルトのbashを想定しています。
ベラク

3
!^代わりに使用することもできます!:1
水田ランダウ

7

言及され!*!$いるのは良いことですが、少し編集する必要がある場合は、readlineショートカットを編集してください。

たとえば、無数の... DelDelDel...の代わりに、(行の先頭までジャンプ)(単語の末尾まで削除)を Del押すだけです Ctrl-aAlt+d

詳細についてはman readline、を検索してくださいDefault key bindings


4

n前のコマンドからth引数を取るには、Alt+ n+と入力しますAlt_。たとえば、後:

$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

echo続けて入力するAlt2Alt_と、次のプロンプトでこれが表示されます。

$ echo 2

ヒットした後の「スクリーンショット」Alt2は次のとおりです。

(arg: 2) echo

Alt_複数回繰り返してn、前のコマンドのth引数を連続して取得できます。

別の便利なアイデアは、aliasを定義することr="fc -s"です。次に、コマンドの置換を実行できます。

$ echo 1
1
$ r echo=history
history 1
27755  history 1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.