Mon problème est que le shell Bash ne montre plus les caractères que je saisis. Il lit cependant les commandes.
J'ai rencontré ce problème plusieurs fois et je ne comprends pas ce qui le cause. Je sais comment le résoudre, mais je n'aime vraiment pas quand je «voodoo» ma façon de résoudre les problèmes.
Je vais décrire les deux manières par lesquelles j'ai rencontré ce problème:
J'exécute un certain processus, http://pythonpaste.org/script/ et parfois quand j'arrête ça ou que ça casse, le contrôle est rendu au shell. Quand je vais ensuite taper des commandes dans le shell, les caractères que je tape n'apparaissent pas. Lorsque j'appuie sur entrer, les commandes sont soumises. Donc par exemple:
- Je tape "ls"
- Je ne vois qu'une invite vide et rien de plus
- J'appuie sur entrée et on me donne une liste des fichiers, en d'autres termes: la commande est exécutée
- quand je donne la commande "reset" le shell commence à fonctionner normalement
La deuxième manière que cela se produit est quand je donne une commande comme ceci:
$ grep foo * -l | xargs vim
J'utilise grep pour trouver les fichiers qui ont un certain motif, puis je veux ouvrir tous les fichiers résultant du grep. Cela fonctionne comme un charme (mais pas aussi vite que je l'espérais). Mais lorsque je quitte Vim, mon shell cesse d’afficher les caractères que je saisis. Une commande de réinitialisation résout le problème.
J'imagine que les deux problèmes ont une raison sous-jacente, mais je ne comprends pas très bien pourquoi ou pas.
La recherche de ce problème est en soi problématique car la description est assez vague et ne contient pas de termes de recherche durs.
Modifier
Donner le
stty --all
commande selon la demande de John S. Gruber a donné le résultat suivant (espace modifié pour la lisibilité)
speed 0 baud;
rows 53;
columns 186;
line = 0;
intr = <undef>;
quit = <undef>;
erase = <undef>;
kill = <undef>;
eof = <undef>;
eol = <undef>;
eol2 = <undef>;
swtch = <undef>;
start = <undef>;
stop = <undef>;
susp = <undef>;
rprnt = <undef>;
werase = <undef>;
lnext = <undef>;
flush = <undef>;
min = 0;
time = 0;
-parenb
-parodd cs8
-hupcl
-cstopb cread
-clocal
-crtscts
-ignbrk
-brkint
-ignpar
-parmrk
-inpck
-istrip
-inlcr
-igncr
-icrnl
-ixon
-ixoff
-iuclc
-ixany
-imaxbel
-iutf8
-opost
-olcuc
-ocrnl
-onlcr
-onocr
-onlret
-ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig
-icanon
-iexten
-echo
-echoe
-echok
-echonl
-noflsh
-xcase
-tostop
-echoprt
-echoctl
-echoke
stty --all
à ma question. Merci d'avance!
stty --all
les résultats dans votre question. Echo est une caractéristique de tty en cours de désactivation. Vim le fera en cours d’exécution et mettra également le terminal en mode brut. Quand il se ferme, il devrait réinitialiser les paramètres du terminal. Lorsque vim est en cours d'exécution, vous ne voulez pas faire écho à lai
commande qui place l'éditeur en mode insertion, par exemple. Ces paramètres indiquent au périphérique tty comment il doit traiter ce que vous tapez. Pendant que vim est en cours d'exécution, il se charge de faire écho à ce qui devrait être répercuté, etc.