提问人:Jacob Wegelin 提问时间:3/13/2023 更新时间:3/13/2023 访问量:321
当文件只包含一个 ASCII 字符时,为什么文件会说“没有魔法”?[已结束]
why does file say "no magic" when a file consists of nothing but a single ASCII character? [closed]
问:
闭。这个问题与编程或软件开发无关。它目前不接受答案。
这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。
9个月前关闭。
当文件只包含一个空格、换行符或 ASCII 字母时,为什么 file 命令说它“没有魔法”?
使用两个相同字符的 Clobber 文件,
然后文件将其称为 ASCII。
一个非常小的魔法文件会是什么? 为什么要创建它,它的用途是什么?
> /bin/rm junk
> printf ' ' > junk; file junk
junk: very short file (no magic)
> echo > junk; file junk
junk: very short file (no magic)
> printf 'd' > junk; file junk
junk: very short file (no magic)
> printf 'dd' > junk; file junk
junk: ASCII text, with no line terminators
以下帖子似乎是相关的;它因缺乏细节或清晰度而被关闭:
https://unix.stackexchange.com/questions/393288/explain-please-what-is-a-magic-file-in-unix
但我不是在问什么是魔术或如何制作文件魔术。
我问为什么对一个字节的文件说“没有魔法”,而对一个双字节的文件却没有。file
答:
1赞
KamilCuk
3/13/2023
#1
为什么文件对一个字节的文件说“没有魔法”,而对一个双字节的文件却没有。
因为程序就是为了做到这一点而编写的。file
从 https://github.com/file/file/blob/c49972ddb4933ee6edc4a2abc7f36f6a42d47300/src/funcs.c#L338 :
if (nb == 0) {
def = "empty";
goto simple;
} else if (nb == 1) {
def = "very short file (no magic)";
goto simple;
}
评论
file
file
wav
RIFF***@**@WAVE
file
why file says "no magic" for a one-byte file but not for a two-byte file.
因为文件的源代码是“如果一个字节,那么没有魔法,否则..”?我不明白你期望得到什么样的答案? 我不理解这些问题。具有魔术的非常小的文件将是一个非常小的文件,具有特定的字节序列。它将用于检测文件格式,具体取决于它是什么“魔力”。What would a very small file with magic be? Why would one create it and what would it be used for?