文件命令数据库和识别文本文件

文件命令数据库和识别文本文件

请告诉我以下两种说法是否正确:

文件夹有一个数据库/表,它将告诉我当前可能的文件格式是什么(当我键入命令并后跟文件名/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了退格键,发现了两个。

相关内容