我的团队正在 CI 环境中工作。
CI 环境每天都会定时生成一个ko
名为 的文件,其类型为.x.ko
ELF 64-bit LSB relocatable
今天发现这个ko
文件的类型变成了data
.
我正在尝试找出原因。
我尝试cat
这个ko
文件,但输出什么也没有。然后,我尝试这样做cat -et x.ko
,它给了我很多^@^@^@^@^@^@^@^@^@^@^@^@^@^@
......
你知道什么^@^@^@^@^@^@^@^@^@
意思吗?
答案1
您的文件充满了空值,而不是空的。常规程序cat
会将空值打印到标准输出,但您的终端通常会将它们显示为空,而将cat -v
它们表示为^@
。^@
表示空字节,因为“@”(0x40 或 64)xor 64(翻转位 7)的字节值为零。
为什么它突然充满了空值,我们无法从这里看出。
这个相关问题可能会提供有关插入符号表示的信息:ASCII 转义序列和控制字符配对是标准的一部分吗?
答案2
当心 ,猫不是显示二进制数据的完美工具。
一个简单的unix工具是OD(八进制转储)。
一个例子od-c-tx1
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
所以你可以看到回车\n