summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>2001-06-16 14:28:07 +0000
committerJim Meyering <jim@meyering.net>2001-06-16 14:28:07 +0000
commitda4170a71f3d14a677524e8a62aa5efd208a44ab (patch)
treeacb95f31ffd12d8a174baa27b02900e3532cccc7 /doc
parent01c0d9e91cffffd17fce0363c98281c25d83ee81 (diff)
downloadcoreutils-da4170a71f3d14a677524e8a62aa5efd208a44ab.tar.xz
.
Diffstat (limited to 'doc')
-rw-r--r--doc/sh-utils.texi3383
1 files changed, 0 insertions, 3383 deletions
diff --git a/doc/sh-utils.texi b/doc/sh-utils.texi
deleted file mode 100644
index 08d528aca..000000000
--- a/doc/sh-utils.texi
+++ /dev/null
@@ -1,3383 +0,0 @@
-\input texinfo
-@c %**start of header
-@setfilename sh-utils.info
-@settitle GNU shell utilities
-@c %**end of header
-
-@include version.texi
-
-@c Define new indices for file names and options.
-@defcodeindex fl
-@defcodeindex op
-
-@c Put everything in one index (arbitrarily chosen to be the concept index).
-@syncodeindex fl cp
-@syncodeindex fn cp
-@syncodeindex ky cp
-@syncodeindex op cp
-@syncodeindex pg cp
-@syncodeindex vr cp
-
-@set Francois Fran@,{c}ois
-
-@ifinfo
-@format
-START-INFO-DIR-ENTRY
-* Shell utilities: (sh-utils). GNU shell utilities.
-* basename: (sh-utils)basename invocation. Strip directory and suffix.
-* chroot: (sh-utils)chroot invocation. Specify the root directory.
-* date: (sh-utils)date invocation. Print/set system date and time.
-* dirname: (sh-utils)dirname invocation. Strip non-directory suffix.
-* echo: (sh-utils)echo invocation. Print a line of text.
-* env: (sh-utils)env invocation. Modify the environment.
-* expr: (sh-utils)expr invocation. Evaluate expressions.
-* factor: (sh-utils)factor invocation. Print prime factors
-* false: (sh-utils)false invocation. Do nothing, unsuccessfully.
-* groups: (sh-utils)groups invocation. Print group names a user is in.
-* hostid: (sh-utils)hostid invocation. Print numeric host identifier.
-* hostname: (sh-utils)hostname invocation. Print or set system name.
-* id: (sh-utils)id invocation. Print real/effective uid/gid.
-* logname: (sh-utils)logname invocation. Print current login name.
-* nice: (sh-utils)nice invocation. Modify scheduling priority.
-* nohup: (sh-utils)nohup invocation. Immunize to hangups.
-* pathchk: (sh-utils)pathchk invocation. Check file name portability.
-* printenv: (sh-utils)printenv invocation. Print environment variables.
-* printf: (sh-utils)printf invocation. Format and print data.
-* pwd: (sh-utils)pwd invocation. Print working directory.
-* seq: (sh-utils)seq invocation. Print numeric sequences
-* sleep: (sh-utils)sleep invocation. Delay for a specified time.
-* stty: (sh-utils)stty invocation. Print/change terminal settings.
-* su: (sh-utils)su invocation. Modify user and group id.
-* tee: (sh-utils)tee invocation. Redirect to multiple files.
-* test: (sh-utils)test invocation. File/string tests.
-* true: (sh-utils)true invocation. Do nothing, successfully.
-* tty: (sh-utils)tty invocation. Print terminal name.
-* uname: (sh-utils)uname invocation. Print system information.
-* users: (sh-utils)users invocation. Print current user names.
-* who: (sh-utils)who invocation. Print who is logged in.
-* whoami: (sh-utils)whoami invocation. Print effective user id.
-* yes: (sh-utils)yes invocation. Print a string indefinitely.
-END-INFO-DIR-ENTRY
-@end format
-@end ifinfo
-
-@ifinfo
-This file documents the GNU shell utilities.
-
-Copyright (C) 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end ifinfo
-
-@titlepage
-@title GNU @code{sh-utils}
-@subtitle A set of shell utilities
-@subtitle for version @value{VERSION}, @value{UPDATED}
-@author David MacKenzie et al.
-
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation approved
-by the Foundation.
-@end titlepage
-
-
-@ifnottex
-@node Top
-@top GNU shell utilities
-
-@cindex shell utilities
-@cindex utilities for shell programming
-
-This manual documents version @value{VERSION} of the GNU shell utilities.
-
-@menu
-* Introduction:: Caveats, overview, and authors.
-* Common options:: Common options.
-
-* Date input formats:: Specifying date strings.
-* Printing text:: echo printf yes
-* Conditions:: false true test expr
-* Redirection:: tee
-* File name manipulation:: dirname basename pathchk
-* Working context:: pwd stty printenv tty
-* User information:: id logname whoami groups users who
-* System context:: date uname hostname
-* Modified command invocation:: chroot env nice nohup su
-* Delaying:: sleep
-* Numeric operations:: factor seq
-
-* Index:: General index.
-@end menu
-@end ifnottex
-
-
-@node Introduction
-@chapter Introduction
-
-@cindex introduction
-
-First of all, this manual is incomplete. The @code{stty} section, in
-particular, needs substantial reorganization and additional explanatory
-text before it will be up to the standard of other GNU manuals.
-Explanatory text in general is lacking; the manual presently assumes you
-pretty much know what to do, and just need to be reminded of how. Thus,
-if you are interested, please get involved in improving this manual.
-The entire GNU community will benefit.
-
-Some of these programs are useful only when writing shell scripts;
-utilities like these are, in fact, the ``language'' of shell scripts (to
-a great extent). Others are occasionally useful interactively.
-
-@cindex POSIX.2
-The GNU shell utilities are mostly compatible with the POSIX.2 standard.
-
-@c This paragraph appears in all of fileutils.texi, textutils.texi, and
-@c sh-utils.texi too -- so be sure to keep them consistent.
-@cindex bugs, reporting
-Please report bugs to @samp{bug-sh-utils@@gnu.org}. Remember
-to include the version number, machine architecture, input files, and
-any other information needed to reproduce the bug: your input, what you
-expected, what you got, and why it is wrong. Diffs are welcome, but
-please include a description of the problem as well, since this is
-sometimes difficult to infer. @xref{Bugs, , , gcc, GNU CC}.
-
-@cindex history
-@cindex MacKenzie, David
-@cindex Meyering, Jim
-@c Sorry, but the @value trick doesn't work with TeX in indexing
-@c commands, and I don't want to fix it right now. --karl.
-@cindex Pinard, @value{Francois}
-@cindex Berry, Karl
-@cindex Stallman, Richard
-This manual was originally derived from the Unix man pages in the
-distribution, which were written by David MacKenzie and updated by Jim
-Meyering. What you are reading now is the authoritative documentation
-for these utilities; the man pages are no longer being maintained.
-@value{Francois} Pinard did the initial conversion to Texinfo format.
-Karl Berry did the indexing, some reorganization, and editing of the results.
-Richard Stallman contributed his usual invaluable insights to the
-overall process.
-
-
-@node Common options
-@chapter Common options
-
-@cindex common options
-
-Certain options are available in all these programs. Rather than
-writing identical descriptions for each of the programs, they are
-described here. (In fact, every GNU program accepts (or should accept)
-these options.)
-
-Many of these programs take arbitrary strings as arguments. In those
-cases, @samp{--help} and @samp{--version} are taken as these options
-only if there is one and exactly one command line argument.
-
-@table @samp
-
-@item --help
-@opindex --help
-@cindex help, online
-Print a usage message listing all available options, then exit successfully.
-
-@item --version
-@opindex --version
-@cindex version number, finding
-Print the version number, then exit successfully.
-
-@end table
-
-
-@include getdate.texi
-
-
-@node Printing text
-@chapter Printing text
-
-@cindex printing text, commands for
-@cindex commands for printing text
-
-This section describes commands that display text strings.
-
-@menu
-* echo invocation:: Print a line of text.
-* printf invocation:: Format and print data.
-* yes invocation:: Print a string until interrupted.
-@end menu
-
-
-@node echo invocation
-@section @code{echo}: Print a line of text
-
-@pindex echo
-@cindex displaying text
-@cindex printing text
-@cindex text, displaying
-@cindex arbitrary text, displaying
-
-@code{echo} writes each given @var{string} to standard output, with a
-space between each and a newline after the last one. Synopsis:
-
-@example
-echo [@var{option}]@dots{} [@var{string}]@dots{}
-@end example
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -n
-@opindex -n
-Do not output the trailing newline.
-
-@item -e
-@opindex -e
-@cindex backslash escapes
-Enable interpretation of the following backslash-escaped characters in
-each @var{string}:
-
-@table @samp
-@item \a
-alert (bell)
-@item \b
-backspace
-@item \c
-suppress trailing newline
-@item \f
-form feed
-@item \n
-new line
-@item \r
-carriage return
-@item \t
-horizontal tab
-@item \v
-vertical tab
-@item \\
-backslash
-@item \@var{nnn}
-the character whose ASCII code is @var{nnn} (octal); if @var{nnn} is not
-a valid octal number, it is printed literally.
-@end table
-
-@end table
-
-
-@node printf invocation
-@section @code{printf}: Format and print data
-
-@pindex printf
-@code{printf} does formatted printing of text. Synopsis:
-
-@example
-printf @var{format} [@var{argument}]@dots{}
-@end example
-
-@code{printf} prints the @var{format} string, interpreting @samp{%}
-directives and @samp{\} escapes in the same way as the C @code{printf}
-function. The @var{format} argument is re-used as necessary to convert
-all of the given @var{argument}s.
-
-@code{printf} has one additional directive, @samp{%b}, which prints its
-argument string with @samp{\} escapes interpreted in the same way as in
-the @var{format} string.
-
-@kindex \0ooo
-@kindex \0xhhh
-@code{printf} interprets @samp{\0ooo} in @var{format} as an octal number
-(if @var{ooo} is 0 to 3 octal digits) specifying a character to print,
-and @samp{\xhhh} as a hexadecimal number (if @var{hhh} is 1 to 3 hex
-digits) specifying a character to print.
-
-@kindex \uhhhh
-@kindex \Uhhhhhhhh
-@code{printf} interprets two character syntaxes introduced in ISO C 99:
-@samp{\u} for 16-bit Unicode characters, specified as 4 hex digits
-@var{hhhh}, and @samp{\U} for 32-bit Unicode characters, specified as 8 hex
-digits @var{hhhhhhhh}. @code{printf} outputs the Unicode characters
-according to the LC_CTYPE part of the current locale, i.e. depending
-on the values of the environment variables @code{LC_ALL}, @code{LC_CTYPE},
-@code{LANG}.
-
-The processing of @samp{\u} and @samp{\U} requires a full-featured
-@code{iconv} facility. It is activated on systems with glibc 2.2 (or newer),
-or when @code{libiconv} is installed prior to the sh-utils. Otherwise the
-use of @samp{\u} and @samp{\U} will give an error message.
-
-@kindex \c
-An additional escape, @samp{\c}, causes @code{printf} to produce no
-further output.
-
-The only options are a lone @samp{--help} or
-@samp{--version}. @xref{Common options}.
-
-The Unicode character syntaxes are useful for writing strings in a locale
-independent way. For example, a string containing the Euro currency symbol
-
-@example
-$ /usr/local/bin/printf '\u20AC 14.95'
-@end example
-
-@noindent
-will be output correctly in all locales supporting the Euro symbol
-(ISO-8859-15, UTF-8, and others). Similarly, a Chinese string
-
-@example
-$ /usr/local/bin/printf '\u4e2d\u6587'
-@end example
-
-@noindent
-will be output correctly in all Chinese locales (GB2312, BIG5, UTF-8, etc).
-
-Note that in these examples, the full pathname of @code{printf} has been
-given, to distinguish it from the GNU @code{bash} builtin function
-@code{printf}.
-
-For larger strings, you don't need to look up the hexadecimal code
-values of each character one by one. ASCII characters mixed with \u
-escape sequences is also known as the JAVA source file encoding. You can
-use GNU recode 3.5c (or newer) to convert strings to this encoding. Here
-is how to convert a piece of text into a shell script which will output
-this text in a locale-independent way:
-
-@smallexample
-$ LC_CTYPE=zh_CN.big5 /usr/local/bin/printf \
- '\u4e2d\u6587\n' > sample.txt
-$ recode BIG5..JAVA < sample.txt \
- | sed -e "s|^|/usr/local/bin/printf '|" -e "s|$|\\\\n'|" \
- > sample.sh
-@end smallexample
-
-
-@node yes invocation
-@section @code{yes}: Print a string until interrupted
-
-@pindex yes
-@cindex repeated output of a string
-
-@code{yes} prints the command line arguments, separated by spaces and
-followed by a newline, forever until it is killed. If no arguments are
-given, it prints @samp{y} followed by a newline forever until killed.
-
-The only options are a lone @samp{--help} or @samp{--version}.
-@xref{Common options}.
-
-
-@node Conditions
-@chapter Conditions
-
-@cindex conditions
-@cindex commands for exit status
-@cindex exit status commands
-
-This section describes commands that are primarily useful for their exit
-status, rather than their output. Thus, they are often used as the
-condition of shell @code{if} statements, or as the last command in a
-pipeline.
-
-@menu
-* false invocation:: Do nothing, unsuccessfully.
-* true invocation:: Do nothing, successfully.
-* test invocation:: Check file types and compare values.
-* expr invocation:: Evaluate expressions.
-@end menu
-
-
-@node false invocation
-@section @code{false}: Do nothing, unsuccessfully
-
-@pindex false
-@cindex do nothing, unsuccessfully
-@cindex failure exit status
-@cindex exit status of @code{false}
-
-@code{false} does nothing except return an exit status of 1, meaning
-@dfn{failure}. It can be used as a place holder in shell scripts
-where an unsuccessful command is needed.
-
-By default, @code{false} honors the @samp{--help} and @samp{--version}
-options. However, that is contrary to @sc{POSIX}, so when the environment
-variable @env{POSIXLY_CORRECT} is set, @code{false} ignores @emph{all}
-command line arguments, including @samp{--help} and @samp{--version}.
-
-This version of @code{false} is implemented as a C program, and is thus
-more secure and faster than a shell script implementation, and may safely
-be used as a dummy shell for the purpose of disabling accounts.
-
-
-@node true invocation
-@section @code{true}: Do nothing, successfully
-
-@pindex true
-@cindex do nothing, successfully
-@cindex no-op
-@cindex successful exit
-@cindex exit status of @code{true}
-
-@code{true} does nothing except return an exit status of 0, meaning
-@dfn{success}. It can be used as a place holder in shell scripts
-where a successful command is needed, although the shell built-in
-command @code{:} (colon) may do the same thing faster.
-In most modern shells, @code{true} is built-in command, so when
-you use @samp{true} in a script, you're probably using the built-in
-command, not the one documented here.
-
-By default, @code{true} honors the @samp{--help} and @samp{--version}
-options. However, that is contrary to @sc{POSIX}, so when the environment
-variable @env{POSIXLY_CORRECT} is set, @code{true} ignores @emph{all}
-command line arguments, including @samp{--help} and @samp{--version}.
-
-This version of @code{true} is implemented as a C program, and is thus
-more secure and faster than a shell script implementation, and may safely
-be used as a dummy shell for the purpose of disabling accounts.
-
-
-@node test invocation
-@section @code{test}: Check file types and compare values
-
-@pindex test
-@cindex check file types
-@cindex compare values
-@cindex expression evaluation
-
-@code{test} returns a status of 0 (true) or 1 (false) depending on the
-evaluation of the conditional expression @var{expr}. Each part of the
-expression must be a separate argument.
-
-@code{test} has file status checks, string operators, and numeric
-comparison operators.
-
-@cindex conflicts with shell built-ins
-@cindex built-in shell commands, conflicts with
-Because most shells have a built-in command by the same name, using the
-unadorned command name in a script or interactively may get you
-different functionality than that described here.
-
-Besides the options below, @code{test} accepts a lone @samp{--help} or
-@samp{--version}. @xref{Common options}. A single non-option argument
-is also allowed: @code{test} returns true if the argument is not null.
-
-@menu
-* File type tests:: -[bcdfhLpSt]
-* Access permission tests:: -[gkruwxOG]
-* File characteristics tests:: -e -s -nt -ot -ef
-* String tests:: -z -n = !=
-* Numeric tests:: -eq -ne -lt -le -gt -ge
-* Connectives for test:: ! -a -o
-@end menu
-
-
-@node File type tests
-@subsection File type tests
-
-@cindex file type tests
-
-These options test for particular types of files. (Everything's a file,
-but not all files are the same!)
-
-@table @samp
-
-@item -b @var{file}
-@opindex -b
-@cindex block special check
-True if @var{file} exists and is a block special device.
-
-@item -c @var{file}
-@opindex -c
-@cindex character special check
-True if @var{file} exists and is a character special device.
-
-@item -d @var{file}
-@opindex -d
-@cindex directory check
-True if @var{file} exists and is a directory.
-
-@item -f @var{file}
-@opindex -f
-@cindex regular file check
-True if @var{file} exists and is a regular file.
-
-@item -h @var{file}
-@itemx -L @var{file}
-@opindex -L
-@opindex -h
-@cindex symbolic link check
-True if @var{file} exists and is a symbolic link.
-
-@item -p @var{file}
-@opindex -p
-@cindex named pipe check
-True if @var{file} exists and is a named pipe.
-
-@item -S @var{file}
-@opindex -S
-@cindex socket check
-True if @var{file} exists and is a socket.
-
-@item -t [@var{fd}]
-@opindex -t
-@cindex terminal check
-True if @var{fd} is opened on a terminal. If @var{fd} is omitted, it
-defaults to 1 (standard output).
-
-@end table
-
-
-@node Access permission tests
-@subsection Access permission tests
-
-@cindex access permission tests
-@cindex permission tests
-
-These options test for particular access permissions.
-
-@table @samp
-
-@item -g @var{file}
-@opindex -g
-@cindex set-group-id check
-True if @var{file} exists and has its set-group-id bit set.
-
-@item -k @var{file}
-@opindex -k
-@cindex sticky bit check
-True if @var{file} has its @dfn{sticky} bit set.
-
-@item -r @var{file}
-@opindex -r
-@cindex readable file check
-True if @var{file} exists and is readable.
-
-@item -u @var{file}
-@opindex -u
-@cindex set-user-id check
-True if @var{file} exists and has its set-user-id bit set.
-
-@item -w @var{file}
-@opindex -w
-@cindex writable file check
-True if @var{file} exists and is writable.
-
-@item -x @var{file}
-@opindex -x
-@cindex executable file check
-True if @var{file} exists and is executable.
-
-@item -O @var{file}
-@opindex -O
-@cindex owned by effective uid check
-True if @var{file} exists and is owned by the current effective user id.
-
-@item -G @var{file}
-@opindex -G
-@cindex owned by effective gid check
-True if @var{file} exists and is owned by the current effective group id.
-
-@end table
-
-@node File characteristics tests
-@subsection File characteristics tests
-
-@cindex file characteristics tests
-
-These options test other file characteristics.
-
-@table @samp
-
-@item -e @var{file}
-@opindex -e
-@cindex existence-of-file check
-True if @var{file} exists.
-
-@item -s @var{file}
-@opindex -s
-@cindex nonempty file check
-True if @var{file} exists and has a size greater than zero.
-
-@item @var{file1} -nt @var{file2}
-@opindex -nt
-@cindex newer-than file check
-True if @var{file1} is newer (according to modification date) than
-@var{file2}.
-
-@item @var{file1} -ot @var{file2}
-@opindex -ot
-@cindex older-than file check
-True if @var{file1} is older (according to modification date) than
-@var{file2}.
-
-@item @var{file1} -ef @var{file2}
-@opindex -ef
-@cindex same file check
-@cindex hard link check
-True if @var{file1} and @var{file2} have the same device and inode
-numbers, i.e., if they are hard links to each other.
-
-@end table
-
-
-@node String tests
-@subsection String tests
-
-@cindex string tests
-
-These options test string characteristics. Strings are not quoted for
-@code{test}, though you may need to quote them to protect characters
-with special meaning to the shell, e.g., spaces.
-
-@table @samp
-
-@item -z @var{string}
-@opindex -z
-@cindex zero-length string check
-True if the length of @var{string} is zero.
-
-@item -n @var{string}
-@itemx @var{string}
-@opindex -n
-@cindex nonzero-length string check
-True if the length of @var{string} is nonzero.
-
-@item @var{string1} = @var{string2}
-@opindex =
-@cindex equal string check
-True if the strings are equal.
-
-@item @var{string1} != @var{string2}
-@opindex !=
-@cindex not-equal string check
-True if the strings are not equal.
-
-@end table
-
-
-@node Numeric tests
-@subsection Numeric tests
-
-@cindex numeric tests
-@cindex arithmetic tests
-
-Numeric relationals. The arguments must be entirely numeric (possibly
-negative), or the special expression @w{@code{-l @var{string}}}, which
-evaluates to the length of @var{string}.
-
-@table @samp
-
-@item @var{arg1} -eq @var{arg2}
-@itemx @var{arg1} -ne @var{arg2}
-@itemx @var{arg1} -lt @var{arg2}
-@itemx @var{arg1} -le @var{arg2}
-@itemx @var{arg1} -gt @var{arg2}
-@itemx @var{arg1} -ge @var{arg2}
-@opindex -eq
-@opindex -ne
-@opindex -lt
-@opindex -le
-@opindex -gt
-@opindex -ge
-These arithmetic binary operators return true if @var{arg1} is equal,
-not-equal, less-than, less-than-or-equal, greater-than, or
-greater-than-or-equal than @var{arg2}, respectively.
-
-@end table
-
-For example:
-
-@example
-test -1 -gt -2 && echo yes
-@result{} yes
-test -l abc -gt 1 && echo yes
-@result{} yes
-test 0x100 -eq 1
-@error{} test: integer expression expected before -eq
-@end example
-
-
-@node Connectives for test
-@subsection Connectives for @code{test}
-
-@cindex logical connectives
-@cindex connectives, logical
-
-The usual logical connectives.
-
-@table @samp
-
-@item ! @var{expr}
-@opindex !
-True if @var{expr} is false.
-
-@item @var{expr1} -a @var{expr2}
-@opindex -a
-@cindex logical and operator
-@cindex and operator
-True if both @var{expr1} and @var{expr2} are true.
-
-@item @var{expr1} -o @var{expr2}
-@opindex -o
-@cindex logical or operator
-@cindex or operator
-True if either @var{expr1} or @var{expr2} is true.
-
-@end table
-
-
-@node expr invocation
-@section @code{expr}: Evaluate expressions
-
-@pindex expr
-@cindex expression evaluation
-@cindex evaluation of expressions
-
-@code{expr} evaluates an expression and writes the result on standard
-output. Each token of the expression must be a separate argument.
-
-Operands are either numbers or strings. @code{expr} converts
-anything appearing in an operand position to an integer or a string
-depending on the operation being applied to it.
-
-Strings are not quoted for @code{expr} itself, though you may need to
-quote them to protect characters with special meaning to the shell,
-e.g., spaces.
-
-@cindex parentheses for grouping
-Operators may given as infix symbols or prefix keywords. Parentheses
-may be used for grouping in the usual manner (you must quote parentheses
-to avoid the shell evaluating them, however).
-
-@cindex exit status of @code{expr}
-Exit status:
-
-@display
-0 if the expression is neither null nor 0,
-1 if the expression is null or 0,
-2 for invalid expressions.
-@end display
-
-@menu
-* String expressions:: <colon> match substr index length quote
-* Numeric expressions:: + - * / %
-* Relations for expr:: | & < <= = == != >= >
-* Examples of expr:: Examples.
-@end menu
-
-
-@node String expressions
-@subsection String expressions
-
-@cindex string expressions
-@cindex expressions, string
-
-@code{expr} supports pattern matching and other string operators. These
-have lower precedence than both the numeric and relational operators (in
-the next sections).
-
-@table @samp
-
-@item @var{string} : @var{regex}
-@cindex pattern matching
-@cindex regular expression matching
-@cindex matching patterns
-Perform pattern matching. The arguments are converted to strings and the
-second is considered to be a (basic, a la GNU @code{grep}) regular
-expression, with a @code{^} implicitly prepended. The first argument is
-then matched against this regular expression.
-
-If the match succeeds and @var{regex} uses @samp{\(} and @samp{\)}, the
-@code{:} expression returns the part of @var{string} that matched the
-subexpression; otherwise, it returns the number of characters matched.
-
-If the match fails, the @code{:} operator returns the null string if
-@samp{\(} and @samp{\)} are used in @var{regex}, otherwise 0.
-
-@kindex \( @r{regexp operator}
-Only the first @samp{\( @dots{} \)} pair is relevant to the return
-value; additional pairs are meaningful only for grouping the regular
-expression operators.
-
-@kindex \+ @r{regexp operator}
-@kindex \? @r{regexp operator}
-@kindex \| @r{regexp operator}
-In the regular expression, @code{\+}, @code{\?}, and @code{\|} are
-operators which respectively match one or more, zero or one, or separate
-alternatives. SunOS and other @code{expr}'s treat these as regular
-characters. (POSIX allows either behavior.)
-@xref{Top, , Regular Expression Library, regex, Regex}, for details of
-regular expression syntax. Some examples are in @ref{Examples of expr}.
-
-@item match @var{string} @var{regex}
-@findex match
-An alternative way to do pattern matching. This is the same as
-@w{@samp{@var{string} : @var{regex}}}.
-
-@item substr @var{string} @var{position} @var{length}
-@findex substr
-Returns the substring of @var{string} beginning at @var{position}
-with length at most @var{length}. If either @var{position} or
-@var{length} is negative, zero, or non-numeric, returns the null string.
-
-@item index @var{string} @var{charset}
-@findex index
-Returns the first position in @var{string} where the first character in
-@var{charset} was found. If no character in @var{charset} is found in
-@var{string}, return 0.
-
-@item length @var{string}
-@findex length
-Returns the length of @var{string}.
-
-@item quote @var{token}
-@findex quote
-Interpret @var{token} as a string, even if it is a keyword like @var{match}
-or an operator like @code{/}.
-This makes it possible to test @code{expr length quote "$x"} or
-@code{expr quote "$x" : '.*/\(.\)'} and have it do the right thing even if
-the value of @var{$x} happens to be (for example) @code{/} or @code{index}.
-This operator is a GNU extension. It is disabled when
-the environment variable @env{POSIXLY_CORRECT} is set.
-
-@end table
-
-To make @code{expr} interpret keywords as strings, you must use the
-@code{quote} operator.
-
-
-@node Numeric expressions
-@subsection Numeric expressions
-
-@cindex numeric expressions
-@cindex expressions, numeric
-
-@code{expr} supports the usual numeric operators, in order of increasing
-precedence. The string operators (previous section) have lower precedence,
-the connectives (next section) have higher.
-
-@table @samp
-
-@item + -
-@kindex +
-@kindex -
-@cindex addition
-@cindex subtraction
-Addition and subtraction. Both arguments are converted to numbers;
-an error occurs if this cannot be done.
-
-@item * / %
-@kindex *
-@kindex /
-@kindex %
-@cindex multiplication
-@cindex division
-@cindex remainder
-Multiplication, division, remainder. Both arguments are converted to
-numbers; an error occurs if this cannot be done.
-
-@end table
-
-
-@node Relations for expr
-@subsection Relations for @code{expr}
-
-@cindex connectives, logical
-@cindex logical connectives
-@cindex relations, numeric or string
-
-@code{expr} supports the usual logical connectives and relations. These
-are higher precedence than either the string or numeric operators
-(previous sections). Here is the list, lowest-precedence operator first.
-
-@table @samp
-
-@item |
-@kindex |
-@cindex logical or operator
-@cindex or operator
-Returns its first argument if that is neither null nor 0, otherwise its
-second argument.
-
-@item &
-@kindex &
-@cindex logical and operator
-@cindex and operator
-Return its first argument if neither argument is null or 0, otherwise
-0.
-
-@item < <= = == != >= >
-@kindex <
-@kindex <=
-@kindex =
-@kindex ==
-@kindex >
-@kindex >=
-@cindex comparison operators
-Compare the arguments and return 1 if the relation is true, 0 otherwise.
-@code{==} is a synonym for @code{=}. @code{expr} first tries to convert
-both arguments to numbers and do a numeric comparison; if either
-conversion fails, it does a lexicographic comparison.
-
-@end table
-
-
-@node Examples of expr
-@subsection Examples of using @code{expr}
-
-@cindex examples of @code{expr}
-Here are a few examples, including quoting for shell metacharacters.
-
-To add 1 to the shell variable @code{foo}, in Bourne-compatible shells:
-@example
-foo=`expr $foo + 1`
-@end example
-
-To print the non-directory part of the file name stored in
-@code{$fname}, which need not contain a @code{/}.
-@example
-expr $fname : '.*/\(^.*\)' '^|' $fname
-@end example
-
-An example showing that @code{\+} is an operator:
-@example
-expr aaa : 'a\+'
-@result{} 3
-@end example
-
-@example
-expr abc : 'a\(.\)c'
-@result{} b
-expr index abcdef cz
-@result{} 3
-expr index index a
-@error{} expr: syntax error
-expr index quote index a
-@result{} 0
-@end example
-
-
-@node Redirection
-@chapter Redirection
-
-@cindex redirection
-@cindex commands for redirection
-
-Unix shells commonly provide several forms of @dfn{redirection}---ways
-to change the input source or output destination of a command. But one
-useful redirection is performed by a separate command, not by the shell;
-it's described here.
-
-@menu
-* tee invocation:: Redirect output to multiple files.
-@end menu
-
-
-@node tee invocation
-@section @code{tee}: Redirect output to multiple files
-
-@pindex tee
-@cindex pipe fitting
-@cindex destinations, multiple output
-@cindex read from stdin and write to stdout and files
-
-The @code{tee} command copies standard input to standard output and also
-to any files given as arguments. This is useful when you want not only
-to send some data down a pipe, but also to save a copy. Synopsis:
-
-@example
-tee [@var{option}]@dots{} [@var{file}]@dots{}
-@end example
-
-If a file being written to does not already exist, it is created. If a
-file being written to already exists, the data it previously contained
-is overwritten unless the @code{-a} option is used.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -a
-@itemx --append
-@opindex -a
-@opindex --append
-Append standard input to the given files rather than overwriting
-them.
-
-@item -i
-@itemx --ignore-interrupts
-@opindex -i
-@opindex --ignore-interrupts
-Ignore interrupt signals.
-
-@end table
-
-
-@node File name manipulation
-@chapter File name manipulation
-
-@cindex file name manipulation
-@cindex manipulation of file names
-@cindex commands for file name manipulation
-
-This section describes commands that manipulate file names.
-
-@menu
-* basename invocation:: Strip directory and suffix from a file name.
-* dirname invocation:: Strip non-directory suffix from a file name.
-* pathchk invocation:: Check file name portability.
-@end menu
-
-
-@node basename invocation
-@section @code{basename}: Strip directory and suffix from a file name
-
-@pindex basename
-@cindex strip directory and suffix from file names
-@cindex directory, stripping from file names
-@cindex suffix, stripping from file names
-@cindex file names, stripping directory and suffix
-@cindex leading directory components, stripping
-
-@code{basename} removes any leading directory components from
-@var{name}. Synopsis:
-
-@example
-basename @var{name} [@var{suffix}]
-@end example
-
-If @var{suffix} is specified and is identical to the end of @var{name},
-it is removed from @var{name} as well. @code{basename} prints the
-result on standard output.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node dirname invocation
-@section @code{dirname}: Strip non-directory suffix from a file name
-
-@pindex dirname
-@cindex directory components, printing
-@cindex stripping non-directory suffix
-@cindex non-directory suffix, stripping
-
-@code{dirname} prints all but the final slash-delimited component of
-a string (presumably a filename). Synopsis:
-
-@example
-dirname @var{name}
-@end example
-
-If @var{name} is a single component, @code{dirname} prints @samp{.}
-(meaning the current directory).
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node pathchk invocation
-@section @code{pathchk}: Check file name portability
-
-@pindex pathchk
-@cindex file names, checking validity and portability
-@cindex valid file names, checking for
-@cindex portable file names, checking for
-
-@code{pathchk} checks portability of filenames. Synopsis:
-
-@example
-pathchk [@var{option}]@dots{} @var{name}@dots{}
-@end example
-
-For each @var{name}, @code{pathchk} prints a message if any of
-these conditions is true:
-@enumerate
-@item
-one of the existing directories in @var{name} does not have search
-(execute) permission,
-@item
-the length of @var{name} is larger than its filesystem's maximum
-file name length,
-@item
-the length of one component of @var{name}, corresponding to an
-existing directory name, is larger than its filesystem's maximum
-length for a file name component.
-@end enumerate
-
-The program accepts the following option. Also see @ref{Common options}.
-
-@table @samp
-
-@item -p
-@itemx --portability
-@opindex -p
-@opindex --portability
-Instead of performing length checks on the underlying filesystem,
-test the length of each file name and its components against the
-POSIX.1 minimum limits for portability. Also check that the file
-name contains no characters not in the portable file name character set.
-
-@end table
-
-@cindex exit status of @code{pathchk}
-Exit status:
-
-@display
-0 if all specified file names passed all of the tests,
-1 otherwise.
-@end display
-
-
-@node Working context
-@chapter Working context
-
-@cindex working context
-@cindex commands for printing the working context
-
-This section describes commands that display or alter the context in
-which you are working: the current directory, the terminal settings, and
-so forth. See also the user-related commands in the next section.
-
-@menu
-* pwd invocation:: Print working directory.
-* stty invocation:: Print or change terminal characteristics.
-* printenv invocation:: Print environment variables.
-* tty invocation:: Print file name of terminal on standard input.
-@end menu
-
-
-@node pwd invocation
-@section @code{pwd}: Print working directory
-
-@pindex pwd
-@cindex print name of current directory
-@cindex current working directory, printing
-@cindex working directory, printing
-
-@cindex symbolic links and @code{pwd}
-@code{pwd} prints the fully resolved name of the current directory.
-That is, all components of the printed name will be actual directory
-names---none will be symbolic links.
-
-@cindex conflicts with shell built-ins
-@cindex built-in shell commands, conflicts with
-Because most shells have a built-in command by the same name, using the
-unadorned command name in a script or interactively may get you
-different functionality than that described here.
-
-The only options are a lone @samp{--help} or
-@samp{--version}. @xref{Common options}.
-
-
-@node stty invocation
-@section @code{stty}: Print or change terminal characteristics
-
-@pindex stty
-@cindex change or print terminal settings
-@cindex terminal settings
-@cindex line settings of terminal
-
-@code{stty} prints or changes terminal characteristics, such as baud rate.
-Synopses:
-
-@example
-stty [@var{option}] [@var{setting}]@dots{}
-stty [@var{option}]
-@end example
-
-If given no line settings, @code{stty} prints the baud rate, line
-discipline number (on systems that support it), and line settings
-that have been changed from the values set by @samp{stty sane}.
-By default, mode reading and setting are performed on the tty line
-connected to standard input, although this can be modified by the
-@samp{--file} option.
-
-@code{stty} accepts many non-option arguments that change aspects of
-the terminal line operation, as described below.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -a
-@itemx --all
-@opindex -a
-@opindex --all
-Print all current settings in human-readable form. This option may not
-be used in combination with any line settings.
-
-@item -F @var{device}
-@itemx --file=@var{device}
-@opindex -F
-@opindex --file
-Set the line opened by the filename specified in @var{device} instead of
-the tty line connected to standard input. This option is necessary
-because opening a POSIX tty requires use of the @code{O_NONDELAY} flag to
-prevent a POSIX tty from blocking until the carrier detect line is high if
-the @code{clocal} flag is not set. Hence, it is not always possible
-to allow the shell to open the device in the traditional manner.
-
-@item -g
-@itemx --save
-@opindex -g
-@opindex --save
-@cindex machine-readable @code{stty} output
-Print all current settings in a form that can be used as an argument to
-another @code{stty} command to restore the current settings. This option
-may not be used in combination with any line settings.
-
-@end table
-
-Many settings can be turned off by preceding them with a @samp{-}.
-Such arguments are marked below with ``May be negated'' in their
-description. The descriptions themselves refer to the positive
-case, that is, when @emph{not} negated (unless stated otherwise,
-of course).
-
-Some settings are not available on all POSIX systems, since they use
-extensions. Such arguments are marked below with ``Non-POSIX'' in their
-description. On non-POSIX systems, those or other settings also may not
-be available, but it's not feasible to document all the variations: just
-try it and see.
-
-@menu
-* Control:: Control settings
-* Input:: Input settings
-* Output:: Output settings
-* Local:: Local settings
-* Combination:: Combination settings
-* Characters:: Special characters
-* Special:: Special settings
-@end menu
-
-
-@node Control
-@subsection Control settings
-
-@cindex control settings
-Control settings:
-
-@table @samp
-@item parenb
-@opindex parenb
-@cindex two-way parity
-Generate parity bit in output and expect parity bit in input.
-May be negated.
-
-@item parodd
-@opindex parodd
-@cindex odd parity
-@cindex even parity
-Set odd parity (even if negated). May be negated.
-
-@item cs5
-@itemx cs6
-@itemx cs7
-@itemx cs8
-@opindex cs@var{n}
-@cindex character size
-@cindex eight-bit characters
-Set character size to 5, 6, 7, or 8 bits.
-
-@item hup
-@itemx hupcl
-@opindex hup[cl]
-Send a hangup signal when the last process closes the tty. May be
-negated.
-
-@item cstopb
-@opindex cstopb
-@cindex stop bits
-Use two stop bits per character (one if negated). May be negated.
-
-@item cread
-@opindex cread
-Allow input to be received. May be negated.
-
-@item clocal
-@opindex clocal
-@cindex modem control
-Disable modem control signals. May be negated.
-
-@item crtscts
-@opindex crtscts
-@cindex hardware flow control
-@cindex flow control, hardware
-@cindex RTS/CTS flow control
-Enable RTS/CTS flow control. Non-POSIX. May be negated.
-@end table
-
-
-@node Input
-@subsection Input settings
-
-@cindex input settings
-
-@table @samp
-@item ignbrk
-@opindex ignbrk
-@cindex breaks, ignoring
-Ignore break characters. May be negated.
-
-@item brkint
-@opindex brkint
-@cindex breaks, cause interrupts
-Make breaks cause an interrupt signal. May be negated.
-
-@item ignpar
-@opindex ignpar
-@cindex parity, ignoring
-Ignore characters with parity errors. May be negated.
-
-@item parmrk
-@opindex parmrk
-@cindex parity errors, marking
-Mark parity errors (with a 255-0-character sequence). May be negated.
-
-@item inpck
-@opindex inpck
-Enable input parity checking. May be negated.
-
-@item istrip
-@opindex istrip
-@cindex eight-bit input
-Clear high (8th) bit of input characters. May be negated.
-
-@item inlcr
-@opindex inlcr
-@cindex newline, translating to return
-Translate newline to carriage return. May be negated.
-
-@item igncr
-@opindex igncr
-@cindex return, ignoring
-Ignore carriage return. May be negated.
-
-@item icrnl
-@opindex icrnl
-@cindex return, translating to newline
-Translate carriage return to newline. May be negated.
-
-@item ixon
-@opindex ixon
-@kindex C-s/C-q flow control
-@cindex XON/XOFF flow control
-Enable XON/XOFF flow control (that is, @kbd{CTRL-S}/@kbd{CTRL-Q}). May
-be negated.
-
-@item ixoff
-@itemx tandem
-@opindex ixoff
-@opindex tandem
-@cindex software flow control
-@cindex flow control, software
-Enable sending of @code{stop} character when the system input buffer
-is almost full, and @code{start} character when it becomes almost
-empty again. May be negated.
-
-@item iuclc
-@opindex iuclc
-@cindex uppercase, translating to lowercase
-Translate uppercase characters to lowercase. Non-POSIX. May be
-negated.
-
-@item ixany
-@opindex ixany
-Allow any character to restart output (only the start character
-if negated). Non-POSIX. May be negated.
-
-@item imaxbel
-@opindex imaxbel
-@cindex beeping at input buffer full
-Enable beeping and not flushing input buffer if a character arrives
-when the input buffer is full. Non-POSIX. May be negated.
-@end table
-
-
-@node Output
-@subsection Output settings
-
-@cindex output settings
-These arguments specify output-related operations.
-
-@table @samp
-@item opost
-@opindex opost
-Postprocess output. May be negated.
-
-@item olcuc
-@opindex olcuc
-@cindex lowercase, translating to output
-Translate lowercase characters to uppercase. Non-POSIX. May be
-negated.
-
-@item ocrnl
-@opindex ocrnl
-@cindex return, translating to newline
-Translate carriage return to newline. Non-POSIX. May be negated.
-
-@item onlcr
-@opindex onlcr
-@cindex newline, translating to crlf
-Translate newline to carriage return-newline. Non-POSIX. May be
-negated.
-
-@item onocr
-@opindex onocr
-Do not print carriage returns in the first column. Non-POSIX.
-May be negated.
-
-@item onlret
-@opindex onlret
-Newline performs a carriage return. Non-POSIX. May be negated.
-
-@item ofill
-@opindex ofill
-@cindex pad instead of timing for delaying
-Use fill (padding) characters instead of timing for delays. Non-POSIX.
-May be negated.
-
-@item ofdel
-@opindex ofdel
-@cindex pad character
-Use delete characters for fill instead of null characters. Non-POSIX.
-May be negated.
-
-@item nl1
-@itemx nl0
-@opindex nl@var{n}
-Newline delay style. Non-POSIX.
-
-@item cr3
-@itemx cr2
-@itemx cr1
-@itemx cr0
-@opindex cr@var{n}
-Carriage return delay style. Non-POSIX.
-
-@item tab3
-@itemx tab2
-@itemx tab1
-@itemx tab0
-@opindex tab@var{n}
-Horizontal tab delay style. Non-POSIX.
-
-@item bs1
-@itemx bs0
-@opindex bs@var{n}
-Backspace delay style. Non-POSIX.
-
-@item vt1
-@itemx vt0
-@opindex vt@var{n}
-Vertical tab delay style. Non-POSIX.
-
-@item ff1
-@itemx ff0
-@opindex ff@var{n}
-Form feed delay style. Non-POSIX.
-@end table
-
-
-@node Local
-@subsection Local settings
-
-@cindex local settings
-
-@table @samp
-@item isig
-@opindex isig
-Enable @code{interrupt}, @code{quit}, and @code{suspend} special
-characters. May be negated.
-
-@item icanon
-@opindex icanon
-Enable @code{erase}, @code{kill}, @code{werase}, and @code{rprnt}
-special characters. May be negated.
-
-@item iexten
-@opindex iexten
-Enable non-POSIX special characters. May be negated.
-
-@item echo
-@opindex echo
-Echo input characters. May be negated.
-
-@item echoe
-@itemx crterase
-@opindex echoe
-@opindex crterase
-Echo @code{erase} characters as backspace-space-backspace. May be
-negated.
-
-@item echok
-@opindex echok
-@cindex newline echoing after @code{kill}
-Echo a newline after a @code{kill} character. May be negated.
-
-@item echonl
-@opindex echonl
-@cindex newline, echoing
-Echo newline even if not echoing other characters. May be negated.
-
-@item noflsh
-@opindex noflsh
-@cindex flushing, disabling
-Disable flushing after @code{interrupt} and @code{quit} special
-characters. May be negated.
-
-@item xcase
-@opindex xcase
-@cindex case translation
-Enable input and output of uppercase characters by preceding their
-lowercase equivalents with @samp{\}, when @code{icanon} is set.
-Non-POSIX. May be negated.
-
-@item tostop
-@opindex tostop
-@cindex background jobs, stopping at terminal write
-Stop background jobs that try to write to the terminal. Non-POSIX.
-May be negated.
-
-@item echoprt
-@itemx prterase
-@opindex echoprt
-@opindex prterase
-Echo erased characters backward, between @samp{\} and @samp{/}.
-Non-POSIX. May be negated.
-
-@item echoctl
-@itemx ctlecho
-@opindex echoctl
-@opindex ctlecho
-@cindex control characters, using @samp{^@var{c}}
-@cindex hat notation for control characters
-Echo control characters in hat notation (@samp{^@var{c}}) instead
-of literally. Non-POSIX. May be negated.
-
-@item echoke
-@itemx crtkill
-@opindex echoke
-@opindex crtkill
-Echo the @code{kill} special character by erasing each character on
-the line as indicated by the @code{echoprt} and @code{echoe} settings,
-instead of by the @code{echoctl} and @code{echok} settings. Non-POSIX.
-May be negated.
-@end table
-
-
-@node Combination
-@subsection Combination settings
-
-@cindex combination settings
-Combination settings:
-
-@table @samp
-@item evenp
-@opindex evenp
-@itemx parity
-@opindex parity
-Same as @code{parenb -parodd cs7}. May be negated. If negated, same
-as @code{-parenb cs8}.
-
-@item oddp
-@opindex oddp
-Same as @code{parenb parodd cs7}. May be negated. If negated, same
-as @code{-parenb cs8}.
-
-@item nl
-@opindex nl
-Same as @code{-icrnl -onlcr}. May be negated. If negated, same as
-@code{icrnl -inlcr -igncr onlcr -ocrnl -onlret}.
-
-@item ek
-@opindex ek
-Reset the @code{erase} and @code{kill} special characters to their default
-values.
-
-@item sane
-@opindex sane
-Same as:
-@c This is too long to write inline.
-@example
-cread -ignbrk brkint -inlcr -igncr icrnl -ixoff
--iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
--onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
-ff0 isig icanon iexten echo echoe echok -echonl
--noflsh -xcase -tostop -echoprt echoctl echoke
-@end example
-@noindent and also sets all special characters to their default values.
-
-@item cooked
-@opindex cooked
-Same as @code{brkint ignpar istrip icrnl ixon opost isig icanon}, plus
-sets the @code{eof} and @code{eol} characters to their default values
-if they are the same as the @code{min} and @code{time} characters.
-May be negated. If negated, same as @code{raw}.
-
-@item raw
-@opindex raw
-Same as:
-@example
--ignbrk -brkint -ignpar -parmrk -inpck -istrip
--inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany
--imaxbel -opost -isig -icanon -xcase min 1 time 0
-@end example
-@noindent May be negated. If negated, same as @code{cooked}.
-
-@item cbreak
-@opindex cbreak
-Same as @code{-icanon}. May be negated. If negated, same as
-@code{icanon}.
-
-@item pass8
-@opindex pass8
-@cindex eight-bit characters
-Same as @code{-parenb -istrip cs8}. May be negated. If negated,
-same as @code{parenb istrip cs7}.
-
-@item litout
-@opindex litout
-Same as @code{-parenb -istrip -opost cs8}. May be negated.
-If negated, same as @code{parenb istrip opost cs7}.
-
-@item decctlq
-@opindex decctlq
-Same as @code{-ixany}. Non-POSIX. May be negated.
-
-@item tabs
-@opindex tabs
-Same as @code{tab0}. Non-POSIX. May be negated. If negated, same
-as @code{tab3}.
-
-@item lcase
-@itemx LCASE
-@opindex lcase
-@opindex LCASE
-Same as @code{xcase iuclc olcuc}. Non-POSIX. May be negated.
-
-@item crt
-@opindex crt
-Same as @code{echoe echoctl echoke}.
-
-@item dec
-@opindex dec
-Same as @code{echoe echoctl echoke -ixany intr ^C erase ^? kill C-u}.
-@end table
-
-
-@node Characters
-@subsection Special characters
-
-@cindex special characters
-@cindex characters, special
-
-The special characters' default values vary from system to system.
-They are set with the syntax @samp{name value}, where the names are
-listed below and the value can be given either literally, in hat
-notation (@samp{^@var{c}}), or as an integer which may start with
-@samp{0x} to indicate hexadecimal, @samp{0} to indicate octal, or
-any other digit to indicate decimal.
-
-@cindex disabling special characters
-@kindex u@r{, and disabling special characters}
-For GNU stty, giving a value of @code{^-} or @code{undef} disables that
-special character. (This is incompatible with Ultrix @code{stty},
-which uses a value of @samp{u} to disable a special character. GNU
-@code{stty} treats a value @samp{u} like any other, namely to set that
-special character to @key{U}.)
-
-@table @samp
-
-@item intr
-@opindex intr
-Send an interrupt signal.
-
-@item quit
-@opindex quit
-Send a quit signal.
-
-@item erase
-@opindex erase
-Erase the last character typed.
-
-@item kill
-@opindex kill
-Erase the current line.
-
-@item eof
-@opindex eof
-Send an end of file (terminate the input).
-
-@item eol
-@opindex eol
-End the line.
-
-@item eol2
-@opindex eol2
-Alternate character to end the line. Non-POSIX.
-
-@item swtch
-@opindex swtch
-Switch to a different shell layer. Non-POSIX.
-
-@item start
-@opindex start
-Restart the output after stopping it.
-
-@item stop
-@opindex stop
-Stop the output.
-
-@item susp
-@opindex susp
-Send a terminal stop signal.
-
-@item dsusp
-@opindex dsusp
-Send a terminal stop signal after flushing the input. Non-POSIX.
-
-@item rprnt
-@opindex rprnt
-Redraw the current line. Non-POSIX.
-
-@item werase
-@opindex werase
-Erase the last word typed. Non-POSIX.
-
-@item lnext
-@opindex lnext
-Enter the next character typed literally, even if it is a special
-character. Non-POSIX.
-@end table
-
-
-@node Special
-@subsection Special settings
-
-@cindex special settings
-
-@table @samp
-@item min @var{n}
-@opindex min
-Set the minimum number of characters that will satisfy a read until
-the time value has expired, when @code{-icanon} is set.
-
-@item time @var{n}
-@opindex time
-Set the number of tenths of a second before reads time out if the minimum
-number of characters have not been read, when @code{-icanon} is set.
-
-@item ispeed @var{n}
-@opindex ispeed
-Set the input speed to @var{n}.
-
-@item ospeed @var{n}
-@opindex ospeed
-Set the output speed to @var{n}.
-
-@item rows @var{n}
-@opindex rows
-Tell the tty kernel driver that the terminal has @var{n} rows. Non-POSIX.
-
-@item cols @var{n}
-@itemx columns @var{n}
-@opindex cols
-@opindex columns
-Tell the kernel that the terminal has @var{n} columns. Non-POSIX.
-
-@item size
-@opindex size
-@vindex LINES
-@vindex COLUMNS
-Print the number of rows and columns that the kernel thinks the
-terminal has. (Systems that don't support rows and columns in the kernel
-typically use the environment variables @env{LINES} and @env{COLUMNS}
-instead; however, GNU @code{stty} does not know anything about them.)
-Non-POSIX.
-
-@item line @var{n}
-@opindex line
-Use line discipline @var{n}. Non-POSIX.
-
-@item speed
-@opindex speed
-Print the terminal speed.
-
-@item @var{n}
-@cindex baud rate, setting
-@c FIXME: Is this still true that the baud rate can't be set
-@c higher than 38400?
-Set the input and output speeds to @var{n}. @var{n} can be one
-of: 0 50 75 110 134 134.5 150 200 300 600 1200 1800 2400 4800 9600
-19200 38400 @code{exta} @code{extb}. @code{exta} is the same as
-19200; @code{extb} is the same as 38400. 0 hangs up the line if
-@code{-clocal} is set.
-@end table
-
-
-@node printenv invocation
-@section @code{printenv}: Print all or some environment variables
-
-@pindex printenv
-@cindex printing all or some environment variables
-@cindex environment variables, printing
-
-@code{printenv} prints environment variable values. Synopsis:
-
-@example
-printenv [@var{option}] [@var{variable}]@dots{}
-@end example
-
-If no @var{variable}s are specified, @code{printenv} prints the value of
-every environment variable. Otherwise, it prints the value of each
-@var{variable} that is set, and nothing for those that are not set.
-
-The only options are a lone @samp{--help} or @samp{--version}.
-@xref{Common options}.
-
-@cindex exit status of @code{printenv}
-Exit status:
-
-@display
-0 if all variables specified were found
-1 if at least one specified variable was not found
-2 if a write error occurred
-@end display
-
-
-@node tty invocation
-@section @code{tty}: Print file name of terminal on standard input
-
-@pindex tty
-@cindex print terminal file name
-@cindex terminal file name, printing
-
-@code{tty} prints the file name of the terminal connected to its standard
-input. It prints @samp{not a tty} if standard input is not a terminal.
-Synopsis:
-
-@example
-tty [@var{option}]@dots{}
-@end example
-
-The program accepts the following option. Also see @ref{Common options}.
-
-@table @samp
-
-@item -s
-@itemx --silent
-@itemx --quiet
-@opindex -s
-@opindex --silent
-@opindex --quiet
-Print nothing; only return an exit status.
-
-@end table
-
-@cindex exit status of @code{tty}
-Exit status:
-
-@display
-0 if standard input is a terminal
-1 if standard input is not a terminal
-2 if given incorrect arguments
-3 if a write error occurs
-@end display
-
-
-@node User information
-@chapter User information
-
-@cindex user information, commands for
-@cindex commands for printing user information
-
-This section describes commands that print user-related information:
-logins, groups, and so forth.
-
-@menu
-* id invocation:: Print real and effective uid and gid.
-* logname invocation:: Print current login name.
-* whoami invocation:: Print effective user id.
-* groups invocation:: Print group names a user is in.
-* users invocation:: Print login names of users currently logged in.
-* who invocation:: Print who is currently logged in.
-@end menu
-
-
-@node id invocation
-@section @code{id}: Print real and effective uid and gid
-
-@pindex id
-@cindex real uid and gid, printing
-@cindex effective uid and gid, printing
-@cindex printing real and effective uid and gid
-
-@code{id} prints information about the given user, or the process
-running it if no user is specified. Synopsis:
-
-@example
-id [@var{option}]@dots{} [@var{username}]
-@end example
-
-By default, it prints the real user id, real group id, effective user id
-if different from the real user id, effective group id if different from
-the real group id, and supplemental group ids.
-
-Each of these numeric values is preceded by an identifying string and
-followed by the corresponding user or group name in parentheses.
-
-The options cause @code{id} to print only part of the above information.
-Also see @ref{Common options}.
-
-@table @samp
-@item -g
-@itemx --group
-@opindex -g
-@opindex --group
-Print only the group id.
-
-@item -G
-@itemx --groups
-@opindex -G
-@opindex --groups
-Print only the supplementary groups.
-
-@item -n
-@itemx --name
-@opindex -n
-@opindex --name
-Print the user or group name instead of the ID number. Requires
-@code{-u}, @code{-g}, or @code{-G}.
-
-@item -r
-@itemx --real
-@opindex -r
-@opindex --real
-Print the real, instead of effective, user or group id. Requires
-@code{-u}, @code{-g}, or @code{-G}.
-
-@item -u
-@itemx --user
-@opindex -u
-@opindex --user
-Print only the user id.
-
-@end table
-
-
-@node logname invocation
-@section @code{logname}: Print current login name
-
-@pindex logname
-@cindex printing user's login name
-@cindex login name, printing
-@cindex user name, printing
-
-@flindex /etc/utmp
-@flindex utmp
-
-@code{logname} prints the calling user's name, as found in the file
-@file{/etc/utmp}, and exits with a status of 0. If there is no
-@file{/etc/utmp} entry for the calling process, @code{logname} prints
-an error message and exits with a status of 1.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node whoami invocation
-@section @code{whoami}: Print effective user id
-
-@pindex whoami
-@cindex effective UID, printing
-@cindex printing the effective UID
-
-@code{whoami} prints the user name associated with the current
-effective user id. It is equivalent to the command @samp{id -un}.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node groups invocation
-@section @code{groups}: Print group names a user is in
-
-@pindex groups
-@cindex printing groups a user is in
-@cindex supplementary groups, printing
-
-@code{groups} prints the names of the primary and any supplementary
-groups for each given @var{username}, or the current process if no names
-are given. If names are given, the name of each user is printed before
-the list of that user's groups. Synopsis:
-
-@example
-groups [@var{username}]@dots{}
-@end example
-
-The group lists are equivalent to the output of the command @samp{id -Gn}.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node users invocation
-@section @code{users}: Print login names of users currently logged in
-
-@pindex users
-@cindex printing current usernames
-@cindex usernames, printing current
-
-@cindex login sessions, printing users with
-@code{users} prints on a single line a blank-separated list of user
-names of users currently logged in to the current host. Each user name
-corresponds to a login session, so if a user has more than one login
-session, that user's name will appear the same number of times in the
-output. Synopsis:
-
-@example
-users [@var{file}]
-@end example
-
-@flindex /etc/utmp
-@flindex /etc/wtmp
-With no @var{file} argument, @code{users} extracts its information from
-the file @file{/etc/utmp}. If a file argument is given, @code{users}
-uses that file instead. A common choice is @file{/etc/wtmp}.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node who invocation
-@section @code{who}: Print who is currently logged in
-
-@pindex who
-@cindex printing current user information
-@cindex information, about current users
-
-@code{who} prints information about users who are currently logged on.
-Synopsis:
-
-@example
-@code{who} [@var{option}] [@var{file}] [am i]
-@end example
-
-@cindex terminal lines, currently used
-@cindex login time
-@cindex remote hostname
-If given no non-option arguments, @code{who} prints the following
-information for each user currently logged on: login name, terminal
-line, login time, and remote hostname or X display.
-
-@flindex /etc/utmp
-@flindex /etc/wtmp
-If given one non-option argument, @code{who} uses that instead of
-@file{/etc/utmp} as the name of the file containing the record of
-users logged on. @file{/etc/wtmp} is commonly given as an argument
-to @code{who} to look at who has previously logged on.
-
-@opindex am i
-@opindex who am i
-If given two non-option arguments, @code{who} prints only the entry
-for the user running it (determined from its standard input), preceded
-by the hostname. Traditionally, the two arguments given are @samp{am
-i}, as in @samp{who am i}.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -m
-@opindex -m
-Same as @samp{who am i}.
-
-@item -q
-@itemx --count
-@opindex -q
-@opindex --count
-Print only the login names and the number of users logged on.
-Overrides all other options.
-
-@item -s
-@opindex -s
-Ignored; for compatibility with other versions of @code{who}.
-
-@item -i
-@itemx -u
-@itemx --idle
-@opindex -i
-@opindex -u
-@opindex --idle
-@cindex idle time
-After the login time, print the number of hours and minutes that the
-user has been idle. @samp{.} means the user was active in last minute.
-@samp{old} means the user was idle for more than 24 hours.
-
-@item -l
-@itemx --lookup
-@opindex -l
-@opindex --lookup
-Attempt to canonicalize hostnames found in utmp through a DNS lookup. This
-is not the default because it can cause significant delays on systems with
-automatic dial-up internet access.
-
-@item -H
-@itemx --heading
-@opindex -H
-@opindex --heading
-Print a line of column headings.
-
-@item -w
-@itemx -T
-@itemx --mesg
-@itemx --message
-@itemx --writable
-@opindex -w
-@opindex -T
-@opindex --mesg
-@opindex --message
-@opindex --writable
-@cindex message status
-@pindex write@r{, allowed}
-After each login name print a character indicating the user's message status:
-
-@display
-@samp{+} allowing @code{write} messages
-@samp{-} disallowing @code{write} messages
-@samp{?} cannot find terminal device
-@end display
-
-@end table
-
-
-@node System context
-@chapter System context
-
-@cindex system context
-@cindex context, system
-@cindex commands for system context
-
-This section describes commands that print or change system-wide
-information.
-
-@menu
-* date invocation:: Print or set system date and time.
-* uname invocation:: Print system information.
-* hostname invocation:: Print or set system name.
-* hostid invocation:: Print numeric host identifier.
-@end menu
-
-
-@node date invocation
-@section @code{date}: Print or set system date and time
-
-@pindex date
-@cindex time, printing or setting
-@cindex printing the current time
-
-Synopses:
-
-@example
-date [@var{option}]@dots{} [+@var{format}]
-date [-u|--utc|--universal] @c this avoids a newline in the output
-[ MMDDhhmm[[CC]YY][.ss] ]
-@end example
-
-Invoking @code{date} with no @var{format} argument is equivalent to invoking
-@samp{date '+%a %b %e %H:%M:%S %Z %Y'}.
-
-@findex strftime @r{and @code{date}}
-@cindex time formats
-@cindex formatting times
-If given an argument that starts with a @samp{+}, @code{date} prints the
-current time and date (or the time and date specified by the
-@code{--date} option, see below) in the format defined by that argument,
-which is the same as in the @code{strftime} function. Except for
-directives, which start with @samp{%}, characters in the format string
-are printed unchanged. The directives are described below.
-
-@menu
-* Time directives:: %[HIklMprsSTXzZ]
-* Date directives:: %[aAbBcdDhjmUwWxyY]
-* Literal directives:: %[%nt]
-* Padding:: Pad with zeroes, spaces (%_), or nothing (%-).
-* Setting the time:: Changing the system clock.
-* Options for date:: Instead of the current time.
-* Examples of date:: Examples.
-@end menu
-
-@node Time directives
-@subsection Time directives
-
-@cindex time directives
-@cindex directives, time
-
-@code{date} directives related to times.
-
-@table @samp
-@item %H
-hour (00@dots{}23)
-@item %I
-hour (01@dots{}12)
-@item %k
-hour ( 0@dots{}23)
-@item %l
-hour ( 1@dots{}12)
-@item %M
-minute (00@dots{}59)
-@item %p
-locale's AM or PM
-@item %r
-time, 12-hour (hh:mm:ss [AP]M)
-@item %s
-@cindex epoch, seconds since
-@cindex seconds since the epoch
-@cindex beginning of time
-seconds since the epoch, i.e., 1 January 1970 00:00:00 UTC (a
-GNU extension).
-Note that this value is the number of seconds between the epoch
-and the current date as defined by the localtime system call.
-It isn't changed by the @samp{--date} option.
-@item %S
-second (00@dots{}60)
-@item %T
-time, 24-hour (hh:mm:ss)
-@item %X
-locale's time representation (%H:%M:%S)
-@item %z
-RFC-822 style numeric time zone (e.g., -0600 or +0100), or nothing if no
-time zone is determinable. This value reflects the @emph{current} time
-zone. It isn't changed by the @samp{--date} option.
-@item %Z
-time zone (e.g., EDT), or nothing if no timezone is
-determinable.
-Note that this value reflects the @emph{current} time zone.
-It isn't changed by the @samp{--date} option.
-@end table
-
-
-@node Date directives
-@subsection Date directives
-
-@cindex date directives
-@cindex directives, date
-
-@code{date} directives related to dates.
-
-@table @samp
-@item %a
-locale's abbreviated weekday name (Sun@dots{}Sat)
-@item %A
-locale's full weekday name, variable length (Sunday@dots{}Saturday)
-@item %b
-locale's abbreviated month name (Jan@dots{}Dec)
-@item %B
-locale's full month name, variable length (January@dots{}December)
-@item %c
-locale's date and time (Sat Nov 04 12:02:33 EST 1989)
-@item %C
-century (year divided by 100 and truncated to an integer) (00@dots{}99)
-@item %d
-day of month (01@dots{}31)
-@item %D
-date (mm/dd/yy)
-@item %h
-same as %b
-@item %j
-day of year (001@dots{}366)
-@item %m
-month (01@dots{}12)
-@item %U
-week number of year with Sunday as first day of week (00@dots{}53).
-Days in a new year preceding the first Sunday are in week zero.
-@item %V
-week number of year with Monday as first day of the week as a decimal
-(01@dots{}53). If the week containing January 1 has four or more days in
-the new year, then it is considered week 1; otherwise, it is week 53 of
-the previous year, and the next week is week 1. (See the ISO 8601: 1988
-standard.)
-@item %w
-day of week (0@dots{}6) with 0 corresponding to Sunday
-@item %W
-week number of year with Monday as first day of week (00@dots{}53).
-Days in a new year preceding the first Monday are in week zero.
-@item %x
-locale's date representation (mm/dd/yy)
-@item %y
-last two digits of year (00@dots{}99)
-@item %Y
-year (1970@dots{}.)
-@end table
-
-
-@node Literal directives
-@subsection Literal directives
-
-@cindex literal directives
-@cindex directives, literal
-
-@code{date} directives that produce literal strings.
-
-@table @samp
-@item %%
-a literal %
-@item %n
-a newline
-@item %t
-a horizontal tab
-@end table
-
-
-@node Padding
-@subsection Padding
-
-@cindex numeric field padding
-@cindex padding of numeric fields
-@cindex fields, padding numeric
-
-By default, @code{date} pads numeric fields with zeroes, so that, for
-example, numeric months are always output as two digits. GNU @code{date}
-recognizes the following numeric modifiers between the @samp{%} and the
-directive.
-
-@table @samp
-@item -
-(hyphen) do not pad the field; useful if the output is intended for
-human consumption.
-@item _
-(underscore) pad the field with spaces; useful if you need a fixed
-number of characters in the output, but zeroes are too distracting.
-@end table
-
-@noindent
-These are GNU extensions.
-
-Here is an example illustrating the differences:
-
-@example
-date +%d/%m -d "Feb 1"
-@result{} 01/02
-date +%-d/%-m -d "Feb 1"
-@result{} 1/2
-date +%_d/%_m -d "Feb 1"
-@result{} 1/ 2
-@end example
-
-
-@node Setting the time
-@subsection Setting the time
-
-@cindex setting the time
-@cindex time setting
-@cindex appropriate privileges
-
-If given an argument that does not start with @samp{+}, @code{date} sets
-the system clock to the time and date specified by that argument (as
-described below). You must have appropriate privileges to set the
-system clock. The @samp{--date} and @samp{--set} options may not be
-used with such an argument. The @samp{--universal} option may be used
-with such an argument to indicate that the specified time and date are
-relative to Coordinated Universal Time rather than to the local time
-zone.
-
-The argument must consist entirely of digits, which have the following
-meaning:
-
-@table @samp
-@item MM
-month
-@item DD
-day within month
-@item hh
-hour
-@item mm
-minute
-@item CC
-first two digits of year (optional)
-@item YY
-last two digits of year (optional)
-@item ss
-second (optional)
-@end table
-
-The @samp{--set} option also sets the system clock; see the next section.
-
-
-@node Options for date
-@subsection Options for @code{date}
-
-@cindex @code{date} options
-@cindex options for @code{date}
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-
-@item -d @var{datestr}
-@itemx --date=@var{datestr}
-@opindex -d
-@opindex --date
-@cindex parsing date strings
-@cindex date strings, parsing
-@cindex arbitrary date strings, parsing
-@opindex yesterday
-@opindex tomorrow
-@opindex next @var{day}
-@opindex last @var{day}
-Display the time and date specified in @var{datestr} instead of the
-current time and date. @var{datestr} can be in almost any common
-format. It can contain month names, timezones, @samp{am} and @samp{pm},
-@samp{yesterday}, @samp{ago}, @samp{next}, etc. @xref{Date input formats}.
-
-@item -f @var{datefile}
-@itemx --file=@var{datefile}
-@opindex -f
-@opindex --file
-Parse each line in @var{datefile} as with @samp{-d} and display the
-resulting time and date. If @var{datefile} is @samp{-}, use standard
-input. This is useful when you have many dates to process, because the
-system overhead of starting up the @code{date} executable many times can
-be considerable.
-
-@item -I[@var{timespec}]
-@itemx --iso-8601[=@var{timespec}]
-@opindex -I[@var{timespec}]
-@opindex --iso-8601[=@var{timespec}]
-Display the date using the ISO 8601 format, @samp{%Y-%m-%d}.
-
-The optional argument @var{timespec} specifies the number of additional
-terms of the time to include. It can be one of the following:
-@table @samp
-@item auto
-The default behavior: print just the date.
-
-@item hours
-Append the hour of the day to the date.
-
-@item minutes
-Append the hours and minutes.
-
-@item seconds
-Append the hours, minutes, and seconds.
-@end table
-
-If showing any time terms, then include the time zone using the format
-@samp{%z}.
-
-@item -R
-@itemx --rfc-822
-@opindex -R
-@opindex --rfc-822
-Display the time and date using the RFC-822-conforming
-format, @samp{%a, %_d %b %Y %H:%M:%S %z}.
-
-@item -r @var{file}
-@itemx --reference=@var{file}
-@opindex -r
-@opindex --reference
-Display the time and date reference according to the last modification
-time of @var{file}, instead of the current time and date.
-
-@item -s @var{datestr}
-@itemx --set=@var{datestr}
-@opindex -s
-@opindex --set
-Set the time and date to @var{datestr}. See @samp{-d} above.
-
-@item -u
-@itemx --utc
-@itemx --universal
-@opindex -u
-@opindex --utc
-@opindex --universal
-@cindex Coordinated Universal Time
-@cindex UTC
-@cindex Greenwich Mean Time
-@cindex GMT
-Use Coordinated Universal Time (@sc{utc}) by operating as if the
-@env{TZ} environment variable was set to the string @samp{UTC0}.
-Normally, @command{date} operates in the time zone indicated by
-@env{TZ}, or the system default if @env{TZ} is not set. Coordinated
-Universal Time is often called ``Greenwich Mean Time'' (@sc{gmt}) for
-historical reasons.
-@end table
-
-
-@node Examples of date
-@subsection Examples of @code{date}
-
-@cindex examples of @code{date}
-
-Here are a few examples. Also see the documentation for the @samp{-d}
-option in the previous section.
-
-@itemize @bullet
-
-@item
-To print the date of the day before yesterday:
-
-@example
-date --date='2 days ago'
-@end example
-
-@item
-To print the date of the day three months and one day hence:
-@example
-date --date='3 months 1 day'
-@end example
-
-@item
-To print the day of year of Christmas in the current year:
-@example
-date --date='25 Dec' +%j
-@end example
-
-@item
-To print the current full month name and the day of the month:
-@example
-date '+%B %d'
-@end example
-
-But this may not be what you want because for the first nine days of
-the month, the @samp{%d} expands to a zero-padded two-digit field,
-for example @samp{date -d 1may '+%B %d'} will print @samp{May 01}.
-
-@item
-To print a date without the leading zero for one-digit days
-of the month, you can use the (GNU extension) @code{-} modifier to suppress
-the padding altogether.
-@example
-date -d 1may '+%B %-d'
-@end example
-
-@item
-To print the current date and time in the format required by many
-non-GNU versions of @code{date} when setting the system clock:
-@example
-date +%m%d%H%M%Y.%S
-@end example
-
-@item
-To set the system clock forward by two minutes:
-@example
-date --set='+2 minutes'
-@end example
-
-@item
-To print the date in the format specified by RFC-822,
-use @samp{date --rfc}. I just did and saw this:
-
-@example
-Mon, 25 Mar 1996 23:34:17 -0600
-@end example
-
-@item
-To convert a date string to the number of seconds since the epoch
-(which is 1970-01-01 00:00:00 UTC), use the @samp{--date} option with
-the @samp{%s} format. That can be useful in sorting and/or graphing
-and/or comparing data by date. The following command outputs the
-number of the seconds since the epoch for the time two minutes after the
-epoch:
-
-@example
-date --date='1970-01-01 00:02:00 +0000' +%s
-120
-@end example
-
-If you do not specify time zone information in the date string,
-@command{date} uses your computer's idea of the time zone when
-interpreting the string. For example, if your computer's time zone is
-that of Cambridge, Massachusetts, which was then 5 hours (i.e., 18,000
-seconds) behind UTC:
-
-@example
-# local time zone used
-date --date='1970-01-01 00:02:00' +%s
-18120
-@end example
-
-@item
-If you're sorting or graphing dated data, your raw date values may be
-represented as seconds since the epoch. But few people can look at
-the date @samp{946684800} and casually note ``Oh, that's the first second
-of the year 2000 in Greenwich, England.''
-
-@example
-date --date='2000-01-01 UTC' +%s
-946684800
-@end example
-
-To convert such an unwieldy number of seconds back to
-a more readable form, use a command like this:
-
-@smallexample
-# local time zone used
-date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"
-1999-12-31 19:00:00 -0500
-@end smallexample
-
-@end itemize
-
-
-@node uname invocation
-@section @code{uname}: Print system information
-
-@pindex uname
-@cindex print system information
-@cindex system information, printing
-
-@code{uname} prints information about the machine and operating system
-it is run on. If no options are given, @code{uname} acts as if the
-@code{-s} option were given. Synopsis:
-
-@example
-uname [@var{option}]@dots{}
-@end example
-
-If multiple options or @code{-a} are given, the selected information is
-printed in this order:
-
-@example
-@var{sysname} @var{nodename} @var{release} @var{osversion} @var{machine}
-@end example
-
-The @var{osversion}, at least, may well be multiple words. For example:
-
-@example
-uname -a
-@result{} Linux hayley 1.0.4 #3 Thu May 12 18:06:34 1994 i486
-@end example
-
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-
-@item -a
-@itemx --all
-@opindex -a
-@opindex --all
-Print all of the below information.
-
-@item -m
-@itemx --machine
-@opindex -m
-@opindex --machine
-@cindex machine type
-@cindex hardware type
-Print the machine (hardware) type.
-
-@item -n
-@itemx --nodename
-@opindex -n
-@opindex --nodename
-@cindex hostname
-@cindex node name
-@cindex network node name
-Print the machine's network node hostname.
-
-@item -p
-@itemx --processor
-@opindex -p
-@opindex --processor
-@cindex host processor type
-Print the machine's processor type
-
-@item -r
-@itemx --release
-@opindex -r
-@opindex --release
-@cindex operating system release
-@cindex release of operating system
-Print the operating system release.
-
-@item -s
-@itemx --sysname
-@opindex -s
-@opindex --sysname
-@cindex operating system name
-@cindex name of operating system
-Print the operating system name.
-
-@item -v
-@opindex -v
-@cindex operating system version
-@cindex version of operating system
-Print the operating system version.
-
-@end table
-
-@node hostname invocation
-@section @code{hostname}: Print or set system name
-
-@pindex hostname
-@cindex setting the hostname
-@cindex printing the hostname
-@cindex system name, printing
-@cindex appropriate privileges
-
-With no arguments, @code{hostname} prints the name of the current host
-system. With one argument, it sets the current host name to the
-specified string. You must have appropriate privileges to set the host
-name. Synopsis:
-
-@example
-hostname [@var{name}]
-@end example
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node hostid invocation
-@section @code{hostid}: Print numeric host identifier.
-
-@pindex hostid
-@cindex printing the host identifier
-
-@code{hostid} prints the numeric identifier of the current host
-in hexadecimal. This command accepts no arguments.
-The only options are @samp{--help} and @samp{--version}.
-@xref{Common options}.
-
-For example, here's what it prints on one system I use:
-
-@example
-$ hostid
-1bac013d
-@end example
-
-On that system, the 32-bit quantity happens to be closely
-related to the system's Internet address, but that isn't always
-the case.
-
-
-@node Modified command invocation
-@chapter Modified command invocation
-
-@cindex modified command invocation
-@cindex invocation of commands, modified
-@cindex commands for invoking other commands
-
-This section describes commands that run other commands in some context
-different than the current one: a modified environment, as a different
-user, etc.
-
-@menu
-* chroot invocation:: Modify the root directory.
-* env invocation:: Modify environment variables.
-* nice invocation:: Modify scheduling priority.
-* nohup invocation:: Immunize to hangups.
-* su invocation:: Modify user and group id.
-@end menu
-
-
-@node chroot invocation
-@section @code{chroot}: Run a command with a different root directory
-
-@pindex chroot
-@cindex running a program in a specified root directory
-@cindex root directory, running a program in a specified
-
-@code{chroot} runs a command with a specified root directory.
-On many systems, only the super-user can do this.
-Synopses:
-
-@example
-chroot @var{newroot} [@var{command} [@var{args}]@dots{}]
-chroot @var{option}
-@end example
-
-Ordinarily, filenames are looked up starting at the root of the
-directory structure, i.e., @file{/}. @code{chroot} changes the root to
-the directory @var{newroot} (which must exist) and then runs
-@var{command} with optional @var{args}. If @var{command} is not
-specified, the default is the value of the @env{SHELL} environment
-variable or @code{/bin/sh} if not set, invoked with the @samp{-i} option.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-Here are a few tips to help avoid common problems in using chroot.
-To start with a simple example, make @var{command} refer to a statically
-linked binary. If you were to use a dynamically linked executable, then
-you'd have to arrange to have the shared libraries in the right place under
-your new root directory.
-
-For example, if you create a statically linked `ls' executable,
-and put it in /tmp/empty, you can run this command as root:
-
-@example
-$ chroot /tmp/empty /ls -Rl /
-@end example
-
-Then you'll see output like this:
-
-@example
-/:
-total 1023
--rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls
-@end example
-
-If you want to use a dynamically linked executable, say @code{bash},
-then first run @samp{ldd bash} to see what shared objects it needs.
-Then, in addition to copying the actual binary, also copy the listed
-files to the required positions under your intended new root directory.
-Finally, if the executable requires any other files (e.g., data, state,
-device files), copy them into place, too.
-
-
-@node env invocation
-@section @code{env}: Run a command in a modified environment
-
-@pindex env
-@cindex environment, running a program in a modified
-@cindex modified environment, running a program in a
-@cindex running a program in a modified environment
-
-@code{env} runs a command with a modified environment. Synopses:
-
-@example
-env [@var{option}]@dots{} [@var{name}=@var{value}]@dots{} @c
-[@var{command} [@var{args}]@dots{}]
-env
-@end example
-
-Arguments of the form @samp{@var{variable}=@var{value}} set
-the environment variable @var{variable} to value @var{value}.
-@var{value} may be empty (@samp{@var{variable}=}). Setting a variable
-to an empty value is different from unsetting it.
-
-@vindex PATH
-The first remaining argument specifies the program name to invoke; it is
-searched for according to the @env{PATH} environment variable. Any
-remaining arguments are passed as arguments to that program.
-
-@cindex environment, printing
-
-If no command name is specified following the environment
-specifications, the resulting environment is printed. This is like
-specifying a command name of @code{printenv}.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-
-@item -u @var{name}
-@itemx --unset=@var{name}
-@opindex -u
-@opindex -unset
-Remove variable @var{name} from the environment, if it was in the
-environment.
-
-@item -
-@itemx -i
-@itemx --ignore-environment
-@opindex -
-@opindex -i
-@opindex --ignore-environment
-Start with an empty environment, ignoring the inherited environment.
-
-@end table
-
-
-@node nice invocation
-@section @code{nice}: Run a command with modified scheduling priority
-
-@pindex nice
-@cindex modifying scheduling priority
-@cindex scheduling priority, modifying
-@cindex priority, modifying
-@cindex appropriate privileges
-
-@code{nice} prints or modifies the scheduling priority of a job.
-Synopsis:
-
-@example
-nice [@var{option}]@dots{} [@var{command} [@var{arg}]@dots{}]
-@end example
-
-If no arguments are given, @code{nice} prints the current scheduling
-priority, which it inherited. Otherwise, @code{nice} runs the given
-@var{command} with its scheduling priority adjusted. If no
-@var{adjustment} is given, the priority of the command is incremented by
-10. You must have appropriate privileges to specify a negative
-adjustment. The priority can be adjusted by @code{nice} over the range
-of -20 (the highest priority) to 19 (the lowest).
-
-@cindex conflicts with shell built-ins
-@cindex built-in shell commands, conflicts with
-Because most shells have a built-in command by the same name, using the
-unadorned command name in a script or interactively may get you
-different functionality than that described here.
-
-The program accepts the following option. Also see @ref{Common options}.
-
-@table @samp
-@item -n @var{adjustment}
-@itemx -@var{adjustment}
-@itemx --adjustment=@var{adjustment}
-@opindex -n
-@opindex --adjustment
-@opindex -@var{adjustment}
-Add @var{adjustment} instead of 10 to the command's priority.
-@end table
-
-
-@node nohup invocation
-@section @code{nohup}: Run a command immune to hangups
-
-@pindex nohup
-@cindex hangups, immunity to
-@cindex immunity to hangups
-@cindex logging out and continuing to run
-
-@flindex nohup.out
-@code{nohup} runs the given @var{command} with hangup signals ignored,
-so that the command can continue running in the background after you log
-out. Synopsis:
-
-@example
-nohup @var{command} [@var{arg}]@dots{}
-@end example
-
-@flindex nohup.out
-@code{nohup} increases the scheduling priority of @var{command} by 5, so
-it has a slightly smaller chance to run. If standard output is a terminal,
-it and standard error are redirected so that they are appended to the
-file @file{nohup.out}; if that cannot be written to, they are appended
-to the file @file{$HOME/nohup.out}. If that cannot be written to, the
-command is not run.
-
-If @code{nohup} creates either @file{nohup.out} or
-@file{$HOME/nohup.out}, it creates it with no ``group'' or ``other''
-access permissions. It does not change the permissions if the output
-file already existed.
-
-@code{nohup} does not automatically put the command it runs in the
-background; you must do that explicitly, by ending the command line
-with an @samp{&}.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node su invocation
-@section @code{su}: Run a command with substitute user and group id
-
-@pindex su
-@cindex substitute user and group ids
-@cindex user id, switching
-@cindex super-user, becoming
-@cindex root, becoming
-
-@code{su} allows one user to temporarily become another user. It runs a
-command (often an interactive shell) with the real and effective user
-id, group id, and supplemental groups of a given @var{user}. Synopsis:
-
-@example
-su [@var{option}]@dots{} [@var{user} [@var{arg}]@dots{}]
-@end example
-
-@cindex passwd entry, and @code{su} shell
-@flindex /bin/sh
-@flindex /etc/passwd
-If no @var{user} is given, the default is @code{root}, the super-user.
-The shell to use is taken from @var{user}'s @code{passwd} entry, or
-@file{/bin/sh} if none is specified there. If @var{user} has a
-password, @code{su} prompts for the password unless run by a user with
-effective user id of zero (the super-user).
-
-@vindex HOME
-@vindex SHELL
-@vindex USER
-@vindex LOGNAME
-@cindex login shell
-By default, @code{su} does not change the current directory.
-It sets the environment variables @env{HOME} and @env{SHELL}
-from the password entry for @var{user}, and if @var{user} is not
-the super-user, sets @env{USER} and @env{LOGNAME} to @var{user}.
-By default, the shell is not a login shell.
-
-Any additional @var{arg}s are passed as additional arguments to the
-shell.
-
-@cindex @samp{-su}
-GNU @code{su} does not treat @file{/bin/sh} or any other shells specially
-(e.g., by setting @code{argv[0]} to @samp{-su}, passing @code{-c} only
-to certain shells, etc.).
-
-@findex syslog
-@code{su} can optionally be compiled to use @code{syslog} to report
-failed, and optionally successful, @code{su} attempts. (If the system
-supports @code{syslog}.) However, GNU @code{su} does not check if the
-user is a member of the @code{wheel} group; see below.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -c @var{command}
-@itemx --command=@var{command}
-@opindex -c
-@opindex --command
-Pass @var{command}, a single command line to run, to the shell with
-a @code{-c} option instead of starting an interactive shell.
-
-@item -f
-@itemx --fast
-@opindex -f
-@opindex --fast
-@flindex .cshrc
-@cindex file name pattern expansion, disabled
-@cindex globbing, disabled
-Pass the @code{-f} option to the shell. This probably only makes sense
-if the shell run is @code{csh} or @code{tcsh}, for which the @code{-f}
-option prevents reading the startup file (@file{.cshrc}). With
-Bourne-like shells, the @code{-f} option disables file name pattern
-expansion (globbing), which is not likely to be useful.
-
-@item -
-@itemx -l
-@itemx --login
-@opindex -
-@opindex -l
-@opindex --login
-@c other variables already indexed above
-@vindex TERM
-@vindex PATH
-@cindex login shell, creating
-Make the shell a login shell. This means the following. Unset all
-environment variables except @env{TERM}, @env{HOME}, and @env{SHELL}
-(which are set as described above), and @env{USER} and @env{LOGNAME}
-(which are set, even for the super-user, as described above), and set
-@env{PATH} to a compiled-in default value. Change to @var{user}'s home
-directory. Prepend @samp{-} to the shell's name, intended to make it
-read its login startup file(s).
-
-@item -m
-@itemx -p
-@itemx --preserve-environment
-@opindex -m
-@opindex -p
-@opindex --preserve-environment
-@cindex environment, preserving
-@flindex /etc/shells
-@cindex restricted shell
-Do not change the environment variables @env{HOME}, @env{USER},
-@env{LOGNAME}, or @env{SHELL}. Run the shell given in the environment
-variable @env{SHELL} instead of the shell from @var{user}'s passwd
-entry, unless the user running @code{su} is not the superuser and
-@var{user}'s shell is restricted. A @dfn{restricted shell} is one that
-is not listed in the file @file{/etc/shells}, or in a compiled-in list
-if that file does not exist. Parts of what this option does can be
-overridden by @code{--login} and @code{--shell}.
-
-@item -s @var{shell}
-@itemx --shell=@var{shell}
-@opindex -s
-@opindex --shell
-Run @var{shell} instead of the shell from @var{user}'s passwd entry,
-unless the user running @code{su} is not the superuser and @var{user}'s
-shell is restricted (see @samp{-m} just above).
-
-@end table
-
-@cindex wheel group, not supported
-@cindex group wheel, not supported
-@cindex fascism
-@heading Why GNU @code{su} does not support the @samp{wheel} group
-
-(This section is by Richard Stallman.)
-
-@cindex Twenex
-@cindex MIT AI lab
-Sometimes a few of the users try to hold total power over all the
-rest. For example, in 1984, a few users at the MIT AI lab decided to
-seize power by changing the operator password on the Twenex system and
-keeping it secret from everyone else. (I was able to thwart this coup
-and give power back to the users by patching the kernel, but I
-wouldn't know how to do that in Unix.)
-
-However, occasionally the rulers do tell someone. Under the usual
-@code{su} mechanism, once someone learns the root password who
-sympathizes with the ordinary users, he or she can tell the rest. The
-``wheel group'' feature would make this impossible, and thus cement the
-power of the rulers.
-
-I'm on the side of the masses, not that of the rulers. If you are
-used to supporting the bosses and sysadmins in whatever they do, you
-might find this idea strange at first.
-
-
-@node Delaying
-@chapter Delaying
-
-@cindex delaying commands
-@cindex commands for delaying
-
-@c Perhaps @code{wait} or other commands should be described here also?
-
-@menu
-* sleep invocation:: Delay for a specified time.
-@end menu
-
-
-@node sleep invocation
-@section @code{sleep}: Delay for a specified time
-
-@pindex sleep
-@cindex delay for a specified time
-
-@code{sleep} pauses for an amount of time specified by the sum of
-the values of the command line arguments.
-Synopsis:
-
-@example
-sleep @var{number}[smhd]@dots{}
-@end example
-
-@cindex time units
-Each argument is a number followed by an optional unit; the default
-is seconds. The units are:
-
-@table @samp
-@item s
-seconds
-@item m
-minutes
-@item h
-hours
-@item d
-days
-@end table
-
-Historical implementations of @code{sleep} have required that
-@var{number} be an integer. However, GNU @code{sleep} accepts
-arbitrary floating point numbers.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-
-@node Numeric operations
-@chapter Numeric operations
-
-@cindex numeric operations
-These programs do numerically-related operations.
-
-@menu
-* factor invocation:: Show factors of numbers.
-* seq invocation:: Print sequences of numbers.
-@end menu
-
-
-@node factor invocation
-@section @code{factor}: Print prime factors
-
-@pindex factor
-@cindex prime factors
-
-@code{factor} prints prime factors. Synopses:
-
-@example
-factor [@var{number}]@dots{}
-factor @var{option}
-@end example
-
-If no @var{number} is specified on the command line, @code{factor} reads
-numbers from standard input, delimited by newlines, tabs, or spaces.
-
-The only options are @samp{--help} and @samp{--version}. @xref{Common
-options}.
-
-The algorithm it uses is not very sophisticated, so for some inputs
-@code{factor} runs for a long time. The hardest numbers to factor are
-the products of large primes. Factoring the product of the two largest 32-bit
-prime numbers takes over 10 minutes of CPU time on a 400MHz Pentium II.
-
-@example
-$ p=`echo '4294967279 * 4294967291'|bc`
-$ factor $p
-18446743979220271189: 4294967279 4294967291
-@end example
-
-In contrast, @code{factor} factors the largest 64-bit number in just
-over a tenth of a second:
-
-@example
-$ factor `echo '2^64-1'|bc`
-18446744073709551615: 3 5 17 257 641 65537 6700417
-@end example
-
-@node seq invocation
-@section @code{seq}: Print numeric sequences
-
-@pindex seq
-@cindex numeric sequences
-@cindex sequence of numbers
-
-@code{seq} prints a sequence of numbers to standard output. Synopses:
-
-@example
-seq [@var{option}]@dots{} [@var{first} [@var{increment}]] @var{last}@dots{}
-@end example
-
-@code{seq} prints the numbers from @var{first} to @var{last} by
-@var{increment}. By default, @var{first} and @var{increment} are both 1,
-and each number is printed on its own line. All numbers can be reals,
-not just integers.
-
-The program accepts the following options. Also see @ref{Common options}.
-
-@table @samp
-@item -f @var{format}
-@itemx --format=@var{format}
-@opindex -f @var{format}
-@opindex --format=@var{format}
-@cindex formatting of numbers in @code{seq}
-Print all numbers using @var{format}; default @samp{%g}.
-@var{format} must contain exactly one of the floating point
-output formats @samp{%e}, @samp{%f}, or @samp{%g}.
-
-@item -s @var{string}
-@itemx --separator=@var{string}
-@cindex separator for numbers in @code{seq}
-Separate numbers with @var{string}; default is a newline.
-The output always terminates with a newline.
-
-@item -w
-@itemx --equal-width
-Print all numbers with the same width, by padding with leading zeroes.
-(To have other kinds of padding, use @samp{--format}).
-
-@end table
-
-If you want to use @code{seq} to print sequences of large integer values,
-don't use the default @samp{%g} format since it can result in
-loss of precision:
-
-@example
-$ seq 1000000 1000001
-1e+06
-1e+06
-@end example
-
-Instead, you can use the format, @samp{%1.f},
-to print large decimal numbers with no exponent and no decimal point.
-
-@example
-$ seq --format=%1.f 1000000 1000001
-1000000
-1000001
-@end example
-
-If you want hexadecimal output, you can use @code{printf}
-to perform the conversion:
-
-@example
-$ printf %x'\n' `seq -f %1.f 1048575 1024 1050623`
-fffff
-1003ff
-1007ff
-@end example
-
-For very long lists of numbers, use xargs to avoid
-system limitations on the length of an argument list:
-
-@example
-$ seq -f %1.f 1000000 | xargs printf %x'\n' |tail -3
-f423e
-f423f
-f4240
-@end example
-
-To generate octal output, use the printf @code{%o} format instead
-of @code{%x}. Note however that using printf works only for numbers
-smaller than @code{2^32}:
-
-@example
-$ printf "%x\n" `seq -f %1.f 4294967295 4294967296`
-ffffffff
-bash: printf: 4294967296: Numerical result out of range
-@end example
-
-On most systems, seq can produce whole-number output for values up to
-@code{2^53}, so here's a more general approach to base conversion that
-also happens to be more robust for such large numbers. It works by
-using @code{bc} and setting its output radix variable, @var{obase},
-to @samp{16} in this case to produce hexadecimal output.
-
-@example
-$ (echo obase=16; seq -f %1.f 4294967295 4294967296)|bc
-FFFFFFFF
-100000000
-@end example
-
-Be careful when using @code{seq} with a fractional @var{increment},
-otherwise you may see surprising results. Most people would expect to
-see @code{0.3} printed as the last number in this example:
-
-@example
-$ seq -s' ' 0 .1 .3
-0 0.1 0.2
-@end example
-
-But that doesn't happen on most systems because @code{seq} is
-implemented using binary floating point arithmetic (via the C
-@code{double} type) -- which means some decimal numbers like @code{.1}
-cannot be represented exactly. That in turn means some nonintuitive
-conditions like @code{.1 * 3 > .3} will end up being true.
-
-To work around that in the above example, use a slightly larger number as
-the @var{last} value:
-
-@example
-$ seq -s' ' 0 .1 .31
-0 0.1 0.2 0.3
-@end example
-
-In general, when using an @var{increment} with a fractional part, where
-(@var{last} - @var{first}) / @var{increment} is (mathematically) a whole
-number, specify a slightly larger (or smaller, if @var{increment} is negative)
-value for @var{last} to ensure that @var{last} is the final value printed
-by seq.
-
-@node Index
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
-
-@c Local variables:
-@c texinfo-column-for-description: 33
-@c End: