Unix/Linux EOL は、LF、改行、ASCII 10、エスケープシーケンスです\n
。
以下は、正確に1回のキーを押すためのPythonコードの断片です。
import sys, tty, termios
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
return ch
Enterこのコードフラグメントに応答してキーボードを押すと、\r
キャリッジリターン、ASCII 13が表示されます。
存在するWindows、Enter送信CR LF == 13 10
。 *nixはWindowsではありません。なぜEnter10ではなく13を提供するのですか?
ベストアンサー1
本質的に「手動打者が出現して以来、そうなってきたからです」本当。
手動タイプライター輸送給紙されて給紙されたときに前方に移動し(スプリングが装着されている)、キャリッジを解除するレバーまたはキーがあり、スプリングがキャリッジを左マージンに戻すことができます。
電子データ入力(全身タイプライターなど)が導入され、彼らもこれを推進しました。このため、Enter多くの端末のキーにはというラベルが付いていますReturn。
キャリッジを左マージンに戻した後、改行が発生します(手動プロセス中)。繰り返しますが、電子デバイスは、個々のline-feed操作のために受動デバイスを模倣する。
どちらの操作もCR
(キャリッジリターン)とLF
(改行)があります。この写真はASR 33テレタイプ情報キーボードをReturn
右、Line-Feed
左に表示します。それに正しい、これは主キーです。
その後、Unixが登場しました。開発者は内容を短くするのが好きです(「生成された」すべての略語を見てくださいcreat
)。潜在的に2つの部分からなるプロセスに直面して、彼らは改行文字の前にキャリッジリターンがある場合にのみ意味があると決定しました。だから彼らは明示的なキャリッジリターン文字を削除しました。文書、端末のReturnキーストロークを変換して対応する改行を送信します。混乱を避けるために、改行を「改行」といいます。
端末にテキストを書き込むと、Unixは逆変換を行います。改行はキャリッジリターン/改行になります。
(例:「一般」:翻訳を行わない「生」モードとは反対のいわゆる「料理モード」)。
要約:
- キャリッジリターン/ラインフィードの順序は13 10です。
- これ装備13個送ってください(あなたの言葉は「永遠」だから)
- Unixシリーズシステム変化13 10 まで
- 他のシステムは必ずしも10個しか保存する必要はありません(Windowsは基本的に互換性がどれほど重要かによって10または13 10のみを許可します)。