您好,登錄后才能下訂單哦!
file [-beLvz][-f <名稱文件>][-m <魔法數字文件>...][文件或目錄...]
辨識文件類型。
$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 -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
- 默認的幻數列表
環境變量
MAGIC
用于設置默認的幻數文件.
magic(4)
- 幻數文件的格式.
strings(1), od(1), hexdump(1)
- 檢查非textfile的工具.
本程序(一般Linux上的?)比
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
幻數文件項主要是從
USENET
收集來的,許多人都為此作出了貢獻. Christos Zoulas (下邊將提到的)將收集附加項信息及修正幻數文件項. 幻數文件項的合并表將會定時發布.
幻數文件項的順序非常重要.不同的系統上的幻數項放的順序可能不同. 如果老的
file
命令使用幻數文件,請將舊的幻數文件改名保存, (如改為
/usr/share/magic.orig
) 以便日后做比較用.
http://fanqiang.chinaunix.net/a1/b1/20020108/08100041.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。