Question L'auto-complétion des variables ajoute des espaces blancs à la fin


Lorsque j'effectue une saisie automatique d'une variable bash, un espace blanc supplémentaire est ajouté à la fin.

$FO[TAB]

->

$FOO" " 

J'ai ajouté les guillemets pour désigner les espaces blancs. Le problème est que certaines variables que nous utilisons sont des répertoires et que l’espace blanc est agaçant car il doit être supprimé et un / doit être saisi. Est-il possible de configurer un comportement comme celui-ci?

$FO[TAB]

->

$FOO/

ou

cd $FO[TAB]

->

cd $FOO/

5
2018-05-24 08:07


origine


Vous voudrez peut-être voir ceci: stackoverflow.com/questions/2339246/... - devnull
Il y a plusieurs étapes à prendre en compte: 1) Make $FO[TAB] complète à $FOO, 2) développer $FOO à sa valeur, et 3) reconnaître que la valeur est un répertoire, et complète il avec un suivi / et pas d'espace. 1) est le défaut, 2) peut être accompli avec certains readline paramètres et configuration. 3) est délicat et nécessitera au moins un travail important avec les installations d'achèvement programmables. - chepner


Réponses:


Mieux vaut tarder que rien ...

Le nom pratique du répertoire de fin dans les variables a été implémenté dans bash 4.3. Le bash 4.3 vérifie si une variable de shell se développe en un nom de répertoire et ajoute / au mot approprié.


1
2018-02-19 12:16





J'ai eu le même problème sur CentOS 7 avec bash 4.2. Je n'ai trouvé aucune solution / solution sur Internet. "yum upgrade bash" n'a pas aidé non plus.

Finalement, j'ai décidé de compiler / installer la dernière version de bash (à la date 4.4). J'ai simplement suivi ce blog: Comment installer Bash 4.4 sur les distributions Linux

L'achèvement des onglets fonctionne comme prévu dans 4.4. Il semble que ce soit un bogue dans 4.2.

Remarque: après "make install", l'exécutable se trouve dans / usr / local / bin / (/ bin / bash reste inchangé), vous voulez donc ajuster / etc / passwd pour faire de la nouvelle version le shell de connexion par défaut pour les utilisateurs.

HTH


-1
2017-08-29 17:15



La réponse existante indique que la mise à niveau à partir de Bash 4.2 est la solution. Vous faites référence à un blog, mais n'incluez aucune information, nous n'avons donc aucune idée de ce que vous avez trouvé important à ce sujet. - Ramhound