More

更多/文件報告“不是文本文件”文件,其中僅包含一個字母和換行符

  • April 2, 2021

我對morelinux下程序的輸出感到困惑。創建僅包含單個字母的文件時(除了ä可以正常工作的特殊字母),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

錯誤不在 more 中,而在libmagic, 也被file.

例如,libmagic報告一個空文件是二進製文件,並且more有特定的程式碼來處理它。

我看到至少兩個解決方案,您可以more從原始碼重建,沒有 libmagic 支持,或者您可以降級libmagic

順便說一句,你應該報告它。

引用自:https://unix.stackexchange.com/questions/643260