Estou começando a aprender algum Regex, portanto, uso este comando repetidamente:
grep pattern /usr/share/dict/american-english
Somente a parte com o padrão muda, então tenho que escrever a expressão longa " / usr / share / dict / american-english " repetidamente.
Alguém fez a observação de que é possível expandir um argumento de um comando a partir do histórico de comandos digitando combinações de caracteres enigmáticos em vez da expressão completa. Você poderia me dizer essas combinações de caracteres enigmáticas?
bash
command-line
command-history
history-expansion
Abdul Al Hazred
fonte
fonte
bash
,dash
,zsh
,mksh
, eksh
conchas (pelo menos, que eu saiba) tudo vai reconhecer o$_
parâmetro especial última arg (alguns fazê-lo apenas no modo interativo, embora) . Ele só se expande como uma variável:grep somepattern filename; grep otherpattern "$_"
. Você geralmente pode ver seu conteúdo na saída deset
.Respostas:
Você pode usar
<M-.>
(ou<Esc>.
se sua tecla Meta estiver sendo usada para outra coisa), ou seja, Meta-ponto (ou <esc> ponto), em que Meta é geralmente a tecla Alt, para recuperar o último argumento do comando anterior. Então, primeiro você digitariaE então, se você deseja grep para outra coisa, digite
Depois de digitar um espaço e depois Esc.(ou seja, primeiro pressione a tecla Esc, e depois a tecla de ponto):
Você também pode usar um dos seguintes:
Onde
!:2
e!$
significa "segundo argumento" e "último argumento", respectivamente.fonte
editing-mode vi
set você precisa adicionar uma ligação a~/.inputrc
deyank-last-arg
e para Zsh você precisa vincularinsert-last-word
...zsh
,bash
,ksh
,mksh
, oudash
conchas você pode apenas usar$_
. POSITIVAMENTE, que a ligação já esteja configurada paraESC _
quandoset -o vi
estiver em vigor._letter
ligação de alias - mas apenas porque ainda não consigo descobrir como fazê-la funcionar com bsdeditline
.Em geral (com Bash)
<Esc> N <Esc> .
, o N'th é o argumento do comando anterior para a linha de comando atual (onde N é baseado em 0).Para o segundo argumento do último comando, seria:
<Esc> 1 <Esc> .
Se você queria o terceiro argumento, então
<Esc> 2 <Esc> .
... e assim por diante.
Como outros já mencionaram, se você deseja o último argumento do comando anterior, há um atalho específico para isso em apenas:
<Esc> .
fonte