2013-07-16 10 views
25

Di tanto in tanto devo eseguire uno strumento da riga di comando (uno script Python) il cui output sembra interrompere il mio terminale. Al termine dell'esecuzione, il feedback di digitazione è scomparso (non riesco a vedere cosa sto scrivendo) e anche le interruzioni di riga non vengono visualizzate. Ciò accade se il terminale viene avviato in remoto tramite Putty e anche localmente quando si utilizza gnome-terminal.: digitazione feedback interrotta, interruzioni di riga non visualizzate

Ad esempio, dopo che il problema si verifica, se di tipo ENTERpwdENTER, mi aspetto di vedere:

[[email protected] ~]$ 
[[email protected] ~]$ pwd 
/home/userA 
[[email protected] ~]$ 

In realtà l'output è:

[[email protected] ~]$ [[email protected] ~]$ /home/userA 
                  [[email protected] ~]$ 

L' l'unico modo per risolverlo è chiudere quel terminale e avviarne uno nuovo.

Forse correlato: l'output dello script contiene una formattazione basata sul terminale (ad esempio, in primo piano invertito/sfondo per evidenziare alcuni messaggi di stato). Se scarico questo output su un file, posso vedere cose come [07mSome Message Here[0m.

Qualche idea cosa potrei fare per impedirlo?

+0

Sembra che tu sia in una sottospia che devi uscire per tornare al tuo terminale originale. Prova ad uscire; pwd –

+1

Questo è fuori tema per SO; appartiene a [unix.se] o [su]. Detto questo, di solito è possibile correggere una sessione terminale interrotta digitando cieco 'stty sane', che ripristina le impostazioni 'sane' del terminale. –

+1

Inoltre, quando si verificano problemi con il terminale, è possibile provare a risolverli usando 'reset' o' stty sane'. – cabad

risposta

59

Eseguire il comando "reset" ed il terminale deve essere ripristinato
Riferimento:
http://www.commandlinefu.com/commands/view/32/salvage-a-borked-terminal

Questo problema si verifica generalmente quando scarico dati binari al terminale "STDOUT", che quando vengono elaborati i codici di escape ricevuti può fare qualsiasi cosa, cambiare il colore del testo, disabilitare l'eco, persino cambiare il set di caratteri.

Il modo più semplice per evitare ciò è assicurarsi di non scaricare dati binari sconosciuti sul terminale e se è necessario convertirlo in esadecimale per assicurarsi che non cambi le impostazioni del terminale.

+2

'reset', questo è quello che stavo cercando.Grazie . –

+0

Grazie mille! Nel mio caso, l'esecuzione di ipython all'interno di un contenitore Kubernetes non mostrava l'input digitato, eseguendo il comando 'reset' corretto. – dusan

+0

Ho lo stesso problema quando eseguo 'bash x.sh' all'interno di una shell ssh. 'reset' è d'aiuto ma se eseguo di nuovo il file .sh, il problema riappare. Hai qualche idea? (il file .sh in pratica esegue il pacchetto 'sbt' per creare il mio progetto scala) –

Problemi correlati