Probablemente stty sane
aunque también hay varias cadenas de reinicio que varían según el terminal y el TERM
tipo ( rs1
y similares, ver terminfo(5)
) que pueden o no estar en uso, y es difícil depurar algo que suele ser interceptado por el propio terminal para averiguar cuáles son los bytes exactos. Por ejemplo Terminal.app
con TERM=xterm
muestra diferentes secuencias de escape de restablecimiento que TERM=xterm-256color
lo hace:
% infocmp | grep rs'[123]'
rmul=\E[24m, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
% echo $TERM
xterm
% TERM=xterm-256color infocmp | grep rs'[123]'
rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]104\007,
rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
Para la limpieza automática, una función de shell que envuelve ssh
con puede ser suficiente; el siguiente se esfuerza por tratar de preservar el código de salida del shell (que no es el mismo que la palabra de estado de salida de 16 bits realmente devuelta por un programa) y restablece varias cosas. Si esto es suficiente para ti depende de lo que el extremo remoto esté haciendo exactamente y de cómo quieras limpiarlo.
function ssh() {
local ret
command ssh "$@"
ret=$?
stty sane
# (optional) reset string, see terminfo(5)
tput rs1
# (optional) clear junk linux likes to spam terminal title bar with
printf "\033]2;\007"
return $ret
}
Más métodos para reiniciar el terminal .
0 votos
No es exactamente equivalente a stty sane, lo que se puede demostrar con un pequeño experimento: Ejecute sh, para que su shell no restablezca el tty a los valores de sane. Ejecute stty -echo, para desactivar el eco. Ejecute stty sane, y el eco vuelve. Luego ejecute stty -echo de nuevo, y reinicie la terminal. Sigue sin haber eco. También, stty sane y un reinicio de la terminal debe stty controla la interfaz del sistema operativo con la terminal, mientras que el reinicio de la terminal afecta a la propia terminal (que habría sido una pieza de hardware diferente, en la época de las terminales reales).