请告诉我以下两种说法是否正确:
文件夹有一个数据库/表,它将告诉我当前可能的文件格式是什么(当我键入命令并后跟文件名/usr/share/mime/magic
时可以获得的输出)。file
每当file
命令输出包含单词“文本”时,它指的是您可以使用文本查看器读取的内容,而任何没有“文本”的内容都是某种二进制文件。
答案1
文件夹 /usr/share/mime/magic 有一个数据库/表,它将为我提供当前可能的文件格式(当我键入“file”命令并在其后面跟随一个文件时可以获得的输出)。
正确,但/usr/share/mime/magic
不是使用的目录file
:该文件是仅用于 MIME 类型数据库。
从file
的联机帮助页中:“识别这些文件的信息是从已编译的 magic 文件 /usr/share/file/misc/magic.mgc 中读取的,或者从 /usr/share/file/misc/magic 目录中的文件(如果已编译的)中读取的。文件不存在。”
事实上,在我的 Arch Linux 系统中,该文件属于该file
包。
每当“文件”命令输出包含单词“文本”时,它指的是您可以使用文本查看器读取的内容,而任何没有“文本”的内容都是某种二进制文件。
看起来是正确的(我试图找到一个反例但无法找到)。
答案2
数据库的位置file
似乎与安装/版本相关。
linuxmanpages.com 版本file(1)
说:
文件
/usr/share/file/magic.mgc
默认编译的幻数列表
/usr/share/file/magic
默认的幻数列表
/usr/share/file/magic.mime.mgc
默认编译的幻数列表,用于在
-i
指定选项时输出 mime 类型。/usr/share/file/magic.mime
默认的幻数列表,用于在
-i
指定选项时输出 mime 类型。/etc/magic
魔法智慧的本地补充。
然而,在 Cygwin 和 Debian 上,file(1)
说
文件
/usr/share/misc/magic.mgc
默认编译的魔法列表。
/usr/share/misc/magic
包含默认魔法文件的目录。
更令人困惑的是,在 Debian 上,/usr/share/misc/magic
是一个到 的符号链接/usr/share/file/magic
,它是一个空目录,而在 Cygwin 上,/usr/share/file/magic
是到 的符号链接/usr/share/misc/magic
,这是一个相当大的文件(> 600K)。所以我做了一个显而易见的实验:
file /usr/share/misc/magic
/usr/share/misc/magic: Non-ISO extended-ASCII text, with overstriking
我用 看了它vi
,它看起来像 ASCII 文本(但我没有仔细检查所有 17000 行)。 “with overstrikeing”似乎表明存在退格键;看
echo -e "1 =\b/ 2" | file -
/dev/stdin: ASCII text, with overstriking
所以我搜索/usr/share/misc/magic
了退格键,发现了两个。