Comportement d'indentation inattendu lorsque je mets le terminal en mode brut - pourquoi cela se produit-il?

27

D'après ce que j'ai lu, lorsqu'un terminal est en mode brut, les caractères ne sont pas traités par le pilote du terminal, mais sont envoyés directement.

J'ai mis le terminal en mode brut à l'aide de la commande stty raw, et j'ai remarqué que la sortie est indentée à droite à chaque fois jusqu'à ce qu'il n'y ait plus de place. Voici ce que je veux dire:

entrez la description de l'image ici

Pourquoi ce comportement se produit-il?!

Paul
la source

Réponses:

45

L'un des sttyparamètres ( onlcr) indique au pilote de terminal de convertir la nouvelle ligne (qui est en fait un saut de ligne ASCII) en retour chariot plus saut de ligne.

Les systèmes de type Unix écrivent simplement une nouvelle ligne sur les lignes de fin, laissant le pilote du terminal faire la bonne chose (convertir la nouvelle ligne en retour chariot plus saut de ligne).

Le retour chariot "va à gauche" et le saut de ligne "descend".

Lorsque vous réglez le terminal en mode brut, la nouvelle ligne ne sera plus convertie en retour chariot plus saut de ligne. Sans les retours chariot, vous obtenez cet effet d' escalier .

Thomas Dickey
la source
et pour une vue détaillée, vous pouvez jeter un œil à @ stéphane-chazelas vraiment bon post: unix.stackexchange.com/questions/151916/… , qui montre beaucoup de choses intéressantes sur les conversions de terminaux (et leurs effets secondaires) . En un mot: seulement "ssh -t" pour utiliser des commandes interactives, mais dans vos scripts utilisez juste ssh si vous voulez obtenir exactement ce que la commande a généré (ex: fichiers tar créés d'un côté d'un ssh et lus / écrits sur de l'autre côté: n'ajoutez pas "-t" ou cela pourrait (... va?) gâcher vos binaires)
Olivier Dulac