.
部 信 息 .
-L
(在
支 持 符 号 链 接
的 系 统 上 )选 项
显 示 符 号 链 接
文 件 的 原 文 件 ,
就 像 ls(1) 命 令 的
like-named 选 项 .
通 常 , file
只 是 试 图 去 检
查 在 文 件 列 表
中 那 些 stat(2) 报 告
为 正 常 文 件 的
文 件 的 类 型 .由
于 读 特 殊 文 件
将 可 能 导 致 不
可 知 后 果 , 所
以 这 样 可 以 防
止 发 生 问 题 .使
用 -s 选 项 时 file
命 令 也 将 去 读
文 件 列 表 中 的
块 特 殊 文 件 和
字 符 特 殊 文 件 .
一 般 用 于 从 原
始 磁 盘 分 区 中
获 得 文 件 系 统
类 型 , 此 文 件
为 块 特 殊 文 件 .
这 个 选 项 也 导
致 file 命 令 忽 略
stat(2) 报 告 的 文 件
大 小 , 因 为 在
有 些 系 统 中 原
始 磁 盘 分 区 的
大 小 报 告 为 0.
/usr/share/magic
- 默 认 的 幻 数 列
表
环 境 变
量 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
幻 数 文
件 项 主 要 是 从
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.h 和 is_tar.c
由 tar 程 序 组 的 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
http://cmpp.linuxforum.net
本 页 面
中 文 版 由 中 文 man
手 册 页 计 划 提
供 。 中 文 man 手 册
页 计 划 :
https://github.com/man-pages-zh/manpages-zh
|