Comment développer en ligne un caractère générique en bash?

10

Je me suis souvenu que bash pouvait faire ce qui suit:

Supposons qu'il y ait 3 fichiers: a, b, c dans le répertoire courant, lorsque j'entre:

$> somecommand *

puis appuyez sur une touche ou des combinaisons de touches ou une séquence de touches, le caractère générique * en ligne s'est développé comme suit:

$> somecommand a b c

mais je ne me souviens pas et je ne peux pas rechercher sur Google la séquence de touches! Aidez-moi!

marstone
la source
5
TryCtrl-X *
Stéphane Chazelas

Réponses:

7

Si ce n'est pas le cas, vous devrez vous lier glob-expand-wordà une séquence de touches. Typiquement en ajoutant quelque chose comme:

"\C-x*": glob-expand-word

à .inputrc.

Pour vérifier le problème de statut actuel, quelque chose comme:

bind -P | grep glob-expand-word

Où le résultat pourrait être:

glob-expand-word can be found on "\C-x*".

Ce qui signifierait:

Ctrl-x*

Cela fonctionne également très probablement:

Ctrl-xCtrl-*


Jetez un oeil à bind -Pet manuel (s) pour d'autres subtilités.

Runium
la source
3

Il semble que vous cherchiez à compléter la liste. Dans la page de manuel de bash:

 COMP_TYPE
     Set to an integer value corresponding to the type of completion
     attempted  that caused a completion function to be called: TAB,
     for normal completion, ?, for listing completions after succes
     sive  tabs, !, for listing alternatives on partial word comple
     tion, @, to list completions if the word is not unmodified,  or
     %,  for  menu  completion.   This variable is available only in
     shell functions and external commands invoked by  the  program
     mable completion facilities

Cela dépend donc de la fonction d'achèvement pour une commande comment cela est terminé.

Anthon
la source
2

Si vous utilisez set -o vien bash, Ctrl-X*cela ne fonctionne pas.

En set -o vimode, vous devez utiliser à la Esc*place.

JohnGH
la source
1
Il convient de noter qu'une fois en mode normal, <C-X>*cela fonctionnera, mais le <C-X>est superflu et ne fait rien. ( <C-X>ne décrémente pas comme dans vi.) Si vous êtes en mode insertion, vous devez d' <Esc>abord utiliser .
wchargin
C'est bien. Comment s'appellent-ils? raccourcis clavier bash? Y a-t-il une documentation où je peux trouver plus de ces raccourcis clavier?
wisbucky
2
@wisbucky: Un peu en retard, mais pour quiconque, GNU Readline en est responsable. Lorsque vous avez une journée lente, lisez la section COMMANDES D'ÉDITION de man readline. J'utilise Bash depuis 10 ans et j'en apprends encore de nouveaux.
Soren Bjornstad