root@server:~# od -c -tx1 /etc/passwd | head
0000000 r o o t : x : 0 : 0 : r o o t :
72 6f 6f 74 3a 78 3a 30 3a 30 3a 72 6f 6f 74 3a
0000020 / r o o t : / b i n / b a s h \n
2f 72 6f 6f 74 3a 2f 62 69 6e 2f 62 61 73 68 0a
0000040 d a e m o n : x : 1 : 1 : d a e
64 61 65 6d 6f 6e 3a 78 3a 31 3a 31 3a 64 61 65
0000060 m o n : / u s r / s b i n : / u
6d 6f 6e 3a 2f 75 73 72 2f 73 62 69 6e 3a 2f 75
0000100 s r / s b i n / n o l o g i n \n
73 72 2f 73 62 69 6e 2f 6e 6f 6c 6f 67 69 6e 0a
注意,cat并不是显示二进制数据的完美工具。
od(八进制转储)是一个简单的 unix 工具。
od -c -tx1的示例
所以你可以看到回车\n
您的文件充满了空值,而不是空的。常规
cat
会将空值打印到标准输出,但您的终端通常会将它们显示为空,而将它们cat -v
表示为^@
.^@
表示空字节,因为“@”(0x40 或 64)xor 64(翻转位 7)的字节值为零。为什么它突然充满了空值,我们无法从这里判断。
这个相关的问题可能是关于插入符号表示的信息:ASCII 转义序列和控制字符对是否是标准的一部分?