Eu entendo que se você digitar ls *
na verdade é expandido para ls a b c
quando a corrente tem diretamente os arquivos a
, b
e c
.
Fiquei me perguntando se existe uma maneira de expandir isso antes de pressionar enter. Semelhante à maneira como Ctrl + X funciona, ou a conclusão completa da tabulação .
Então, para me deixar claro
$ ls *
<press magic key>
$ ls a b c
de maneira semelhante a:
$ ls ~/
<press tab>
$ ls /home/username
Eu pensei que já tinha visto isso antes, mas eu poderia estar enganado.
bash
autocomplete
globbing
borda
fonte
fonte
Respostas:
Você pode usar a
glob-expand-word
função, do manbash
:Adicione algo assim ao seu
~/.inputrc
:Então,
$ ls *
seguido por Ctrl-Xirá expandir para$ ls a b c
, no seu exemplo.fonte
bind -p | grep 'C-x'
para vê-los.C-x*
meu sistema.No bash, o recurso de linha de leitura é chamado
glob-expand-word
e vinculado CtrlX*por padrão.fonte
Quando você está no
vi
modo (set -o vi
), a "chave mágica" é Esc*. Isso funciona com ambosbash
eksh
.fonte
Então, para usá-los, podemos fazer
ls *
Ctrl+x *ou
ls *
Esc *Expanda linhas complicadas antes de pressionar Enter
fonte
Uma alternativa para glob-expand-word (\ Cx *) é inserção-conclusão (\ e *). Ele funciona sem um asterisco no final, mas também inclui outras conclusões, como arquivos ocultos. Eu recuperei ambos em ~ / .inputrc:
glob-complete-word (\ eg) pode ser usado para converter, por exemplo,
/System/Library/Launch*/*Finder
para/System/Library/LaunchAgents/com.apple.Finder.plist
.fonte