Я начинаю изучать некоторые Regex, поэтому я использую эту команду несколько раз:
grep pattern /usr/share/dict/american-english
Изменяется только часть с шаблоном, поэтому мне приходится снова и снова писать длинное выражение " / usr / share / dict / american-english ".
Кто-то сделал замечание, что можно расширить аргумент команды из истории команд, введя загадочные комбинации символов вместо полного выражения. Не могли бы вы рассказать мне эти загадочные комбинации символов?
bash
command-line
command-history
history-expansion
Абдул Аль Хазред
источник
источник
bash
,dash
,zsh
,mksh
, иksh
снаряды (по крайней мере, что я знаю о) будет все признают$_
последний ARG специальный параметр (некоторые делают это только в интерактивном режиме, хотя) . Это просто расширяется как переменная:grep somepattern filename; grep otherpattern "$_"
. Обычно вы можете увидеть его содержимое в выводеset
.Ответы:
Вы можете использовать
<M-.>
(или<Esc>.
если ваш Meta-ключ используется для чего-то еще), то есть Meta-dot (или <esc> dot), где Meta обычно является клавишей Alt, чтобы вызвать последний аргумент предыдущей команды. Итак, сначала вы наберетеИ затем, если вы хотите использовать grep для чего-то другого, вы наберете
После ввода пробела и затем Esc.(т. Е. Сначала нажмите клавишу выхода, а затем клавишу точки):
Вы также можете использовать любой из следующих:
Где
!:2
и!$
означают «второй аргумент» и «последний аргумент» соответственно.источник
editing-mode vi
set вам нужно добавить привязку для~/.inputrc
for,yank-last-arg
а для Zsh - bindinsert-last-word
...zsh
,bash
,ksh
,mksh
, илиdash
оболочек вы можете просто использовать$_
. ТОЛЬКО это связывание уже установлено, хотя,ESC _
когдаset -o vi
действует._letter
связывания псевдонимов - но только потому, что я до сих пор не могу понять, как заставить его работать с bsdeditline
.В общем случае (с помощью Bash)
<Esc> N <Esc> .
вызовет N-й аргумент из предыдущей команды в текущей командной строке (где N - это 0).Для второго аргумента из последней команды это будет:
<Esc> 1 <Esc> .
Если вы хотели третий аргумент, то
<Esc> 2 <Esc> .
... и так далее.
Как уже упоминали другие, если вы хотите последний аргумент из предыдущей команды, есть специальный ярлык для этого просто:
<Esc> .
источник