各系统换行符
换行符,也即是回车换行,因为表示为Carriage-Return和Line-Feed。
回车用Return-Carrige表示,简写为CR,字符表示为\r。
换行用Line-Feed表示,简写为LF,字符表示为\n。
由于历史原因,各操作系统使用不同的字符来表示换行符:
标识 | 字符 | |
---|---|---|
Windows | CRLF | \r\n |
Linux/Unix | LF | \n |
Mac | CR | \r |
这段历史,可参考回车换行符的来龙去脉。
Windows文件在Linux上显示
在Windows上创建的文件,如果未修改过其换行符,将其在Linux系统打开时,其换行符\r\n中的\n会直接被解释成换行符$(使用vim打开文件,然后使用set list(set nolist)显示(关闭显示)所有字符),而\r会被解释成^M(使用vim -b 目标文件即可显示)。
如果想要知道某个文件的使用的换行符格式,可使用vscode打开文件,界面右下角会将其文件编码格式、换行符、tab字符个数等信息。点击相应位置即可修改相关信息。
UTF-8与UTF-8 With BOM
UTF-8 With BOM是Windows产物,这种编码格式的文件中,开头会有几个特殊字符,当Windows系统检测到这几个字符时,便会将该文件以UTF-8编码处理。
dos2unix 和 unix2dos
Dos2unix 软件包包括工具 dos2unix 和 unix2dos,用于将纯文本文件在 DOS 或 Mac 格式与 Unix 格式之间相互转换。
DOS/Windows 的文本文件中,断行符是由两个字符共同表示的:回车符(CR)和换行符(LF)。Unix 的文本文件中,换行符则由单个换行符(LF)表示。而 Mac 的文本文件则由单个回车符(CR,用于 Mac OS X 之前的系统)或单个换行符(LF,用于当下的新 Mac OS)表示。