Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

ls a.txt b.txt

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

!:1

дает

a.txt

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

!:1-2

дает

a.txt b.txt

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

!:10-12

Ответ 3

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

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

Ответ 4

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

Например:

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

echo !!:2
# "two"

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

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

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

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

Ответ 5

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

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

!3:2

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

!-5:3

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

Ответ 6

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

Ответ 7

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

ls /tmp
cd !*
#you are now in /tmp