Answers:
文件是字节流,长度为零或更多。字节为8位。由于存在8位的256种组合,这意味着字节是0到255之间的任何数字。因此,每个文件在其最低级别上都是从0到255的大量数字。
程序和用户完全可以决定数字的“含义”。如果我们要存储文本,则最好将数字用作代码,其中每个数字都分配有一个字母。这就是ASCII和Unicode的作用。如果我们要显示文本,那么最好构建一个设备或编写一个可以使用这些数字并显示类似于相应ASCII / Unicode代码的位图的程序。终端和终端仿真器就是这样做的。
当然,对于图形,我们可能希望数字代表像素及其颜色。然后,我们需要一个程序来遍历文件,读取所有字节,并相应地渲染图片。终端仿真器期望字节为ASCII / Unicode数字,并且对于相同的字节块(或文件),其行为将有所不同。
Cat将输入文件的内容转储到标准输出,在这种情况下,该输出是文本设备:您的终端窗口。由于图像由二进制数据组成,因此您看到的是原始二进制数据,将其解释为ASCII文本。例如,值65的字节将显示为大写A,66将显示为大写B,等等。如果使用能够正确解释图像文件的应用程序打开文件,则将显示文件的二进制内容作为图像。
cat
是像中一样将文件放在一起cat filea fileb > filec
,如果您不通过终端进行传输(如本例所示),则文件是文本还是二进制都没有关系。在Unix世界中,二进制文件和文本文件存储相同,只有文本文件包含一些受限制的字节集。cat的常见用法是将文件内容定向到一些命令,这些命令不以文件名作为参数,而是接受来自标准输入的输入。