命令“文件”的输出“用nano打开文件后发生变化?

命令“文件”的输出“用nano打开文件后发生变化?

背景:我正在树莓派上运行脚本,该脚本将日志写入文件。该脚本需要一些时间才能完成,因此有时 pi 会遇到断电并关闭。每当发生这种情况时,日志文件通常会丢失几行,并且一些空字节似乎会附加到日志末尾。

目标:我正在尝试检测此类情况。当我查看日志时,我可以看到一堆“^@^@”字符,我收集的这些字符代表空字节。我尝试使用该file命令,并愉快地发现正常日志返回“ASCII 文本”,而“损坏”日志返回“数据”。

问题:我认为这会起作用,但似乎如果我没有打开文件(例如使用 nano),那么即使损坏的文件也会返回“ASCII 文本”。只有在我用编辑器查看它之后,它才变成“数据”......知道为什么会发生这种情况吗?是否有一个强大的解决方案来检测这种情况?

谢谢!

编辑:我忘记包括一件重要的事情(因为我也刚刚意识到这一点):第一次,当它返回“ASCII文本”时,文件的结尾是“^@^@”,而第二次,当它返回“ASCII文本”时,文件的结尾是“^@^@”它返回“data”,结尾是“^@^@xxx”(附加了几个字母)。不确定这是否有影响。

编辑2:是的,我已经确认,对于“损坏”的文件,如果我只检查文件类型,它会返回“ASCII文本”,但如果我echo "xxxx" >> the_file,该文件就会变成“数据”......所以,我现在的解决方案是在检查文件类型之前将一些字符回显到文件中...不过仍然好奇这背后的原因。

相关内容