Entiendo que si escribe, ls *
en realidad se expande a ls a b c
cuando el actual tiene archivos directamente a
, b
y c
.
Me preguntaba si hay una manera de expandir esto antes de presionar enter. Similar a cómo funciona Ctrl + X , o la pestaña completa funciona.
Para aclararme
$ ls *
<press magic key>
$ ls a b c
de manera similar a:
$ ls ~/
<press tab>
$ ls /home/username
Pensé que había visto esto antes, pero podría haberme equivocado.
bash
autocomplete
globbing
bramp
fuente
fuente
Respuestas:
Puedes usar la
glob-expand-word
función, de manbash
:Agregue algo como esto a su
~/.inputrc
:Entonces,
$ ls *
seguido de Ctrl-Xse expandirá a$ ls a b c
, en su ejemplo.fuente
bind -p | grep 'C-x'
para verlos.C-x*
en mi sistema.En bash, se llama a la capacidad de línea de lectura
glob-expand-word
y está vinculada CtrlX*de forma predeterminada.fuente
Cuando está en
vi
modo (set -o vi
), la "llave mágica" es Esc*. Esto funciona con ambosbash
yksh
.fuente
Para usar estos podemos hacer
ls *
Ctrl+x *o
ls *
Esc *Expande líneas complicadas antes de presionar enter
fuente
Una alternativa a glob-expand-word (\ Cx *) es insertar-terminaciones (\ e *). Funciona sin un asterisco al final, pero también incluye otras terminaciones como archivos ocultos. He recuperado ambos en ~ / .inputrc:
glob-complete-word (\ eg) se puede usar para convertir, por ejemplo,
/System/Library/Launch*/*Finder
a/System/Library/LaunchAgents/com.apple.Finder.plist
.fuente