Je comprends que si vous tapez, ls *
il est réellement étendu au ls a b c
moment où le courant a directement des fichiers a
, b
et c
.
Je me demandais s'il y avait un moyen de développer cela avant d'appuyer sur Entrée. Similaire à la façon dont Ctrl + X fonctionne, ou la tabulation complète fonctionne.
Donc, pour être clair
$ ls *
<press magic key>
$ ls a b c
d'une manière similaire à:
$ ls ~/
<press tab>
$ ls /home/username
Je pensais avoir déjà vu ça mais je me suis peut-être trompé.
bash
autocomplete
globbing
bramp
la source
la source
Réponses:
Vous pouvez utiliser la
glob-expand-word
fonction, de l'hommebash
:Ajoutez quelque chose comme ça à votre
~/.inputrc
:Donc
$ ls *
suivi de Ctrl-Xse développera$ ls a b c
, dans votre exemple.la source
bind -p | grep 'C-x'
pour les voir.C-x*
sur mon système.En bash, la capacité readline est appelée
glob-expand-word
et est liée CtrlX*par défaut.la source
Lorsque vous êtes en
vi
mode (set -o vi
), la "clé magique" est Esc*. Cela fonctionne avec les deuxbash
etksh
.la source
Donc, pour les utiliser, nous pouvons faire
ls *
Ctrl+x *ou
ls *
Esc *Développez les lignes compliquées avant d'appuyer sur Entrée
la source
Une alternative à glob-expand-word (\ Cx *) est l'insertion-complétions (\ e *). Cela fonctionne sans astérisque à la fin, mais il inclut également d'autres compléments comme des fichiers cachés. J'ai rebondi à la fois dans ~ / .inputrc:
glob-complete-word (\ eg) peut être utilisé pour convertir par exemple
/System/Library/Launch*/*Finder
en/System/Library/LaunchAgents/com.apple.Finder.plist
.la source