Аналогично !$, вы используете !^для первого аргумента.
Будет
13
ааа ... * nix ... ты прекрасна ... каждый день я люблю тебя больше
jx12345
Как мы можем ссылаться на второй-последний аргумент предыдущей команды? например, если я дал echo tiger rabbit, как я могу сослаться tigerна следующую команду?
Чан Ким
3
Alt + .не работает в режиме vi. Просто к вашему сведению, для тех, кто был смущен здесь.
Брайан Маккатон
160
Если предыдущая команда имела два аргумента, как это
ls a.txt b.txt
и вы хотели первый, вы могли бы напечатать
!:1
дающий
a.txt
Или, если вы хотели оба, вы могли бы напечатать
!:1-2
дающий
a.txt b.txt
Вы можете расширить это на любое количество аргументов, например:
@RNA, я просто попробовал еще раз, чтобы убедиться, что я не включил опечатку, не могли бы вы предоставить немного больше подробностей (например, командная строка ubuntu, cygwin для windows? Сообщение об ошибке? Предыдущая строка?)
Роберт Гоулэнд,
Я использую GNU bash, версия 3.2.51 (1) -релиз (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. Сообщение об ошибке-bash: :1-2: bad word specifier
RNA
2
Я получаю то же самое, если в предыдущей строке не было двух аргументов. Например. Строка 1 ls a.txtСтрока 2ll !:1-2
Роберт Гоулэнд
ты прав. Это глупая ошибка, которую я сделал. Спасибо!
РНК
Также, чтобы получить все аргументы, !:^-$можно использовать или, конечно, аналогичный код в сочетании с числами.
816-8055
88
!!:nгде nпозиция 0 аргумента, который вы хотите.
Например:
echo 'one''two'# "one two"
echo !!:2# "two"
!Префикс используется для доступа предыдущих команд.
Другие полезные команды:
!$ - последний аргумент из предыдущей команды
!^ - первый аргумент (после программы / встроенного / скрипта) из предыдущей команды
!! - предыдущая команда (часто произносится как "bang bang")
!n- номер команды nотhistory
!pattern - самое последнее совпадение команд pattern
!!:s/find/replace- последняя команда, заменить findнаreplace
Ключи @Bucket идут через предыдущие команды, в то время как решение, предоставленное Антонио, позволяет проходить через предыдущие аргументы (только последний аргумент каждой предыдущей команды)
everyonesdesign
30
Если вам известно число, указанное в истории для конкретной команды, вы можете в значительной степени принять любой аргумент в этой команде, используя следующие термины.
Используйте следующий, чтобы получить второй аргумент из третьей команды в истории,
!3:2
Используйте следующий, чтобы взять третий аргумент из пятой последней команды в истории,
!-5:3
Используя знак минус, вы просите его перейти от последней команды в истории.
Ответы:
Вы можете использовать
$_
или,!$
чтобы вспомнить последний аргумент предыдущей команды.Также
Alt + .
может использоваться для вызова последнего аргумента любой из предыдущих команд.источник
!!:1
,!!:2
и т.д. (!!:0
сам предыдущую команду.) См gnu.org/software/bash/manual/bashref.html#History-Interaction!$
, вы используете!^
для первого аргумента.echo tiger rabbit
, как я могу сослатьсяtiger
на следующую команду?Alt + .
не работает в режиме vi. Просто к вашему сведению, для тех, кто был смущен здесь.Если предыдущая команда имела два аргумента, как это
и вы хотели первый, вы могли бы напечатать
дающий
Или, если вы хотели оба, вы могли бы напечатать
дающий
Вы можете расширить это на любое количество аргументов, например:
источник
-bash: :1-2: bad word specifier
ls a.txt
Строка 2ll !:1-2
!:^-$
можно использовать или, конечно, аналогичный код в сочетании с числами.!!:n
гдеn
позиция 0 аргумента, который вы хотите.Например:
!
Префикс используется для доступа предыдущих команд.Другие полезные команды:
!$
- последний аргумент из предыдущей команды!^
- первый аргумент (после программы / встроенного / скрипта) из предыдущей команды!!
- предыдущая команда (часто произносится как "bang bang")!n
- номер командыn
отhistory
!pattern
- самое последнее совпадение командpattern
!!:s/find/replace
- последняя команда, заменитьfind
наreplace
Больше информации об истории команд
источник
!!:s/find/replace
, вы также можете^find^replace
.!*
- все аргументы из предыдущей команды (после программы / встроенного / скрипта). Например:ls *.tmp *.cache rm !*
В командной строке вы можете нажать esc- .или alt+.
Он перебирает последний аргумент ваших предыдущих команд.
источник
↑
и↓
ключи к работе , а также.Если вам известно число, указанное в истории для конкретной команды, вы можете в значительной степени принять любой аргумент в этой команде, используя следующие термины.
Используйте следующий, чтобы получить второй аргумент из третьей команды в истории,
!3:2
Используйте следующий, чтобы взять третий аргумент из пятой последней команды в истории,
!-5:3
Используя знак минус, вы просите его перейти от последней команды в истории.
источник
! * запускает новую команду со всеми предыдущими аргументами.
источник
$_
вместо этого.Да, вы можете использовать
!$
для вызова последнего аргумента предыдущей команды.источник