New line of file systems

new line of file systems Modified: 2023-07-04 20:24:23 Created: 2021-08-22 09:50:08 Tags: #cr # lf # crlf # new line # linux

    换行符来自老式打字机,如下图所示: 老式打字机

    老式打字机有一个类似喷头的结构(carriage),作用是将对应字符印到纸上。通常的文字都是从左往右,从上往下排版,随著打字进行,一行结束之后,需要如下操作:

    • 纸张(向上)滚动一行,喂新一行,line feed(lf)
    • carriage 回到最左边位置 carriage return(cr)

    这两个操作都要进行,它们的功能并不是在纸上显示字符,而是调节 carriage 的位置。在键盘上,只需要按一个回车(enter)就能实现两个操作。

    到了电子计算机时代,键盘参考了早期设计,这两个符号被保留下来,编入了 ascii 码中:

    • \n 来表示(向上)滚动一行
    • \r 表示 carriage 回到最左边

    这两个字符都占一个长度。但早期计算机存储非常昂贵,两个字符表示换行符占据空间太多,不同系统就有了自己的设计:

    简写 全名 符号 系统 记忆方式
    cr carriage return \r mac mac 中有 c
    lf line feed \n linux linux 也是以 l 开头的
    crlf carriage return line feed \n\r Windows microsoft 先是 cr 再是 f

    Windows 上的文件,直接拿到 Linux 上使用,在每行最后出现一个^M,这个就是cr显示的样子。crlf中的lf做了换行符,cr^M的形式显示出来。解决办法就是把cr直接替换为空。