finish 200 in man1
[manpages-zh.git] / src / man1 / file.1
blobb16e8ba3a12000ccb7697897fc4eeddf5e69c2cc
1 .TH FILE 1 "Copyright but distributable"
2 .SH NAME
3 file
4 \- 确定文件类型
5 .SH 总览
6 .B file
8 .B \-bcnsvzL
11 .B \-f
12 命名文件 ]
14 .B \-m 
15 幻数文件 ]
16 file ...
17 .SH 描述
18 本手册页说明了3.27版本
19 .B file
20 命令的使用.
21 .B File
22 命令试图检查每个参数以判定文件的类型.
23 检查共有三组,按如下顺序进行:文件系统检查,幻数检查,以及语言检查.
24 .I 文件系统
25 检查成功则输出文件类型.
26 .PP
27 输出的类型一般会包含以下的词中的一个:
28 .B text
29 (文件中仅有
30 .SM ASCII
31 字符,可以用
32 .SM ASCII
33 终端读此文件,以保证内容的可靠性),
34 .B executable
35 (文件中保存的是程序编译后的结果,一些\s-1UNIX\s0 内核或其它内核能理解这类文件),
36 或者
37 .B data
38 表示所有其它类型文件(data 一般为二进制文件或者不可打印的).
39 但是有的常用的文件格式(如core文件、tar包),虽然也包含二进制数据,
40 却不属于这一类
41 如果要修改
42 .I /usr/share/magic
43 或者程序本身, 
44 .B "preserve these keywords" .
45 当文件为``text'' 类型时,认为此文件为可读文件.
46 不要象在Berkeley环境中那样做 \- 要把``shell commands text''改为``shell script''.
47 .PP
48 文件系统检查是建立在对
49 .BR stat (2)
50 系统调用结果的分析上的.
51 程序会分析文件是否为空,或者是否是某种特殊文件.
52 对于所有可在现有系统上使用的文件类型 (比如套接
53 口文件,动态链接文件,命名管道文件(FIFOs) 等),
54 只要它在系统头文件
55 .IR sys/stat.h 
56 中已经定义过,就可以被检查到.
57 .PP
58 幻数检查用来检查文件中是否有特殊的固定格式的数据.
59 规范的例子如二进制可执行文件(编译后的程序)
60 .I a.out
61 ,该文件格式在标准include目录下的
62 .I a.out.h
63 文件中定义,也可能在
64 .I exec.h
65 中定义.
66 这些文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 
67 通过幻数告诉\s-1UNIX\s0 操作系统此文件是二进制可执行文件,
68 和其中包含的其它类型.
69 幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型
70 相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以
71 从幻数文件
72 .I /usr/share/magic
73 中读取.
74 .PP
75 如果文件为
76 .SM ASCII 
77 文件,
78 .B file
79 会试图检查它的语言.
80 语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看
81 .IR names.h )
82 例如,关键字
83 .B .br
84 指出此文件很可能是
85 .BR troff (1)
86 输入文件, 而关键字 
87 .B struct
88 指出此文件是C程序.
89 语言检查不如前两组检查可靠,所以放在最后执行.它也用来检查
90 一些混合文件(例如 
91 .BR tar (1)
92 存档文件)并确定文件是`ascii text'类型还是`data'类型. 
93 .SH 选项
94 .TP 8
95 .B \-b
96 不输出文件名 (简要模式).
97 .TP 8
98 .B \-c
99 检查时打印输出幻数文件的解析结果.常与
100 .B \-m
101 一起使用,用来在安装幻数文件之前调试它.
102 .TP 8
103 .B \-f 命名文件
104 从在参数表前的
105 .I 命名文件
106 中读出将要检查的文件名(每行一个文件).要有
107 .I 命名文件
108 ,或者至少有一个文件名参数;
109 如果要检查标准输入, 使用``-''作为文件参数.
110 .TP 8
111 .B \-m list
112 指定包含幻数的文件列表.可以是单个文件,也可以是
113 用冒号分开的多个文件.
114 .TP 8
115 .B \-n
116 每检查完一个文件就强制刷新标准输出. 仅在检查一组文件时才有效.
117 一般在将文件类型输出到管道时才采用此选项.
118 .TP 8
119 .B \-v
120 打印程序版本并退出.
121 .TP 8
122 .B \-z
123 试图查看压缩文件内部信息.
124 .TP 8
125 .B \-L
126 (在支持符号链接的系统上)选项显示符号链接文件的原文件, 就像
127 .BR ls (1)
128 命令的like-named 选项.
129 .TP 8
130 .B \-s
131 通常,
132 .B file
133 只是试图去检查在文件列表中那些
134 .BR stat (2)
135 报告为正常文件的文件的类型.由于读特殊文件将可能导致
136 不可知后果,所以这样可以防止发生问题.使用
137 .BR \-s
138 选项时
139 .B file
140 命令也将去读文件列表中的块特殊文件和字符特殊文件.
141 一般用于从原始磁盘分区中获得文件系统类型,此文件为块
142 特殊文件. 这个选项也导致
143 .B file
144 命令忽略
145 .BR stat (2)
146 报告的文件大小,因为在有些系统中原始磁盘分区的大小报告为0.
147 .SH 文件
148 .I /usr/share/magic
149 \- 默认的幻数列表
150 .SH ENVIRONMENT
151 环境变量
152 .B MAGIC
153 用于设置默认的幻数文件.
154 .SH 参看
155 .BR magic (4)
156 \- 幻数文件的格式.
158 .BR strings (1), " od" (1), " hexdump(1)"
159 \- 检查非textfile的工具.
160 .SH 标准的一致性
161 本程序比System V 的FILE命令强大, 几乎能分辨出所有的模糊语言.
162 与System V 的FILE命令大部分兼容.本版本能识别更多的magic, 
163 但是,也将因此在有些情况下会产生不同输出(尽管更加精确). 
165 本版本与System V的显著区别就是本版本对空格是作为分隔符来
166 处理的, 所以不能在格式字符串中包含空格. 例如,现有幻数文
167 件中的
169 >10     string  language impress\       (imPRESS data)
171 要改为
173 >10     string  language\e impress      (imPRESS data)
175 另外, 格式字符串中的反斜线符号也要避免.例如,现有幻数文件中的
177 0       string          \ebegindata     Andrew Toolkit document
179 要改为
181 0       string          \e\ebegindata   Andrew Toolkit document
184 SunOS releases 3.2及以后的版本包括从System V 发展来的
185 .BR file (1)
186 命令,但有所扩展.本版本与Sun的file命令差别不大.它包括对 `&' 
187 操作符的扩展,例如,
189 >16     long&0x7fffffff >0              not stripped
190 .SH MAGIC DIRECTORY
191 幻数文件项主要是从USENET收集来的,许多人都为此作出了贡献.
192 Christos Zoulas (下边将提到的)将收集附加项信息及修正幻数文件项.
193 幻数文件项的合并表将会定时发布.
195 幻数文件项的顺序非常重要.不同的系统上的幻数项放的顺序可能不同.
196 如果老的
197 .B file
198 命令使用幻数文件,请将旧的幻数文件改名保存,
199 (如改为
200 .IR /usr/share/magic.orig )
201 以便日后做比较用.
202 .SH 举例
204 $ file file.c file /dev/hda
205 file.c:   C program text
206 file:     ELF 32-bit LSB executable, Intel 80386, version 1,
207 dynamically linked, not stripped
208 /dev/hda: block special
210 $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
211 /dev/hda:   x86 boot sector
212 /dev/hda1:  Linux/i386 ext2 filesystem
213 /dev/hda2:  x86 boot sector
214 /dev/hda3:  x86 boot sector, extended partition table
215 /dev/hda4:  Linux/i386 ext2 filesystem
216 /dev/hda5:  Linux/i386 swap file
217 /dev/hda6:  Linux/i386 swap file
218 /dev/hda7:  Linux/i386 swap file
219 /dev/hda8:  Linux/i386 swap file
220 /dev/hda9:  empty
221 /dev/hda10: empty
223 .SH 历史
224 There has been a 
225 .B file
226 命令至少是从研究版本6(手册页时间为1975年1月)开始加入\s-1UNIX\s0中的.
227 System V 版本引入了一个重要变化:幻数类型的外部表.程序的运
228 行时间有轻微下降, 但是复杂性大大增加了.
230 本程序是基于System V 版本的,由Ian Darwin独立设计和编写.
232 John Gilmore对源代码做了较大修改,在第一版基础上有较大提高.
233 Geoff Collyer发现了一些不足之处,并提供了一些幻数文件项.
234 本程序一直在完善中.
235 .SH 作者
236 由Ian F. Darwin写源码, UUCP 地址 {utzoo | ihnp4}!darwin!ian,
237 电子邮件 ian@sq.com,
238 邮寄地址: P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8.
240 由Rob McMahon修改, cudcv@warwick.ac.uk, 1989, 并对`&'操作符进行了扩充
241 (不再仅仅是简单的 `x&y != 0',而是象`x&y op z'这样).
243 由Guy Harris修改, guy@netapp.com, 1993,完成:
246 恢复``old-style'' `&'
247 操作符为原来的功能,因为 1) Rob McMahon所做的修改打破了原来的使用方式, 
248 2) 本版本的
249 .B file
250 命令支持的SunOS 的``new-style'' `&' 操作符也处理 `x&y op z',
251 3) Rob的修改对某些情况没有考虑到;
253 引入多级`>';
255 引入``beshort'', ``leshort'', 等关键字使得程序能够按照一定的比特顺序
256 查看文件中的比特数,而不是仅按运行
257 .BR file
258 时的本地比特顺序查看.
261 由Ian Darwin和其他作者(包括Christos Zoulas(christos@astron.com))修改, 1990-1999.
262 .SH 合法性通告
263 版权所属 (c) Ian F. Darwin, Toronto, Canada,
264 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993.
266 本软件独立于美国电话电报公司,Sun微系统公司,Digital设备公司,
267 Lotus发展公司 , California大学董事会,X联盟或者MIT,或者自由软件基金会.
269 本软件独立于美国商业部的任何出口规定,可以自由用于任何国家和行星.
271 任何人无需授权即可在任何计算机系统上使用此软件用于任何目的,
272 可以自由修改和发布,但要遵守以下限制:
273 .PP 
274 1. 作者对使用此软件造成的任何后果不负任何责任,无论多么严重,
275 即使这些后果是由于软件造成的.
277 2. 禁止不如实说明本软件的来源,无论是明确说错或是忽略. 由于很少有用户读源码,
278 所以在文件中一定要说明软件来源.
280 3. 修改后的版本必须明白的标明,禁止将其作为原始软件.由于很少有用户读源码,
281 所以在文件中一定要说明软件来源.
283 4. 禁止删除或修改本通告.
285 随同本包发布的几个支持文件(\fIgetopt\fP, \fIstrtok\fP)由
286 Henry Spencer完成,同样适用以上条款.
288 随同本包发布的几个支持文件(\fIstrtol\fP, \fIstrchr\fP)属于公共域的;都做了标记.
290 文件
291 .I tar.h
293 .I is_tar.c
295 .B tar
296 程序组的John Gilmore完成,无需遵从以上条款.
297 .SH 臭虫
298 必定存在一种更好的方法来根据Magdir中的glop来自动创建Magic
299 文件.是什么方法呢?要更好的实现,那么幻数文件应该编译成二进制
300 (就是说,
301 .BR ndbm (3)
302 或者, 在异种网络环境中采用定长的
303 .SM ASCII
304 字符串)来加快启动速度.这样,程序就能达到Version 7 中的
305 file命令那样的运行速度,同时又具有System V 版本的灵活性.
307 .B File
308 使用的一些算法虽然提高了速度,但精确性降低了,因此
309 在对
310 .SM ASCII
311 文件内容操作有时会出错.
314 .SM ASCII
315 文件的支持(基本上是对编程语言)过于简单,效率较低,需要重新编译并更新.
317 在一系列连续行后应该跟着有一个``else''从句.
319 幻数文件和关键词应该有正则表达式的支持.
320 使用
321 .SM "ASCII TAB"
322 作为分隔符非常不足取,导致很难编辑文件, 但也因此受到保护.
324 在关键词中使用大写字母是可取的.
325 例如,
326 .BR troff (1)
327 命令与查看手册页的宏.
328 正则表达式支持将使这易于实现.
330 本程序没有实现对 \s-2FORTRAN\s0 的理解.
331 应该能够通过在开始行中出现的关键字识别出\s-2FORTRAN\s0 .
332 正则表达式支持将使这易于实现.
334 文件
335 .I ascmagic
336 中的关键词表可能应归入Magic文件.
337 这能通过使用象`*'这样的关键词来实现偏移量.
339 另一个优化是要对幻数文件排序,这样,我们就可以
340 在取得第一个比特,第一个词,第一个长整型,等等的时候完成
341 对它们所有的检查.抱怨在幻数文件项中的冲突.制定一条规则,
342 将幻数项在文件偏移量的基础上排序,胜过在幻数文件里指定位置吗?
344 本程序应提供一种方法来评价一种猜测有"多么好".
345 我们去除了一些先前的设想(如,将 ``From '' 作为文件的最初5个字符)
346 因为它们不如其它的设想好(如,``Newsgroups:'' 对"Return-Path:").
347 如果没有其它的设想提出,就很可能会采纳第一种设想.  
349 本程序比某些file命令执行速度慢.
351 本手册,特别是本部分,比较长.
352 .SH 可用性
353 可以通过匿名FTP登陆到
354 .B ftp.astron.com
355 在目录下
356 .I /pub/file/file-X.YY.tar.gz
357 获得作者的命令的最新版本
359 .SH "[中文版维护人]"
360 .B 姓名 <email>
361 .SH "[中文版最新更新]"
362 .B 2001/07/15
363 .SH "《中国linux论坛man手册页翻译计划》:"
364 .BI http://cmpp.linuxforum.net