天天看点

为什么文本文件以Ctrl+Z结尾

今天是一则老故事

实际上,文本文件并不需要以Ctrl+Z结尾,但是,这一转换还存存在于某些命令中。

(尽管,幸运的是,这些命令,在现在看来,都是很小的,不怎么影响使用)

故事要回到CP/M操作系统所存在的上古时代,CP/M是一款操作系统的名字,后来它被MS-DOS所取代。为什么这么说?因为英特尔的8086处理器可以看做是8080的取代者,那么,为8086处理器所开发的操作系统,也应该是为8080开发的操作系统的取代者。

在CP/M操作系统中,文件以扇区的形式进行存储,每个扇区的大小为128个字节。如果你的文件为64个字节,则这个文件可以完全保存在一个扇区中。一个特殊的地方是,操作系统是以一个文件占用的扇区数量来表示文件的大小的,所以,如果你的文件不是128的整数倍,则你需要采用某些方式来表达文件真正的结尾在哪个地方。

这个时候,Ctrl + Z这种技法就诞生了。

按照转换惯例,文件所在的最后一个扇区的未使用空间都会被Ctrl+Z这一字符填充。同时,为了保持对CP/M的兼容,MS-DOS做了Ctrl+Z的转换。所以当你从一台CP/M系统传输一个文件到新的PC时,你就不会碰到文件结尾的垃圾数据了。

Ctrl + Z已经不再被使用很多年了。MS-DOS系统是以字节为单位来记录文件的大小,而不是以扇区数量。但是这一转换还是会存在一些古老的DOS命令中,例如”COPY”。

总结

最后