Есть ли способ в Bash вызвать аргумент предыдущей команды?
Я обычно делаю vi file.c
, а затем gcc file.c
.
Есть ли способ в Bash вызвать аргумент предыдущей команды?
Есть ли способ в Bash вызвать аргумент предыдущей команды?
Я обычно делаю vi file.c
, а затем gcc file.c
.
Есть ли способ в Bash вызвать аргумент предыдущей команды?
Вы можете использовать $_
или !$
для вызова последнего аргумента предыдущей команды.
Также 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"
Префикс !
используется для доступа к предыдущим командам.
Другие полезные команды:
!$
- последний аргумент предыдущей команды!^
- первый аргумент (после программы/встроенный/ script) из предыдущей команды!!
- предыдущая команда (часто произносится "bang bang" )!n
- номер команды n
от history
!pattern
- самое последнее совпадение команд pattern
!!:s/find/replace
- последняя команда, замените find
на replace
Если вам известен номер, указанный в истории для конкретной команды, вы можете в значительной степени принять любой аргумент в этой команде, используя следующие термины.
Используйте следующую команду, чтобы взять второй аргумент из третьей команды в истории,
!3:2
Используйте следующую команду, чтобы принять третий аргумент из пятой последней команды в истории,
!-5:3
Используя знак минус, вы просите его перейти от последней команды истории.
Да, вы можете использовать !$
для вызова последнего аргумента предыдущей команды.
! * запускает новую команду со всеми предыдущими аргументами.
ls /tmp
cd !*
#you are now in /tmp