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

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

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

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

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

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

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

325
30 июля '10 в 15:17
источник

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

ls a.txt b.txt

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

!:1

дает

a.txt

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

!:1-2

дает

a.txt b.txt

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

!:10-12
104
30 июля '10 в 16:10
источник

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

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

45
30 июля '10 в 20: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 в 21:59
источник

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

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

!3:2

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

!-5:3

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

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

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

14
30 июля '10 в 15:18
источник

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

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

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