2012-01-12 11 views
2

私はそれらを削除する方法についてたくさんの質問をしていますが、Unixのシステムと端末ですべてのテスト/印刷機能を「混乱させる」という答えが見つかりませんでした。Unixでキャリッジリターンを印刷するときのデフォルトの動作は何ですか?

プログラマの意味では、なぜキャリッジがUnixシェルを混乱させるのでしょうか?

編集:はいできます。私は冗談を言っているわけではありませんが、キャリッジリターンが面白いものになる原因は何ですか?

例では、すべてのメッセージを終了するシステムからのメッセージが\r\nで取得されています。それで、Cでmessage[length - 2] = '\0';、またはperlで$str =~ s/\r//gのような何かをする必要があります。

編集2:Unixシステムでキャリッジリターンを印刷するデフォルトの動作は何ですか?それは問題を引き起こすと思われ、一般的に削除する必要があります。

+0

「修正」するために使用しているコードで具体的な例を提供できますか?そのコードについての質問をしますか?これは質問よりも暴言のように思える。 – David

答えて

3

Unixシステムでは不要で不快なので、

sttyの設定もご覧ください。入力と出力のNL/CRマッピングを処理するオプションがあります。 Linuxマシンでは、stty -aは言った:

speed 9600 baud; rows 65; columns 120; line = 0; 
intr = ^C; quit = ^\; erase = ^?; kill = ^X; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; 
stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr 
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke 

-ocrnlonlcr-onocr-onlret-inlcr、特に-igncr-icrnl

注意してください。あなたの現在の正気の端末の設定を保存する場合は、それらを試すことができます:リターンはもはや端末に送信できるよう

saved_tty_settings=$(stty -g) 

...tinker with the settings here... 

stty $saved_tty_settings 

一つの問題は、あなたが物事を解決することであることができませんでした。その場合は、Control-Jstty $saved_tty_settingsControl-Jと入力してみてください。最初のcontrol-Jは、以前にあったコマンドをフラッシュします(または何もしません)。残りはsttyリセット動作を実行します。私はまだsaneというスクリプトを持っています。これは、必要な場合に私が使うことができる私の好みのtty設定の記録を持っています。私はこの10年ほど前から頻繁に使用していませんが、tty設定をしっかりやっていません。

危険なコマンド(rmなど)を使用することに非常に注意してください。引用符を使用しても問題が発生する可能性があります(入力内容を見ることができず、トラックを失い、行編集を無効にした場合など)。 )。だから、あなたは遊ぶことができます。ちょっと注意してください。

+0

これはとても面白いです、ありがとう。 – Nate

2

これは、異なる文字の組み合わせを解釈する異なるシステムが行末を示すためです。 Windowsは\r\nを使用し、*ユナイテッド\nを使用し、Macは一点で\rを使用しました。 WindowsのテキストファイルをUnxで作成すると、\r\nの前に追加され、削除する必要があります。

dos2unixという便利なユーティリティがあり、このフォーマット変換を処理します。

関連する問題