1 votos

restablecimiento del terminal

En la Terminal Shell hay dos opciones de reinicio: Hard Reset y Reset . El primero borra la pantalla; el segundo sólo la arregla después de las desagradables secuencias de escape.

Parece que Hard Reset es equivalente a la función de bash reset . ¿Qué es? Reset (la versión más blanda) equivalente a? stty sane ?

(Me gustaría reiniciar mi terminal después de que una conexión SSH se desconecte sin borrar la pantalla; la opción del menú me funciona pero me gustaría que fuera automática).

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).

1voto

thrig Puntos 101

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 .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X