file - 肯定文件类型

FILE(1)                                                                FILE(1)linux


NAMEgit

      file - 肯定文件类型正则表达式


总览算法

      file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file ...shell


描述编程

      本 手册页说明了3.27版本 file 命令的使用.  File 命令试图检查每一个参数以判网络

      定文件的类型.  检查共有三组,按以下顺序进行:文件系统检查,幻数检查, 以app

      及语言检查.  文件系统检查成功则输出文件类型.编程语言


      输 出的类型通常会包含如下的词中的一个: text (文件中仅有 ASCII 字符,可ide

      以用 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), hexdump(1) - 检查非textfile的工具.


标准的一致性

      本程序比System V 的FILE命令强大, 几乎能分辨出全部的模糊语言.   与System

      V  的FILE命令大部分兼容.本版本能识别更多的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) 以便往后作比较用.


举例

      $ file file.c file /dev/hda

      file.c:   C program text

      file:     ELF 32-bit LSB executable, Intel 80386, version 1,

      dynamically linked, not stripped

      /dev/hda: block special


      $ 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


历史

      There has been a file 命令至少是从研究版本6(手册页时间为1975年1月)开 始

      加 入UNIX中的.  System V 版本引入了一个重要变化:幻数类型的外部表.程序的

      运行时间有轻微降低, 可是复杂性大大增长了.


      本程序是基于System V 版本的,由Ian Darwin独立设计和编写.


      John Gilmore对源代码作了较大修改,在初版基础上 有 较 大 提 高.   Geoff

      Collyer发现了一些不足之处,并提供了一些幻数文件项.  本程序一直在完善中.


做者

      由Ian F. Darwin写源码, UUCP 地址 {utzoo | ihnp4}!darwin!ian, 电子 邮 件

      ian@sq.com, 邮寄地址: P.O. Box 603, Station F, Toronto, Ontario, CANADA

      M4Y 2L8.


      由Rob McMahon修改, cudcv@warwick.ac.uk, 1989, 并对‘&’操做符进行了扩充(

      再也不仅仅是简单的 ‘x&y != 0’,而是象‘x&y op z’这样).


      由Guy Harris修改, guy@netapp.com, 1993,完成:


             恢复‘‘old-style’’ ‘&’ 操做符为原来的功能,由于 1) Rob McMahon所作

             的修改打破了原来的使用方式, 2) 本版本的 file 命 令 支 持 的SunOS

             的‘‘new-style’’  ‘&’ 操做符也处理 ‘x&y op z’, 3) Rob的修改对某些

             状况没有考虑到;


             引入多级‘>’;


             引入‘‘beshort’’, ‘‘leshort’’, 等关键字使得程序可以按照必定的比特

             顺 序 查看文件中的比特数,而不是仅按运行 file 时的本地比特顺序查

             看.


      由Ian Darwin和其余做者(包括Christos Zoulas(christos@astron.com))修改,

      1990-1999.


合法性通告

      版 权 所 属 (c) Ian F. Darwin, Toronto, Canada, 1986, 1987, 1988, 1989,

      1990, 1991, 1992, 1993.


      本软件独立于美国电话电报公司,Sun微系统公司,Digital设备公司, Lotus发展

      公司 , California大学董事会,X联盟或者MIT,或者自由软件基金会.


      本软件独立于美国商业部的任何出口规定,能够自由用于任何国家和行星.


      任 何人无需受权便可在任何计算机系统上使用此软件用于任何目的,能够自由修

      改和发布,但要遵照如下限制:


      1. 做者对使用此软件形成的任何后果不负任何责任,不管多么严重,即便这些后

      果是因为软件形成的.


      2. 禁止不如实说明本软件的来源,不管是明确说错或是忽略. 因为不多有用户读

      源码, 因此在文件中必定要说明软件来源.


      3. 修改后的版本必须明白的标明,禁止将其做为原始软件.因为不多有用户读 源

      码, 因此在文件中必定要说明软件来源.


      4. 禁止删除或修改本通告.


      随 同本包发布的几个支持文件(getopt, strtok)由 Henry Spencer完成,一样适

      用以上条款.


      随同本包发布的几个支持文件(strtol, strchr)属于公共域的;都作了标记.


      文件 tar.h 和 is_tar.c 由 tar 程序组的John Gilmore完成,无需听从以 上 条

      款.


臭虫

      一定存在一种更好的方法来根据Magdir中的glop来自动建立Magic 文件.是什么方

      法呢?要更好的实现,那么幻数文件应该编译成二进制 (就是说, ndbm(3) 或者,

      在异种网络环境中采用定长的 ASCII 字符串)来加快启动速度.这样,程序就能达

      到Version 7 中的 file命令那样的运行速度,同时又具备System V 版本的 灵 活

      到Version 7 中的 file命令那样的运行速度,同时又具备System V 版本的 灵 活

      性.


      File  使用的一些算法虽然提升了速度,但精确性下降了,所以在对 ASCII 文件

      内容操做有时会出错.


      对 ASCII 文件的支持(基本上是对编程语言)过于简单,效率较低,须要从新编 译

      并更新.


      在一系列连续行后应该跟着有一个‘‘else’’从句.


      幻 数文件和关键词应该有正则表达式的支持.  使用 ASCII TAB 做为分隔符很是

      不足取,致使很难编辑文件, 但也所以受到保护.


      在关键词中使用大写字母是可取的.  例如, troff(1) 命令与查看手册页 的 宏.

      正则表达式支持将使这易于实现.


      本 程序没有实现对 FORTRAN 的理解.  应该可以经过在开始行中出现的关键字识

      别出FORTRAN .  正则表达式支持将使这易于实现.


      文件 ascmagic 中的关键词表可能应纳入Magic文件.  这能经过使用象‘*’这样的

      关键词来实现偏移量.


      另 一个优化是要对幻数文件排序,这样,咱们就能够在取得第一个比特,第一个

      词,第一个长整型,等等的时候完成对它们全部的检查.抱怨在幻数文件项中的冲

      突.制定一条规则,将幻数项在文件偏移量的基础上排序,赛过在幻数文件里指定

      位置吗?


      本程序应提供一种方法来评价一种猜想有"多么好".  咱们去除了一些先前 的 设

      想( 如,将 ‘‘From ’’ 做为文件的最初5个字符) 由于它们不如其它的设想好(如

      ,‘‘Newsgroups:’’ 对"Return-Path:").  若是没有其它的设想提出,就很可 能

      会采纳第一种设想.


      本程序比某些file命令执行速度慢.


      本手册,特别是本部分,比较长.


可用性

      可 以 通 过 匿 名FTP 登 陆 到  ftp.astron.com  在目录下 /pub/file/file-

      X.YY.tar.gz 得到做者的命令的最新版本


[中文版维护人]

      姓名 <email>


[中文版最新更新]

      2001/07/15


《中国linux论坛man手册页翻译计划》:

      http://cmpp.linuxforum.net


                         Copyright but distributable                  FILE(1)

(END)

相关文章
相关标签/搜索