J'utilise, entre autres, bash 4.2.37 sur Linux Mint 14.
Lorsque j'autocomplète le nom d'une variable d'environnement en tapant Tab, il se développe jusqu'au nom de la variable suivi d'un espace.
Si la valeur de la variable se trouve être un nom de répertoire, je veux qu'elle s'étende au nom de la variable suivie de /
.
Par exemple, si je tape:
$ ls $HOM<tab>
il s'étend à:
$ ls $HOME _
où _
marque l'emplacement du curseur. Le problème est que je veux généralement continuer à taper le nom d'un fichier ou d'un répertoire sous mon répertoire personnel, ce qui signifie que je dois taper backspacepuis /
.
Je veux donc que ce qui précède s'étende:
$ ls $HOME/_
La même chose se produit lorsque j'ai tapé le nom complet de la variable; après ls $HOME
, tabajoute un espace, et je veux qu'il ajoute un /
.
(Et bien sûr, je ne veux pas qu'il ajoute un /
si la valeur de la variable n'est pas un nom de répertoire.)
Existe-t-il un moyen de dire à bash de se comporter comme je le souhaite, soit via les commandes bash, soit en mettant à jour mon $HOME/.inputrc
?
Remarque: je recherche spécifiquement un moyen de tabme comporter comme je le souhaite. Les façons d'obtenir le même comportement avec différentes frappes seraient intéressantes, mais ne répondraient pas à ma question.
(J'ai désactivé /etc/profile.d/bash_completion.sh
mon système car il interagit mal avec set -o nounset
. Une expérience rapide indique que ce n'est probablement pas pertinent pour ma question.)
Incidemment, tcsh fait ceci: étant donné une variable d'environnement $FOOBAR
, la frappe se $FOOBA<tab>
développe $FOOBAR/
si elle fait référence à un répertoire, $FOOBAR
(avec un espace) si ce n'est pas le cas. Non, ce n'est pas suffisant pour me persuader de retourner à tcsh. zsh le fait aussi.
la source
Réponses:
Cette fonctionnalité est implémentée dans bash 4.3, publiée le 2014-02-26.
Citant le
NEWS
fichier (inclus au niveau supérieur debash-4.3.tar.gz
, voir également la signature GPG ):Une expérience rapide avec une copie construite à partir de la source montre que si je tape
il s'étend maintenant à
(Soit dit en passant, zsh fait également cela.)
la source
vous aidera, il n'y aura pas d'espace pour que vous puissiez continuer à taper mais cela remplacera la variable d'environnement par son contenu.
Voir alsp /programming/6418493/bash-variable-expansion-on-tab-complete
la source