NAME
       file - Manipulate file names and attributes

SYNOPSIS
       file option name ?arg arg ...?


DESCRIPTION
       This  command provides several operations on a file's name
       or attributes.  Name is the  name  of  a  file  in  either
       native  or  network form.  If name starts with a ~ charac-
       ter, then the file name is interpreted as  being  relative
       to  a user's home directory.  Tilde substitution will only
       be performed if it is necessary to  complete  the  command
       (see  the  filename manual entry for details on native and
       network names, as well as tilde substitution).  For  exam-
       ple,
              file dirname ~/src/foo.c
       returns ~/src, whereas
              file dirname ~
       returns  /home  (or  something similar).  Option indicates
       what to do with the file name.   Any  unique  abbreviation
       for option is acceptable.  The valid options are:

       file atime name
              Returns  a  decimal string giving the time at which
              file name was last accessed.  The time is  measured
              in  the  standard  POSIX  fashion as seconds from a
              fixed starting time (often January  1,  1970).   If
              the file doesn't exist or its access time cannot be
              queried then an error is generated.

       file dirname name
              Returns all of the characters in name up to but not
              including  the  last directory separator character.
              If there are no separators  in  name  then  returns
              ``.''.  If the last separator in name is at the end
              of the root directory, then return the root  direc-
              tory.  For example,
                     file dirname c:\
              returns c:\.

       file executable name
              Returns 1 if file name is executable by the current
              user, 0 otherwise.

       file exists name
              Returns 1 if file name exists and the current  user
              has  search  privileges for the directories leading
              to it, 0 otherwise.

       file extension name
              Returns all of the characters  in  name  after  and
              including the last dot in the last element of name.
              If there is no dot in the last element of name then
              returns the empty string.

       file isdirectory name
              Returns 1 if file name is a directory, 0 otherwise.

       file isfile name
              Returns 1 if file name is a regular file, 0  other-
              wise.

       file lstat name varName
              Same  as  stat  option  (see below) except uses the
              lstat kernel call instead of stat.  This means that
              if  name  refers to a symbolic link the information
              returned in varName is for the link rather than the
              file  it  refers to.  On systems that don't support
              symbolic links this option behaves exactly the same
              as the stat option.

       file mtime name
              Returns  a  decimal string giving the time at which
              file name was last modified.  The time is  measured
              in  the  standard  POSIX  fashion as seconds from a
              fixed starting time (often January  1,  1970).   If
              the  file doesn't exist or its modified time cannot
              be queried then an error is generated.

       file nativename name
              If name is in network form, returns the native form
              of the file name.  Returns name otherwise.

       file networkname name
              If name is in native form, returns the network form
              of the file name.  Returns name otherwise.

       file owned name
              Returns 1 if file name  is  owned  by  the  current
              user, 0 otherwise.

       file readable name
              Returns  1  if file name is readable by the current
              user, 0 otherwise.

       file readlink name
              Returns the value of the  symbolic  link  given  by
              name  (i.e. the name of the file it points to).  If
              name isn't a symbolic link or its value  cannot  be
              read,  then  an error is returned.  On systems that
              don't support symbolic links this option  is  unde-
              fined.

       file rootname name
              Returns all of the characters in name up to but not
              including the last ``.'' character in the name.  If
              name doesn't contain a dot, then returns name.

       file size name
              Returns  a  decimal  string giving the size of file
              name in bytes.  If the file doesn't  exist  or  its
              size  cannot be queried then an error is generated.

       file stat  name varName
              Invokes the stat kernel call on name, and uses  the
              variable  given  by  varName  to  hold  information
              returned from the kernel call.  VarName is  treated
              as an array variable, and the following elements of
              that variable are set: atime, ctime, dev, gid, ino,
              mode,  mtime, nlink, size, type, uid.  Each element
              except type is a decimal string with the  value  of
              the corresponding field from the stat return struc-
              ture; see the manual entry for stat for details  on
              the meanings of the values.  The type element gives
              the type of the file in the same form  returned  by
              the  command  file  type.   This command returns an
              empty string.

       file tail name
              Returns all of the characters  in  name  after  the
              last directory separator.  If name contains no sep-
              arators then returns name.

       file type name
              Returns a string giving  the  type  of  file  name,
              which will be one of file, directory, characterSpe-
              cial, blockSpecial, fifo, link, or socket.

       file writable name
              Returns 1 if file name is writable by  the  current
              user, 0 otherwise.


SEE ALSO
       filename


KEYWORDS
       attributes, directory, file, name, stat
