Manpages

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 [AT] sq.com, 郵 寄 地 址 : P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8. 由 Rob McMahon修 改 , cudcv [AT] warwick.uk, 1989, 並 對 ’&’操 作 符 進 行 了 擴 充 ( 不 再 僅 僅 是 簡 單 的 ’x&y != 0’, 而 是 象 ’x&y op z’這 樣 ) . 由 Guy Harris修 改 , guy [AT] 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 [AT] 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