Comportamento di rientro imprevisto quando imposto il terminale in modalità raw: perché sta accadendo?


27

Sulla base di ciò che ho letto, quando un terminale è in modalità raw, i caratteri non vengono elaborati dal driver del terminale, ma vengono inviati direttamente.

Ho impostato il terminale in modalità raw utilizzando il comando stty rawe ho notato che l'output è rientrato a destra ogni volta fino a quando non c'è più spazio. Questo è ciò che intendo:

inserisci qui la descrizione dell'immagine

Perché sta accadendo questo comportamento ?!

Risposte:


45

Una delle sttyimpostazioni ( onlcr) indica al driver del terminale di convertire newline (che in realtà è un avanzamento di riga ASCII) in ritorno a capo più avanzamento di riga.

I sistemi simili a Unix scrivono semplicemente una nuova riga alle linee di fondo, lasciando che il driver del terminale faccia la cosa giusta (converti la nuova riga in ritorno a capo più avanzamento di riga).

Il ritorno a capo "va a sinistra" e l'avanzamento di riga "scende".

Quando si imposta il terminale in modalità raw, newline non verrà più convertito in ritorno a capo più avanzamento di riga. In mancanza dei ritorni a capo, si ottiene quell'effetto scala .


e per una visione approfondita, puoi dare un'occhiata a @ stéphane-chazelas post davvero buono: unix.stackexchange.com/questions/151916/… , che mostra molte cose interessanti sulle conversioni terminali (e sui loro effetti collaterali) . In breve: solo "ssh -t" per usare i comandi interattivi, ma nei tuoi script usa solo ssh se vuoi ottenere esattamente la cosa generata dal comando (es: file tar creati su un lato di un ssh e letti / scritti su l'altro lato: non aggiungere "-t" o potrebbe (... volontà?) rovinare i tuoi binari)
Olivier Dulac
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.