Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Avoir une auto-complétion "à la Windows" dans le shell

9 réponses
Avatar
Francois Lafont
Bonjour à tous,

Je suis sous Ubuntu 9.04 et le shell de mon terminal est
bash. Est-il possible d'avoir une auto-complétion qui fasse
ce qui suit ?

Si je suis dans un répertoire qui contient tous ces fichiers

aaa
abb
acc

alors quand je fais

$ ls a<puis TAB>

au lieu de m'indiquer les 3 fichiers possibles (aaa, abb, et
acc), le shell me complète la commande directement en

$ ls aaa

Si j'appuie à nouveau sur TAB

alors le shell m'affiche

$ ls abb

Si j'appuie encore sur TAB, j'ai alors

$ ls acc

Au prochain coup, je retombe sur

$ ls aaa

et ainsi de suite...

Merci d'avance.


--
François Lafont

9 réponses

Avatar
CSM 'illovae' Seldon
Francois Lafont writes:

Bonjour à tous,

Je suis sous Ubuntu 9.04 et le shell de mon terminal est bash. Est-il
possible d'avoir une auto-complétion qui fasse ce qui suit ?

Si je suis dans un répertoire qui contient tous ces fichiers

aaa
abb
acc

alors quand je fais

$ ls a<puis TAB>

au lieu de m'indiquer les 3 fichiers possibles (aaa, abb, et acc), le
shell me complète la commande directement en

$ ls aaa

Si j'appuie à nouveau sur TAB

alors le shell m'affiche

$ ls abb

Si j'appuie encore sur TAB, j'ai alors

$ ls acc

Au prochain coup, je retombe sur

$ ls aaa

et ainsi de suite...

Merci d'avance.



Heya o/

Je pense que c'est possible à faire avec bash, mais je n'ai pas
(cherché) la réponse. Par contre, je sais qu'avec zsh ça se fait tout
seul pourvu que tu installes aussi les scripts d'auto-completion. Une
fois installé, il suffit de rentrer :

% autoload -U compinit
% compinit

-- illovae

--
CSM 'illovae' Seldon druuna (at) dud-t.org |
Member of dud-t group gopher://12.dud-t.org |
----------------------------------------------------{,_,"> |
---- Sic transit hominis regnum. Gens nova omnipoten. -----+
Avatar
Dominique MICOLLET
Francois Lafont wrote:

Est-il possible d'avoir une auto-complétion qui fasse
ce qui suit ?



...
et ainsi de suite...



Ça ne me semble pas être la philosophie de la complétion de bash.

Il me semble plus rapide et efficace, si vous désirez sélectionner le
fichier acc de taper <TAB>c que trois fois <TAB>

C'est d'autant plus vrai si votre répertoire contient beaucoup de fichiers.


--
Dominique MICOLLET
Adresse email : enlever deux francs
Avatar
Olivier Miakinen
Bonjour,

Le 06/05/2010 09:26, Dominique MICOLLET répondait à François Lafont :

Est-il possible d'avoir une auto-complétion qui fasse
ce qui suit ?



...
et ainsi de suite...



Il me semble plus rapide et efficace, si vous désirez sélectionner le
fichier acc de taper <TAB>c que trois fois <TAB>



Eh bien moi je peux le comprendre. Il peut être plus rapide et efficace
de n'avoir qu'une seule touche à taper après les quelques premiers
caractères, plutôt que de devoir réfléchir à un nouveau caractère
discriminant entre plusieurs fichiers, et de devoir rechercher cet autre
caractère sur le clavier (en cessant de regarder l'écran pour ceux dont
les doigts ne connaissent pas le clavier par c½ur).

C'est d'autant plus vrai si votre répertoire contient beaucoup de fichiers.



Et bien sûr c'est alors d'autant plus vrai si le choix n'est qu'entre
deux ou trois fichiers.

Cordialement,
--
Olivier Miakinen
Avatar
Emmanuel Florac
Le Wed, 05 May 2010 20:04:08 +0200, Francois Lafont a écrit:


$ ls a<puis TAB>

au lieu de m'indiquer les 3 fichiers possibles (aaa, abb, et acc), le
shell me complète la commande directement en




Bizarre, moi mon bash fais comme tu veux, sans avoir rien fait de
particulier. En fait je ne me souviens pas d'avoir vu le comportement que
tu décris récemment (autrefois, avec tcsh).
Est-ce que tu as installé le paquet bash-completion, et est-ce que tu le
charges dans ton .bashrc?
Comme ça :

source /etc/bash_completion

--
All thinking men are atheists.
Ernest Hemingway
Avatar
Lucas Levrel
Le 5 mai 2010, Francois Lafont a écrit :

Je suis sous Ubuntu 9.04 et le shell de mon terminal est bash. Est-il
possible d'avoir une auto-complétion qui fasse ce qui suit ?



Oui. man bash donne, à READLINE, Completing :
complete (TAB)
<couic>
menu-complete
Similar to complete, but replaces the word to be com-
pleted with a single match from the list of possible
completions. Repeated execution of menu-complete steps
through the list of possible completions, inserting each
match in turn. At the end of the list of completions,
the bell is rung (subject to the setting of bell-style)
and the original text is restored. An argument of n
moves n positions forward in the list of matches; a neg-
ative argument may be used to move backward through the
list. This command is intended to be bound to TAB, but
is unbound by default.

Je ne sais pas comment faire pour lier TAB à menu-complete plutôt qu'à
complete, mais d'autres ici sauront sans doute (et c'est sûrement dans le
man aussi) !

