Pourquoi certaines commandes (souvent longues) sont-elles tronquées dans bash & zsh?

10

Plusieurs fois, lorsque j'entre une commande longue en bash ou zsh (ce sont les deux seuls shells dans lesquels je suis certain d'avoir vu cela), le curseur se déforme quelque part au milieu de la chaîne que j'entre, quelqu'un peut-il expliquer pourquoi, et si quelque chose peut être fait à ce sujet?

J'ai remarqué que cela se produit souvent lorsque je parcours l'historique de mon shell (à l'aide des touches fléchées), lorsque je rencontre une longue entrée, la nouvelle entrée longue se confondra avec l'entrée précédente, ce qui rend le texte confus.

J'ai un exemple avec des chaînes courtes, que je viens de remarquer:

L'histoire contient:

mkdir sune1
mkdir sune2

Si je navigue vers mkdir sune1, puis vers mkdir sune2, je m'attendrais à ce que ma ligne de commande soit mkdir sune2(puisque c'est ce à quoi j'ai maintenant accédé) - mais à la place j'obtiens mkdir1sune2.

Je l'ai remarqué fréquemment pendant des années, mais ne me laissez jamais trop déranger, mais je pense qu'il est temps de changer! Alors, des idées?

Jonatan
la source

Réponses:

8

Votre chaîne d'invite a probablement échappé de manière incorrecte les caractères non imprimables. Si vous avez quelque chose comme des changements de couleur dans votre invite, vous devez placer \[et \]contourner les séquences d'échappement du terminal pour que bash puisse dire qu'elles n'occupent pas d'espace à l'écran - sinon, il calcule mal où la commande réelle est à l'écran et la met à jour au mauvais endroit. Voir cette section de TLDP . En zsh, mettez %{et %}autour des séquences d'échappement.

Gordon Davisson
la source
J'ai effectivement des couleurs dans mon invite, je vais essayer de les échapper ou de les supprimer et voir si cela aide. Merci!
Jonatan
Pensez à utiliser le module de couleur de zsh. Il devrait éviter les erreurs stackoverflow.com/questions/6159856/…
Francisco