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

NAME

       touch - change file access and modification times

SYNOPSIS

       touch [-acm][ -r ref_file| -t time] file...

DESCRIPTION

       The touch utility shall change the modification times, access times, or both of files. The
       modification time shall be equivalent to the value of the  st_mtime  member  of  the  stat
       structure   for   a   file,   as   described   in   the   System   Interfaces   volume  of
       IEEE Std 1003.1-2001; the access time shall be equivalent to the value of st_atime.

       The time used can be specified by the -t  time  option-argument,  the  corresponding  time
       fields  of  the  file  referenced  by  the  -r  ref_file option-argument, or the date_time
       operand, as specified in the following sections. If none of  these  are  specified,  touch
       shall  use  the  current time (the value returned by the equivalent of the time() function
       defined in the System Interfaces volume of IEEE Std 1003.1-2001).

       For each file operand, touch shall perform actions equivalent to the  following  functions
       defined in the System Interfaces volume of IEEE Std 1003.1-2001:

        1. If  file does not exist, a creat() function call is made with the file operand used as
           the path argument and the value of  the  bitwise-inclusive  OR  of  S_IRUSR,  S_IWUSR,
           S_IRGRP, S_IWGRP, S_IROTH, and S_IWOTH used as the mode argument.

        2. The utime() function is called with the following arguments:

            a. The file operand is used as the path argument.

            b. The  utimbuf  structure  members actime and modtime are determined as described in
               the OPTIONS section.

OPTIONS

       The touch 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     Change  the  access  time of file. Do not change the modification time unless -m is
              also specified.

       -c     Do not create a specified file if it does not exist. Do not  write  any  diagnostic
              messages concerning this condition.

       -m     Change  the  modification  time of file. Do not change the access time unless -a is
              also specified.

       -r  ref_file
              Use the corresponding time of the file named by the pathname  ref_file  instead  of
              the current time.

       -t  time
              Use  the specified time instead of the current time. The option-argument shall be a
              decimal number of the form:

              [[CC]YY]MMDDhhmm[.SS]

       where each two digits represents the following:

       MM
              The month of the year [01,12].

       DD
              The day of the month [01,31].

       hh
              The hour of the day [00,23].

       mm
              The minute of the hour [00,59].

       CC
              The first two digits of the year (the century).

       YY
              The second two digits of the year.

       SS
              The second of the minute [00,60].

       Both CC and YY shall be optional. If neither is given, the current year shall be  assumed.
       If YY is specified, but CC is not, CC shall be derived as follows:

                                        If YY is:   CC becomes:
                                        [69,99]     19
                                        [00,68]     20

       Note:
              It is expected that in a future version of IEEE Std 1003.1-2001 the default century
              inferred from a 2-digit year  will  change.  (This  would  apply  to  all  commands
              accepting a 2-digit year as input.)

       The  resulting  time shall be affected by the value of the TZ environment variable. If the
       resulting time value precedes the Epoch,  touch  shall  exit  immediately  with  an  error
       status.   The  range of valid times past the Epoch is implementation-defined, but it shall
       extend to at least the time 0 hours, 0 minutes, 0 seconds, January  1,  2038,  Coordinated
       Universal Time. Some implementations may not be able to represent dates beyond January 18,
       2038, because they use signed int as a time holder.

       The range for SS is [00,60] rather than [00,59] because of leap seconds. If SS is 60,  and
       the  resulting  time, as affected by the TZ environment variable, does not refer to a leap
       second, the resulting time shall be one second after a time where SS is 59. If SS  is  not
       given a value, it is assumed to be zero.

       If  neither the -a nor -m options were specified, touch shall behave as if both the -a and
       -m options were specified.

OPERANDS

       The following operands shall be supported:

       file   A pathname of a file whose times shall be modified.

STDIN

       Not used.

INPUT FILES

       None.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of touch:

       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 .

       TZ     Determine  the timezone to be used for interpreting the time option-argument. If TZ
              is unset or null, an unspecified default timezone shall be used.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       Not used.

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     The utility executed successfully and all requested changes were made.

       >0     An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       The interpretation of time  is  taken  to  be  seconds  since  the  Epoch  (see  the  Base
       Definitions  volume  of  IEEE Std 1003.1-2001,  Section 4.14, Seconds Since the Epoch). It
       should be noted that  implementations  conforming  to  the  System  Interfaces  volume  of
       IEEE Std 1003.1-2001  do  not  take leap seconds into account when computing seconds since
       the Epoch. When SS=60 is used, the resulting time always refers to 1  plus  seconds  since
       the Epoch for a time when SS=59.

       Although  the  -t  time  option-argument  specifies  values  in  1969, the access time and
       modification time fields are defined in terms of seconds since the Epoch  (00:00:00  on  1
       January  1970  UTC).  Therefore,  depending on the value of TZ when touch is run, there is
       never more than a few valid hours in 1969 and there need not be any valid times in 1969.

       One ambiguous situation occurs if -t time is not specified, -r ref_file is not  specified,
       and the first operand is an eight or ten-digit decimal number. A portable script can avoid
       this problem by using:

              touch -- file

       or:

              touch ./file

       in this case.

EXAMPLES

       None.

RATIONALE

       The functionality of touch is described almost entirely through references to functions in
       the System Interfaces volume of IEEE Std 1003.1-2001. In this way, there is no duplication
       of effort required for describing such side effects as the relationship of user IDs to the
       user database, permissions, and so on.

       There  are  some  significant  differences  between  the  touch  utility in this volume of
       IEEE Std 1003.1-2001 and those in System V and BSD systems.  They  are  upwards-compatible
       for historical applications from both implementations:

        1. In  System  V,  an ambiguity exists when a pathname that is a decimal number leads the
           operands; it is treated as a time value. In BSD, no time value is allowed;  files  may
           only  be  touched to the current time. The -t time construct solves these problems for
           future conforming applications (note that the -t option is not historical practice).

        2. The inclusion of the century digits, CC, is also new. Note that a ten-digit time value
           is  treated  as if YY, and not CC, were specified. The caveat about the range of dates
           following the Epoch was included as recognition that some implementations are not able
           to  represent  dates  beyond  18  January  2038  because they use signed int as a time
           holder.

       The -r option was added because several comments requested this  capability.  This  option
       was  named  -f  in an early proposal, but was changed because the -f option is used in the
       BSD version of touch with a different meaning.

       At least one historical implementation of touch  incremented  the  exit  code  if  -c  was
       specified  and  the  file did not exist. This volume of IEEE Std 1003.1-2001 requires exit
       status zero if no errors occur.

FUTURE DIRECTIONS

       Applications should use the -r or -t options.

SEE ALSO

       date , the System Interfaces volume of IEEE Std 1003.1-2001, creat(), time(), utime(), the
       Base Definitions volume of IEEE Std 1003.1-2001, <sys/stat.h>

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 .