--
LL
Avatar
Frédéric Perrin
Lucas Levrel writes:
Le 5 mai 2010, Francois Lafont a écrit :
Je suis sous Ubuntu 9.04 et le shell de mon terminal est bash.
Est-il possible d'avoir une auto-complétion qui fasse ce qui suit ?



Oui. man bash donne, à READLINE, Completing :
complete (TAB)
<couic>
menu-complete
Similar to complete, but replaces the word to be com-
pleted with a single match from the list of possible
completions.

Je ne sais pas comment faire pour lier TAB à menu-complete plutà ´t qu'à
complete, mais d'autres ici sauront sans doute (et c'est sûrement da ns
le man aussi) !



bind "TAB:menu-complete"

(pour la session courante ; sinon il faut éditer ~/.inputrc)

--
Fred
Avatar
Francois Lafont
Déjà, merci à tous pour vos réponses.

Frédéric Perrin a écrit :

Oui. man bash donne, à READLINE, Completing :
complete (TAB)
<couic>
menu-complete
Similar to complete, but replaces the word to be com-
pleted with a single match from the list of possible
completions.

Je ne sais pas comment faire pour lier TAB à menu-complete plutôt qu'à
complete, mais d'autres ici sauront sans doute (et c'est sûrement dans
le man aussi) !



bind "TAB:menu-complete"

(pour la session courante ; sinon il faut éditer ~/.inputrc)



Parfait ! J'ai mis la ligne

bind "TAB:menu-complete"

dans mon ~/.bashrc et ça roule impeccable. Merci beaucoup. :-)


--
François Lafont
Avatar
Hugolino
Le 06-05-2010, Emmanuel Florac a écrit :
Le Wed, 05 May 2010 20:04:08 +0200, Francois Lafont a écrit:


> $ ls a<puis TAB>
>
> au lieu de m'indiquer les 3 fichiers possibles (aaa, abb, et acc), le
> shell me complète la commande directement en
>

Bizarre, moi mon bash fais comme tu veux, sans avoir rien fait de
particulier.



Sous Debian Lenny, avec le paquet bash-completion que tu mentionnes par
ailleurs, ça n'est pas une fois (ainsi que le souhaitait FL), mais bien
*deux* fois qu'il faut frapper <TAB>.

Mais bon, j'imagine aisément que c'est devenu un tel réflexe de faire
une double frappe sur <TAB> que tu n'y a pas fait attention.

En fait je ne me souviens pas d'avoir vu le comportement que
tu décris récemment (autrefois, avec tcsh).
Est-ce que tu as installé le paquet bash-completion, et est-ce que tu le
charges dans ton .bashrc?
Comme ça :

source /etc/bash_completion





--
Maintenant si je veux voir du BugsBunny, c'est ni windows ni Linux qui
conviennent, mais une TV et un abonnement à FoxKids.
Hugo (né il y a 1 452 809 836 secondes)
Avatar
Emmanuel Florac
Le Sun, 09 May 2010 01:52:45 +0200, Hugolino a écrit:


Mais bon, j'imagine aisément que c'est devenu un tel réflexe de faire
une double frappe sur <TAB> que tu n'y a pas fait attention.



Ah oui, en effet :)

--
If atheism is a religion, then baldness is a hair color.
And not collecting stamps is a hobby.
mahade on reddit.com