web-dev-qa-db-ja.com

端末をrawモードに設定したときの予期しないインデント動作–なぜこれが起こっているのですか?

私が読んだ内容に基づいて、ターミナルがrawモードの場合、文字はターミナルドライバによって処理されず、そのまま送信されます。

コマンドstty rawを使用して端末をrawモードに設定したところ、スペースがなくなるまで、出力が毎回右にインデントされていることに気付きました。これは私が意味するところです:

enter image description here

なぜこの動作が起こっているのですか?

27
paul

stty 設定(onlcr)の1つは、ターミナルドライバに変換を指示しますnewline(これは実際にはASCII line-feed)で、キャリッジリターンとラインフィードを組み合わせたものです。

Unixライクなシステムは、newlineを行末に書き込むだけで、ターミナルドライバーが正しいことを実行できるようにします(convertnewlineをキャリッジに変換します)リターンとラインフィード)。

キャリッジリターンは「左」になり、改行は「下」になります。

端末をrawモードに設定すると、newlineはキャリッジリターンとラインフィードに変換されなくなります。キャリッジリターンがない場合、そのstaircase効果が得られます。

45
Thomas Dickey