В Bash есть несколько удобных операторов для повторения частей последней команды: !^ расширяется до первого аргумента предыдущей команды, например,
!$ расширяется до последний аргумент предыдущей команды, например $ echo one "two three"
one two three
$ echo !^
echo one
one
!*, расширяется до всех аргументов предыдущей команды, например $ echo one "two three"
one two three
$ echo !$
echo "two three"
two three
$ echo one "two three"
one two three
$ echo !*
echo one "two three"
one two three
(Насколько я понимаю, это синтаксический сахар для , !!:$ и !!:* соответственно, где !! - это обозначение события, которое расширяется до предыдущей команды, а ^, $ и * - это обозначения слов, см. Справочное руководство Bash или .)
Они часто весьма удобны. Но он становится еще более прохладным с помощью сочетаний клавиш:
!^ расширяется до первого аргумента предыдущей команды, например$ echo one "two three"
one two three
$ echo !^
echo one
one
!^ расширяется до первый аргумент предыдущей команды, например
Также можно нажать Alt + Ctrl + y, чтобы вставить первый аргумент предыдущей команды, как если бы вы написали !^ на эта точка.
(См. справочное руководство Bash или info readline.)
Я предпочитаю сочетания клавиш над операторами истории Bash, потому что я может видеть, что я вставляю, прежде чем я на самом деле выполняю команду. Однако, похоже, не существует ярлыка, который позволяет мне вставлять все слова предыдущей команды, то есть задачи, выполняющие !*. По крайней мере, я не мог его найти.