file 命令

用途

确定文件类型。

语法

要对文件类型进行分类
file [ -m MagicFile ] [ -d ] [ -h ] [ -i ] [ -M MagicFile ] [ -f FileList] [File...]
要检查 Magic 文件是否存在格式错误
file -c [ -m MagicFile ] 

描述

file 命令读取用 File 参数或者 FileList 变量指定的文件,在每个文件上执行一系列测试,然后将它们按照类型分类。 然后命令将文件类型写到标准输出。 文件可以是常规文件、目录、FIFO(指定的管道)、块特殊文件、字符特别文件、符号链接或者套接字类型。

  • 对于长度为零的常规文件,将识别为空文件。
  • 对于符号链接文件,缺省情况下此链接后跟符号链接引用的文件。

如果文件是 ASCII 码的格式,那么 file 命令将检查前 1024 个字节然后确定文件类型。 如果文件不是 ASCII 格式,那么 file 命令将尝试区分二进制数据文件和包含扩展字符的文本文件。

如果 File 参数指定可执行文件或对象模块文件,且版本号大于 0,那么 file 命令将显示版本戳记。 ld 命令说明了 a.out 文件的使用。

如果语言环境是 C 编程语言,那么 file 命令会使用 /etc/magic 文件来标识包含某种幻数的文件;即,任何包含表示类型的数字或字符串常量的文件。

但是,如果语言环境不是 C 编程语言,那么 文件 命令将使用 /usr/lib/nls/msg/<language_env。>/magic.cat 文件来识别具有幻数的文件。

如果文件不存在,无法读取或者文件状态无法确定,那么文件将不看作会影响退出状态的错误。 输出指示文件已被处理,但是类型仍无法确定。

当使用了 -i 标志时,应使用以下格式标识每个 file 指定的操作数:
"%s: %s\n", file, type
除非在 POSIX 语言环境,否则不指定 type 的值,如果 file 指定为下表中列示的类型之一,type 应包含(但不限于)对应字符串。 在字符串中显示的每个空格应是一个空格
表 1. File 实用程序输出字符串
如果 file 是: type 应包含字符串:
目录 目录
FIFO fifo
套接字 套接字
块特殊文件 块特殊文件
字符特别文件 字符特别文件
可执行文件(二进制) 可执行文件
空常规文件
符号链接 符号链接到
ar 归档库 归档
扩展的 cpio 格式 cpio 压缩文档
扩展的 tar 格式 tar 压缩文档
Shell 脚本 命令文本
C 语言源 C 程序文本
FORTRAN 源 fortran 程序文本
如果 file 标识为符号链接,那么应使用以下备用输出格式:
"%s: %s %s\n", file, type, contents of link"
如果 file 操作数指定的文件不存在或无法读取,那么应将字符串 cannot open 包含为 type 字段的一部分,但这不应视为影响退出状态的错误。 如果 file 操作数指定的文件的类型不能确定,那么字符串 data 应包含为 type 字段的一部分,但这不应当作影响退出状态的错误。

标志

表 2。 标志
描述
-c 检查指定的 magic 文件(缺省情况下,/etc/magic 文件)有无格式错误。 此验证一般不进行。 在此标志下文件输入不执行。
-d 将任何缺省系统测试应用到文件。
-f FileList 读取指定的文件列表。 文件必需在每行列示一个文件,不包含开开头和拖尾空格。
-h 当遇到符号链接时,将文件标识为符号链接。 如果未指定 -h 标志且 file 是指向不存在文件的符号链接, file 应将文件标识为符号链接,就好像指定了 -h 标志。
-i 如果文件是常规文件,那么不会尝试进一步对该文件的类型进行分类,而是按照 描述中的指定来标识该文件。
-m MagicFile 指定 magic 文件的文件名(缺省情况下, /etc/magic)。
-M MagicFile 指定包含应应用于文件以对其分类的测试的文件的名称。 不应应用缺省系统测试。

退出状态

本命令返回以下退出值:

表 3。 退出状态
描述
重大安全事件数量 成功完成。
> 0 发生错误。

示例

  1. 要显示文件包含的信息类型,请输入:
    file myfile
    这将显示文件 myfile 的类型(例如目录、数据、ASCII 文本、C 程序源和压缩文档)。
  2. 要显示文件名列表中指定的每个文件的类型,请输入:
    file -f filenames
    这将显示在以下列表中指定的每个文件的类型:filenames列表。 每个文件必须单独出现在一行上。
注: 要从 file 命令获取定制消息,请将单独的 magic 文件与 -m 选项配合使用。 不建议编辑只读的 /etc/magic 文件。

文件

表 4。 文件
描述
/usr/bin/file 包含 file 命令。
/etc/magic 包含文件类型数据库。