lineas - salir de vi linux
Terminal de Linux: mecanografiando la retroalimentación, no se muestran los saltos de línea (2)
De vez en cuando tengo que ejecutar una herramienta de línea de comandos (un script de Python) cuyo resultado parece romper mi terminal. Una vez finalizada la ejecución, la retroalimentación de tipeo se ha ido (no puedo ver lo que estoy escribiendo) y tampoco se muestran los saltos de línea. Esto sucede si el terminal se inicia de forma remota a través de Putty
, y también localmente cuando se usa gnome-terminal
.
Por ejemplo, después de que ocurre el problema, si pwd
ENTER pwd
ENTER , esperaría ver:
[userA@host006 ~]$
[userA@host006 ~]$ pwd
/home/userA
[userA@host006 ~]$
Pero en realidad la salida es:
[userA@host006 ~]$ [userA@host006 ~]$ /home/userA
[userA@host006 ~]$
La única forma de solucionarlo es cerrar esa terminal e iniciar una nueva.
Quizás esté relacionado: el resultado del script contiene algunos formatos basados en terminales (por ejemplo, invertir en primer plano / fondo para resaltar algunos mensajes de estado). Si vuelvo esta salida a un archivo, puedo ver cosas como [07mSome Message Here[0m
.
¿Alguna idea de lo que podría hacer para prevenir esto?
Ejecute el reset
del comando y su terminal debe ser restaurada ( reference ).
Este problema ocurre generalmente cuando se arrojan datos binarios al terminal STDOUT
que cuando se procesan los códigos de escape recibidos puede hacer cualquier cosa, desde cambiar el color del texto, desactivar el eco, incluso cambiar el conjunto de caracteres.
La manera más fácil de evitar esto es asegurarse de no volcar datos binarios desconocidos en el terminal, y si debe convertirlo a hexadecimal para asegurarse de que no cambia la configuración del terminal.
Para profundizar en la respuesta de Joshua Briefman , ejecutar reset -c
solo restablecerá los personajes de control responsables de su problema:
tset
,reset
- inicialización del terminal
Usage: tset [options] [terminal]
Options:
-c set control characters
-e ch erase character
-I no initialization strings
-i ch interrupt character
-k ch kill character
-m mapping map identifier to type
-Q do not output control key settings
-r display term on stderr
-s output TERM set command
-V print curses-version
-w set window-size
También tenga en cuenta lo siguiente desde el manual del comando:
Tenga en cuenta que es posible que tenga que escribir
<LF>reset<LF>
(el carácter de alimentación de línea normalmente es control-J) para que el terminal funcione, ya que el retorno de carro puede no funcionar en el estado anormal. Además, el terminal a menudo no hará eco del comando.