2010-01-08 2 views
28

J'utilise PuTTY pour me connecter à un serveur Debian. J'ai ce problème étrange que quand une commande que je tape devient trop longue, elle ne fait pas de wrapping et commence une nouvelle ligne. Au lieu de cela, il commence au début de la ligne même ligne et commence à remplacer l'invite, puis le début de la commande.La ligne de commande s'incruste lorsque les commandes deviennent trop longues

La commande fonctionnera très bien, mais c'est vraiment ennuyeux, je suppose qu'il y a un réglage qui résoudrait ça pour moi?

+0

Restaurez vers le bas (un maximisent) la fenêtre et agrandissez à nouveau Travaillé fin – Morgtician

Répondre

9

J'ai vu ce comportement lorsque vous redimensionnez la fenêtre Putty alors qu'une autre commande est en cours d'exécution depuis bash ne reçoit pas le signal lui indiquant la fenêtre a redimensionné.

Si tel est le problème en ajoutant:

shopt -s checkwinsize 

devrait faire disparaître.

-2

Rien à voir avec putty c'est un "bash" ism.

Son très utile une fois que vous êtes habitué, mais si cela vous dérange, vous pouvez passer à « ksh » qui fait quelque chose de différent avec de longues lignes de commande (pas sûr de ce sur Debian!)

+1

Non, pas dans le mastic, habituellement il enveloppe la commande. C'est une autre chose qui arrive parfois. – Frunsi

+0

Readline (que Bash utilise pour l'édition interactive de lignes) possède une option 'horizontal-scroll-mode', mais ne correspond pas entièrement aux symptômes signalés par OP. – ephemient

7

Essayez:

eval $(resize) 

+0

Merci! cela marche!! Mais pourquoi cette commande fonctionne? – user15964

+0

il a travaillé sur PUTTY. Je connectais Ubuntu 12.04 avec du mastic. Merci. – svlzx

+0

Cela fonctionne pour moi seulement quand je le tape manuellement, quand je mets cela à l'intérieur .bashrc ça ne marche pas, des idées? Je vous remercie. –

7

Essayez d'appuyer sur Ctrl + L. (Ou peut-être Alt +L -. quelque chose + L de toute façon) Si je me souviens bien ce rediffusions le code pour déterminer la taille de votre terminal et ajuste en conséquence.

+2

Cela a fonctionné pour moi. 'Ctrl + L' – bdwakefield

+0

Voici la référence de bash si vous êtes intéressé, Ctrl + l efface l'écran. https://www.gnu.org/software/bash/manual/html_node/Commands-For-Moving.html –

57

Je viens de résoudre ce problème moi-même.

Il était juste un peu de couleur dans les évasions de l'invite de commande PS1:

LTGREEN="\033[40;1;32m" 
LTBLUE="\033[40;1;34m" 
CLEAR="\033[0m" 
LIGHT_GRAY="\033[40;1;33m" 
export PS1="$LTGREEN\[email protected]\h:$LIGHT_GRAY\w$CLEAR ❯ " 

Le problème est que les littéraux de couleur ne sont pas entre parenthèses. En plaçant les parenthèses échappées autour d'eux résout le problème entièrement:

LTGREEN="\[\033[40;1;32m\]" 
LTBLUE="\[\033[40;1;34m\]" 
CLEAR="\[\033[0m\]" 
LIGHT_GRAY="\[\033[40;1;33m\]" 
export PS1="$LTGREEN\[email protected]\h:$LIGHT_GRAY\w$CLEAR ❯ " 

Espérons que cela aide.

+2

La même solution m'a aussi résolu le problème. merci – gecco

+3

Cela a fixé pour moi aussi! Vous, monsieur, obtenez un upvote. – Ari

+2

Je combattais ça depuis quelques jours maintenant. Vous avez fait ma journée et vous avez upvote! – piotrekkr

1
Ctrl-l 

Ctrl-l fonctionne. Je suppose que le mastic nécessaire pour

1

Ce solution a fonctionné pour moi: Ajouter l'extrait suivant à votre .bashrc:

if [ $(tty) == '/dev/ttyS0' ]; then 
    trap resize DEBUG 
fi 
Questions connexes