Provided by: manpages-zh_1.6.3.3-2_all bug

NAME

       file - 確定文件類型

總覽

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

描述

       本手冊頁說明了3.27版本   file   命令的使用.    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), 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.his_tar.ctar 程序組的John Gilmore完成,無需遵從以上條款.

臭蟲

       必定存在一種更好的方法來根據Magdir中的glop來自動創建Magic
       文件.是什麼方法呢?要更好的實現,那麼幻數文件應該編譯成二進制   (就是說,   ndbm(3)   或者,
       在異種網絡環境中採用定長的  ASCII  字符串)來加快啓動速度.這樣,程序就能達到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

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh

                                   Copyright but distributable                            FILE(1)