Запустите команду с аргументом из последней команды

При запуске команд иногда может потребоваться выполнить команду с аргументом из последней команды. Как вы можете это сделать?

Конечно, за исключением использования клавиш со стрелками и клавиш Del : & uarr; & larr; & LARR; & LARR; ... & LARR; & rarr; & rarr; < KBD> Del Del Del ... Del <new_command>.

34
задан 16 May 2015 в 17:46

4 ответа

Есть несколько ярлыков, если вам нужны все аргументы из предыдущей команды или только последний аргумент.

  • Для всех аргументов: <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/
0
ответ дан 16 May 2015 в 17:46

Например, если вы выполните эту команду:

mkdir long_path_here/new_dir

, скорее всего, вы захотите перейти в недавно созданный каталог. Вы можете сделать это, используя следующие «ярлыки»:

  • cd Esc . - введите cd и после нажатия Esc , за которым следует . (не в то же время). Если предыдущая команда не имеет аргументов, вы получите саму предыдущую команду.
  • cd !* - в этом случае вы получите все аргументы из команды previuos. Если предыдущая команда не имеет аргументов, вы ничего не получите.
  • cd Alt + . - тип cd и после нажатия Alt и . (в в то же время). Фактически, используя этот способ и продолжая нажимать . (не отпуская Alt ), вы получите последний аргумент для каждой команды из истории. Если у команды нет аргументов, вы получите саму команду.

В общем: <command> Esc . или <command> !* или <command> Alt + . < /kbd>.

0
ответ дан 16 May 2015 в 17:46

Упомянутые !* и !$ - хорошая вещь, но когда вам нужно немного отредактировать, ярлыки readline помогут вам!

Например, вместо бесчисленных & uarr; < /kbd>... & rarr; Del Del Del ... Del вы можете просто нажать < kbd> & uarr; Ctrl-a (перейти к началу строки) Alt + d (удалить до конца слова)

[ 116] Для получения дополнительной информации man readline и поиска Default key bindings.

0
ответ дан 16 May 2015 в 17:46

Чтобы получить n -й аргумент из предыдущей команды, введите 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, а затем Alt 2 Alt _ выдаст вам это в следующем приглашении:

$ echo 2

«Снимок экрана» после нажатия Alt 2 :

(arg: 2) echo

Вы можете повторять Alt _ несколько раз, чтобы получить n -й аргумент предыдущих команд подряд.

Другая полезная идея - определить псевдоним r="fc -s". Затем вы можете выполнить подстановку команд:

$ echo 1
1
$ r echo=history
history 1
27755  history 1
0
ответ дан 16 May 2015 в 17:46

Другие вопросы по тегам:

Похожие вопросы: