Unix中打印回车的默认行为是什么



我看到了很多关于如何删除它们的问题,但我还没有找到答案,为什么它们会"扰乱"我在Unix系统和终端中的所有测试/打印功能。

那么,从程序员的角度来说,为什么回车会把Unix shell搞得一团糟呢。

编辑:是的,我可以。我无意咆哮,但我想知道是什么原因导致马车返回打印有趣。

一个示例是从以rn结束所有消息的系统中获取消息。然后,我必须在C中执行类似message[length - 2] = '';或在perl中执行$str =~ s/r//g的操作。

编辑2:Unix系统中打印回车的默认行为是什么?它似乎会引起问题,通常需要删除。

因为它们在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。第一个控制器-J刷新之前存在的任何命令(或者什么都不做);则其余部分运行CCD_ 14重置操作。我仍然有一个名为sane的脚本,它记录了我喜欢的tty设置,如果必须的话,我可以使用它。在过去十年左右的时间里,我没有经常使用它,但我也没有摆弄tty设置。

对于使用危险的命令(rm等)要格外小心,即使使用引号也可能导致问题(如果您看不到键入的内容,并且失去了跟踪,并且禁用了行编辑等)。所以,你可以玩;只是要小心。

这是因为不同的系统解释不同的字符组合来表示行尾。Windows使用rn,*unix使用n,Mac一度使用r。现在,当你在Unx中获得Windows创建的文本文件时,你会在n之前获得额外的r,这需要删除。

有一个很好的实用程序叫dos2unix,可以为您处理这种格式转换。

最新更新