Depuis que la complétion des onglets est devenue une fonctionnalité standard dans les coques, j'en suis un utilisateur très heureux. J'aime même la complétion intelligente de Bash (où il ne recherche que les fichiers PDF, si je tape evince foo <TAB>) - tant qu'il devine correctement.
Cela gâche un jour autrement heureux lorsque Bash utilise son achèvement intelligent pour refuser de terminer.
Aujourd'hui, je voulais:
tar xvf centos5.8_x86_1.ova
J'ai donc entré:
tar xvf cent<TAB>
et Bash refuse de terminer le chemin car les fichiers .ova ne sont pas ce que vous utilisez habituellement avec tar.
Je sais que je peux désinstaller le package bash-complétement pour supprimer la complétion intelligente. Mais puis-je avoir mon gâteau et le manger aussi?
Puis-je demander à bash d'utiliser la complétion intelligente en premier, et si cela échoue, puis utiliser la complétion non intelligente?
la source
Réponses:
Les éléments suivants devraient activer l'achèvement bash normal après l'échec de toutes les finitions «intelligentes» pour les programmes tar, vim et emacs:
voir également la page correspondante dans le manuel bash en ligne.
Attention: vous obtenez le comportement normal pour le type de complétion (commandes / noms de fichiers / noms d'utilisateur, etc.) défini par la complétion intelligente pour la commande en cours, par exemple, la complétion pour
service
ne terminera pas les noms de fichiers même si vous appelezcomplete -o bashdefault service
.Dans ce cas et dans d'autres cas où l'autocomplétion intelligente échoue, vous pouvez toujours appuyer sur
Alt-/
(ouM-/
dans la notation du manuel bash) pour compléter les noms de fichiers presque de la même manière que TAB fonctionne si la complétion intelligente est désactivée (presque de la même manière dans le sens oùM-/
cela ne signifie pas modèles complets comme*.txt
). Voir ici pour les séquences de touches pour d'autres types de compléments tels que la commande et les noms d'utilisateur.la source
bash achèvement est une extension de l'achèvement standard de bash et est lui-même un programme bash. Donc, si vous voulez changer la façon dont le programme agit, changez-le simplement. Ceci est un logiciel gratuit, vous êtes libre de le faire. Pour le cas spécifique de la
tar
commande, le fichier est/usr/share/bash-completion/completions/tar
. Pour complétertar
automatiquement un fichier avec une extensionova
, ajoutez-le simplement à la lignedonc ça dit
Notez qu'il s'agit du chemin et du code existant pour Debian Wheezy (version stable actuelle). Une distribution ou une version différente peut avoir un code différent mais l'idée est la même. Ouvrez le code et ajustez-le pour faire ce que vous voulez qu'il fasse.
Edit: Je viens de remarquer que la question était sur le point chaque fois qu'il ne trouve pas de correspondance et non seulement le cas particulier d'ajouter
ova
àtar
. Peut-être que cela peut encore être utile à quelqu'un, pour savoir où chercher la source.la source