|
@@ -1,78 +1,73 @@
|
|
-.TH FILE __CSECTION__ "Copyright but distributable"
|
|
|
|
-.\" $Id: file.man,v 1.59 2006/11/17 16:11:10 christos Exp $
|
|
|
|
-.SH NAME
|
|
|
|
-file
|
|
|
|
-\- determine file type
|
|
|
|
-.SH SYNOPSIS
|
|
|
|
-.B file
|
|
|
|
-[
|
|
|
|
-.B \-bchikLnNprsvz
|
|
|
|
-]
|
|
|
|
-[
|
|
|
|
-.B \-f
|
|
|
|
-.I namefile
|
|
|
|
-]
|
|
|
|
-[
|
|
|
|
-.B \-F
|
|
|
|
-.I separator
|
|
|
|
-]
|
|
|
|
-[
|
|
|
|
-.B \-m
|
|
|
|
-.I magicfiles
|
|
|
|
-]
|
|
|
|
-.I file
|
|
|
|
-\&...
|
|
|
|
-.br
|
|
|
|
-.B file
|
|
|
|
-.B -C
|
|
|
|
-[
|
|
|
|
-.B \-m
|
|
|
|
-magicfile ]
|
|
|
|
-.SH DESCRIPTION
|
|
|
|
|
|
+.\" $File: file.man,v 1.65 2007/01/25 21:05:46 christos Exp $
|
|
|
|
+.Dd January 8, 2007
|
|
|
|
+.Dt FILE __CSECTION__
|
|
|
|
+.Os
|
|
|
|
+.Sh NAME
|
|
|
|
+.Nm file
|
|
|
|
+.Nd determine file type
|
|
|
|
+.Sh SYNOPSIS
|
|
|
|
+.Nm
|
|
|
|
+.Op Fl bchikLnNprsvz
|
|
|
|
+.Op Fl f Ar namefile
|
|
|
|
+.Op Fl F Ar separator
|
|
|
|
+.Op Fl m Ar magicfiles
|
|
|
|
+.Ar file
|
|
|
|
+.Nm
|
|
|
|
+.Fl C
|
|
|
|
+.Op Fl m Ar magicfile
|
|
|
|
+.Sh DESCRIPTION
|
|
This manual page documents version __VERSION__ of the
|
|
This manual page documents version __VERSION__ of the
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
command.
|
|
command.
|
|
-.PP
|
|
|
|
-.B File
|
|
|
|
|
|
+.Pp
|
|
|
|
+.Nm
|
|
tests each argument in an attempt to classify it.
|
|
tests each argument in an attempt to classify it.
|
|
There are three sets of tests, performed in this order:
|
|
There are three sets of tests, performed in this order:
|
|
filesystem tests, magic number tests, and language tests.
|
|
filesystem tests, magic number tests, and language tests.
|
|
The
|
|
The
|
|
-.I first
|
|
|
|
|
|
+.Em first
|
|
test that succeeds causes the file type to be printed.
|
|
test that succeeds causes the file type to be printed.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The type printed will usually contain one of the words
|
|
The type printed will usually contain one of the words
|
|
-.B text
|
|
|
|
|
|
+.Em text
|
|
(the file contains only
|
|
(the file contains only
|
|
printing characters and a few common control
|
|
printing characters and a few common control
|
|
characters and is probably safe to read on an
|
|
characters and is probably safe to read on an
|
|
-.SM ASCII
|
|
|
|
|
|
+.Dv ASCII
|
|
terminal),
|
|
terminal),
|
|
-.B executable
|
|
|
|
|
|
+.Em executable
|
|
(the file contains the result of compiling a program
|
|
(the file contains the result of compiling a program
|
|
-in a form understandable to some \s-1UNIX\s0 kernel or another),
|
|
|
|
|
|
+in a form understandable to some
|
|
|
|
+.Dv UNIX
|
|
|
|
+kernel or another),
|
|
or
|
|
or
|
|
-.B data
|
|
|
|
-meaning anything else (data is usually `binary' or non-printable).
|
|
|
|
|
|
+.Em data
|
|
|
|
+meaning anything else (data is usually
|
|
|
|
+.Sq binary
|
|
|
|
+or non-printable).
|
|
Exceptions are well-known file formats (core files, tar archives)
|
|
Exceptions are well-known file formats (core files, tar archives)
|
|
that are known to contain binary data.
|
|
that are known to contain binary data.
|
|
When modifying the file
|
|
When modifying the file
|
|
-.I __MAGIC__
|
|
|
|
-or the program itself,
|
|
|
|
-.B "preserve these keywords" .
|
|
|
|
|
|
+.Pa __MAGIC__
|
|
|
|
+or the program itself, make sure to
|
|
|
|
+.Em "preserve these keywords" .
|
|
People depend on knowing that all the readable files in a directory
|
|
People depend on knowing that all the readable files in a directory
|
|
-have the word ``text'' printed.
|
|
|
|
-Don't do as Berkeley did and change ``shell commands text''
|
|
|
|
-to ``shell script''.
|
|
|
|
|
|
+have the word
|
|
|
|
+.Dq text
|
|
|
|
+printed.
|
|
|
|
+Don't do as Berkeley did and change
|
|
|
|
+.Dq shell commands text
|
|
|
|
+to
|
|
|
|
+.Dq shell script .
|
|
Note that the file
|
|
Note that the file
|
|
-.I __MAGIC__
|
|
|
|
|
|
+.Pa __MAGIC__
|
|
is built mechanically from a large number of small files in
|
|
is built mechanically from a large number of small files in
|
|
the subdirectory
|
|
the subdirectory
|
|
-.I Magdir
|
|
|
|
|
|
+.Pa Magdir
|
|
in the source distribution of this program.
|
|
in the source distribution of this program.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The filesystem tests are based on examining the return from a
|
|
The filesystem tests are based on examining the return from a
|
|
-.BR stat (2)
|
|
|
|
|
|
+.Xr stat 2
|
|
system call.
|
|
system call.
|
|
The program checks to see if the file is empty,
|
|
The program checks to see if the file is empty,
|
|
or if it's some sort of special file.
|
|
or if it's some sort of special file.
|
|
@@ -81,36 +76,42 @@ Any known file types appropriate to the system you are running on
|
|
implement them)
|
|
implement them)
|
|
are intuited if they are defined in
|
|
are intuited if they are defined in
|
|
the system header file
|
|
the system header file
|
|
-.IR <sys/stat.h> .
|
|
|
|
-.PP
|
|
|
|
|
|
+.In sys/stat.h .
|
|
|
|
+.Pp
|
|
The magic number tests are used to check for files with data in
|
|
The magic number tests are used to check for files with data in
|
|
particular fixed formats.
|
|
particular fixed formats.
|
|
The canonical example of this is a binary executable (compiled program)
|
|
The canonical example of this is a binary executable (compiled program)
|
|
-.I a.out
|
|
|
|
|
|
+.Dv a.out
|
|
file, whose format is defined in
|
|
file, whose format is defined in
|
|
-.I a.out.h
|
|
|
|
|
|
+.In elf.h ,
|
|
|
|
+.In a.out.h
|
|
and possibly
|
|
and possibly
|
|
-.I exec.h
|
|
|
|
|
|
+.In exec.h
|
|
in the standard include directory.
|
|
in the standard include directory.
|
|
-These files have a `magic number' stored in a particular place
|
|
|
|
-near the beginning of the file that tells the \s-1UNIX\s0 operating system
|
|
|
|
|
|
+These files have a
|
|
|
|
+.Sq "magic number"
|
|
|
|
+stored in a particular place
|
|
|
|
+near the beginning of the file that tells the
|
|
|
|
+.Dv UNIX operating system
|
|
that the file is a binary executable, and which of several types thereof.
|
|
that the file is a binary executable, and which of several types thereof.
|
|
-The concept of `magic number' has been applied by extension to data files.
|
|
|
|
|
|
+The concept of a
|
|
|
|
+.Sq "magic number"
|
|
|
|
+has been applied by extension to data files.
|
|
Any file with some invariant identifier at a small fixed
|
|
Any file with some invariant identifier at a small fixed
|
|
offset into the file can usually be described in this way.
|
|
offset into the file can usually be described in this way.
|
|
The information identifying these files is read from the compiled
|
|
The information identifying these files is read from the compiled
|
|
magic file
|
|
magic file
|
|
-.I __MAGIC__.mgc ,
|
|
|
|
|
|
+.Pa __MAGIC__.mgc ,
|
|
or
|
|
or
|
|
-.I __MAGIC__
|
|
|
|
|
|
+.Pa __MAGIC__
|
|
if the compile file does not exist. In addition
|
|
if the compile file does not exist. In addition
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
will look in
|
|
will look in
|
|
-.I $HOME/.magic.mgc ,
|
|
|
|
|
|
+.Pa $HOME/.magic.mgc ,
|
|
or
|
|
or
|
|
-.I $HOME/.magic
|
|
|
|
|
|
+.Pa $HOME/.magic
|
|
for magic entries.
|
|
for magic entries.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
If a file does not match any of the entries in the magic file,
|
|
If a file does not match any of the entries in the magic file,
|
|
it is examined to see if it seems to be a text file.
|
|
it is examined to see if it seems to be a text file.
|
|
ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets
|
|
ASCII, ISO-8859-x, non-ISO 8-bit extended-ASCII character sets
|
|
@@ -121,208 +122,241 @@ ranges and sequences of bytes that constitute printable text
|
|
in each set.
|
|
in each set.
|
|
If a file passes any of these tests, its character set is reported.
|
|
If a file passes any of these tests, its character set is reported.
|
|
ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified
|
|
ASCII, ISO-8859-x, UTF-8, and extended-ASCII files are identified
|
|
-as ``text'' because they will be mostly readable on nearly any terminal;
|
|
|
|
-UTF-16 and EBCDIC are only ``character data'' because, while
|
|
|
|
|
|
+as
|
|
|
|
+.Dq text
|
|
|
|
+because they will be mostly readable on nearly any terminal;
|
|
|
|
+UTF-16 and EBCDIC are only
|
|
|
|
+.Dq character data
|
|
|
|
+because, while
|
|
they contain text, it is text that will require translation
|
|
they contain text, it is text that will require translation
|
|
before it can be read.
|
|
before it can be read.
|
|
In addition,
|
|
In addition,
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
will attempt to determine other characteristics of text-type files.
|
|
will attempt to determine other characteristics of text-type files.
|
|
If the lines of a file are terminated by CR, CRLF, or NEL, instead
|
|
If the lines of a file are terminated by CR, CRLF, or NEL, instead
|
|
of the Unix-standard LF, this will be reported.
|
|
of the Unix-standard LF, this will be reported.
|
|
Files that contain embedded escape sequences or overstriking
|
|
Files that contain embedded escape sequences or overstriking
|
|
will also be identified.
|
|
will also be identified.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Once
|
|
Once
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
has determined the character set used in a text-type file,
|
|
has determined the character set used in a text-type file,
|
|
it will
|
|
it will
|
|
attempt to determine in what language the file is written.
|
|
attempt to determine in what language the file is written.
|
|
The language tests look for particular strings (cf
|
|
The language tests look for particular strings (cf
|
|
-.IR names.h )
|
|
|
|
|
|
+.In names.h
|
|
that can appear anywhere in the first few blocks of a file.
|
|
that can appear anywhere in the first few blocks of a file.
|
|
For example, the keyword
|
|
For example, the keyword
|
|
-.B .br
|
|
|
|
|
|
+.Em .br
|
|
indicates that the file is most likely a
|
|
indicates that the file is most likely a
|
|
-.BR troff (1)
|
|
|
|
|
|
+.Xr troff 1
|
|
input file, just as the keyword
|
|
input file, just as the keyword
|
|
-.B struct
|
|
|
|
|
|
+.Em struct
|
|
indicates a C program.
|
|
indicates a C program.
|
|
These tests are less reliable than the previous
|
|
These tests are less reliable than the previous
|
|
two groups, so they are performed last.
|
|
two groups, so they are performed last.
|
|
The language test routines also test for some miscellany
|
|
The language test routines also test for some miscellany
|
|
(such as
|
|
(such as
|
|
-.BR tar (1)
|
|
|
|
|
|
+.Xr tar 1
|
|
archives).
|
|
archives).
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Any file that cannot be identified as having been written
|
|
Any file that cannot be identified as having been written
|
|
in any of the character sets listed above is simply said to be ``data''.
|
|
in any of the character sets listed above is simply said to be ``data''.
|
|
-.SH OPTIONS
|
|
|
|
-.TP 8
|
|
|
|
-.B "\-b, \-\-brief"
|
|
|
|
|
|
+.Sh OPTIONS
|
|
|
|
+.Bl -tag -width indent
|
|
|
|
+.It Fl b , -brief
|
|
Do not prepend filenames to output lines (brief mode).
|
|
Do not prepend filenames to output lines (brief mode).
|
|
-.TP 8
|
|
|
|
-.B "\-c, \-\-checking\-printout"
|
|
|
|
|
|
+.It Fl c , -checking-printout
|
|
Cause a checking printout of the parsed form of the magic file.
|
|
Cause a checking printout of the parsed form of the magic file.
|
|
-This is usually used in conjunction with
|
|
|
|
-.B \-m
|
|
|
|
-to debug a new magic file before installing it.
|
|
|
|
-.TP 8
|
|
|
|
-.B "\-C, \-\-compile"
|
|
|
|
-Write a magic.mgc output file that contains a pre-parsed version of
|
|
|
|
-file.
|
|
|
|
-.TP 8
|
|
|
|
-.BI "\-f, \-\-files\-from" " namefile"
|
|
|
|
|
|
+This is usually used in conjunction with the
|
|
|
|
+.Fl m
|
|
|
|
+flag to debug a new magic file before installing it.
|
|
|
|
+.It Fl C , -compile
|
|
|
|
+Write a
|
|
|
|
+.Pa magic.mgc
|
|
|
|
+output file that contains a pre-parsed version of the magic file.
|
|
|
|
+.It Fl e , -exclude Ar testname
|
|
|
|
+Exclude the test named in
|
|
|
|
+.Ar testname
|
|
|
|
+from the list of tests made to determine the file type. Valid test names
|
|
|
|
+are:
|
|
|
|
+.Bl -tag -width
|
|
|
|
+.It apptype
|
|
|
|
+Check for
|
|
|
|
+.Dv EMX
|
|
|
|
+application type (only on EMX).
|
|
|
|
+.It ascii
|
|
|
|
+Check for various types of ascii files.
|
|
|
|
+.It compress
|
|
|
|
+Don't look for, or inside compressed files.
|
|
|
|
+.It elf
|
|
|
|
+Don't print elf details.
|
|
|
|
+.It fortran
|
|
|
|
+Don't look for fortran sequences inside ascii files.
|
|
|
|
+.It soft
|
|
|
|
+Don't consult magic files.
|
|
|
|
+.It tar
|
|
|
|
+Don't examine tar files.
|
|
|
|
+.It token
|
|
|
|
+Don't look for known tokens inside ascii files.
|
|
|
|
+.It troff
|
|
|
|
+Don't look for troff sequences inside ascii files.
|
|
|
|
+.El
|
|
|
|
+.It Fl f , -files-from Ar namefile
|
|
Read the names of the files to be examined from
|
|
Read the names of the files to be examined from
|
|
-.I namefile
|
|
|
|
|
|
+.Ar namefile
|
|
(one per line)
|
|
(one per line)
|
|
before the argument list.
|
|
before the argument list.
|
|
Either
|
|
Either
|
|
-.I namefile
|
|
|
|
|
|
+.Ar namefile
|
|
or at least one filename argument must be present;
|
|
or at least one filename argument must be present;
|
|
-to test the standard input, use ``\-'' as a filename argument.
|
|
|
|
-.TP 8
|
|
|
|
-.BI "\-F, \-\-separator" " separator"
|
|
|
|
|
|
+to test the standard input, use
|
|
|
|
+.Sq -
|
|
|
|
+as a filename argument.
|
|
|
|
+.It Fl F , -separator Ar separator
|
|
Use the specified string as the separator between the filename and the
|
|
Use the specified string as the separator between the filename and the
|
|
-file result returned. Defaults to ``:''.
|
|
|
|
-.TP 8
|
|
|
|
-.B "\-h, \-\-no-dereference"
|
|
|
|
|
|
+file result returned. Defaults to
|
|
|
|
+.Sq \&: .
|
|
|
|
+.It Fl h , -no-dereference
|
|
option causes symlinks not to be followed
|
|
option causes symlinks not to be followed
|
|
(on systems that support symbolic links). This is the default if the
|
|
(on systems that support symbolic links). This is the default if the
|
|
environment variable
|
|
environment variable
|
|
-.I POSIXLY_CORRECT
|
|
|
|
|
|
+.Dv POSIXLY_CORRECT
|
|
is not defined.
|
|
is not defined.
|
|
-.TP 8
|
|
|
|
-.B "\-i, \-\-mime"
|
|
|
|
|
|
+.It Fl i , -mime
|
|
Causes the file command to output mime type strings rather than the more
|
|
Causes the file command to output mime type strings rather than the more
|
|
traditional human readable ones. Thus it may say
|
|
traditional human readable ones. Thus it may say
|
|
-``text/plain; charset=us-ascii''
|
|
|
|
|
|
+.Dq text/plain; charset=us-ascii
|
|
rather
|
|
rather
|
|
-than ``ASCII text''.
|
|
|
|
|
|
+than
|
|
|
|
+.Dq ASCII text .
|
|
In order for this option to work, file changes the way
|
|
In order for this option to work, file changes the way
|
|
it handles files recognized by the command itself (such as many of the
|
|
it handles files recognized by the command itself (such as many of the
|
|
text file types, directories etc), and makes use of an alternative
|
|
text file types, directories etc), and makes use of an alternative
|
|
-``magic'' file.
|
|
|
|
-(See ``FILES'' section, below).
|
|
|
|
-.TP 8
|
|
|
|
-.B "\-k, \-\-keep\-going"
|
|
|
|
|
|
+.Dq magic
|
|
|
|
+file.
|
|
|
|
+(See
|
|
|
|
+.Dq FILES
|
|
|
|
+section, below).
|
|
|
|
+.It Fl k , -keep-going
|
|
Don't stop at the first match, keep going.
|
|
Don't stop at the first match, keep going.
|
|
-.TP 8
|
|
|
|
-.B "\-L, \-\-dereference"
|
|
|
|
|
|
+.It Fl L , -dereference
|
|
option causes symlinks to be followed, as the like-named option in
|
|
option causes symlinks to be followed, as the like-named option in
|
|
-.BR ls (1)
|
|
|
|
|
|
+.Xr ls 1
|
|
(on systems that support symbolic links).
|
|
(on systems that support symbolic links).
|
|
This is the default if the environment variable
|
|
This is the default if the environment variable
|
|
-.I POSIXLY_CORRECT
|
|
|
|
|
|
+.Dv POSIXLY_CORRECT
|
|
is defined.
|
|
is defined.
|
|
-.TP 8
|
|
|
|
-.BI "\-m, \-\-magic\-file" " list"
|
|
|
|
|
|
+.It Fl m , -magic-file Ar list
|
|
Specify an alternate list of files containing magic numbers.
|
|
Specify an alternate list of files containing magic numbers.
|
|
This can be a single file, or a colon-separated list of files.
|
|
This can be a single file, or a colon-separated list of files.
|
|
If a compiled magic file is found alongside, it will be used instead.
|
|
If a compiled magic file is found alongside, it will be used instead.
|
|
-With the \-i or \-\-mime option, the program adds ".mime" to each file name.
|
|
|
|
-.TP 8
|
|
|
|
-.B "\-n, \-\-no\-buffer"
|
|
|
|
|
|
+With the
|
|
|
|
+.Fl i or
|
|
|
|
+.Fl "mime"
|
|
|
|
+option, the program adds
|
|
|
|
+.Dq .mime
|
|
|
|
+to each file name.
|
|
|
|
+.It Fl n , -no-buffer
|
|
Force stdout to be flushed after checking each file.
|
|
Force stdout to be flushed after checking each file.
|
|
This is only useful if checking a list of files.
|
|
This is only useful if checking a list of files.
|
|
It is intended to be used by programs that want filetype output from a pipe.
|
|
It is intended to be used by programs that want filetype output from a pipe.
|
|
-.TP 8
|
|
|
|
-.B "\-N, \-\-no\-pad"
|
|
|
|
|
|
+.It Fl N , -no-pad
|
|
Don't pad filenames so that they align in the output.
|
|
Don't pad filenames so that they align in the output.
|
|
-.TP 8
|
|
|
|
-.B "\-p, \-\-preserve\-date"
|
|
|
|
|
|
+.It Fl p , -preserve-date
|
|
On systems that support
|
|
On systems that support
|
|
-.BR utime (2)
|
|
|
|
|
|
+.Xr utime 2
|
|
or
|
|
or
|
|
-.BR utimes(2),
|
|
|
|
|
|
+.Xr utimes 2 ,
|
|
attempt to preserve the access time of files analyzed, to pretend that
|
|
attempt to preserve the access time of files analyzed, to pretend that
|
|
-.BR file (2)
|
|
|
|
|
|
+.Nm
|
|
never read them.
|
|
never read them.
|
|
-.TP 8
|
|
|
|
-.B "\-r, \-\-raw"
|
|
|
|
|
|
+.It Fl r , -raw
|
|
Don't translate unprintable characters to \eooo.
|
|
Don't translate unprintable characters to \eooo.
|
|
Normally
|
|
Normally
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
translates unprintable characters to their octal representation.
|
|
translates unprintable characters to their octal representation.
|
|
-.TP 8
|
|
|
|
-.B "\-s, \-\-special\-files"
|
|
|
|
|
|
+.It Fl s , -special-files
|
|
Normally,
|
|
Normally,
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
only attempts to read and determine the type of argument files which
|
|
only attempts to read and determine the type of argument files which
|
|
-.BR stat (2)
|
|
|
|
|
|
+.Xr stat 2
|
|
reports are ordinary files.
|
|
reports are ordinary files.
|
|
This prevents problems, because reading special files may have peculiar
|
|
This prevents problems, because reading special files may have peculiar
|
|
consequences.
|
|
consequences.
|
|
Specifying the
|
|
Specifying the
|
|
-.BR \-s
|
|
|
|
|
|
+.Fl s
|
|
option causes
|
|
option causes
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
to also read argument files which are block or character special files.
|
|
to also read argument files which are block or character special files.
|
|
This is useful for determining the filesystem types of the data in raw
|
|
This is useful for determining the filesystem types of the data in raw
|
|
disk partitions, which are block special files.
|
|
disk partitions, which are block special files.
|
|
This option also causes
|
|
This option also causes
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
to disregard the file size as reported by
|
|
to disregard the file size as reported by
|
|
-.BR stat (2)
|
|
|
|
|
|
+.Xr stat 2
|
|
since on some systems it reports a zero size for raw disk partitions.
|
|
since on some systems it reports a zero size for raw disk partitions.
|
|
-.TP 8
|
|
|
|
-.B "\-v, \-\-version"
|
|
|
|
|
|
+.It Fl v , -version
|
|
Print the version of the program and exit.
|
|
Print the version of the program and exit.
|
|
-.TP 8
|
|
|
|
-.B "\-z, \-\-uncompress"
|
|
|
|
|
|
+.It Fl z , -uncompress
|
|
Try to look inside compressed files.
|
|
Try to look inside compressed files.
|
|
-.B "\-0, \-\-print0"
|
|
|
|
-Output a null character ('\0') after the end of the filename. Nice to
|
|
|
|
-.BR cut (1)
|
|
|
|
|
|
+.It Fl 0 , -print0
|
|
|
|
+Output a null character
|
|
|
|
+.Sq \e0
|
|
|
|
+after the end of the filename. Nice to
|
|
|
|
+.Xr cut 1
|
|
the output. This does not affect the separator which is still printed.
|
|
the output. This does not affect the separator which is still printed.
|
|
-.TP 8
|
|
|
|
-.B "\-\-help"
|
|
|
|
|
|
+.It Fl -help
|
|
Print a help message and exit.
|
|
Print a help message and exit.
|
|
-.SH FILES
|
|
|
|
-.TP
|
|
|
|
-.I __MAGIC__.mgc
|
|
|
|
|
|
+.El
|
|
|
|
+.Sh FILES
|
|
|
|
+.Bl -tag -width __MAGIC__.mime.mgc -compact
|
|
|
|
+.It Pa __MAGIC__.mgc
|
|
Default compiled list of magic numbers
|
|
Default compiled list of magic numbers
|
|
-.TP
|
|
|
|
-.I __MAGIC__
|
|
|
|
|
|
+.It Pa __MAGIC__
|
|
Default list of magic numbers
|
|
Default list of magic numbers
|
|
-.TP
|
|
|
|
-.I __MAGIC__.mime.mgc
|
|
|
|
|
|
+.It Pa __MAGIC__.mime.mgc
|
|
Default compiled list of magic numbers, used to output mime types when
|
|
Default compiled list of magic numbers, used to output mime types when
|
|
-the -i option is specified.
|
|
|
|
-.TP
|
|
|
|
-.I __MAGIC__.mime
|
|
|
|
-Default list of magic numbers, used to output mime types when the -i option
|
|
|
|
-is specified.
|
|
|
|
-
|
|
|
|
-.SH ENVIRONMENT
|
|
|
|
|
|
+the
|
|
|
|
+.Fl i
|
|
|
|
+option is specified.
|
|
|
|
+.It Pa __MAGIC__.mime
|
|
|
|
+Default list of magic numbers, used to output mime types when the
|
|
|
|
+.Fl i
|
|
|
|
+option is specified.
|
|
|
|
+.El
|
|
|
|
+.Sh ENVIRONMENT
|
|
The environment variable
|
|
The environment variable
|
|
-.B MAGIC
|
|
|
|
|
|
+.Dv MAGIC
|
|
can be used to set the default magic number file name.
|
|
can be used to set the default magic number file name.
|
|
If that variable is set, then
|
|
If that variable is set, then
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
will not attempt to open
|
|
will not attempt to open
|
|
-.B $HOME/.magic .
|
|
|
|
-.B file
|
|
|
|
-adds ".mime" and/or ".mgc" to the value of this variable as appropriate.
|
|
|
|
|
|
+.Pa $HOME/.magic .
|
|
|
|
+.Nm
|
|
|
|
+adds
|
|
|
|
+.Dq .mime
|
|
|
|
+and/or
|
|
|
|
+.Dq .mgc
|
|
|
|
+to the value of this variable as appropriate.
|
|
The environment variable
|
|
The environment variable
|
|
-.B POSIXLY_CORRECT
|
|
|
|
|
|
+.Dv POSIXLY_CORRECT
|
|
controls (on systems that support symbolic links), if
|
|
controls (on systems that support symbolic links), if
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
will attempt to follow symlinks or not. If set, then
|
|
will attempt to follow symlinks or not. If set, then
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
follows symlink, otherwise it does not. This is also controlled
|
|
follows symlink, otherwise it does not. This is also controlled
|
|
by the
|
|
by the
|
|
-.B L
|
|
|
|
|
|
+.Fl L
|
|
and
|
|
and
|
|
-.B h
|
|
|
|
|
|
+.Fl h
|
|
options.
|
|
options.
|
|
-.SH SEE ALSO
|
|
|
|
-.BR magic (__FSECTION__)
|
|
|
|
-\- description of magic file format.
|
|
|
|
-.br
|
|
|
|
-.BR strings (1), " od" (1), " hexdump(1)"
|
|
|
|
-\- tools for examining non-textfiles.
|
|
|
|
-.SH STANDARDS CONFORMANCE
|
|
|
|
|
|
+.Sh SEE ALSO
|
|
|
|
+.Xr magic __FSECTION__ ,
|
|
|
|
+.Xr strings 1 ,
|
|
|
|
+.Xr od 1 ,
|
|
|
|
+.Xr hexdump 1
|
|
|
|
+.Sh STANDARDS CONFORMANCE
|
|
This program is believed to exceed the System V Interface Definition
|
|
This program is believed to exceed the System V Interface Definition
|
|
of FILE(CMD), as near as one can determine from the vague language
|
|
of FILE(CMD), as near as one can determine from the vague language
|
|
contained therein.
|
|
contained therein.
|
|
@@ -330,66 +364,74 @@ Its behavior is mostly compatible with the System V program of the same name.
|
|
This version knows more magic, however, so it will produce
|
|
This version knows more magic, however, so it will produce
|
|
different (albeit more accurate) output in many cases.
|
|
different (albeit more accurate) output in many cases.
|
|
.\" URL: http://www.opengroup.org/onlinepubs/009695399/utilities/file.html
|
|
.\" URL: http://www.opengroup.org/onlinepubs/009695399/utilities/file.html
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The one significant difference
|
|
The one significant difference
|
|
between this version and System V
|
|
between this version and System V
|
|
is that this version treats any white space
|
|
is that this version treats any white space
|
|
as a delimiter, so that spaces in pattern strings must be escaped.
|
|
as a delimiter, so that spaces in pattern strings must be escaped.
|
|
For example,
|
|
For example,
|
|
-.br
|
|
|
|
|
|
+.Bd -literal -offset indent
|
|
>10 string language impress\ (imPRESS data)
|
|
>10 string language impress\ (imPRESS data)
|
|
-.br
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Pp
|
|
in an existing magic file would have to be changed to
|
|
in an existing magic file would have to be changed to
|
|
-.br
|
|
|
|
|
|
+.Bd -literal -offset indent
|
|
>10 string language\e impress (imPRESS data)
|
|
>10 string language\e impress (imPRESS data)
|
|
-.br
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Pp
|
|
In addition, in this version, if a pattern string contains a backslash,
|
|
In addition, in this version, if a pattern string contains a backslash,
|
|
it must be escaped.
|
|
it must be escaped.
|
|
For example
|
|
For example
|
|
-.br
|
|
|
|
|
|
+.Bd -literal -offset indent
|
|
0 string \ebegindata Andrew Toolkit document
|
|
0 string \ebegindata Andrew Toolkit document
|
|
-.br
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Pp
|
|
in an existing magic file would have to be changed to
|
|
in an existing magic file would have to be changed to
|
|
-.br
|
|
|
|
|
|
+.Bd -literal -offset indent
|
|
0 string \e\ebegindata Andrew Toolkit document
|
|
0 string \e\ebegindata Andrew Toolkit document
|
|
-.br
|
|
|
|
-.PP
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Pp
|
|
SunOS releases 3.2 and later from Sun Microsystems include a
|
|
SunOS releases 3.2 and later from Sun Microsystems include a
|
|
-.BR file (1)
|
|
|
|
|
|
+.Nm
|
|
command derived from the System V one, but with some extensions.
|
|
command derived from the System V one, but with some extensions.
|
|
My version differs from Sun's only in minor ways.
|
|
My version differs from Sun's only in minor ways.
|
|
-It includes the extension of the `&' operator, used as,
|
|
|
|
|
|
+It includes the extension of the
|
|
|
|
+.Sq &
|
|
|
|
+operator, used as,
|
|
for example,
|
|
for example,
|
|
-.br
|
|
|
|
|
|
+.Bd -literal -offset indent
|
|
>16 long&0x7fffffff >0 not stripped
|
|
>16 long&0x7fffffff >0 not stripped
|
|
-.SH MAGIC DIRECTORY
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Sh MAGIC DIRECTORY
|
|
The magic file entries have been collected from various sources,
|
|
The magic file entries have been collected from various sources,
|
|
mainly USENET, and contributed by various authors.
|
|
mainly USENET, and contributed by various authors.
|
|
Christos Zoulas (address below) will collect additional
|
|
Christos Zoulas (address below) will collect additional
|
|
or corrected magic file entries.
|
|
or corrected magic file entries.
|
|
A consolidation of magic file entries
|
|
A consolidation of magic file entries
|
|
will be distributed periodically.
|
|
will be distributed periodically.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The order of entries in the magic file is significant.
|
|
The order of entries in the magic file is significant.
|
|
Depending on what system you are using, the order that
|
|
Depending on what system you are using, the order that
|
|
they are put together may be incorrect.
|
|
they are put together may be incorrect.
|
|
If your old
|
|
If your old
|
|
-.B file
|
|
|
|
|
|
+.Nm
|
|
command uses a magic file,
|
|
command uses a magic file,
|
|
keep the old magic file around for comparison purposes
|
|
keep the old magic file around for comparison purposes
|
|
(rename it to
|
|
(rename it to
|
|
-.IR __MAGIC__.orig ).
|
|
|
|
-.SH EXAMPLES
|
|
|
|
-.nf
|
|
|
|
|
|
+.Pa __MAGIC__.orig ).
|
|
|
|
+.Sh EXAMPLES
|
|
|
|
+.Bd -literal -offset indent
|
|
$ file file.c file /dev/{wd0a,hda}
|
|
$ file file.c file /dev/{wd0a,hda}
|
|
file.c: C program text
|
|
file.c: C program text
|
|
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
|
|
file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
|
|
dynamically linked (uses shared libs), stripped
|
|
dynamically linked (uses shared libs), stripped
|
|
/dev/wd0a: block special (0/0)
|
|
/dev/wd0a: block special (0/0)
|
|
/dev/hda: block special (3/0)
|
|
/dev/hda: block special (3/0)
|
|
|
|
+
|
|
$ file -s /dev/wd0{b,d}
|
|
$ file -s /dev/wd0{b,d}
|
|
/dev/wd0b: data
|
|
/dev/wd0b: data
|
|
/dev/wd0d: x86 boot sector
|
|
/dev/wd0d: x86 boot sector
|
|
|
|
+
|
|
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
|
|
$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
|
|
/dev/hda: x86 boot sector
|
|
/dev/hda: x86 boot sector
|
|
/dev/hda1: Linux/i386 ext2 filesystem
|
|
/dev/hda1: Linux/i386 ext2 filesystem
|
|
@@ -406,129 +448,147 @@ $ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10}
|
|
$ file -i file.c file /dev/{wd0a,hda}
|
|
$ file -i file.c file /dev/{wd0a,hda}
|
|
file.c: text/x-c
|
|
file.c: text/x-c
|
|
file: application/x-executable, dynamically linked (uses shared libs),
|
|
file: application/x-executable, dynamically linked (uses shared libs),
|
|
-not stripped
|
|
|
|
|
|
+ not stripped
|
|
/dev/hda: application/x-not-regular-file
|
|
/dev/hda: application/x-not-regular-file
|
|
/dev/wd0a: application/x-not-regular-file
|
|
/dev/wd0a: application/x-not-regular-file
|
|
|
|
|
|
-.fi
|
|
|
|
-.SH HISTORY
|
|
|
|
|
|
+.Ed
|
|
|
|
+.Sh HISTORY
|
|
There has been a
|
|
There has been a
|
|
-.B file
|
|
|
|
-command in every \s-1UNIX\s0 since at least Research Version 4
|
|
|
|
|
|
+.Nm
|
|
|
|
+command in every
|
|
|
|
+.Dv UNIX since at least Research Version 4
|
|
(man page dated November, 1973).
|
|
(man page dated November, 1973).
|
|
The System V version introduced one significant major change:
|
|
The System V version introduced one significant major change:
|
|
the external list of magic number types.
|
|
the external list of magic number types.
|
|
This slowed the program down slightly but made it a lot more flexible.
|
|
This slowed the program down slightly but made it a lot more flexible.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
This program, based on the System V version,
|
|
This program, based on the System V version,
|
|
was written by Ian Darwin <ian@darwinsys.com>
|
|
was written by Ian Darwin <ian@darwinsys.com>
|
|
without looking at anybody else's source code.
|
|
without looking at anybody else's source code.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
John Gilmore revised the code extensively, making it better than
|
|
John Gilmore revised the code extensively, making it better than
|
|
the first version.
|
|
the first version.
|
|
Geoff Collyer found several inadequacies
|
|
Geoff Collyer found several inadequacies
|
|
and provided some magic file entries.
|
|
and provided some magic file entries.
|
|
Contributions by the `&' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989.
|
|
Contributions by the `&' operator by Rob McMahon, cudcv@warwick.ac.uk, 1989.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Guy Harris, guy@netapp.com, made many changes from 1993 to the present.
|
|
Guy Harris, guy@netapp.com, made many changes from 1993 to the present.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Primary development and maintenance from 1990 to the present by
|
|
Primary development and maintenance from 1990 to the present by
|
|
Christos Zoulas (christos@astron.com).
|
|
Christos Zoulas (christos@astron.com).
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Altered by Chris Lowth, chris@lowth.com, 2000:
|
|
Altered by Chris Lowth, chris@lowth.com, 2000:
|
|
-Handle the ``-i'' option to output mime type strings and using an alternative
|
|
|
|
|
|
+Handle the
|
|
|
|
+.Fl i
|
|
|
|
+option to output mime type strings and using an alternative
|
|
magic file and internal logic.
|
|
magic file and internal logic.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
Altered by Eric Fischer (enf@pobox.com), July, 2000,
|
|
Altered by Eric Fischer (enf@pobox.com), July, 2000,
|
|
to identify character codes and attempt to identify the languages
|
|
to identify character codes and attempt to identify the languages
|
|
of non-ASCII files.
|
|
of non-ASCII files.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The list of contributors to the "Magdir" directory (source for the
|
|
The list of contributors to the "Magdir" directory (source for the
|
|
-.I __MAGIC__
|
|
|
|
|
|
+.Pa __MAGIC__
|
|
file) is too long to include here.
|
|
file) is too long to include here.
|
|
You know who you are; thank you.
|
|
You know who you are; thank you.
|
|
-.SH LEGAL NOTICE
|
|
|
|
|
|
+.Sh LEGAL NOTICE
|
|
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.
|
|
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999.
|
|
Covered by the standard Berkeley Software Distribution copyright; see the file
|
|
Covered by the standard Berkeley Software Distribution copyright; see the file
|
|
LEGAL.NOTICE in the source distribution.
|
|
LEGAL.NOTICE in the source distribution.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The files
|
|
The files
|
|
-.I tar.h
|
|
|
|
|
|
+.Dv tar.h
|
|
and
|
|
and
|
|
-.I is_tar.c
|
|
|
|
|
|
+.Dv is_tar.c
|
|
were written by John Gilmore from his public-domain
|
|
were written by John Gilmore from his public-domain
|
|
-.B tar
|
|
|
|
|
|
+.Xr tar 1
|
|
program, and are not covered by the above license.
|
|
program, and are not covered by the above license.
|
|
-.SH BUGS
|
|
|
|
|
|
+.Sh BUGS
|
|
There must be a better way to automate the construction of the Magic
|
|
There must be a better way to automate the construction of the Magic
|
|
file from all the glop in Magdir.
|
|
file from all the glop in Magdir.
|
|
What is it?
|
|
What is it?
|
|
-Better yet, the magic file should be compiled into binary (say,
|
|
|
|
-.BR ndbm (3)
|
|
|
|
-or, better yet, fixed-length
|
|
|
|
-.SM ASCII
|
|
|
|
-strings for use in heterogenous network environments) for faster startup.
|
|
|
|
-Then the program would run as fast as the Version 7 program of the same name,
|
|
|
|
-with the flexibility of the System V version.
|
|
|
|
-.PP
|
|
|
|
-.B File
|
|
|
|
|
|
+.\" Compilation support has been done
|
|
|
|
+.\" Better yet, the magic file should be compiled into binary (say,
|
|
|
|
+.\" .Xr ndbm 3
|
|
|
|
+.\" or, better yet, fixed-length
|
|
|
|
+.\" .Dv ASCII
|
|
|
|
+.\" strings for use in heterogenous network environments) for faster startup.
|
|
|
|
+.\" Then the program would run as fast as the Version 7 program of the same
|
|
|
|
+.\" name, with the flexibility of the System V version.
|
|
|
|
+.Pp
|
|
|
|
+.Nm
|
|
uses several algorithms that favor speed over accuracy,
|
|
uses several algorithms that favor speed over accuracy,
|
|
thus it can be misled about the contents of
|
|
thus it can be misled about the contents of
|
|
text
|
|
text
|
|
files.
|
|
files.
|
|
-.PP
|
|
|
|
-The support for
|
|
|
|
-text
|
|
|
|
-files (primarily for programming languages)
|
|
|
|
|
|
+.Pp
|
|
|
|
+The support for text files (primarily for programming languages)
|
|
is simplistic, inefficient and requires recompilation to update.
|
|
is simplistic, inefficient and requires recompilation to update.
|
|
-.PP
|
|
|
|
-There should be an ``else'' clause to follow a series of continuation lines.
|
|
|
|
-.PP
|
|
|
|
-The magic file and keywords should have regular expression support.
|
|
|
|
|
|
+.\" Else support has been done
|
|
|
|
+.\" There should be an
|
|
|
|
+.\" .Dv else
|
|
|
|
+.\" clause to follow a series of continuation lines.
|
|
|
|
+.\" .Pp
|
|
|
|
+.\" Regular expression support has been done
|
|
|
|
+.\" The magic file and keywords should have regular expression support.
|
|
Their use of
|
|
Their use of
|
|
-.SM "ASCII TAB"
|
|
|
|
|
|
+.Dv ASCII TAB
|
|
as a field delimiter is ugly and makes
|
|
as a field delimiter is ugly and makes
|
|
it hard to edit the files, but is entrenched.
|
|
it hard to edit the files, but is entrenched.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
It might be advisable to allow upper-case letters in keywords
|
|
It might be advisable to allow upper-case letters in keywords
|
|
for e.g.,
|
|
for e.g.,
|
|
-.BR troff (1)
|
|
|
|
|
|
+.Xr troff 1
|
|
commands vs man page macros.
|
|
commands vs man page macros.
|
|
Regular expression support would make this easy.
|
|
Regular expression support would make this easy.
|
|
-.PP
|
|
|
|
-The program doesn't grok \s-2FORTRAN\s0.
|
|
|
|
-It should be able to figure \s-2FORTRAN\s0 by seeing some keywords which
|
|
|
|
|
|
+.Pp
|
|
|
|
+The program doesn't grok
|
|
|
|
+.Dv FORTRAN .
|
|
|
|
+It should be able to figure
|
|
|
|
+.Dv FORTRAN
|
|
|
|
+by seeing some keywords which
|
|
appear indented at the start of line.
|
|
appear indented at the start of line.
|
|
Regular expression support would make this easy.
|
|
Regular expression support would make this easy.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The list of keywords in
|
|
The list of keywords in
|
|
-.I ascmagic
|
|
|
|
|
|
+.Dv ascmagic
|
|
probably belongs in the Magic file.
|
|
probably belongs in the Magic file.
|
|
-This could be done by using some keyword like `*' for the offset value.
|
|
|
|
-.PP
|
|
|
|
-Another optimization would be to sort
|
|
|
|
-the magic file so that we can just run down all the
|
|
|
|
-tests for the first byte, first word, first long, etc, once we
|
|
|
|
-have fetched it.
|
|
|
|
|
|
+This could be done by using some keyword like
|
|
|
|
+.Sq *
|
|
|
|
+for the offset value.
|
|
|
|
+.Pp
|
|
|
|
+.\" Sorting has been done.
|
|
|
|
+.\" Another optimization would be to sort
|
|
|
|
+.\" the magic file so that we can just run down all the
|
|
|
|
+.\" tests for the first byte, first word, first long, etc, once we
|
|
|
|
+.\" have fetched it.
|
|
Complain about conflicts in the magic file entries.
|
|
Complain about conflicts in the magic file entries.
|
|
Make a rule that the magic entries sort based on file offset rather
|
|
Make a rule that the magic entries sort based on file offset rather
|
|
than position within the magic file?
|
|
than position within the magic file?
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
The program should provide a way to give an estimate
|
|
The program should provide a way to give an estimate
|
|
-of ``how good'' a guess is.
|
|
|
|
-We end up removing guesses (e.g. ``From '' as first 5 chars of file) because
|
|
|
|
-they are not as good as other guesses (e.g. ``Newsgroups:'' versus
|
|
|
|
-``Return-Path:'').
|
|
|
|
|
|
+of
|
|
|
|
+.Dq how good
|
|
|
|
+a guess is.
|
|
|
|
+We end up removing guesses (e.g.
|
|
|
|
+.Dq From\
|
|
|
|
+as first 5 chars of file) because
|
|
|
|
+they are not as good as other guesses (e.g.
|
|
|
|
+.Dq Newsgroups:
|
|
|
|
+versus
|
|
|
|
+.Dq Return-Path:
|
|
|
|
+).
|
|
Still, if the others don't pan out, it should be possible to use the
|
|
Still, if the others don't pan out, it should be possible to use the
|
|
first guess.
|
|
first guess.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
This program is slower than some vendors' file commands.
|
|
This program is slower than some vendors' file commands.
|
|
The new support for multiple character codes makes it even slower.
|
|
The new support for multiple character codes makes it even slower.
|
|
-.PP
|
|
|
|
|
|
+.Pp
|
|
This manual page, and particularly this section, is too long.
|
|
This manual page, and particularly this section, is too long.
|
|
-.SH AVAILABILITY
|
|
|
|
|
|
+.Sh AVAILABILITY
|
|
You can obtain the original author's latest version by anonymous FTP
|
|
You can obtain the original author's latest version by anonymous FTP
|
|
on
|
|
on
|
|
-.B ftp.astron.com
|
|
|
|
|
|
+.Dv ftp.astron.com
|
|
in the directory
|
|
in the directory
|
|
-.I /pub/file/file-X.YZ.tar.gz
|
|
|
|
|
|
+.Dv /pub/file/file-X.YZ.tar.gz
|