假设一个人像这样创建一个文件:
touch myFile
Run Code Online (Sandbox Code Playgroud)
您可以使用 vim 或其他方式在其中输入一些文本,然后使用cat myFile
将内容吐出到终端中。
现在,当我在任何图像上使用 cat 时会发生什么?说,
cat myPNG.png
Run Code Online (Sandbox Code Playgroud)
我只是得到一堆垃圾。它只是让我思考cat
命令试图做什么,以及所有这些“垃圾”来自哪里。只是好奇。
Law*_*ceC 23
文件是一个字节流,长度为零或更多。一个字节是 8 位。由于 8 位有 256 种组合,这意味着一个字节是 0 到 255 之间的任何数字。 因此,每个文件在最低级别上都是一大堆 0 到 255 之间的数字。
完全由程序和用户决定这些数字的“含义”。如果我们想要存储文本,那么使用数字作为代码可能是一个好主意,其中每个数字都分配了一个字母。这就是 ASCII 和 Unicode 所做的。如果我们想显示文本,那么构建一个设备或编写一个程序来获取这些数字并显示一个看起来像相应的 ASCII/Unicode 代码的位图可能是个好主意。这就是终端和终端仿真器所做的。
当然,对于图形,我们可能希望数字代表像素及其颜色。然后我们需要一个程序来遍历文件,读取所有字节,并相应地呈现图片。终端仿真器期望字节是 ASCII/Unicode 数字,并且对于相同的字节(或文件)块的行为会有所不同。
Cat 将输入文件的内容转储到标准输出,在本例中是一个文本设备:您的终端窗口。由于图像由二进制数据组成,因此您看到的是原始二进制数据,就像它是 ASCII 文本一样。例如,值为 65 的字节将显示为大写 A,66 为大写 B 等。如果使用能够正确解释图像文件的应用程序打开文件,将显示文件的二进制内容作为图像。
归档时间: |
|
查看次数: |
2963 次 |
最近记录: |