千家信息网

Linux命令学习手册-file

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]功能辨识文件类型。举例检查文件类型$file file.c file /dev/hda输入之后,输出
千家信息网最后更新 2025年02月02日Linux命令学习手册-file
file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

功能

辨识文件类型。

举例

检查文件类型

$file file.c file /dev/hda

输入之后,输出如下:

file.c:   C program textfile:     ELF 32-bit LSB executable, Intel 80386, version 1,dynamically linked, not stripped/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

这里,如果没有权限,执行不了。

描述

本手册页说明了 3.27 版本 file 命令的使用 . File 命令试图检查每个参数以判定文件的类型. 检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查.

文件系统检查成功则输出文件类型. 输出的类型一般会包含以下的词中的一个: text (文件中仅有 ASCII 字符,可以用 ASCII 终端读此文件,以保证内容的可靠性), executable (文件中保存的是程序编译后的结果,一些UNIX 内核或其它内核能理解这类文件), 或者 data 表示所有其它类型文件( data 一般为二进制文件或者不可打印的). 有的常用的文件格式(如 core 文件、 tar 包),虽然也包含二进制数据,却不属于这一类。 可以修改如果要修改 /usr/share/magic 或者程序本身,以便针对这些关键字进行处理。当文件为 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), hexdump(1) - 检查非textfile的工具.

标准的一致性

本程序(一般Linux上的?)比 System VFILE 命令强大, 几乎能分辨出所有的模糊语言. 与 System VFILE=命令大部分兼容.本版本能识别更多的 =magic, 但是,也将因此在有些情况下会产生不同输出(尽管更加精确).

本版本与System V的显著区别就是本版本对空格是作为分隔符来处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文件中的

>10    string  language impress        (imPRESS data)

要改为

>10    string  language\ impress       (imPRESS data)

另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的

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) 以便日后做比较用.

其它参考资料

http://fanqiang.chinaunix.net/a1/b1/20020108/08100041.html

文件 检查 类型 系统 输出 命令 特殊 程序 字符 格式 输入 信息 文件名 语言 二进制 参数 标准 结果 不同 位置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术专业资格 魔法觉醒哈利波特有多少个服务器 方块三国服务器完整版 易宝网络技术上海有限公司 图像特征数据库英文 计算机网络技术的发展历史 网络安全如何保障个人信息 陕西图书馆有没有数据库 软件开发收费表 idc服务器是什么 空间数据库技术问题 新闻协会怎么做网络安全 上海软件开发人日单价怎么评估 新区大唐官府服务器登不上 魔兽数据库爆率 微信红包 服务器卡 幼儿园网络安全教育教案中班 网络安全法对微信处罚 守护网络安全我们应该这么做 一个ip能接两个服务器吗 上海网络技术开发管理系统 模拟城市的服务器在哪 平顶山进销存软件开发多少钱 东莞火把互联网科技 如何通过域名查找服务器dns 蓝宝互联网科技有限公司 与公司进行网络技术沟通协调 幼儿园网络安全教育教案中班 江苏在线网络技术开发原则 办公oa软件开发
0