Как я могу вспомнить аргумент предыдущей команды bash?

Есть ли способ в Bash вызвать аргумент предыдущей команды?

Я обычно делаю vi file.c, а затем gcc file.c.

Есть ли способ в Bash вызвать аргумент предыдущей команды?

+186
30 июл. '10 в 12:16
источник поделиться
7 ответов

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

Также Alt + . может использоваться для вызова последнего аргумента любой из предыдущих команд.

+325
30 июл. '10 в 12:17
источник

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

ls a.txt b.txt

и вы хотите первый, вы можете ввести

!:1

дает

a.txt

Или, если вы хотите оба, вы можете ввести

!:1-2

дает

a.txt b.txt

Вы можете расширить это на любое количество аргументов, например:

!:10-12
+104
30 июл. '10 в 13:10
источник

В командной строке вы можете нажать esc - . или alt + .

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

+45
30 июл. '10 в 17:35
источник

!!:n где n - позиция нулевого аргумента, основанная на 0.

Например:

echo 'one' 'two'
# "one two"

echo !!:2
# "two"

Префикс ! используется для доступа к предыдущим командам.

Другие полезные команды:

  • !$ - последний аргумент предыдущей команды
  • !^ - первый аргумент (после программы/встроенный/ script) из предыдущей команды
  • !! - предыдущая команда (часто произносится "bang bang" )
  • !n - номер команды n от history
  • !pattern - самое последнее совпадение команд pattern
  • !!:s/find/replace - последняя команда, замените find на replace

Подробнее о истории команд

+24
15 апр. '16 в 18:59
источник

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

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

!3:2

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

!-5:3

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

+20
23 апр. '14 в 17:51
источник

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

+14
30 июл. '10 в 12:18
источник

! * запускает новую команду со всеми предыдущими аргументами.

ls /tmp
cd !*
#you are now in /tmp
+3
16 февр. '17 в 18:30
источник

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