Как я могу вспомнить аргумент предыдущей команды bash? - PullRequest
262 голосов
/ 30 июля 2010

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

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

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

Ответы [ 7 ]

478 голосов
/ 30 июля 2010

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

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

143 голосов
/ 30 июля 2010

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

ls a.txt b.txt

, и вы хотели первый, вы могли бы набрать

!:1

, давая

a.txt

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

!:1-2

, давая

a.txt b.txt

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

!:10-12
70 голосов
/ 15 апреля 2016

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

Например:

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

echo !!:2
# "two"

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

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

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

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

60 голосов
/ 30 июля 2010

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

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

28 голосов
/ 23 апреля 2014

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

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

!3:2

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

!-5:3

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

15 голосов
/ 16 февраля 2017

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

ls /tmp
cd !*
#you are now in /tmp
15 голосов
/ 30 июля 2010

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

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