コマンドのタイプスクリプトscript
(保存されたファイルなど)では、改行文字はCR + LF(\ r \ n)ですが、元の改行文字(に入力されたものscript
)はLFです。なぜ?これはttyの問題のようです。よくわかりません。詳しく説明せずにこれを説明できる人はいますか?
私は何の問題もありませんでした。ただ気になりました。 :) (しかし、修正する方が良いと思います。または少なくとも文書化する必要があります。)
私はscript
util-linuxから来ましたが、おそらくそれほど重要ではありません。
ベストアンサー1
プログラム出力とキャプチャされたttyストリーム(たとえば)typescript
の違いの根本的な理由は、ttyが印刷機。
Unix以前は、テキストが行末に常にCRLFを持っていました。これは、行末の論理表現と見なされたためではなく、各文字が実際の物理的な意味を持っていたためです。言い換えれば、プリントヘッドを左に最後まで動かし、紙を前進させる。
Unixはまったく新しいアプローチを取ります。ディスク上のテキストファイルをプリンタのコマンドではなく、それ自体が便利なオブジェクトとして扱い、行を論理オブジェクトとして扱います。 UNIX の世界観では、2 つの文字行終端は不必要に複雑です。
しかし、彼らは単一の「行末」文字を認識せず、CRで作業の半分だけを実行し、LFで残りの半分だけを実行できるプリンタやCRTの愚かな端末などの既存のハードウェアを使用する必要がありました。したがって、変換はハードウェアに最も近い(ttyドライバで)実行する必要があります。
それ以来、すべてが以前のバージョンと互換性があります。したがって、CRLFの使用を要求するターミナルエミュレータと、プログラムが出力するときに改行文字を提供するttyドライバがあります。