\n は針を下に移動し、\r は針を行の先頭に移動します (左揃え) と思いますか?よくわかりませんが
これは多かれ少なかれ真実ですが、ほとんどは歴史的な好奇心です。もともと、改行 (LF) は、プリンターやハードコピー端末 (テレプリンター) で用紙を 1 行進めるために使用されていました。キャリッジ リターン (CR) は、印字ヘッドを行頭に戻しました。
これは、「テキスト モード」で使用する場合、現在のプリンターでも機能する可能性がありますが、それ以外の場合は、今日ではほとんど関係ありません。
<ブロック引用>とにかく、Windows と Linux では改行と改行の扱いが異なると聞きました.
違いは単純です。OS の設計者は、コンピュータ ファイル内のテキストの新しい行の開始を表す方法を選択する必要がありました。さまざまな歴史的理由から、Unix/Linux の世界では単一の LF 文字が改行マーカーとして選択されました。 MS-DOS は CR+LF を選択し、Windows はこれを継承しました。したがって、異なるプラットフォームでは異なる規則が使用されます。
実際には、これはますます問題になりつつあります。改行マーカーは、実際には「プレーンテキスト」を処理するプログラムにのみ関連し、それほど多くはありません。ほとんどの場合、プログラムのソースコード、構成ファイル、およびドキュメント付きの単純なテキストファイルにのみ影響します。現在、これらの種類のファイル (エディタ、コンパイラなど) を扱うほとんどのプログラムは、両方の改行規則を処理できるため、どちらを選択しても問題ありません。
ツールが「独自の」改行規則を主張する場合がいくつかあります (たとえば、Unix シェル スクリプトは CR+LF を使用してはなりません)。その場合、正しいものを使用する必要があります。
CR と LF
American Standard Code for Information Interchange (ASCII) は、CARRIAGE-RETURN (CR) と LINE-FEED (LF) を含む制御文字を定義しました。初期のコンピュータ プリンタに先行する機械式タイプライター。
プラットフォーム依存
Windows では、テキスト ファイルの従来の行区切り記号は CR の後に LF が続きます
古い (OSX より前の) Apple Macintosh システムでは、テキスト ファイルの従来の行区切りは CR でした
Unix と Linux では、テキスト ファイルの従来の行区切り記号は LF です。
\n と \r
多くのプログラミングおよびスクリプト言語で \n
「改行」を意味します。場合によっては (常にではありませんが)、これは ASCII LINE-FEED 文字 (LF) を意味します。これは、あなたが言うように、カーソル (または印刷位置) を 1 行下に移動します。プリンターやタイプライターでは、実際には紙が 1 行上に移動します。
常に \r
は ASCII CARRIAGE-RETURN 文字 (CR) を意味し、その名前は実際には、紙を運ぶローラー (「キャリッジ」) をバネの力で右に移動させるキャリッジ リターン キーがあった機械式タイプライターに由来します。どこまでも。したがって、現在の入力位置を左マージンに設定します。
プログラミング
一部のプログラミング言語では \n
テキスト ファイル内の行を終了または区切る、プラットフォームに依存する一連の文字を意味する場合があります。たとえば、Perl では print "\n"
Linux では、Windows とは異なる文字シーケンスを生成します。
Java では、ランタイム プラットフォームにネイティブの行末を使用する場合のベスト プラクティスは、\n
を使用しないことです。 または \r
まったく。 System.getProperty("line.separator")
を使用する必要があります . \n
を使用する必要があります と \r
プラットフォームに関係なく LF と CR が必要な場合 (例:HTTP、FTP、およびその他のインターネット通信プロトコルで使用される場合)。
Unix stty
Unix シェルでは、stty
コマンドを使用して、シェルにこれらのさまざまな規則を変換させることができます。例:stty -onlcr
その後、シェルはすべての発信 LF を CR LF に変換します。
Linux と OSX は Unix の規則に従います
テキスト ファイル
テキスト ファイルは依然として非常に重要であり、広く使用されています。たとえば、HTML と XML はテキスト ファイルの例です。 HTTP などの重要なインターネット プロトコルのほとんどは、テキスト ファイルの規則に従っており、行末の仕様が含まれています。
プリンター
最も安価なプリンター以外のほとんどのプリンターは、依然として CR と LF を尊重します。実際、これらは最も広く使用されているページ記述言語である PCL と Postscript の基礎となっています。
要するに、プリンターには必要でしたが、現在の OS では少し異なる方法で行われます。ほとんどの場合、\r\n
を実行して CR と LF の両方を実行するだけで問題ありません。 ほとんどの場合、これで問題なく動作します。