更多/文件报告“不是文本文件”仅包含一个字母和换行符的文件

更多/文件报告“不是文本文件”仅包含一个字母和换行符的文件

more我对linux下程序的输出感到困惑。当创建仅包含单个字母的文件时(除了像ä这样可以正常工作的特殊字母),more 不会报告文件的内容,但该文件不是文本文件。一旦文件包含多个字母,more就不会报告错误,而只是打印文件的输出。

> rm file
> echo 'h' > file
> more file
 
******** file: Not a text file ********
 
> cat file
h

这是我的版本中的错误,more还是存在对文本文件的特定要求,而我的单字母文件示例中未满足这些要求?

更多版本:more from util-linux 2.36.2.

更多细节

文件内容 od的输出如下:

> od -x file
0000000 0a68
0000002

据我了解,问题似乎不仅仅是由于echo行为与我预期的方式不同引起的,因为当我按如下方式使用 printf 时,问题仍然存在并且命令的输出od是相同的(因此通过生成的文件echo并且printf应该是相同的)


> printf 'h\n' > file2
> more file2
 
******** file2: Not a text file ********

> od -x file2
0000000 0a68
0000002

file实用程序版本

> file --version
file-5.40
magic file from /usr/share/file/misc/magic
seccomp support included

系统信息 我的系统是 arch linux,echo 是我通过 bash 和 zsh 使用的 shell 内置命令。

错误报告 感谢您的反馈,我能够在正确的错误跟踪器上将此作为错误报告: https://bugs.astron.com/view.php?id=256

答案1

错误不在 more 中,而是在 中libmagic,它也被 所使用file

例如,libmagic报告空文件是二进制文件,并且more有特定的代码来处理该文件。

我看到至少有两种解决方案,您可以more从源代码重建,无需 libmagic 支持,或者您可以降级libmagic.

顺便说一句,你应该举报。

相关内容