Provided by: manpages-posix_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of
       this interface may differ (consult the corresponding Linux  manual  page  for  details  of
       Linux behavior), or the interface may not be implemented on Linux.

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 POSIX.1‐2008, 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   POSIX.1‐2008,   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 POSIX.1‐2008. 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  POSIX.1‐2008  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 Base Definitions volume of POSIX.1‐2008, Chapter  8,  Environment  Variables,  Section
       12.2, Utility Syntax Guidelines

       The System Interfaces volume of POSIX.1‐2008, fstatat()

COPYRIGHT

       Portions  of  this  text  are  reprinted  and  reproduced in electronic form from IEEE Std
       1003.1, 2013 Edition, Standard for Information Technology  --  Portable  Operating  System
       Interface  (POSIX),  The Open Group Base Specifications Issue 7, Copyright (C) 2013 by the
       Institute of Electrical and Electronics Engineers, Inc  and  The  Open  Group.   (This  is
       POSIX.1-2008  with  the  2013  Technical  Corrigendum  1  applied.)  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.unix.org/online.html .

       Any typographical or formatting errors that appear in this page are most  likely  to  have
       been  introduced  during  the conversion of the source files to man page format. To report
       such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .