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

NAME

       lp - send files to a printer

SYNOPSIS

       lp [-c][-d dest][-n copies][-msw][-o option]...  [-t title][file...]

DESCRIPTION

       The  lp utility shall copy the input files to an output destination in an unspecified manner. The default
       output destination should be to a hardcopy device, such as a printer or microfilm recorder, that produces
       non-volatile,  human-readable  documents. If such a device is not available to the application, or if the
       system provides no such device, the lp utility shall exit with a non-zero exit status.

       The actual writing to the output device may occur some time after  the  lp  utility  successfully  exits.
       During the portion of the writing that corresponds to each input file, the implementation shall guarantee
       exclusive access to the device.

       The lp utility shall associate a unique request ID with each request.

       Normally, a banner page is produced to separate and identify each print job. This page may be  suppressed
       by implementation-defined conditions, such as an operator command or one of the -o option values.

OPTIONS

       The  lp  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:

       -c     Exit only after further access to any of the input files is no longer  required.  The  application
              can then safely delete or modify the files without affecting the output operation. Normally, files
              are not copied, but are linked whenever possible. If the -c option is not  given,  then  the  user
              should  be  careful  not  to  remove  any  of the files before the request has been printed in its
              entirety. It should also be noted that in the absence of the -c option, any changes  made  to  the
              named  files  after  the  request is made but before it is printed may be reflected in the printed
              output. On some implementations, -c may be on by default.

       -d  dest
              Specify a string that names the destination ( dest). If dest is a printer, the  request  shall  be
              printed  only  on  that  specific  printer.  If  dest is a class of printers, the request shall be
              printed on the first available printer that is a member of the  class.  Under  certain  conditions
              (printer  unavailability,  file  space  limitation, and so on), requests for specific destinations
              need not be accepted. Destination names vary between systems.

       If -d is not specified, and neither the LPDEST nor PRINTER environment variable is  set,  an  unspecified
       destination  is  used.  The  -d  dest option shall take precedence over LPDEST , which in turn shall take
       precedence over PRINTER . Results are  undefined  when  dest  contains  a  value  that  is  not  a  valid
       destination name.

       -m     Send  mail (see mailx ) after the files have been printed. By default, no mail is sent upon normal
              completion of the print request.

       -n  copies
              Write copies number of copies of the files, where  copies  is  a  positive  decimal  integer.  The
              methods  for  producing  multiple  copies and for arranging the multiple copies when multiple file
              operands are used are unspecified, except that each file shall be output as an integral whole, not
              interleaved with portions of other files.

       -o  option
              Specify  printer-dependent  or  class-dependent  options. Several such options may be collected by
              specifying the -o option more than once.

       -s     Suppress messages from lp.

       -t  title
              Write title on the banner page of the output.

       -w     Write a message on the user's terminal after the files have been printed.   If  the  user  is  not
              logged in, then mail shall be sent instead.

OPERANDS

       The following operand shall be supported:

       file   A  pathname of a file to be output. If no file operands are specified, or if a file operand is '-'
              , the standard input shall be used. If a file operand is used, but the -c option is not specified,
              the  process  performing the writing to the output device may have user and group permissions that
              differ from that of the process invoking lp.

STDIN

       The standard input shall be used only if no file operands are specified, or if a file operand  is  '-'  .
       See the INPUT FILES section.

INPUT FILES

       The input files shall be text files.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of lp:

       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 and input files).

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

       LC_TIME
              Determine  the  format  and  contents of date and time strings displayed in the lp banner page, if
              any.

       LPDEST Determine the destination. If the LPDEST environment variable is not set, the PRINTER  environment
              variable  shall  be  used. The -d dest option takes precedence over LPDEST . Results are undefined
              when -d is not specified and LPDEST contains a value that is not a valid destination name.

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

       PRINTER
              Determine the output device or destination. If the LPDEST and PRINTER  environment  variables  are
              not  set,  an  unspecified  output  device  is used. The -d dest option and the LPDEST environment
              variable shall take precedence over PRINTER . Results are undefined  when  -d  is  not  specified,
              LPDEST is unset, and PRINTER contains a value that is not a valid device or destination name.

       TZ     Determine the timezone used to calculate date and time strings displayed in the lp banner page, if
              any. If TZ is unset or null, an unspecified default timezone shall be used.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       The lp utility shall write a request ID to the standard output, unless -s is specified. The format of the
       message is unspecified. The request ID can be used on systems supporting the historical cancel and lpstat
       utilities.

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     All input files were processed successfully.

       >0     No output device was available, or an error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       The pr and fold utilities can be used to achieve reasonable formatting for the  implementation's  default
       page size.

       A  conforming  application  can  use  one  of the file operands only with the -c option or if the file is
       publicly  readable  and  guaranteed  to  be  available  at  the  time  of  printing.  This   is   because
       IEEE Std 1003.1-2001  gives  the  implementation the freedom to queue up the request for printing at some
       later time by a different process that might not be able to access the file.

