Comportamiento de sangría inesperado cuando configuro el terminal en modo sin procesar: ¿por qué sucede esto?

27

Según lo que he leído, cuando un terminal está en modo sin procesar, los caracteres no son procesados ​​por el controlador del terminal, sino que se envían directamente.

Configuré el terminal en modo sin procesar usando el comando stty raw, y noté que la salida está sangrada a la derecha cada vez hasta que no queda más espacio. Esto es lo que quiero decir:

ingrese la descripción de la imagen aquí

¿Por qué ocurre este comportamiento?

Paul
fuente

Respuestas:

45

Una de las sttyconfiguraciones ( onlcr) le dice al controlador de terminal que convierta la nueva línea (que en realidad es un avance de línea ASCII) en retorno de carro más avance de línea.

Los sistemas tipo Unix simplemente escriben una nueva línea en las líneas finales, permitiendo que el controlador de terminal haga lo correcto (convertir la nueva línea en retorno de carro más avance de línea).

El retorno de carro "va hacia la izquierda" y el avance de línea "baja".

Cuando configura el terminal en modo sin procesar, la nueva línea ya no se convertirá en retorno de carro más avance de línea. Sin los retornos de carro, obtienes ese efecto de escalera .

Thomas Dickey
fuente
y para una vista en profundidad, puede echar un vistazo a @ stéphane-chazelas realmente buena publicación: unix.stackexchange.com/questions/151916/… , que muestra muchas cosas interesantes sobre las conversiones de terminales (y sus efectos secundarios) . En pocas palabras: solo "ssh -t" para usar comandos interactivos, pero en sus scripts use solo ssh si desea obtener exactamente lo que generó el comando (por ejemplo: archivos tar creados en un lado de un ssh y leídos / escritos en Por otro lado: no agregue "-t" o podría (¿lo hará?) arruinar sus binarios)
Olivier Dulac