Provided by: manpages-posix_2.16-1_all bug

NAME

       du - estimate file space usage

SYNOPSIS

       du [-a | -s][-kx][-H | -L][file ...]

DESCRIPTION

       By  default,  the  du utility shall write to standard output the size of the file space allocated to, and
       the size of the file space allocated to each subdirectory of, the file hierarchy rooted in  each  of  the
       specified  files.  By  default,  when  a  symbolic link is encountered on the command line or in the file
       hierarchy, du shall count the size of the symbolic link (rather than the file referenced  by  the  link),
       and  shall  not  follow  the  link  to  another portion of the file hierarchy. The size of the file space
       allocated to a file of type directory shall be defined as the sum total of space allocated to  all  files
       in the file hierarchy rooted in the directory plus the space allocated to the directory itself.

       When  du  cannot  stat()  files or stat() or read directories, it shall report an error condition and the
       final exit status is affected. Files with multiple links shall be counted and written for only one entry.
       The directory entry that is selected in the report is  unspecified.  By  default,  file  sizes  shall  be
       written in 512-byte units, rounded up to the next 512-byte unit.

OPTIONS

       The  du  utility  shall  conform  to  the  Base Definitions volume of IEEE Std 1003.1-2001, Section 12.2,
       Utility Syntax Guidelines.

       The following options shall be supported:

       -a     In addition to the default output, report the size of each file not of type directory in the  file
              hierarchy  rooted  in  the  specified  file.  Regardless  of  the  presence of the -a option, non-
              directories given as file operands shall always be listed.

       -H     If a symbolic link is specified on the command line, du shall count the size of the file  or  file
              hierarchy referenced by the link.

       -k     Write the files sizes in units of 1024 bytes, rather than the default 512-byte units.

       -L     If  a symbolic link is specified on the command line or encountered during the traversal of a file
              hierarchy, du shall count the size of the file or file hierarchy referenced by the link.

       -s     Instead of the default output, report only the total sum for each of the specified files.

       -x     When evaluating file sizes, evaluate only those files that  have  the  same  device  as  the  file
              specified by the file operand.

       Specifying  more  than  one of the mutually-exclusive options -H and -L shall not be considered an error.
       The last option specified shall determine the behavior of the utility.

OPERANDS

       The following operand shall be supported:

       file   The pathname of a file whose size is to be written. If no file is specified, the current directory
              shall be used.

STDIN

       Not used.

INPUT FILES

       None.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of du:

       LANG   Provide a default value for the internationalization variables that are unset or  null.  (See  the
              Base  Definitions  volume of IEEE Std 1003.1-2001, Section 8.2, Internationalization Variables for
              the  precedence  of  internationalization  variables  used  to  determine  the  values  of  locale
              categories.)

       LC_ALL If  set  to  a  non-empty  string value, override the values of all the other internationalization
              variables.

       LC_CTYPE
              Determine the locale for the interpretation of sequences of bytes of text data as characters  (for
              example, single-byte as opposed to multi-byte characters in arguments).

       LC_MESSAGES
              Determine  the locale that should be used to affect the format and contents of diagnostic messages
              written to standard error.

       NLSPATH
              Determine the location of message catalogs for the processing of LC_MESSAGES .

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       The output from du shall consist of the amount of space allocated to a file and the name of the file,  in
       the following format:

              "%d %s\n", <size>, <pathname>

STDERR

       The standard error shall be used only for diagnostic messages.

OUTPUT FILES

       None.

EXTENDED DESCRIPTION

       None.

EXIT STATUS

       The following exit values shall be returned:

        0     Successful completion.

       >0     An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       None.

EXAMPLES

       None.

RATIONALE

       The  use of 512-byte units is historical practice and maintains compatibility with ls and other utilities
       in this volume of IEEE Std 1003.1-2001. This does not mandate that the file system  itself  be  based  on
       512-byte  blocks.  The  -k  option  was  added  as  a  compromise measure.  It was agreed by the standard
       developers that 512 bytes was the best default unit because of its  complete  historical  consistency  on
       System  V  (versus  the  mixed  512/1024-byte  usage  on  BSD systems), and that a -k option to switch to
       1024-byte units was a good compromise. Users who prefer the 1024-byte quantity can easily alias du to  du
       -k without breaking the many historical scripts relying on the 512-byte units.

       The  -b option was added to an early proposal to provide a resolution to the situation where System V and
       BSD systems give figures for file sizes in blocks, which is an implementation-defined concept. (In common
       usage, the block size is 512 bytes for System V and 1024 bytes for BSD systems.) However,  -b  was  later
       deleted, since the default was eventually decided as 512-byte units.

       Historical  file systems provided no way to obtain exact figures for the space allocation given to files.
       There are two known areas of inaccuracies in historical file systems: cases of indirect blocks being used
       by the file system or sparse files yielding incorrectly high values. An indirect block is space  used  by
       the  file  system  in the storage of the file, but that need not be counted in the space allocated to the
       file. A sparse file is one in which an lseek() call has been made to a position beyond  the  end  of  the
       file  and  data  has  subsequently  been  written  at that point. A file system need not allocate all the
       intervening zero-filled blocks to such a file. It is up to  the  implementation  to  define  exactly  how
       accurate its methods are.

       The  -a  and  -s  options  were  mutually-exclusive  in  the  original version of du. The POSIX Shell and
       Utilities description is implied by the language in the SVID where -s is described as causing  "only  the
       grand  total"  to  be reported.  Some systems may produce output for -sa, but a Strictly Conforming POSIX
       Shell and Utilities Application cannot use that combination.

       The -a and -s options were adopted from the SVID except that the System V behavior of  not  listing  non-
       directories  explicitly  given  as operands, unless the -a option is specified, was considered a bug; the
       BSD-based behavior (report for all operands) is mandated. The default behavior of du  in  the  SVID  with
       regard to reporting the failure to read files (it produces no messages) was considered counter-intuitive,
       and  thus  it  was specified that the POSIX Shell and Utilities default behavior shall be to produce such
       messages. These messages can be turned off with shell redirection to achieve the System V behavior.

       The -x option is historical practice on recent BSD systems.  It  has  been  adopted  by  this  volume  of
       IEEE Std 1003.1-2001  because  there was no other historical method of limiting the du search to a single
       file hierarchy. This limitation of the search is necessary to make it possible to obtain file space usage
       information about a file system on which other file systems are mounted, without having to  resort  to  a
       lengthy find and awk script.

FUTURE DIRECTIONS

       None.

SEE ALSO

       ls , the System Interfaces volume of IEEE Std 1003.1-2001, stat()

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard  for  Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers,
       Inc and The Open Group. In the event of any discrepancy between this version and the  original  IEEE  and
       The  Open  Group  Standard,  the  original  IEEE and The Open Group Standard is the referee document. The
       original Standard can be obtained online at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group                                   2003                                                 DU(P)