При запуске команд иногда может потребоваться выполнить команду с аргументом из последней команды. Как вы можете это сделать?
Конечно, за исключением использования клавиш со стрелками и клавиш Del kbd>: & uarr; kbd> & larr; kbd > & LARR; KBD> & LARR; KBD> ... & LARR; KBD> & rarr; KBD> & rarr; KBD> < KBD> Del KBD> Del KBD> Del KBD> ... Del KBD> <new_command>
.
Есть несколько ярлыков, если вам нужны все аргументы из предыдущей команды или только последний аргумент.
<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/
Например, если вы выполните эту команду:
mkdir long_path_here/new_dir
, скорее всего, вы захотите перейти в недавно созданный каталог. Вы можете сделать это, используя следующие «ярлыки»:
cd
Esc kbd> . Kbd> - введите cd
и после нажатия Esc kbd>, за которым следует . kbd> (не в то же время). Если предыдущая команда не имеет аргументов, вы получите саму предыдущую команду. cd !*
- в этом случае вы получите все аргументы из команды previuos. Если предыдущая команда не имеет аргументов, вы ничего не получите. cd
Alt kbd> + . Kbd> - тип cd
и после нажатия Alt kbd> и . Kbd> (в в то же время). Фактически, используя этот способ и продолжая нажимать . Kbd> (не отпуская Alt kbd>), вы получите последний аргумент для каждой команды из истории. Если у команды нет аргументов, вы получите саму команду. В общем: <command>
Esc kbd> . Kbd> или <command> !*
или <command>
Alt kbd> + . < /kbd>.
Упомянутые !*
и !$
- хорошая вещь, но когда вам нужно немного отредактировать, ярлыки readline помогут вам!
Например, вместо бесчисленных & uarr; < /kbd>←←←...←→ & rarr; kbd> Del kbd> Del kbd> Del kbd> ... Del kbd> вы можете просто нажать < kbd> & uarr; kbd> Ctrl-a kbd> (перейти к началу строки) Alt + d kbd> (удалить до конца слова)
[ 116] Для получения дополнительной информацииman readline
и поиска Default key bindings
.
Чтобы получить n
-й аргумент из предыдущей команды, введите Alt kbd> + n
+ Alt kbd> _ kbd>. Например, после:
$ echo 1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
введите echo
, а затем Alt kbd> 2 kbd> Alt kbd> _ kbd> выдаст вам это в следующем приглашении:
$ echo 2
«Снимок экрана» после нажатия Alt kbd> 2 kbd>:
(arg: 2) echo
Вы можете повторять Alt kbd> _ kbd> несколько раз, чтобы получить n
-й аргумент предыдущих команд подряд.
Другая полезная идея - определить псевдоним r="fc -s"
. Затем вы можете выполнить подстановку команд:
$ echo 1
1
$ r echo=history
history 1
27755 history 1