| @@ -1,550 +1,550 @@ | | | @@ -1,550 +1,550 @@ |
1 | .\" $File: file.man,v 1.73 2008/02/19 17:58:00 rrt Exp $ | | 1 | .\" $File: file.man,v 1.73 2008/02/19 17:58:00 rrt Exp $ |
2 | .Dd February 19, 2008 | | 2 | .Dd February 19, 2008 |
3 | .Dt FILE 1 | | 3 | .Dt FILE 1 |
4 | .Os | | 4 | .Os |
5 | .Sh NAME | | 5 | .Sh NAME |
6 | .Nm file | | 6 | .Nm file |
7 | .Nd determine file type | | 7 | .Nd determine file type |
8 | .Sh SYNOPSIS | | 8 | .Sh SYNOPSIS |
9 | .Nm | | 9 | .Nm |
10 | .Op Fl bchikLnNprsvz | | 10 | .Op Fl bchikLnNprsvz |
11 | .Op Fl -mime-type | | 11 | .Op Fl -mime-type |
12 | .Op Fl -mime-encoding | | 12 | .Op Fl -mime-encoding |
13 | .Op Fl f Ar namefile | | 13 | .Op Fl f Ar namefile |
14 | .Op Fl F Ar separator | | 14 | .Op Fl F Ar separator |
15 | .Op Fl m Ar magicfiles | | 15 | .Op Fl m Ar magicfiles |
16 | .Ar file | | 16 | .Ar file |
17 | .Nm | | 17 | .Nm |
18 | .Fl C | | 18 | .Fl C |
19 | .Op Fl m Ar magicfile | | 19 | .Op Fl m Ar magicfile |
20 | .Nm | | 20 | .Nm |
21 | .Op Fl -help | | 21 | .Op Fl -help |
22 | .Sh DESCRIPTION | | 22 | .Sh DESCRIPTION |
23 | This manual page documents version 4.26 of the | | 23 | This manual page documents version 4.26 of the |
24 | .Nm | | 24 | .Nm |
25 | command. | | 25 | command. |
26 | .Pp | | 26 | .Pp |
27 | .Nm | | 27 | .Nm |
28 | tests each argument in an attempt to classify it. | | 28 | tests each argument in an attempt to classify it. |
29 | There are three sets of tests, performed in this order: | | 29 | There are three sets of tests, performed in this order: |
30 | filesystem tests, magic tests, and language tests. | | 30 | filesystem tests, magic tests, and language tests. |
31 | The | | 31 | The |
32 | .Em first | | 32 | .Em first |
33 | test that succeeds causes the file type to be printed. | | 33 | test that succeeds causes the file type to be printed. |
34 | .Pp | | 34 | .Pp |
35 | The type printed will usually contain one of the words | | 35 | The type printed will usually contain one of the words |
36 | .Em text | | 36 | .Em text |
37 | (the file contains only | | 37 | (the file contains only |
38 | printing characters and a few common control | | 38 | printing characters and a few common control |
39 | characters and is probably safe to read on an | | 39 | characters and is probably safe to read on an |
40 | .Dv ASCII | | 40 | .Dv ASCII |
41 | terminal), | | 41 | terminal), |
42 | .Em executable | | 42 | .Em executable |
43 | (the file contains the result of compiling a program | | 43 | (the file contains the result of compiling a program |
44 | in a form understandable to some | | 44 | in a form understandable to some |
45 | .Dv UNIX | | 45 | .Dv UNIX |
46 | kernel or another), | | 46 | kernel or another), |
47 | or | | 47 | or |
48 | .Em data | | 48 | .Em data |
49 | meaning anything else (data is usually | | 49 | meaning anything else (data is usually |
50 | .Sq binary | | 50 | .Sq binary |
51 | or non-printable). | | 51 | or non-printable). |
52 | Exceptions are well-known file formats (core files, tar archives) | | 52 | Exceptions are well-known file formats (core files, tar archives) |
53 | that are known to contain binary data. | | 53 | that are known to contain binary data. |
54 | When modifying magic files or the program itself, make sure to | | 54 | When modifying magic files or the program itself, make sure to |
55 | .Em "preserve these keywords" . | | 55 | .Em "preserve these keywords" . |
56 | Users depend on knowing that all the readable files in a directory | | 56 | Users depend on knowing that all the readable files in a directory |
57 | have the word | | 57 | have the word |
58 | .Dq text | | 58 | .Dq text |
59 | printed. | | 59 | printed. |
60 | Don't do as Berkeley did and change | | 60 | Don't do as Berkeley did and change |
61 | .Dq shell commands text | | 61 | .Dq shell commands text |
62 | to | | 62 | to |
63 | .Dq shell script . | | 63 | .Dq shell script . |
64 | .Pp | | 64 | .Pp |
65 | The filesystem tests are based on examining the return from a | | 65 | The filesystem tests are based on examining the return from a |
66 | .Xr stat 2 | | 66 | .Xr stat 2 |
67 | system call. | | 67 | system call. |
68 | The program checks to see if the file is empty, | | 68 | The program checks to see if the file is empty, |
69 | or if it's some sort of special file. | | 69 | or if it's some sort of special file. |
70 | Any known file types appropriate to the system you are running on | | 70 | Any known file types appropriate to the system you are running on |
71 | (sockets, symbolic links, or named pipes (FIFOs) on those systems that | | 71 | (sockets, symbolic links, or named pipes (FIFOs) on those systems that |
72 | implement them) | | 72 | implement them) |
73 | are intuited if they are defined in | | 73 | are intuited if they are defined in |
74 | the system header file | | 74 | the system header file |
75 | .In sys/stat.h . | | 75 | .In sys/stat.h . |
76 | .Pp | | 76 | .Pp |
77 | The magic tests are used to check for files with data in | | 77 | The magic tests are used to check for files with data in |
78 | particular fixed formats. | | 78 | particular fixed formats. |
79 | The canonical example of this is a binary executable (compiled program) | | 79 | The canonical example of this is a binary executable (compiled program) |
80 | .Dv a.out | | 80 | .Dv a.out |
81 | file, whose format is defined in | | 81 | file, whose format is defined in |
82 | .In elf.h , | | 82 | .In elf.h , |
83 | .In a.out.h | | 83 | .In a.out.h |
84 | and possibly | | 84 | and possibly |
85 | .In exec.h | | 85 | .In exec.h |
86 | in the standard include directory. | | 86 | in the standard include directory. |
87 | These files have a | | 87 | These files have a |
88 | .Sq "magic number" | | 88 | .Sq "magic number" |
89 | stored in a particular place | | 89 | stored in a particular place |
90 | near the beginning of the file that tells the | | 90 | near the beginning of the file that tells the |
91 | .Dv UNIX operating system | | 91 | .Dv UNIX operating system |
92 | that the file is a binary executable, and which of several types thereof. | | 92 | that the file is a binary executable, and which of several types thereof. |
93 | The concept of a | | 93 | The concept of a |
94 | .Sq "magic" | | 94 | .Sq "magic" |
95 | has been applied by extension to data files. | | 95 | has been applied by extension to data files. |
96 | Any file with some invariant identifier at a small fixed | | 96 | Any file with some invariant identifier at a small fixed |
97 | offset into the file can usually be described in this way. | | 97 | offset into the file can usually be described in this way. |
98 | The information identifying these files is read from the compiled | | 98 | The information identifying these files is read from the compiled |
99 | magic file | | 99 | magic file |
100 | .Pa /usr/tools/share/file/magic.mgc , | | 100 | .Pa /usr/tools/share/file/magic.mgc , |
101 | or the files in the directory | | 101 | or the files in the directory |
102 | .Pa /usr/tools/share/file/magic | | 102 | .Pa /usr/tools/share/file/magic |
103 | if the compiled file does not exist. In addition, if | | 103 | if the compiled file does not exist. In addition, if |
104 | .Pa $HOME/.magic.mgc | | 104 | .Pa $HOME/.magic.mgc |
105 | or | | 105 | or |
106 | .Pa $HOME/.magic | | 106 | .Pa $HOME/.magic |
107 | exists, it will be used in preference to the system magic files. | | 107 | exists, it will be used in preference to the system magic files. |
108 | .Pp | | 108 | .Pp |
109 | If a file does not match any of the entries in the magic file, | | 109 | If a file does not match any of the entries in the magic file, |
110 | it is examined to see if it seems to be a text file. | | 110 | it is examined to see if it seems to be a text file. |
111 | ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets | | 111 | ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets |
112 | (such as those used on Macintosh and IBM PC systems), | | 112 | (such as those used on Macintosh and IBM PC systems), |
113 | UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC | | 113 | UTF-8-encoded Unicode, UTF-16-encoded Unicode, and EBCDIC |
114 | character sets can be distinguished by the different | | 114 | character sets can be distinguished by the different |
115 | ranges and sequences of bytes that constitute printable text | | 115 | ranges and sequences of bytes that constitute printable text |
116 | in each set. | | 116 | in each set. |
117 | If a file passes any of these tests, its character set is reported. | | 117 | If a file passes any of these tests, its character set is reported. |
118 | ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified | | 118 | ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified |
119 | as | | 119 | as |
120 | .Dq text | | 120 | .Dq text |
121 | because they will be mostly readable on nearly any terminal; | | 121 | because they will be mostly readable on nearly any terminal; |
122 | UTF-16 and EBCDIC are only | | 122 | UTF-16 and EBCDIC are only |
123 | .Dq character data | | 123 | .Dq character data |
124 | because, while | | 124 | because, while |
125 | they contain text, it is text that will require translation | | 125 | they contain text, it is text that will require translation |
126 | before it can be read. | | 126 | before it can be read. |
127 | In addition, | | 127 | In addition, |
128 | .Nm | | 128 | .Nm |
129 | will attempt to determine other characteristics of text-type files. | | 129 | will attempt to determine other characteristics of text-type files. |
130 | If the lines of a file are terminated by CR, CRLF, or NEL, instead | | 130 | If the lines of a file are terminated by CR, CRLF, or NEL, instead |
131 | of the Unix-standard LF, this will be reported. | | 131 | of the Unix-standard LF, this will be reported. |
132 | Files that contain embedded escape sequences or overstriking | | 132 | Files that contain embedded escape sequences or overstriking |
133 | will also be identified. | | 133 | will also be identified. |
134 | .Pp | | 134 | .Pp |
135 | Once | | 135 | Once |
136 | .Nm | | 136 | .Nm |
137 | has determined the character set used in a text-type file, | | 137 | has determined the character set used in a text-type file, |
138 | it will | | 138 | it will |
139 | attempt to determine in what language the file is written. | | 139 | attempt to determine in what language the file is written. |
140 | The language tests look for particular strings (cf. | | 140 | The language tests look for particular strings (cf. |
141 | .In names.h | | 141 | .In names.h |
142 | ) that can appear anywhere in the first few blocks of a file. | | 142 | ) that can appear anywhere in the first few blocks of a file. |
143 | For example, the keyword | | 143 | For example, the keyword |
144 | .Em .br | | 144 | .Em .br |
145 | indicates that the file is most likely a | | 145 | indicates that the file is most likely a |
146 | .Xr troff 1 | | 146 | .Xr troff 1 |
147 | input file, just as the keyword | | 147 | input file, just as the keyword |
148 | .Em struct | | 148 | .Em struct |
149 | indicates a C program. | | 149 | indicates a C program. |
150 | These tests are less reliable than the previous | | 150 | These tests are less reliable than the previous |
151 | two groups, so they are performed last. | | 151 | two groups, so they are performed last. |
152 | The language test routines also test for some miscellany | | 152 | The language test routines also test for some miscellany |
153 | (such as | | 153 | (such as |
154 | .Xr tar 1 | | 154 | .Xr tar 1 |
155 | archives). | | 155 | archives). |
156 | .Pp | | 156 | .Pp |
157 | Any file that cannot be identified as having been written | | 157 | Any file that cannot be identified as having been written |
158 | in any of the character sets listed above is simply said to be | | 158 | in any of the character sets listed above is simply said to be |
159 | .Dq data . | | 159 | .Dq data . |
160 | .Sh OPTIONS | | 160 | .Sh OPTIONS |
161 | .Bl -tag -width indent | | 161 | .Bl -tag -width indent |
162 | .It Fl b , -brief | | 162 | .It Fl b , -brief |
163 | Do not prepend filenames to output lines (brief mode). | | 163 | Do not prepend filenames to output lines (brief mode). |
164 | .It Fl c , -checking-printout | | 164 | .It Fl c , -checking-printout |
165 | Cause a checking printout of the parsed form of the magic file. | | 165 | Cause a checking printout of the parsed form of the magic file. |
166 | This is usually used in conjunction with the | | 166 | This is usually used in conjunction with the |
167 | .Fl m | | 167 | .Fl m |
168 | flag to debug a new magic file before installing it. | | 168 | flag to debug a new magic file before installing it. |
169 | .It Fl C , -compile | | 169 | .It Fl C , -compile |
170 | Write a | | 170 | Write a |
171 | .Pa magic.mgc | | 171 | .Pa magic.mgc |
172 | output file that contains a pre-parsed version of the magic file or directory. | | 172 | output file that contains a pre-parsed version of the magic file or directory. |
173 | .It Fl e , -exclude Ar testname | | 173 | .It Fl e , -exclude Ar testname |
174 | Exclude the test named in | | 174 | Exclude the test named in |
175 | .Ar testname | | 175 | .Ar testname |
176 | from the list of tests made to determine the file type. Valid test names | | 176 | from the list of tests made to determine the file type. Valid test names |
177 | are: | | 177 | are: |
178 | .Bl -tag -width | | 178 | .Bl -tag -width compress |
179 | .It apptype | | 179 | .It apptype |
180 | Check for | | 180 | Check for |
181 | .Dv EMX | | 181 | .Dv EMX |
182 | application type (only on EMX). | | 182 | application type (only on EMX). |
183 | .It ascii | | 183 | .It ascii |
184 | Check for various types of ascii files. | | 184 | Check for various types of ascii files. |
185 | .It compress | | 185 | .It compress |
186 | Don't look for, or inside compressed files. | | 186 | Don't look for, or inside compressed files. |
187 | .It elf | | 187 | .It elf |
188 | Don't print elf details. | | 188 | Don't print elf details. |
189 | .It fortran | | 189 | .It fortran |
190 | Don't look for fortran sequences inside ascii files. | | 190 | Don't look for fortran sequences inside ascii files. |
191 | .It soft | | 191 | .It soft |
192 | Don't consult magic files. | | 192 | Don't consult magic files. |
193 | .It tar | | 193 | .It tar |
194 | Don't examine tar files. | | 194 | Don't examine tar files. |
195 | .It token | | 195 | .It token |
196 | Don't look for known tokens inside ascii files. | | 196 | Don't look for known tokens inside ascii files. |
197 | .It troff | | 197 | .It troff |
198 | Don't look for troff sequences inside ascii files. | | 198 | Don't look for troff sequences inside ascii files. |
199 | .El | | 199 | .El |
200 | .It Fl f , -files-from Ar namefile | | 200 | .It Fl f , -files-from Ar namefile |
201 | Read the names of the files to be examined from | | 201 | Read the names of the files to be examined from |
202 | .Ar namefile | | 202 | .Ar namefile |
203 | (one per line) | | 203 | (one per line) |
204 | before the argument list. | | 204 | before the argument list. |
205 | Either | | 205 | Either |
206 | .Ar namefile | | 206 | .Ar namefile |
207 | or at least one filename argument must be present; | | 207 | or at least one filename argument must be present; |
208 | to test the standard input, use | | 208 | to test the standard input, use |
209 | .Sq - | | 209 | .Sq - |
210 | as a filename argument. | | 210 | as a filename argument. |
211 | .It Fl F , -separator Ar separator | | 211 | .It Fl F , -separator Ar separator |
212 | Use the specified string as the separator between the filename and the | | 212 | Use the specified string as the separator between the filename and the |
213 | file result returned. Defaults to | | 213 | file result returned. Defaults to |
214 | .Sq \&: . | | 214 | .Sq \&: . |
215 | .It Fl h , -no-dereference | | 215 | .It Fl h , -no-dereference |
216 | option causes symlinks not to be followed | | 216 | option causes symlinks not to be followed |
217 | (on systems that support symbolic links). This is the default if the | | 217 | (on systems that support symbolic links). This is the default if the |
218 | environment variable | | 218 | environment variable |
219 | .Dv POSIXLY_CORRECT | | 219 | .Dv POSIXLY_CORRECT |
220 | is not defined. | | 220 | is not defined. |
221 | .It Fl i , -mime | | 221 | .It Fl i , -mime |
222 | Causes the file command to output mime type strings rather than the more | | 222 | Causes the file command to output mime type strings rather than the more |
223 | traditional human readable ones. Thus it may say | | 223 | traditional human readable ones. Thus it may say |
224 | .Dq text/plain charset=us-ascii | | 224 | .Dq text/plain charset=us-ascii |
225 | rather than | | 225 | rather than |
226 | .Dq ASCII text . | | 226 | .Dq ASCII text . |
227 | In order for this option to work, file changes the way | | 227 | In order for this option to work, file changes the way |
228 | it handles files recognized by the command itself (such as many of the | | 228 | it handles files recognized by the command itself (such as many of the |
229 | text file types, directories etc), and makes use of an alternative | | 229 | text file types, directories etc), and makes use of an alternative |
230 | .Dq magic | | 230 | .Dq magic |
231 | file. | | 231 | file. |
232 | (See | | 232 | (See |
233 | .Dq FILES | | 233 | .Dq FILES |
234 | section, below). | | 234 | section, below). |
235 | .It Fl -mime-type , -mime-encoding | | 235 | .It Fl -mime-type , -mime-encoding |
236 | Like | | 236 | Like |
237 | .Fl i , | | 237 | .Fl i , |
238 | but print only the specified element(s). | | 238 | but print only the specified element(s). |
239 | .It Fl k , -keep-going | | 239 | .It Fl k , -keep-going |
240 | Don't stop at the first match, keep going. Subsequent matches will be | | 240 | Don't stop at the first match, keep going. Subsequent matches will be |
241 | have the string | | 241 | have the string |
242 | .Dq "\[rs]012\- " | | 242 | .Dq "\[rs]012\- " |
243 | prepended. | | 243 | prepended. |
244 | (If you want a newline, see the | | 244 | (If you want a newline, see the |
245 | .Dq "\-r" | | 245 | .Dq "\-r" |
246 | option.) | | 246 | option.) |
247 | .It Fl L , -dereference | | 247 | .It Fl L , -dereference |
248 | option causes symlinks to be followed, as the like-named option in | | 248 | option causes symlinks to be followed, as the like-named option in |
249 | .Xr ls 1 | | 249 | .Xr ls 1 |
250 | (on systems that support symbolic links). | | 250 | (on systems that support symbolic links). |
251 | This is the default if the environment variable | | 251 | This is the default if the environment variable |
252 | .Dv POSIXLY_CORRECT | | 252 | .Dv POSIXLY_CORRECT |
253 | is defined. | | 253 | is defined. |
254 | .It Fl m , -magic-file Ar list | | 254 | .It Fl m , -magic-file Ar list |
255 | Specify an alternate list of files and directories containing magic. | | 255 | Specify an alternate list of files and directories containing magic. |
256 | This can be a single item, or a colon-separated list. | | 256 | This can be a single item, or a colon-separated list. |
257 | If a compiled magic file is found alongside a file or directory, it will be used instead. | | 257 | If a compiled magic file is found alongside a file or directory, it will be used instead. |
258 | .It Fl n , -no-buffer | | 258 | .It Fl n , -no-buffer |
259 | Force stdout to be flushed after checking each file. | | 259 | Force stdout to be flushed after checking each file. |
260 | This is only useful if checking a list of files. | | 260 | This is only useful if checking a list of files. |
261 | It is intended to be used by programs that want filetype output from a pipe. | | 261 | It is intended to be used by programs that want filetype output from a pipe. |
262 | .It Fl N , -no-pad | | 262 | .It Fl N , -no-pad |
263 | Don't pad filenames so that they align in the output. | | 263 | Don't pad filenames so that they align in the output. |
264 | .It Fl p , -preserve-date | | 264 | .It Fl p , -preserve-date |
265 | On systems that support | | 265 | On systems that support |
266 | .Xr utime 2 | | 266 | .Xr utime 2 |
267 | or | | 267 | or |
268 | .Xr utimes 2 , | | 268 | .Xr utimes 2 , |
269 | attempt to preserve the access time of files analyzed, to pretend that | | 269 | attempt to preserve the access time of files analyzed, to pretend that |
270 | .Nm | | 270 | .Nm |
271 | never read them. | | 271 | never read them. |
272 | .It Fl r , -raw | | 272 | .It Fl r , -raw |
273 | Don't translate unprintable characters to \eooo. | | 273 | Don't translate unprintable characters to \eooo. |
274 | Normally | | 274 | Normally |
275 | .Nm | | 275 | .Nm |
276 | translates unprintable characters to their octal representation. | | 276 | translates unprintable characters to their octal representation. |
277 | .It Fl s , -special-files | | 277 | .It Fl s , -special-files |
278 | Normally, | | 278 | Normally, |
279 | .Nm | | 279 | .Nm |
280 | only attempts to read and determine the type of argument files which | | 280 | only attempts to read and determine the type of argument files which |
281 | .Xr stat 2 | | 281 | .Xr stat 2 |
282 | reports are ordinary files. | | 282 | reports are ordinary files. |
283 | This prevents problems, because reading special files may have peculiar | | 283 | This prevents problems, because reading special files may have peculiar |
284 | consequences. | | 284 | consequences. |
285 | Specifying the | | 285 | Specifying the |
286 | .Fl s | | 286 | .Fl s |
287 | option causes | | 287 | option causes |
288 | .Nm | | 288 | .Nm |
289 | to also read argument files which are block or character special files. | | 289 | to also read argument files which are block or character special files. |
290 | This is useful for determining the filesystem types of the data in raw | | 290 | This is useful for determining the filesystem types of the data in raw |
291 | disk partitions, which are block special files. | | 291 | disk partitions, which are block special files. |
292 | This option also causes | | 292 | This option also causes |
293 | .Nm | | 293 | .Nm |
294 | to disregard the file size as reported by | | 294 | to disregard the file size as reported by |
295 | .Xr stat 2 | | 295 | .Xr stat 2 |
296 | since on some systems it reports a zero size for raw disk partitions. | | 296 | since on some systems it reports a zero size for raw disk partitions. |
297 | .It Fl v , -version | | 297 | .It Fl v , -version |
298 | Print the version of the program and exit. | | 298 | Print the version of the program and exit. |
299 | .It Fl z , -uncompress | | 299 | .It Fl z , -uncompress |
300 | Try to look inside compressed files. | | 300 | Try to look inside compressed files. |
301 | .It Fl 0 , -print0 | | 301 | .It Fl 0 , -print0 |
302 | Output a null character | | 302 | Output a null character |
303 | .Sq \e0 | | 303 | .Sq \e0 |
304 | after the end of the filename. Nice to | | 304 | after the end of the filename. Nice to |
305 | .Xr cut 1 | | 305 | .Xr cut 1 |
306 | the output. This does not affect the separator which is still printed. | | 306 | the output. This does not affect the separator which is still printed. |
307 | .It Fl -help | | 307 | .It Fl -help |
308 | Print a help message and exit. | | 308 | Print a help message and exit. |
309 | .El | | 309 | .El |
310 | .Sh FILES | | 310 | .Sh FILES |
311 | .Bl -tag -width /usr/tools/share/file/magic.mgc -compact | | 311 | .Bl -tag -width /usr/tools/share/file/magic.mgc -compact |
312 | .It Pa /usr/tools/share/file/magic.mgc | | 312 | .It Pa /usr/tools/share/file/magic.mgc |
313 | Default compiled list of magic. | | 313 | Default compiled list of magic. |
314 | .It Pa /usr/tools/share/file/magic | | 314 | .It Pa /usr/tools/share/file/magic |
315 | Directory containing default magic files. | | 315 | Directory containing default magic files. |
316 | .El | | 316 | .El |
317 | .Sh ENVIRONMENT | | 317 | .Sh ENVIRONMENT |
318 | The environment variable | | 318 | The environment variable |
319 | .Dv MAGIC | | 319 | .Dv MAGIC |
320 | can be used to set the default magic file name. | | 320 | can be used to set the default magic file name. |
321 | If that variable is set, then | | 321 | If that variable is set, then |
322 | .Nm | | 322 | .Nm |
323 | will not attempt to open | | 323 | will not attempt to open |
324 | .Pa $HOME/.magic . | | 324 | .Pa $HOME/.magic . |
325 | .Nm | | 325 | .Nm |
326 | adds | | 326 | adds |
327 | .Dq .mgc | | 327 | .Dq .mgc |
328 | to the value of this variable as appropriate. | | 328 | to the value of this variable as appropriate. |
329 | The environment variable | | 329 | The environment variable |
330 | .Dv POSIXLY_CORRECT | | 330 | .Dv POSIXLY_CORRECT |
331 | controls (on systems that support symbolic links), whether | | 331 | controls (on systems that support symbolic links), whether |
332 | .Nm | | 332 | .Nm |
333 | will attempt to follow symlinks or not. If set, then | | 333 | will attempt to follow symlinks or not. If set, then |
334 | .Nm | | 334 | .Nm |
335 | follows symlink, otherwise it does not. This is also controlled | | 335 | follows symlink, otherwise it does not. This is also controlled |
336 | by the | | 336 | by the |
337 | .Fl L | | 337 | .Fl L |
338 | and | | 338 | and |
339 | .Fl h | | 339 | .Fl h |
340 | options. | | 340 | options. |
341 | .Sh SEE ALSO | | 341 | .Sh SEE ALSO |
342 | .Xr magic 4 , | | 342 | .Xr magic 4 , |
343 | .Xr strings 1 , | | 343 | .Xr strings 1 , |
344 | .Xr od 1 , | | 344 | .Xr od 1 , |
345 | .Xr hexdump 1, | | 345 | .Xr hexdump 1, |
346 | .Xr file 1posix | | 346 | .Xr file 1posix |
347 | .Sh STANDARDS CONFORMANCE | | 347 | .Sh STANDARDS CONFORMANCE |
348 | This program is believed to exceed the System V Interface Definition | | 348 | This program is believed to exceed the System V Interface Definition |
349 | of FILE(CMD), as near as one can determine from the vague language | | 349 | of FILE(CMD), as near as one can determine from the vague language |
350 | contained therein. | | 350 | contained therein. |
351 | Its behavior is mostly compatible with the System V program of the same name. | | 351 | Its behavior is mostly compatible with the System V program of the same name. |
352 | This version knows more magic, however, so it will produce | | 352 | This version knows more magic, however, so it will produce |
353 | different (albeit more accurate) output in many cases. | | 353 | different (albeit more accurate) output in many cases. |
354 | .\" URL: http://www.opengroup.org/onlinepubs/009695399/utilities/file.html | | 354 | .\" URL: http://www.opengroup.org/onlinepubs/009695399/utilities/file.html |
355 | .Pp | | 355 | .Pp |
356 | The one significant difference | | 356 | The one significant difference |
357 | between this version and System V | | 357 | between this version and System V |
358 | is that this version treats any white space | | 358 | is that this version treats any white space |
359 | as a delimiter, so that spaces in pattern strings must be escaped. | | 359 | as a delimiter, so that spaces in pattern strings must be escaped. |
360 | For example, | | 360 | For example, |
361 | .Bd -literal -offset indent | | 361 | .Bd -literal -offset indent |
362 | >10 string language impress\ (imPRESS data) | | 362 | >10 string language impress\ (imPRESS data) |
363 | .Ed | | 363 | .Ed |
364 | .Pp | | 364 | .Pp |
365 | in an existing magic file would have to be changed to | | 365 | in an existing magic file would have to be changed to |
366 | .Bd -literal -offset indent | | 366 | .Bd -literal -offset indent |
367 | >10 string language\e impress (imPRESS data) | | 367 | >10 string language\e impress (imPRESS data) |
368 | .Ed | | 368 | .Ed |
369 | .Pp | | 369 | .Pp |
370 | In addition, in this version, if a pattern string contains a backslash, | | 370 | In addition, in this version, if a pattern string contains a backslash, |
371 | it must be escaped. | | 371 | it must be escaped. |
372 | For example | | 372 | For example |
373 | .Bd -literal -offset indent | | 373 | .Bd -literal -offset indent |
374 | 0 string \ebegindata Andrew Toolkit document | | 374 | 0 string \ebegindata Andrew Toolkit document |
375 | .Ed | | 375 | .Ed |
376 | .Pp | | 376 | .Pp |
377 | in an existing magic file would have to be changed to | | 377 | in an existing magic file would have to be changed to |
378 | .Bd -literal -offset indent | | 378 | .Bd -literal -offset indent |
379 | 0 string \e\ebegindata Andrew Toolkit document | | 379 | 0 string \e\ebegindata Andrew Toolkit document |
380 | .Ed | | 380 | .Ed |
381 | .Pp | | 381 | .Pp |
382 | SunOS releases 3.2 and later from Sun Microsystems include a | | 382 | SunOS releases 3.2 and later from Sun Microsystems include a |
383 | .Nm | | 383 | .Nm |
384 | command derived from the System V one, but with some extensions. | | 384 | command derived from the System V one, but with some extensions. |
385 | My version differs from Sun's only in minor ways. | | 385 | My version differs from Sun's only in minor ways. |
386 | It includes the extension of the | | 386 | It includes the extension of the |
387 | .Sq & | | 387 | .Sq & |
388 | operator, used as, | | 388 | operator, used as, |
389 | for example, | | 389 | for example, |
390 | .Bd -literal -offset indent | | 390 | .Bd -literal -offset indent |
391 | >16 long&0x7fffffff >0 not stripped | | 391 | >16 long&0x7fffffff >0 not stripped |
392 | .Ed | | 392 | .Ed |
393 | .Sh MAGIC DIRECTORY | | 393 | .Sh MAGIC DIRECTORY |
394 | The magic file entries have been collected from various sources, | | 394 | The magic file entries have been collected from various sources, |
395 | mainly USENET, and contributed by various authors. | | 395 | mainly USENET, and contributed by various authors. |
396 | Christos Zoulas (address below) will collect additional | | 396 | Christos Zoulas (address below) will collect additional |
397 | or corrected magic file entries. | | 397 | or corrected magic file entries. |
398 | A consolidation of magic file entries | | 398 | A consolidation of magic file entries |
399 | will be distributed periodically. | | 399 | will be distributed periodically. |
400 | .Pp | | 400 | .Pp |
401 | The order of entries in the magic file is significant. | | 401 | The order of entries in the magic file is significant. |
402 | Depending on what system you are using, the order that | | 402 | Depending on what system you are using, the order that |
403 | they are put together may be incorrect. | | 403 | they are put together may be incorrect. |
404 | If your old | | 404 | If your old |
405 | .Nm | | 405 | .Nm |
406 | command uses a magic file, | | 406 | command uses a magic file, |
407 | keep the old magic file around for comparison purposes | | 407 | keep the old magic file around for comparison purposes |
408 | (rename it to | | 408 | (rename it to |
409 | .Pa /usr/tools/share/file/magic.orig ). | | 409 | .Pa /usr/tools/share/file/magic.orig ). |
410 | .Sh EXAMPLES | | 410 | .Sh EXAMPLES |
411 | .Bd -literal -offset indent | | 411 | .Bd -literal -offset indent |
412 | $ file file.c file /dev/{wd0a,hda} | | 412 | $ file file.c file /dev/{wd0a,hda} |
413 | file.c: C program text | | 413 | file.c: C program text |
414 | file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), | | 414 | file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), |
415 | dynamically linked (uses shared libs), stripped | | 415 | dynamically linked (uses shared libs), stripped |
416 | /dev/wd0a: block special (0/0) | | 416 | /dev/wd0a: block special (0/0) |
417 | /dev/hda: block special (3/0) | | 417 | /dev/hda: block special (3/0) |
418 | | | 418 | |
419 | $ file -s /dev/wd0{b,d} | | 419 | $ file -s /dev/wd0{b,d} |
420 | /dev/wd0b: data | | 420 | /dev/wd0b: data |
421 | /dev/wd0d: x86 boot sector | | 421 | /dev/wd0d: x86 boot sector |
422 | | | 422 | |
423 | $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10} | | 423 | $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10} |
424 | /dev/hda: x86 boot sector | | 424 | /dev/hda: x86 boot sector |
425 | /dev/hda1: Linux/i386 ext2 filesystem | | 425 | /dev/hda1: Linux/i386 ext2 filesystem |
426 | /dev/hda2: x86 boot sector | | 426 | /dev/hda2: x86 boot sector |
427 | /dev/hda3: x86 boot sector, extended partition table | | 427 | /dev/hda3: x86 boot sector, extended partition table |
428 | /dev/hda4: Linux/i386 ext2 filesystem | | 428 | /dev/hda4: Linux/i386 ext2 filesystem |
429 | /dev/hda5: Linux/i386 swap file | | 429 | /dev/hda5: Linux/i386 swap file |
430 | /dev/hda6: Linux/i386 swap file | | 430 | /dev/hda6: Linux/i386 swap file |
431 | /dev/hda7: Linux/i386 swap file | | 431 | /dev/hda7: Linux/i386 swap file |
432 | /dev/hda8: Linux/i386 swap file | | 432 | /dev/hda8: Linux/i386 swap file |
433 | /dev/hda9: empty | | 433 | /dev/hda9: empty |
434 | /dev/hda10: empty | | 434 | /dev/hda10: empty |
435 | | | 435 | |
436 | $ file -i file.c file /dev/{wd0a,hda} | | 436 | $ file -i file.c file /dev/{wd0a,hda} |
437 | file.c: text/x-c | | 437 | file.c: text/x-c |
438 | file: application/x-executable | | 438 | file: application/x-executable |
439 | /dev/hda: application/x-not-regular-file | | 439 | /dev/hda: application/x-not-regular-file |
440 | /dev/wd0a: application/x-not-regular-file | | 440 | /dev/wd0a: application/x-not-regular-file |
441 | | | 441 | |
442 | .Ed | | 442 | .Ed |
443 | .Sh HISTORY | | 443 | .Sh HISTORY |
444 | There has been a | | 444 | There has been a |
445 | .Nm | | 445 | .Nm |
446 | command in every | | 446 | command in every |
447 | .Dv UNIX since at least Research Version 4 | | 447 | .Dv UNIX since at least Research Version 4 |
448 | (man page dated November, 1973). | | 448 | (man page dated November, 1973). |
449 | The System V version introduced one significant major change: | | 449 | The System V version introduced one significant major change: |
450 | the external list of magic types. | | 450 | the external list of magic types. |
451 | This slowed the program down slightly but made it a lot more flexible. | | 451 | This slowed the program down slightly but made it a lot more flexible. |
452 | .Pp | | 452 | .Pp |
453 | This program, based on the System V version, | | 453 | This program, based on the System V version, |
454 | was written by Ian Darwin <ian@darwinsys.com> | | 454 | was written by Ian Darwin <ian@darwinsys.com> |
455 | without looking at anybody else's source code. | | 455 | without looking at anybody else's source code. |
456 | .Pp | | 456 | .Pp |
457 | John Gilmore revised the code extensively, making it better than | | 457 | John Gilmore revised the code extensively, making it better than |
458 | the first version. | | 458 | the first version. |
459 | Geoff Collyer found several inadequacies | | 459 | Geoff Collyer found several inadequacies |
460 | and provided some magic file entries. | | 460 | and provided some magic file entries. |
461 | Contributions by the `&' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989. | | 461 | Contributions by the `&' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989. |
462 | .Pp | | 462 | .Pp |
463 | Guy Harris, guy@netapp.com, made many changes from 1993 to the present. | | 463 | Guy Harris, guy@netapp.com, made many changes from 1993 to the present. |
464 | .Pp | | 464 | .Pp |
465 | Primary development and maintenance from 1990 to the present by | | 465 | Primary development and maintenance from 1990 to the present by |
466 | Christos Zoulas (christos@astron.com). | | 466 | Christos Zoulas (christos@astron.com). |
467 | .Pp | | 467 | .Pp |
468 | Altered by Chris Lowth, chris@lowth.com, 2000: | | 468 | Altered by Chris Lowth, chris@lowth.com, 2000: |
469 | Handle the | | 469 | Handle the |
470 | .Fl i | | 470 | .Fl i |
471 | option to output mime type strings, using an alternative | | 471 | option to output mime type strings, using an alternative |
472 | magic file and internal logic. | | 472 | magic file and internal logic. |
473 | .Pp | | 473 | .Pp |
474 | Altered by Eric Fischer (enf@pobox.com), July, 2000, | | 474 | Altered by Eric Fischer (enf@pobox.com), July, 2000, |
475 | to identify character codes and attempt to identify the languages | | 475 | to identify character codes and attempt to identify the languages |
476 | of non-ASCII files. | | 476 | of non-ASCII files. |
477 | .Pp | | 477 | .Pp |
478 | Altered by Reuben Thomas (rrt@sc3d.org), 2007 to 2008, to improve MIME | | 478 | Altered by Reuben Thomas (rrt@sc3d.org), 2007 to 2008, to improve MIME |
479 | support and merge MIME and non-MIME magic, support directories as well | | 479 | support and merge MIME and non-MIME magic, support directories as well |
480 | as files of magic, apply many bug fixes and improve the build system. | | 480 | as files of magic, apply many bug fixes and improve the build system. |
481 | .Pp | | 481 | .Pp |
482 | The list of contributors to the | | 482 | The list of contributors to the |
483 | .Dq magic | | 483 | .Dq magic |
484 | directory (magic files) | | 484 | directory (magic files) |
485 | is too long to include here. | | 485 | is too long to include here. |
486 | You know who you are; thank you. | | 486 | You know who you are; thank you. |
487 | Many contributors are listed in the source files. | | 487 | Many contributors are listed in the source files. |
488 | .Sh LEGAL NOTICE | | 488 | .Sh LEGAL NOTICE |
489 | Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. | | 489 | Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. |
490 | Covered by the standard Berkeley Software Distribution copyright; see the file | | 490 | Covered by the standard Berkeley Software Distribution copyright; see the file |
491 | LEGAL.NOTICE in the source distribution. | | 491 | LEGAL.NOTICE in the source distribution. |
492 | .Pp | | 492 | .Pp |
493 | The files | | 493 | The files |
494 | .Dv tar.h | | 494 | .Dv tar.h |
495 | and | | 495 | and |
496 | .Dv is_tar.c | | 496 | .Dv is_tar.c |
497 | were written by John Gilmore from his public-domain | | 497 | were written by John Gilmore from his public-domain |
498 | .Xr tar 1 | | 498 | .Xr tar 1 |
499 | program, and are not covered by the above license. | | 499 | program, and are not covered by the above license. |
500 | .Sh BUGS | | 500 | .Sh BUGS |
501 | .Pp | | 501 | .Pp |
502 | There must be a better way to automate the construction of the Magic | | 502 | There must be a better way to automate the construction of the Magic |
503 | file from all the glop in Magdir. | | 503 | file from all the glop in Magdir. |
504 | What is it? | | 504 | What is it? |
505 | .Pp | | 505 | .Pp |
506 | .Nm | | 506 | .Nm |
507 | uses several algorithms that favor speed over accuracy, | | 507 | uses several algorithms that favor speed over accuracy, |
508 | thus it can be misled about the contents of | | 508 | thus it can be misled about the contents of |
509 | text | | 509 | text |
510 | files. | | 510 | files. |
511 | .Pp | | 511 | .Pp |
512 | The support for text files (primarily for programming languages) | | 512 | The support for text files (primarily for programming languages) |
513 | is simplistic, inefficient and requires recompilation to update. | | 513 | is simplistic, inefficient and requires recompilation to update. |
514 | .Pp | | 514 | .Pp |
515 | The list of keywords in | | 515 | The list of keywords in |
516 | .Dv ascmagic | | 516 | .Dv ascmagic |
517 | probably belongs in the Magic file. | | 517 | probably belongs in the Magic file. |
518 | This could be done by using some keyword like | | 518 | This could be done by using some keyword like |
519 | .Sq * | | 519 | .Sq * |
520 | for the offset value. | | 520 | for the offset value. |
521 | .Pp | | 521 | .Pp |
522 | Complain about conflicts in the magic file entries. | | 522 | Complain about conflicts in the magic file entries. |
523 | Make a rule that the magic entries sort based on file offset rather | | 523 | Make a rule that the magic entries sort based on file offset rather |
524 | than position within the magic file? | | 524 | than position within the magic file? |
525 | .Pp | | 525 | .Pp |
526 | The program should provide a way to give an estimate | | 526 | The program should provide a way to give an estimate |
527 | of | | 527 | of |
528 | .Dq how good | | 528 | .Dq how good |
529 | a guess is. | | 529 | a guess is. |
530 | We end up removing guesses (e.g. | | 530 | We end up removing guesses (e.g. |
531 | .Dq From\ | | 531 | .Dq From\ |
532 | as first 5 chars of file) because | | 532 | as first 5 chars of file) because |
533 | they are not as good as other guesses (e.g. | | 533 | they are not as good as other guesses (e.g. |
534 | .Dq Newsgroups: | | 534 | .Dq Newsgroups: |
535 | versus | | 535 | versus |
536 | .Dq Return-Path: | | 536 | .Dq Return-Path: |
537 | ). | | 537 | ). |
538 | Still, if the others don't pan out, it should be possible to use the | | 538 | Still, if the others don't pan out, it should be possible to use the |
539 | first guess. | | 539 | first guess. |
540 | .Pp | | 540 | .Pp |
541 | This manual page, and particularly this section, is too long. | | 541 | This manual page, and particularly this section, is too long. |
542 | .Sh RETURN CODE | | 542 | .Sh RETURN CODE |
543 | .Nm | | 543 | .Nm |
544 | returns 0 on success, and non-zero on error. | | 544 | returns 0 on success, and non-zero on error. |
545 | .Sh AVAILABILITY | | 545 | .Sh AVAILABILITY |
546 | You can obtain the original author's latest version by anonymous FTP | | 546 | You can obtain the original author's latest version by anonymous FTP |
547 | on | | 547 | on |
548 | .Dv ftp.astron.com | | 548 | .Dv ftp.astron.com |
549 | in the directory | | 549 | in the directory |
550 | .Dv /pub/file/file-X.YZ.tar.gz | | 550 | .Dv /pub/file/file-X.YZ.tar.gz |