file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]
【功能】
辨识文件类型。
【举例】
*检查文件类型:
$ file file.cfile /dev/hda
输入之后,输出如下:
file.c: C program text
file: ELF 32-bit LSB executable, Intel 80386,version 1,
dynamically linked, notstripped
/dev/hda: block special
*检查文件类型,不输出文件名:
$file -b test/
输入之后,输出如下:
directory
*检查文件类型,文件名和结果用,隔开:
$file -F,example/
输入之后,输出如下:
example, directory
这里可以指定其它的分割字符。
*检查块文件内部,获得文件系统信息
$ file -s/dev/hda{,1,2,3,4,5,6,7,8,9,10}
输入之后,输出如下:
/dev/hda: x86 boot sector
/dev/hda1: Linux/i386 ext2 filesystem
/dev/hda2: x86 boot sector
/dev/hda3: x86 boot sector, extended partition table
/dev/hda4: Linux/i386 ext2 filesystem
/dev/hda5: Linux/i386 swap file
/dev/hda6: Linux/i386 swap file
/dev/hda7: Linux/i386 swap file
/dev/hda8: Linux/i386 swap file
/dev/hda9: empty
/dev/hda10: empty
这里,如果没有权限,执行不了。
【描述】
ile 命令的使用. File 命令试图检查每个参数以判定文件的类型. 检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查. 文件系统检查成功则输出文件类型.
输出的类型一般会包含以下的词中的一个: text (文件中仅有 ASCII 字符,可以用 ASCII 终端读此文件,以保证内容的可靠性), executable (文件中保存的是程序编译后的结果,一些UNIX 内核或其它内核能理解这类文件), 或者 data 表示所有其它类型文件(data 一般为二进制文件或者不可打印的). 但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,却不属于这一类如果要修改 /usr/share/magic 或者程序本身, preserve these keywords . 当文件为``text'' 类型时,认为此文件为可读文件. 不要象在Berkeley环境中那样做 - 要把``shell commands text''改为``shell script''.
文件系统检查是建立在对 stat(2) 系统调用结果的分析上的. 程序会分析文件是否为空,或者是否是某种特殊文件. 对于所有可在现有系统上使用的文件类型 (比如套接口文件,动态链接文件,命名管道文件(FIFOs) 等),只要它在系统头文件 sys/stat.h 中已经定义过,就可以被检查到.
幻数检查用来检查文件中是否有特殊的固定格式的数据. 规范的例子如二进制可执行文件(编译后的程序) a.out ,该文件格式在标准include目录下的 a.out.h 文件中定义,也可能在 exec.h 中定义. 这些文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 通过幻数告诉UNIX 操作系统此文件是二进制可执行文件, 和其中包含的其它类型. 幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以从幻数文件 /usr/share/magic 中读取.
如果文件为 ASCII 文件, file 会试图检查它的语言. 语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看 names.h) .br 指出此文件很可能是 troff(1) 输入文件, 而关键字 struct 指出此文件是C程序. 语言检查不如前两组检查可靠,所以放在最后执行.它也用来检查一些混合文件(例如 tar(1) 存档文件)并确定文件是`ascii text'类型还是`data'类型.
选项
-b
不输出文件名 (简要模式).
-c
检查时打印输出幻数文件的解析结果.常与 -m 一起使用,用来在安装幻数文件之前调试它.
-f 命名文件
从在参数表前的命名文件中读出将要检查的文件名(每行一个文件).要有命名文件,或者至少有一个文件名参数; 如果要检查标准输入, 使用``-''作为文件参数.
-m list
指定包含幻数的文件列表.可以是单个文件,也可以是用冒号分开的多个文件.
-n
每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效. 一般在将文件类型输出到管道时才采用此选项.
-v
打印程序版本并退出.
-z
试图查看压缩文件内部信息.
-L
(在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像 ls(1) 命令的like-named 选项.
-s
通常, file 只是试图去检查在文件列表中那些 stat(2) 报告为正常文件的文件的类型.由于读特殊文件将可能导致不可知后果,所以这样可以防止发生问题.使用 -s 选项时 file 命令也将去读文件列表中的块特殊文件和字符特殊文件. 一般用于从原始磁盘分区中获得文件系统类型,此文件为块特殊文件. 这个选项也导致 file 命令忽略 stat(2) 报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.
【其它】
文件
/usr/share/magic - 默认的幻数列表
ENVIRONMENT
环境变量 MAGIC 用于设置默认的幻数文件.
参看
magic(4) - 幻数文件的格式.
strings(1), od(1),hexmp(1) - 检查非textfile的工具.
标准的一致性
本程序比System V 的FILE命令强大, 几乎能分辨出所有的模糊语言. 与System V 的FILE命令大部分兼容.本版本能识别更多的magic, 但是,也将因此在有些情况下会产生不同输出(尽管更加精确).
本版本与System V的显着区别就是本版本对空格是作为分隔符来处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文件中的
>10 string language impress (imPRESSdata)
要改为
>10 string language\ impress (imPRESSdata)
另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的
0 string \begindata Andrew Toolkit document
要改为
0 string \\begindata Andrew Toolkit document
SunOS releases 3.2及以后的版本包括从System V 发展来的 file(1) 命令,但有所扩展.本版本与Sun的file命令差别不大.它包括对 `&' 操作符的扩展,例如,
>16 long&0x7fffffff >0 not stripped
MAGIC DIRECTORY
幻数文件项主要是从USENET收集来的,许多人都为此作出了贡献. Christos Zoulas (下边将提到的)将收集附加项信息及修正幻数文件项. 幻数文件项的合并表将会定时发布.
幻数文件项的顺序非常重要.不同的系统上的幻数项放的顺序可能不同. 如果老的 file 命令使用幻数文件,请将旧的幻数文件改名保存, (如改为 /usr/share/magic.orig) 以便日后做比较用.
2. file://是什么意思
英文原义:File Protocol
中文释义:本地文件传输协议
注解:File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。
应 用:要使用File协议,基本的格式如下:file:///文件路径,比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或IE地址栏中键入:file:///f:/flash/1.swf并回车。
另:file也表示文件。
LINUX 命令
file 命令
用途
确定文件类型。
语法
对文件类型分类
file [ -m MagicFile] [ -d ] [ -h ] [ -i ] [ -M File ] [ -f FileList] [File...]
检查 Magic 文件的格式错误
file -c [ -m MagicFile]
描述
file 命令读取用 File 参数或者 FileList 变量指定的文件,在每个文件上执行一系列测试,然后将它们按照类型分类。然后此命令将文件类型写入标准输出。文件可以是常规文件、目录、FIFO(指定的管道)、块特殊文件、字符特别文件、符号链接或者套接字类型。
* 对于长度为零的常规文件,将识别为空文件。
* 对于符号链接文件,缺省情况下此链接后跟符号链接引用的文件。
如果文件是 ASCII 码的格式,则 file 命令将检查前 1024 个字节然后确定文件类型。如果文件不是 ASCII 格式,则 file 命令将尝试区分二进制数据文件和包含扩展字符的文本文件。
如果 File 参数指定了可执行程序或者对象模块文件且版本号大于 0则 file 命令将显示版本戳记。ld 命令说明了 a.out 文件的使用。
file 命令使用 /etc/magic 来标识包含某种 magic 数字的文件;即,任何包含可以表示类型的数字或字符串常量的文件。
如果文件不存在,无法读取或者文件状态无法确定,那么文件将不看作会影响退出状态的错误。输出表明文件已被处理,但是类型仍无法确定。
当使用了 -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 字段的一部分,但这不应当作影响退出状态的错误。
标志
-c 检查指定的 magic 文件(缺省情况下,/etc/magic 文件)有无格式错误。此验证一般不进行。在此标志下文件输入不执行。
-d 将任何缺省系统测试应用到文件。
-f FileList 读取指定的文件列表。文件必需在每行列出一个文件,不包含开开头和拖尾空格。
-h 当遇到符号链接时,将文件标识为符号链接。如果未指定 -h 标志且 file 是指向不存在文件的符号链接,file 应将文件标识为符号链接,就好像指定了 -h 标志。
-i 如果文件不是常规文件,则不尝试进一步对文件类型进行分类,但如描述中指定的那样标识文件。
-m MagicFile 指定 magic 文件的文件名(缺省情况下,/etc/magic)。
-M File 指定包含应应用于文件以对其分类的测试的文件的名称。不应应用缺省系统测试。
退出状态
此命令返回下列出口值:
0 成功结束。
>0 发生错误。
示例
1. 要显示文件中包含的信息类型,请输入:
file myfile
这将显示文件 myfile的类型(例如目录,数据,ASCII 文本,C 程序源,压缩文档)。
2. 要显示在文件名列表中指定的每个文件的类型,请输入:
file -f filenames
这将显示在 filenames 列表中指定的每个文件的类型。每个文件必须单独出现在一行上。
注:
要从 file 命令获取定制的信息,请和 -m 标志一起使用独立的 magic 文件。不建议编辑只读的 /etc/magic 文件。
文件
/usr/bin/file 包含 file 命令。
/etc/magic 包含文件类型数据库。
3. file ://
英文原义:File Protocol 中文释义:本地文件传输协议 注解:File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样。 应 用:要使用File协议,基本的格式如下:file:///文件路径,比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或IE地址栏中键入:file:///f:/flash/1.swf并回车。 另:file也表示文件。 LINUX 命令 file 命令 用途 确定文件类型。 语法 对文件类型分类 file [ -m MagicFile] [ -d ] [ -h ] [ -i ] [ -M File ] [ -f FileList] [File...] 检查 Magic 文件的格式错误 file -c [ -m MagicFile] 描述 file 命令读取用 File 参数或者 FileList 变量指定的文件,在每个文件上执行一系列测试,然后将它们按照类型分类。然后此命令将文件类型写入标准输出。文件可以是常规文件、目录、FIFO(指定的管道)、块特殊文件、字符特别文件、符号链接或者套接字类型。 * 对于长度为零的常规文件,将识别为空文件。 * 对于符号链接文件,缺省情况下此链接后跟符号链接引用的文件。 如果文件是 ASCII 码的格式,则 file 命令将检查前 1024 个字节然后确定文件类型。如果文件不是 ASCII 格式,则 file 命令将尝试区分二进制数据文件和包含扩展字符的文本文件。 如果 File 参数指定了可执行程序或者对象模块文件且版本号大于 0则 file 命令将显示版本戳记。ld 命令说明了 a.out 文件的使用。 file 命令使用 /etc/magic 来标识包含某种 magic 数字的文件;即,任何包含可以表示类型的数字或字符串常量的文件。 如果文件不存在,无法读取或者文件状态无法确定,那么文件将不看作会影响退出状态的错误。输出表明文件已被处理,但是类型仍无法确定。 当使用了 -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 字段的一部分,但这不应当作影响退出状态的错误。 标志 -c 检查指定的 magic 文件(缺省情况下,/etc/magic 文件)有无格式错误。此验证一般不进行。在此标志下文件输入不执行。 -d 将任何缺省系统测试应用到文件。 -f FileList 读取指定的文件列表。文件必需在每行列出一个文件,不包含开开头和拖尾空格。 -h 当遇到符号链接时,将文件标识为符号链接。如果未指定 -h 标志且 file 是指向不存在文件的符号链接,file 应将文件标识为符号链接,就好像指定了 -h 标志。 -i 如果文件不是常规文件,则不尝试进一步对文件类型进行分类,但如描述中指定的那样标识文件。 -m MagicFile 指定 magic 文件的文件名(缺省情况下,/etc/magic)。 -M File 指定包含应应用于文件以对其分类的测试的文件的名称。不应应用缺省系统测试。 退出状态 此命令返回下列出口值: 0 成功结束。 >0 发生错误。 示例 1. 要显示文件中包含的信息类型,请输入: file myfile 这将显示文件 myfile的类型(例如目录,数据,ASCII 文本,C 程序源,压缩文档)。 2. 要显示在文件名列表中指定的每个文件的类型,请输入: file -f filenames 这将显示在 filenames 列表中指定的每个文件的类型。每个文件必须单独出现在一行上。 注: 要从 file 命令获取定制的信息,请和 -m 标志一起使用独立的 magic 文件。不建议编辑只读的 /etc/magic 文件。 文件 /usr/bin/file 包含 file 命令。 /etc/magic 包含文件类型数据库。
4. 显示创建数据库data的定义信息的命令
你问的是显示需要创建数据库data的定义信息的命令吗?需要。因为如果不创建定义信息,会导致编码器不进行工作,创建定义命令可以加快工作效率。
5. linux file命令如何使用
1. file 是检测文件类型的命令。
2. 文件类型就文件组织的方式,通常不同的文件类型执行不同的标准。
例如我们熟知的:txt , doc , xls , pdf ...
3. file 命令的简单用法就是:
file 文件名,例如:
file data.txt
data.txt: ASCII text
就告诉我们,data.txt 是一个text (即txt) 类型的文件。
txt 文件所采用的编码是ascii编码体系。
所以 text 是文件类型;ASCII是编码体系。
又如:
file my.pdf
my.pdf: PDF document, version 1.5
“PDF document“ 告诉我们 , my.pdf 是pdf类型的文件。
版本执行的标准是:1.5
像ascii , version 1.5 这些都是与文件类型密切相关的信息。
如果需要更详细的信息,可以加参数:
如:file -i data.txt
使用man file 看详细用法。
6. linux 执行程序时出现cannot execute binary file怎么解决
需要检查一下这个文件是否 shell 脚本, 如果是shell脚本, 才可以使用 “sh ***.run”的形式执行。
如果本身是一个可执行的命令程序, 不需要使用 sh, 直接加上执行权限, 执行这个应用程序就可以 (类似 windows下的 。exe文件 )
如果不是shell脚本。
1、file 文件名
可以查看文件类型:
2、或者: more 文件名
查看文件内容是否可读文本。
3、修改权限
chmod 777 文件名。
或者: chmod a+x 文件。
如果没有权限, 需要文件属主或管理员用户(root)执行。
4、执行时注意程序路径
如果程序在当前目录下, 可以使用 ./文件名 的形式。
linux系统下遇到cannot execute binary file的问题一般有以下情况造成:
1、非root用户或者无执行权限。
2、 编译环境不同(程序由其他操作环境复制过来)对于第一种情况,采用增加执行权限即可chmod +x program对于第二种情况,建议将该程序二进制包拷贝过来,重新编译程序。
3、硬件平台与软件不一致 , 例如: 32位系统,下载了个64位的软件,结果就无法执行 如果使用 file 命令检查的结果是 data, 而不是可执行文件, 那么在这个系统平台上不能直接运行这个文件
7. 如何查看Linux系统的文件类型
file命令查看
file filename
8. 系统文件类型为data怎么查看内容
Linux下普通文件(-rw-r--r--)根据文件内容又分为三类:
1)纯文本文件(ASCII):cat命令即可查看
2)二进制文件(binary):od命令查看,如od /bin/ls
3)数据格式文件(data):last命令,如last /var/log/wtmp
#PS:可以通过file或stat查看具体的文件类型
9. linux 查看文件类型有哪些
用file命令查看