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

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

Я обычно делаю vi file.c следовал по gcc file.c.

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

7 ответов


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

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


если у предыдущей команды было два аргумента, как это

ls a.txt b.txt

и вы хотели первый, вы могли бы ввести

!:1

дав

a.txt

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

!:1-2

дав

a.txt b.txt

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

!:10-12

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

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


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

например:

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

echo !!:2
# "two"

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

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

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

дополнительная информация об истории команд


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

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

!3:2

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

!-5:3

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


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


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

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