本文修订日期:2019年11月2日

世界的尽头,是惊涛骇浪,还是万古深渊,没有人说的清。人们对世界的尽头众说纷纭。

Unix门派的人认为世界的尽头应该是:<Line Feed> (LF),将会诞生一个平行的新世界。在Unix 系统中,每行结尾是<换行>,即 "n";

unix-world.png

Mac门派的人认为世界的尽头应该是:< Carriage Return > (CR),万物将回到原点。在Mac 系统中,每行结尾是<回车>,即 "r"。

字符"r"的ASCII码为13,而13是西方文化最为忌讳的数字。正因为忌讳,西方人千方百计避免和13接触。在荷兰,人们很难找到13号楼和13号的门牌。他们用"12A"取代了13号。在英国的剧场,你找不到13排和13座。此外,人们还忌讳13日出游,更忌讳13人同席就餐,13道菜更是不能接受了。

mac-world.png

Windows门派的人坚持认为世界的尽头应该是:<Return><Line feed> (CRLF),将会产生一个平行的新世界。在Windows 系统中,每行结尾是<回车><换行>,即 "rn";

windows-world.png

备注:
在Notepad++中,选择菜单:编辑->文档格式转换,即可以看到三种格式的换行符。

由于Windows风格的换行使用 "rn",如果把这样的文件上传到 Unix/Linux,不能识别 "r",所以显示时在行尾会出现 ^M 出来。使用 cat -A 选项查看文本所有的字符,如下图所示:

[root@localhost ~]# cat -A world.sh
[root@localhost ~]# Hello World^M$

说明一下,cat -A等价于:cat -vE,其命令参数的含义为:
-v:使用^和 M表示不可打印字符
-E:在每行结束处显示$

备注:

很多人误以为,$是换行符,其实它不是换行符n的表示。

去除 "^M" 符号,有以下两种最常用的方法:

(1)cat -A a.txt | tr -d '^M'  > b.txt

shell的 tr 命令用于转换或删除文件中的字符。tr 指令从标准输入设备读取数据,经过字符串转换后,将结果输出到标准输出设备。-d:删除指令字符

(2)$ dos2unix filename

此个方法是很多人最常用的方法,也是最方便的方法。

《趣谈shell》已经正式发布,更多介绍请点击下面图片:

标签: none

添加新评论