EXAMPLES

        1. To print file file:

           lp -c file

        2. To print multiple files with headers:

           pr file1 file2 | lp

RATIONALE

       The lp utility was designed to be a basic version  of  a  utility  that  is  already  available  in  many
       historical implementations. The standard developers considered that it should be implementable simply as:

              cat "$@" > /dev/lp

       after  appropriate  processing  of  options,  if  that  is  how  the implementation chose to do it and if
       exclusive access could be granted (so that two  users  did  not  write  to  the  device  simultaneously).
       Although in the future the standard developers may add other options to this utility, it should always be
       able to execute with no options or operands and send the standard input to an unspecified output device.

       This volume of IEEE Std 1003.1-2001 makes no representations concerning the format of the printed output,
       except  that  it  must be "human-readable" and "non-volatile". Thus, writing by default to a disk or tape
       drive or a display terminal would not qualify. (Such destinations are not prohibited when -d dest, LPDEST
       , or PRINTER are used, however.)

       This volume of IEEE Std 1003.1-2001 is worded such that a "print job" consisting of multiple input files,
       possibly in multiple copies, is guaranteed to print so that any one file is not intermixed with  another,
       but there is no statement that all the files or copies have to print out together.

       The -c option may imply a spooling operation, but this is not required. The utility can be implemented to
       wait until the printer is ready and then wait until it is finished. Because of that, there is no  attempt
       to define a queuing mechanism (priorities, classes of output, and so on).

       On some historical systems, the request ID reported on the STDOUT can be used to later cancel or find the
       status of a request using utilities not defined in this volume of IEEE Std 1003.1-2001.

       Although the historical System V lp and BSD lpr utilities have provided similar functionality, they  used
       different  names  for the environment variable specifying the destination printer.  Since the name of the
       utility here is lp, LPDEST (used by the System V lp utility) was given precedence over PRINTER  (used  by
       the  BSD  lpr  utility).  Since  environments  of  users  frequently contain one or the other environment
       variable, the lp utility is required to recognize both. If this was not  done,  many  applications  would
       send output to unexpected output devices when users moved from system to system.

       Some  have  commented  that  lp  has  far  too  little functionality to make it worthwhile. Requests have
       proposed additional options or operands or both that added functionality. The requests included:

        * Wording requiring the output to be "hardcopy"

        * A requirement for multiple printers

        * Options for supporting various page-description languages

       Given that a compliant system is not required to even have a printer, placing further  restrictions  upon
       the  behavior  of  the  printer  is  not useful. Since hardcopy format is so application-dependent, it is
       difficult, if not impossible, to select a reasonable subset of functionality that should be  required  on
       all compliant systems.

       The  term  unspecified  is  used  in  this  section  in  lieu  of  implementation-defined  as  most known
       implementations would not be able to make definitive  statements  in  their  conformance  documents;  the
       existence  and  usage  of  printers  is  very  dependent  on how the system administrator configures each
       individual system.

       Since the default destination, device type, queuing mechanisms, and acceptable forms  of  input  are  all
       unspecified, usage guidelines for what a conforming application can do are as follows:

        * Use  the command in a pipeline, or with -c, so that there are no permission problems and the files can
          be safely deleted or modified.

        * Limit output to text files of reasonable line lengths and printable characters and include no  device-
          specific  formatting  information, such as a page description language. The meaning of "reasonable" in
          this context can only be answered as a quality-of-implementation issue, but it should be apparent from
          historical  usage  patterns  in  the industry and the locale. The pr and fold utilities can be used to
          achieve reasonable formatting for the default page size of the implementation.

       Alternatively, the application can arrange its installation in such a way that  it  requires  the  system
       administrator  or  operator to provide the appropriate information on lp options and environment variable
       values.

       At a minimum, having this utility  in  this  volume  of  IEEE Std 1003.1-2001  tells  the  industry  that
       conforming  applications  require a means to print output and provides at least a command name and LPDEST
       routing mechanism that can be used for discussions between vendors, application writers, and users.   The
       use  of  "should"  in  the DESCRIPTION of lp clearly shows the intent of the standard developers, even if
       they cannot mandate that all systems (such as laptops) have printers.

       This volume of IEEE Std 1003.1-2001 does not specify what the ownership of  the  process  performing  the
       writing  to the output device may be. If -c is not used, it is unspecified whether the process performing
       the writing to the output device has permission to read file if there are any restrictions  in  place  on
       who  may  read  file  until  after  it is printed.  Also, if -c is not used, the results of deleting file
       before it is printed are unspecified.

FUTURE DIRECTIONS

       None.

SEE ALSO

       mailx

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 .