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

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

Конечно, кроме использования клавиш со стрелками и клавиш Del: & amp; & larr; & larr; & larr; ... & larr; & rarr; & amp; & delta; DelderDelDel ... Del [ f1].

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

3 ответа

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

Для всех аргументов: <command> !* Только для последнего аргумента:

Примеры:

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

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

Если вам нужен один аргумент из списка аргументов из предыдущей команды, вы можете использовать <command> !!:<argNumber>

Example :

ls foo/ bar/ baz/
ls !!:2 # Gives the results of ls bar/
ls foo/ bar/ baz/
ls !!:1 # Gives the results of ls foo/
26
ответ дан 24 May 2018 в 21:21
  • 1
    Вам нужна только одна ! в одной версии arg, например, !:2. Предполагая bash по умолчанию. – belacqua 7 June 2013 в 04:31
  • 2
    Вы также можете использовать !^ вместо !:1. – Paddy Landau 11 June 2013 в 20:48

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

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

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

5
ответ дан 24 May 2018 в 21:21

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

$ echo 2

«Снимок экрана после того, как вы нажмете 2 2:

(arg: 2) echo

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

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

$ echo 1
1
$ r echo=history
history 1
27755  history 1
3
ответ дан 24 May 2018 в 21:21

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

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