summaryrefslogtreecommitdiff
path: root/bin/sh/USD.doc
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sh/USD.doc')
-rw-r--r--bin/sh/USD.doc/Makefile12
-rw-r--r--bin/sh/USD.doc/Rv7man405
-rw-r--r--bin/sh/USD.doc/referargs8
-rw-r--r--bin/sh/USD.doc/t.mac69
-rw-r--r--bin/sh/USD.doc/t1553
-rw-r--r--bin/sh/USD.doc/t2971
-rw-r--r--bin/sh/USD.doc/t3976
-rw-r--r--bin/sh/USD.doc/t4180
8 files changed, 0 insertions, 3174 deletions
diff --git a/bin/sh/USD.doc/Makefile b/bin/sh/USD.doc/Makefile
deleted file mode 100644
index 55b7203..0000000
--- a/bin/sh/USD.doc/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# $NetBSD: Makefile,v 1.4 2014/07/05 19:23:00 dholland Exp $
-# @(#)Makefile 8.1 (Berkeley) 8/14/93
-
-SECTION=reference/ref1
-ARTICLE=sh
-SRCS= referargs t.mac t1 t2 t3 t4
-MACROS=-ms
-ROFF_REFER=yes
-#REFER_ARGS=-e -p Rv7man
-EXTRAHTMLFILES=sh1.png sh2.png sh3.png sh4.png sh5.png
-
-.include <bsd.doc.mk>
diff --git a/bin/sh/USD.doc/Rv7man b/bin/sh/USD.doc/Rv7man
deleted file mode 100644
index 628c67f..0000000
--- a/bin/sh/USD.doc/Rv7man
+++ /dev/null
@@ -1,405 +0,0 @@
-%A L. P. Deutsch
-%A B. W. Lampson
-%T An online editor
-%J Comm. Assoc. Comp. Mach.
-%V 10
-%N 12
-%D December 1967
-%P 793-799, 803
-%K qed
-
-.[
-%r 17
-%K cstr
-%R Comp. Sci. Tech. Rep. No. 17
-%I Bell Laboratories
-%C Murray Hill, New Jersey
-%A B. W. Kernighan
-%A L. L. Cherry
-%T A System for Typesetting Mathematics
-%d May 1974, revised April 1977
-%J Comm. Assoc. Comp. Mach.
-%K acm cacm
-%V 18
-%P 151-157
-%D March 1975
-.]
-
-%T U\s-2NIX\s0 Time-Sharing System: Document Preparation
-%K unix bstj
-%A B. W. Kernighan
-%A M. E. Lesk
-%A J. F. Ossanna
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 2115-2135
-%D 1978
-
-%A T. A. Dolotta
-%A J. R. Mashey
-%T An Introduction to the Programmer's Workbench
-%J Proc. 2nd Int. Conf. on Software Engineering
-%D October 13-15, 1976
-%P 164-168
-
-%T U\s-2NIX\s0 Time-Sharing System: The Programmer's Workbench
-%A T. A. Dolotta
-%A R. C. Haight
-%A J. R. Mashey
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 2177-2200
-%D 1978
-%K unix bstj
-
-%T U\s-2NIX\s0 Time-Sharing System: U\s-2NIX\s0 on a Microprocessor
-%K unix bstj
-%A H. Lycklama
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 2087-2101
-%D 1978
-
-%T The C Programming Language
-%A B. W. Kernighan
-%A D. M. Ritchie
-%I Prentice-Hall
-%C Englewood Cliffs, New Jersey
-%D 1978
-
-%T Computer Recreations
-%A Aleph-null
-%J Software Practice and Experience
-%V 1
-%N 2
-%D April-June 1971
-%P 201-204
-
-%T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Shell
-%A S. R. Bourne
-%K unix bstj
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 1971-1990
-%D 1978
-
-%A L. P. Deutsch
-%A B. W. Lampson
-%T \*sSDS\*n 930 time-sharing system preliminary reference manual
-%R Doc. 30.10.10, Project \*sGENIE\*n
-%C Univ. Cal. at Berkeley
-%D April 1965
-
-%A R. J. Feiertag
-%A E. I. Organick
-%T The Multics input-output system
-%J Proc. Third Symposium on Operating Systems Principles
-%D October 18-20, 1971
-%P 35-41
-
-%A D. G. Bobrow
-%A J. D. Burchfiel
-%A D. L. Murphy
-%A R. S. Tomlinson
-%T \*sTENEX\*n, a Paged Time Sharing System for the \*sPDP\*n-10
-%J Comm. Assoc. Comp. Mach.
-%V 15
-%N 3
-%D March 1972
-%K tenex
-%P 135-143
-
-%A R. E. Griswold
-%A D. R. Hanson
-%T An Overview of SL5
-%J SIGPLAN Notices
-%V 12
-%N 4
-%D April 1977
-%P 40-50
-
-%A E. W. Dijkstra
-%T Cooperating Sequential Processes
-%B Programming Languages
-%E F. Genuys
-%I Academic Press
-%C New York
-%D 1968
-%P 43-112
-
-%A J. A. Hawley
-%A W. B. Meyer
-%T M\s-2UNIX\s0, A Multiprocessing Version of U\s-2NIX\s0
-%K munix unix
-%R M.S. Thesis
-%I Naval Postgraduate School
-%C Monterey, Cal.
-%D 1975
-
-%T The U\s-2NIX\s0 Time-Sharing System
-%K unix bstj
-%A D. M. Ritchie
-%A K. Thompson
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 1905-1929
-%D 1978
-
-%A E. I. Organick
-%T The M\s-2ULTICS\s0 System
-%K multics
-%I M.I.T. Press
-%C Cambridge, Mass.
-%D 1972
-
-%T UNIX for Beginners
-%A B. W. Kernighan
-%D 1978
-
-%T U\s-2NIX\s0 Programmer's Man\&ual
-%A K. Thompson
-%A D. M. Ritchie
-%K unix
-%I Bell Laboratories
-%O Seventh Edition.
-%D 1978
-
-%A K. Thompson
-%T The U\s-2NIX\s0 Command Language
-%B Structured Programming\(emInfotech State of the Art Report
-%I Infotech International Ltd.
-%C Nicholson House, Maidenhead, Berkshire, England
-%D March 1975
-%P 375-384
-%K unix
-%X pwb
-Brief description of shell syntax and semantics, without much
-detail on implementation.
-Much on pipes and convenience of hooking programs together.
-Includes SERMONETTE:
-"Many familiar computing `concepts' are missing from UNIX.
-Files have no records. There are no access methods.
-There are no file types. These concepts fill a much-needed gap.
-I sincerely hope that when future systems are designed by
-manufacturers the value of some of these ingrained notions is re-examined.
-Like the politician and his `common man', manufacturers have
-their `average user'.
-
-%A J. R. Mashey
-%T PWB/UNIX Shell Tutorial
-%D September 30, 1977
-
-%A D. F. Hartley (Ed.)
-%T The Cambridge Multiple Access System \- Users Reference Manual
-%I University Mathematical Laboratory
-%C Cambridge, England
-%D 1968
-
-%A P. A. Crisman (Ed.)
-%T The Compatible Time-Sharing System
-%I M.I.T. Press
-%K whole ctss book
-%C Cambridge, Mass.
-%D 1965
-
-%T LR Parsing
-%A A. V. Aho
-%A S. C. Johnson
-%J Comp. Surveys
-%V 6
-%N 2
-%P 99-124
-%D June 1974
-
-%T Deterministic Parsing of Ambiguous Grammars
-%A A. V. Aho
-%A S. C. Johnson
-%A J. D. Ullman
-%J Comm. Assoc. Comp. Mach.
-%K acm cacm
-%V 18
-%N 8
-%P 441-452
-%D August 1975
-
-%A A. V. Aho
-%A J. D. Ullman
-%T Principles of Compiler Design
-%I Addison-Wesley
-%C Reading, Mass.
-%D 1977
-
-.[
-%r 65
-%R Comp. Sci. Tech. Rep. No. 65
-%K CSTR
-%A S. C. Johnson
-%T Lint, a C Program Checker
-%D December 1977
-%O updated version TM 78-1273-3
-%D 1978
-.]
-
-%T A Portable Compiler: Theory and Practice
-%A S. C. Johnson
-%J Proc. 5th ACM Symp. on Principles of Programming Languages
-%P 97-104
-%D January 1978
-
-.[
-%r 39
-%K CSTR
-%R Comp. Sci. Tech. Rep. No. 39
-%I Bell Laboratories
-%C Murray Hill, New Jersey
-%A M. E. Lesk
-%T Lex \(em A Lexical Analyzer Generator
-%D October 1975
-.]
-
-.[
-%r 32
-%K CSTR
-%R Comp. Sci. Tech. Rep. No. 32
-%I Bell Laboratories
-%C Murray Hill, New Jersey
-%A S. C. Johnson
-%T Yacc \(em Yet Another Compiler-Compiler
-%D July 1975
-.]
-
-%T U\s-2NIX\s0 Time-Sharing System: Portability of C Programs and the U\s-2NIX\s0 System
-%K unix bstj
-%A S. C. Johnson
-%A D. M. Ritchie
-%J Bell Sys. Tech. J.
-%V 57
-%N 6
-%P 2021-2048
-%D 1978
-
-%T Typing Documents on UNIX and GCOS: The -ms Macros for Troff
-%A M. E. Lesk
-%D 1977
-
-%A K. Thompson
-%A D. M. Ritchie
-%T U\s-2NIX\s0 Programmer's Manual
-%K unix
-%I Bell Laboratories
-%O Sixth Edition
-%D May 1975
-
-%T The Network U\s-2NIX\s0 System
-%K unix
-%A G. L. Chesson
-%J Operating Systems Review
-%V 9
-%N 5
-%P 60-66
-%D 1975
-%O Also in \f2Proc. 5th Symp. on Operating Systems Principles.\f1
-
-%T Spider \(em An Experimental Data Communications System
-%Z ctr127
-%A A. G. Fraser
-%J Proc. IEEE Conf. on Communications
-%P 21F
-%O IEEE Cat. No. 74CH0859-9-CSCB.
-%D June 1974
-
-%T A Virtual Channel Network
-%A A. G. Fraser
-%J Datamation
-%P 51-56
-%D February 1975
-
-.[
-%r 41
-%K CSTR
-%R Comp. Sci. Tech. Rep. No. 41
-%I Bell Laboratories
-%C Murray Hill, New Jersey
-%A J. W. Hunt
-%A M. D. McIlroy
-%T An Algorithm for Differential File Comparison
-%D June 1976
-.]
-
-%A F. P. Brooks, Jr.
-%T The Mythical Man-Month
-%I Addison-Wesley
-%C Reading, Mass.
-%D 1975
-%X pwb
-Readable, classic reference on software engineering and
-problems of large projects, from someone with experience in them.
-Required reading for any software engineer, even if conclusions may not
-always be agreed with.
-%br
-"The second is the most dangerous system a man ever designs." p.55.
-%br
-"Hence plan to throw one away; you will, anyhow." p.116.
-%br
-"Cosgrove has perceptively pointed out that the programmer delivers
-satisfaction of a user need rather than any tangible product.
-And both the actual need and the user's perception of that need
-will change as programs are built, tested, and used." p.117.
-%br
-"The total cost of maintaining a widely used program is typically 40 percent
-or more of the cost of developing it." p.121.
-%br
-"As shown above, amalgamating prose and program reduces the total
-number of characters to be stored." p.175.
-
-%T A Portable Compiler for the Language C
-%A A. Snyder
-%I Master's Thesis, M.I.T.
-%C Cambridge, Mass.
-%D 1974
-
-%T The C Language Calling Sequence
-%A M. E. Lesk
-%A S. C. Johnson
-%A D. M. Ritchie
-%D 1977
-
-%T Optimal Code Generation for Expression Trees
-%A A. V. Aho
-%A S. C. Johnson
-%D 1975
-%J J. Assoc. Comp. Mach.
-%K acm jacm
-%V 23
-%N 3
-%P 488-501
-%O Also in \f2Proc. ACM Symp. on Theory of Computing,\f1 pp. 207-217, 1975.
-
-%A R. Sethi
-%A J. D. Ullman
-%T The Generation of Optimal Code for Arithmetic Expressions
-%J J. Assoc. Comp. Mach.
-%K acm jacm
-%V 17
-%N 4
-%D October 1970
-%P 715-728
-%O Reprinted as pp. 229-247 in \fICompiler Techniques\fR, ed. B. W. Pollack, Auerbach, Princeton NJ (1972).
-%X pwb
-Optimal approach for straight-line, fixed
-number of regs.
-
-%T Code Generation for Machines with Multiregister
-Operations
-%A A. V. Aho
-%A S. C. Johnson
-%A J. D. Ullman
-%J Proc. 4th ACM Symp. on Principles of Programming Languages
-%P 21-28
-%D January 1977
-
diff --git a/bin/sh/USD.doc/referargs b/bin/sh/USD.doc/referargs
deleted file mode 100644
index 3bb6284..0000000
--- a/bin/sh/USD.doc/referargs
+++ /dev/null
@@ -1,8 +0,0 @@
-.\" $NetBSD: referargs,v 1.1 2014/07/05 19:22:02 dholland Exp $
-.\"
-.\" Arguments for refer; these were previously passed on the refer(1)
-.\" command line: -e -p Rv7man
-.R1
-accumulate
-database Rv7man
-.R2
diff --git a/bin/sh/USD.doc/t.mac b/bin/sh/USD.doc/t.mac
deleted file mode 100644
index 9bf65c8..0000000
--- a/bin/sh/USD.doc/t.mac
+++ /dev/null
@@ -1,69 +0,0 @@
-.\" $NetBSD: t.mac,v 1.2 2010/08/22 02:19:07 perry Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions are
-.\" met:
-.\"
-.\" Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following
-.\" disclaimer.
-.\"
-.\" Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\"
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc. Neither the name of Caldera International, Inc.
-.\" nor the names of other contributors may be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-.\" DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-.\" OR OTHERWISE) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)t.mac 8.1 (Berkeley) 8/14/93
-.\"
-.ds ZZ \fB.\|.\|.\fP
-.ds ST \v'.3m'\s+2*\s0\v'-.3m'
-.ds DO \h'\w'do 'u'
-.ds Ca \h'\w'case 'u'
-.ds WH \h'\w'while 'u'
-.ds VT \|\fB\(or\fP\|
-.ds TH \h'\w'then 'u'
-.ds DC \*(DO\*(Ca
-.ds AP >\h'-.2m'>
-.ds HE <\h'-.2m'<
-. \" macros for algol 68c reference manual
-.ds DA 1977 November 1
-.ds md \v'.25m'
-.ds mu \v'-.25m'
-.ds U \*(mu\s-3
-.ds V \s0\*(md
-.ds L \*(md\s-3
-.ds M \s0\*(mu
-.ds S \s-1
-.ds T \s0
-. \" small 1
-.ds O \*S1\*T
-.ds h \|
-.ds s \|\|
-. \" ellipsis
-.ds e .\|.\|.
-. \" subscripts
-.ds 1 \*(md\s-41\s0\*(mu
-.ds 2 \*(md\s-42\s0\*(mu
diff --git a/bin/sh/USD.doc/t1 b/bin/sh/USD.doc/t1
deleted file mode 100644
index 075511f..0000000
--- a/bin/sh/USD.doc/t1
+++ /dev/null
@@ -1,553 +0,0 @@
-.\" $NetBSD: t1,v 1.3 2010/08/22 02:19:07 perry Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions are
-.\" met:
-.\"
-.\" Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following
-.\" disclaimer.
-.\"
-.\" Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgment:
-.\"
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc. Neither the name of Caldera International, Inc.
-.\" nor the names of other contributors may be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-.\" DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-.\" OR OTHERWISE) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)t1 8.1 (Berkeley) 8/14/93
-.\"
-.EH 'USD:3-%''An Introduction to the UNIX Shell'
-.OH 'An Introduction to the UNIX Shell''USD:3-%'
-.\".RP
-.TL
-An Introduction to the UNIX Shell
-.AU
-S. R. Bourne
-.AI
-Murray Hill, NJ
-.AU
-(Updated for 4.3BSD by Mark Seiden)
-.AU
-(Further updated by Perry E. Metzger)\(dg
-.AB
-.FS
-\(dg This paper was updated in 2010 to reflect most features of modern
-POSIX shells, which all follow the design of S.R. Bourne's original v7
-Unix shell.
-Among these are ash, bash, ksh and others.
-Typically one of these will be installed as /bin/sh on a modern system.
-It does not describe the behavior of the c shell (csh).
-If it's the c shell (csh) you're interested in, a good place to
-begin is William Joy's paper "An Introduction to the C shell" (USD:4).
-.FE
-.LP
-The
-.ul
-shell
-is a command programming language that provides an interface
-to the
-.UX
-operating system.
-Its features include
-control-flow primitives, parameter passing, variables and
-string substitution.
-Constructs such as
-.ul
-while, if then else, case
-and
-.ul
-for
-are available.
-Two-way communication is possible between the
-.ul
-shell
-and commands.
-String-valued parameters, typically file names or flags, may be
-passed to a command.
-A return code is set by commands that may be used to determine control-flow,
-and the standard output from a command may be used
-as shell input.
-.LP
-The
-.ul
-shell
-can modify the environment
-in which commands run.
-Input and output can be redirected
-to files, and processes that communicate through `pipes'
-can be invoked.
-Commands are found by
-searching directories
-in the file system in a
-sequence that can be defined by the user.
-Commands can be read either from the terminal or from a file,
-which allows command procedures to be
-stored for later use.
-.AE
-.ds ST \v'.3m'\s+2*\s0\v'-.3m'
-.SH
-1.0\ Introduction
-.LP
-The shell is both a command language
-and a programming language
-that provides an interface to the UNIX
-operating system.
-This memorandum describes, with
-examples, the UNIX shell.
-The first section covers most of the
-everyday requirements
-of terminal users.
-Some familiarity with UNIX
-is an advantage when reading this section;
-see, for example,
-"UNIX for beginners".
-.[
-unix beginn kernigh 1978
-.]
-Section 2 describes those features
-of the shell primarily intended
-for use within shell procedures.
-These include the control-flow
-primitives and string-valued variables
-provided by the shell.
-A knowledge of a programming language
-would be a help when reading this section.
-The last section describes the more
-advanced features of the shell.
-References of the form "see \fIpipe\fP (2)"
-are to a section of the UNIX manual.
-.[
-seventh 1978 ritchie thompson
-.]
-.SH
-1.1\ Simple\ commands
-.LP
-Simple commands consist of one or more words
-separated by blanks.
-The first word is the name of the command
-to be executed; any remaining words
-are passed as arguments to the command.
-For example,
-.DS
- who
-.DE
-is a command that prints the names
-of users logged in.
-The command
-.DS
- ls \(mil
-.DE
-prints a list of files in the current
-directory.
-The argument \fI\(mil\fP tells \fIls\fP
-to print status information, size and
-the creation date for each file.
-.SH
-1.2\ Input\ output\ redirection
-.LP
-Most commands produce output on the standard output
-that is initially connected to the terminal.
-This output may be sent to a file
-by writing, for example,
-.DS
- ls \(mil >file
-.DE
-The notation \fI>file\fP
-is interpreted by the shell and is not passed
-as an argument to \fIls.\fP
-If \fIfile\fP does not exist then the
-shell creates it;
-otherwise the original contents of
-\fIfile\fP are replaced with the output
-from \fIls.\fP
-Output may be appended to a file
-using the notation
-.DS
- ls \(mil \*(APfile
-.DE
-In this case \fIfile\fP is also created if it does not already
-exist.
-.LP
-The standard input of a command may be taken
-from a file instead of the terminal by
-writing, for example,
-.DS
- wc <file
-.DE
-The command \fIwc\fP reads its standard input
-(in this case redirected from \fIfile\fP)
-and prints the number of characters, words and
-lines found.
-If only the number of lines is required
-then
-.DS
- wc \(mil <file
-.DE
-could be used.
-.\" I considered adding the following, but have thought better of it
-.\" for now.
-.\" -- Perry Metzger
-.\"
-.\" .LP
-.\" Error messages are typically printed by commands on a different
-.\" channel, called standard error, which may also be redirected using the
-.\" notation 2>\|.
-.\" For example
-.\" .DS
-.\" command some args >out 2>errors
-.\" .DE
-.\" will redirect standard output to the file `out' but standard error
-.\" (and thus all error messages) to `errors'.
-.\" The notation 2>&1 sets standard error pointing to the same
-.\" place as standard out.
-.\" Thus:
-.\" .DS
-.\" command some args 2>&1 >everything
-.\" .DE
-.\" will put both standard out and standard error into the file `everything'.
-.\" See section 3.7 below for more details.
-.SH
-1.3\ Pipelines\ and\ filters
-.LP
-The standard output of one command may be
-connected to the standard input of another
-by writing
-the `pipe' operator,
-indicated by \*(VT,
-as in,
-.DS
- ls \(mil \*(VT wc
-.DE
-Two commands connected in this way constitute
-a \fIpipeline\fP and
-the overall effect is the same as
-.DS
- ls \(mil >file; wc <file
-.DE
-except that no \fIfile\fP is used.
-Instead the two \fIprocesses\fP are connected
-by a pipe (see \fIpipe\fP(2)) and are
-run in parallel.
-Pipes are unidirectional and
-synchronization is achieved by
-halting \fIwc\fP when there is
-nothing to read and halting \fIls\fP
-when the pipe is full.
-.LP
-A \fIfilter\fP is a command
-that reads its standard input,
-transforms it in some way,
-and prints the result as output.
-One such filter, \fIgrep,\fP
-selects from its input those lines
-that contain some specified string.
-For example,
-.DS
- ls \*(VT grep old
-.DE
-prints those lines, if any, of the output
-from \fIls\fP that contain
-the string \fIold.\fP
-Another useful filter is \fIsort\fP.
-For example,
-.DS
- who \*(VT sort
-.DE
-will print an alphabetically sorted list
-of logged in users.
-.LP
-A pipeline may consist of more than two commands,
-for example,
-.DS
- ls \*(VT grep old \*(VT wc \(mil
-.DE
-prints the number of file names
-in the current directory containing
-the string \fIold.\fP
-.SH
-1.4\ Background\ commands
-.LP
-To execute a command (or pipeline) the shell normally
-creates the new \fIprocesses\fP
-and waits for them to finish.
-A command may be run without waiting
-for it to finish.
-For example,
-.DS
- cc pgm.c &
-.DE
-calls the C compiler to compile
-the file \fIpgm.c\|.\fP
-The trailing \fB&\fP is an operator that instructs the shell
-not to wait for the command to finish.
-To help keep track of such a process
-the shell reports its job number (see below) and process
-id following its creation.
-Such a command is said to be running in the \fIbackground\fP.
-By contrast, a command executed without the \fB&\fP is said to be
-running in the \fIforeground\fP.\(dg
-.FS
-\(dg Even after execution, one may move commands from the foreground
-to the background, or temporarily suspend their execution (which is
-known as \fIstopping\fP a command.
-This is described in detail in section 3.10 on \fIJob Control\fB.
-.FE
-.LP
-A list of currently active processes, including ones not associated
-with the current shell, may be obtained using the \fIps\fP(1) command.
-.SH
-1.5\ File\ name\ generation
-.LP
-Many commands accept arguments
-which are file names.
-For example,
-.DS
- ls \(mil main.c
-.DE
-prints information relating to the file \fImain.c\fP\|.
-.LP
-The shell provides a mechanism
-for generating a list of file names
-that match a pattern.
-For example,
-.DS
- ls \(mil \*(ST.c
-.DE
-generates, as arguments to \fIls,\fP
-all file names in the current directory that end in \fI.c\|.\fP
-The character \*(ST is a pattern that will match any string
-including the null string.
-In general \fIpatterns\fP are specified
-as follows.
-.RS
-.IP \fB\*(ST\fR 8
-Matches any string of characters
-including the null string.
-.IP \fB?\fR 8
-Matches any single character.
-.IP \fB[\*(ZZ]\fR 8
-Matches any one of the characters
-enclosed.
-A pair of characters separated by a minus will
-match any character lexically between
-the pair.
-.RE
-.LP
-For example,
-.DS
- [a\(miz]\*(ST
-.DE
-matches all names in the current directory
-beginning with
-one of the letters \fIa\fP through \fIz.\fP
-.DS
- /usr/fred/test/?
-.DE
-matches all names in the directory
-\fB/usr/fred/test\fP that consist of a single character.
-If no file name is found that matches
-the pattern then the pattern is passed,
-unchanged, as an argument.
-.LP
-This mechanism is useful both to save typing
-and to select names according to some pattern.
-It may also be used to find files.
-For example,
-.DS
- echo /usr/fred/\*(ST/core
-.DE
-finds and prints the names of all \fIcore\fP files in sub-directories
-of \fB/usr/fred\|.\fP
-(\fIecho\fP is a standard UNIX command that prints
-its arguments, separated by blanks.)
-This last feature can be expensive,
-requiring a scan of all
-sub-directories of \fB/usr/fred\|.\fP
-.LP
-There is one exception to the general
-rules given for patterns.
-The character `\fB.\fP'
-at the start of a file name must be explicitly
-matched.
-.DS
- echo \*(ST
-.DE
-will therefore echo all file names in the current
-directory not beginning
-with `\fB.\fP'\|.
-.DS
- echo \fB.\fP\*(ST
-.DE
-will echo all those file names that begin with `\fB.\fP'\|.
-This avoids inadvertent matching
-of the names `\fB.\fP' and `\fB..\fP'
-which mean `the current directory'
-and `the parent directory'
-respectively.
-(Notice that \fIls\fP suppresses
-information for the files `\fB.\fP' and `\fB..\fP'\|.)
-.LP
-Finally, the tilde character, `\fB\(ap\fP', may be used to indicate the
-home directory of a user.
-The `\fB\(ap\fP' at the beginning of a path name followed by a
-non-alphabetic character expands to the current user's home
-directory.
-If the `\fB\(ap\fP' is followed by a login name, it expands to the named
-user's home directory.
-For example:
-.DS
- ls \(ap
- cd \(apegbert/
-.DE
-will list the contents of the user's home directory and then change
-to the home directory of the user ``egbert''.
-.SH
-1.6\ Quoting
-.LP
-Characters that have a special meaning
-to the shell, such as \fB< > \*(ST ? \*(VT &\|,\fR
-are called metacharacters.
-A complete list of metacharacters is given
-in appendix B.
-Any character preceded by a \fB\\\fR is \fIquoted\fP
-and loses its special meaning, if any.
-The \fB\\\fP is elided so that
-.DS
- echo \\?
-.DE
-will echo a single \fB?\|,\fP
-and
-.DS
- echo \\\\
-.DE
-will echo a single \fB\\\|.\fR
-To allow long strings to be continued over
-more than one line
-the sequence \fB\\newline\fP
-is ignored.
-.LP
-\fB\\\fP is convenient for quoting
-single characters.
-When more than one character needs
-quoting the above mechanism is clumsy and
-error prone.
-A string of characters may be quoted
-by enclosing the string between single quotes.
-For example,
-.DS
- echo xx\'\*(ST\*(ST\*(ST\*(ST\'xx
-.DE
-will echo
-.DS
- xx\*(ST\*(ST\*(ST\*(STxx
-.DE
-The quoted string may not contain
-a single quote
-but may contain newlines, which are preserved.
-This quoting mechanism is the most
-simple and is recommended
-for casual use.
-.LP
-A third quoting mechanism using double quotes
-is also available
-that prevents interpretation of some but not all
-metacharacters.
-Discussion of the
-details is deferred
-to section 3.5\|.
-.SH
-1.7\ Prompting
-.LP
-When the shell is used from a terminal it will
-issue a prompt before reading a command.
-By default this prompt is `\fB$\ \fR'\|.
-It may be changed by saying,
-for example,
-.DS
- \s-1PS1\s0="yesdear$ "
-.DE
-that sets the prompt to be the string \fIyesdear$\|.\fP
-If a newline is typed and further input is needed
-then the shell will issue the prompt `\fB>\ \fR'\|.
-Sometimes this can be caused by mistyping
-a quote mark.
-If it is unexpected then entering the interrupt character
-(typically \s-1CONTROL-C\s0)
-will return the shell to read another command.
-This prompt may be changed by saying, for example,
-.DS
- \s-1PS2\s0=more
-.DE
-Entering the interrupt character may also be used to terminate most
-programs running as the current foreground job.
-.LP
-(\s-1PS1\s0 and \s-1PS2\s0 are \fIshell variables\fP, which will be
-described in section 2.4 below.)
-.SH
-1.8\ The\ shell\ and\ login
-.LP
-Following \fIlogin\fP(1)
-the shell is called to read and execute
-commands typed at the terminal.
-If the user's login directory
-contains the file \fB.profile\fP
-then it is assumed to contain commands
-and is read by the shell before reading
-any commands from the terminal.
-.LP
-(Most versions of the shell also specify a file that is read and
-executed on start-up whether or not the shell is invoked by login.
-The \s-1ENV\s0 shell variable, described in section 2.4 below, can be
-used to override the name of this file.
-See the shell manual page for further information.)
-.SH
-1.9\ Summary
-.sp
-.RS
-.IP \(bu
-\fBls\fP
-.br
-Print the names of files in the current directory.
-.IP \(bu
-\fBls >file\fP
-.br
-Put the output from \fIls\fP into \fIfile.\fP
-.IP \(bu
-\fBls \*(VT wc \(mil\fR
-.br
-Print the number of files in the current directory.
-.IP \(bu
-\fBls \*(VT grep old\fR
-.br
-Print those file names containing the string \fIold.\fP
-.IP \(bu
-\fBls \*(VT grep old \*(VT wc \(mil\fR
-.br
-Print the number of files whose name contains the string \fIold.\fP
-.IP \(bu
-\fBcc pgm.c &\fR
-.br
-Run \fIcc\fP in the background.
-.RE
diff --git a/bin/sh/USD.doc/t2 b/bin/sh/USD.doc/t2
deleted file mode 100644
index d49747e..0000000
--- a/bin/sh/USD.doc/t2
+++ /dev/null
@@ -1,971 +0,0 @@
-.\" $NetBSD: t2,v 1.3 2010/08/22 02:19:07 perry Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions are
-.\" met:
-.\"
-.\" Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following
-.\" disclaimer.
-.\"
-.\" Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgment:
-.\"
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc. Neither the name of Caldera International, Inc.
-.\" nor the names of other contributors may be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-.\" DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-.\" OR OTHERWISE) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)t2 8.1 (Berkeley) 6/8/93
-.\"
-.SH
-2.0\ Shell\ scripts
-.LP
-The shell may be used to read and execute commands
-contained in a file.
-For example,
-.DS
- sh file [ args \*(ZZ ]
-.DE
-calls the shell to read commands from \fIfile.\fP
-Such a file is called a \fIshell script.\fP
-Arguments may be supplied with the call
-and are referred to in \fIfile\fP
-using the positional parameters
-\fB$1, $2, \*(ZZ\|.\fR
-.LP
-For example, if the file \fIwg\fP contains
-.DS
- who \*(VT grep $1
-.DE
-then
-.DS
- sh wg fred
-.DE
-is equivalent to
-.DS
- who \*(VT grep fred
-.DE
-.LP
-UNIX files have three independent attributes,
-\fIread,\fP \fIwrite\fP and \fIexecute.\fP
-The UNIX command \fIchmod\fP(1) may be used
-to make a file executable.
-For example,
-.DS
- chmod +x wg
-.DE
-will ensure that the file \fIwg\fP has execute status.
-Following this, the command
-.DS
- wg fred
-.DE
-is equivalent to
-.DS
- sh wg fred
-.DE
-This allows shell scripts and other programs
-to be used interchangeably.
-In either case a new process is created to
-run the command.
-.LP
-The `\fB#\fP' character is used as a comment character by the shell.
-All characters following the `#' on a line are ignored.
-.LP
-A typical modern system has several different shells, some with differing
-command syntax, and it is desirable to specify which one should be
-invoked when an executable script is invoked.
-If the special comment
-.DS
- #!/\fIpath\fP/\fIto\fP/\fIinterpreter\fP
-.DE
-appears as the first line in a script, it is used to specify the
-absolute pathname of the shell (or other interpreter) that should be
-used to execute the file.
-(Without such a line, \fB/bin/sh\fP is assumed.)
-It is best if a script explicitly states
-what shell it is intended for in this manner.
-.LP
-As well as providing names for the positional
-parameters,
-the number of positional parameters to a script
-is available as \fB$#\|.\fP
-The name of the file being executed
-is available as \fB$0\|.\fP
-.LP
-A special shell parameter \fB$\*(ST\fP
-is used to substitute for all positional parameters
-except \fB$0\|.\fP
-A typical use of this is to provide
-some default arguments,
-as in,
-.DS
- nroff \(miT450 \(mims $\*(ST
-.DE
-which simply prepends some arguments
-to those already given.
-(The variable \fB$@\fP also expands to ``all positional
-parameters'', but is subtly different when expanded inside quotes.
-See section 3.5, below.)
-.SH
-2.1\ Control\ flow\ -\ for
-.LP
-A frequent use of shell scripts is to loop
-through the arguments (\fB$1, $2, \*(ZZ\fR)
-executing commands once for each argument.
-An example of such a script is
-\fItel\fP that searches the file
-\fB/usr/share/telnos\fR
-that contains lines of the form
-.DS
- \*(ZZ
- fred mh0123
- bert mh0789
- \*(ZZ
-.DE
-The text of \fItel\fP is
-.DS
- #!/bin/sh
-
- for i
- do
- grep $i /usr/share/telnos
- done
-.DE
-The command
-.DS
- tel fred
-.DE
-prints those lines in \fB/usr/share/telnos\fR
-that contain the string \fIfred\|.\fP
-.DS
- tel fred bert
-.DE
-prints those lines containing \fIfred\fP
-followed by those for \fIbert.\fP
-.LP
-The \fBfor\fP loop notation is recognized by the shell
-and has the general form
-.DS
- \fBfor\fR \fIname\fR \fBin\fR \fIw1 w2 \*(ZZ\fR
- \fBdo\fR \fIcommand-list\fR
- \fBdone\fR
-.DE
-A \fIcommand-list\fP is a sequence of one or more
-simple commands separated or terminated by a newline or semicolon.
-Furthermore, reserved words
-like \fBdo\fP and \fBdone\fP are only
-recognized following a newline or
-semicolon.
-\fIname\fP is a shell variable that is set
-to the words \fIw1 w2 \*(ZZ\fR in turn each time the \fIcommand-list\fP
-following \fBdo\fP
-is executed.
-If \fBin\fR \fIw1 w2 \*(ZZ\fR
-is omitted then the loop
-is executed once for each positional parameter;
-that is, \fBin\fR \fI$\*(ST\fR is assumed.
-.LP
-Another example of the use of the \fBfor\fP
-loop is the \fIcreate\fP command
-whose text is
-.DS
- for i do >$i; done
-.DE
-The command
-.DS
- create alpha beta
-.DE
-ensures that two empty files
-\fIalpha\fP and \fIbeta\fP exist
-and are empty.
-The notation \fI>file\fP may be used on its
-own to create or clear the contents of a file.
-Notice also that a semicolon (or newline) is required before \fBdone.\fP
-.SH
-2.2\ Control\ flow\ -\ case
-.LP
-A multiple way branch is provided for by the
-\fBcase\fP notation.
-For example,
-.DS
- case $# in
- \*(Ca1) cat \*(AP$1 ;;
- \*(Ca2) cat \*(AP$2 <$1 ;;
- \*(Ca\*(ST) echo \'usage: append [ from ] to\' ;;
- esac
-.DE
-is an \fIappend\fP command.
-When called
-with one argument as
-.DS
- append file
-.DE
-\fB$#\fP is the string \fI1\fP and
-the standard input is copied onto the
-end of \fIfile\fP
-using the \fIcat\fP command.
-.DS
- append file1 file2
-.DE
-appends the contents of \fIfile1\fP
-onto \fIfile2.\fP
-If the number of arguments supplied to
-\fIappend\fP is other than 1 or 2
-then a message is printed indicating
-proper usage.
-.LP
-The general form of the \fBcase\fP command
-is
-.DS
- \fBcase \fIword \fBin
- \*(Ca\fIpattern\|\fB)\ \fIcommand-list\fB\|;;
- \*(Ca\*(ZZ
- \fBesac\fR
-.DE
-The shell attempts to match
-\fIword\fR with each \fIpattern,\fR
-in the order in which the patterns
-appear.
-If a match is found the
-associated \fIcommand-list\fP is
-executed and execution
-of the \fBcase\fP is complete.
-Since \*(ST is the pattern that matches any
-string it can be used for the default case.
-.LP
-A word of caution:
-no check is made to ensure that only
-one pattern matches
-the case argument.
-The first match found defines the set of commands
-to be executed.
-In the example below the commands following
-the second \*(ST will never be executed.
-.DS
- case $# in
- \*(Ca\*(ST) \*(ZZ ;;
- \*(Ca\*(ST) \*(ZZ ;;
- esac
-.DE
-.LP
-Another example of the use of the \fBcase\fP
-construction is to distinguish
-between different forms
-of an argument.
-The following example is a fragment of a \fIcc\fP command.
-.DS
- for i
- do case $i in
- \*(DC\(mi[ocs]) \*(ZZ ;;
- \*(DC\(mi\*(ST) echo "unknown flag $i" ;;
- \*(DC\*(ST.c) /lib/c0 $i \*(ZZ ;;
- \*(DC\*(ST) echo "unexpected argument $i" ;;
- \*(DOesac
- done
-.DE
-.LP
-To allow the same commands to be associated
-with more than one pattern
-the \fBcase\fP command provides
-for alternative patterns
-separated by a \*(VT\|.
-For example,
-.DS
- case $i in
- \*(Ca\(mix\*(VT\(miy) \*(ZZ
- esac
-.DE
-is equivalent to
-.DS
- case $i in
- \*(Ca\(mi[xy]) \*(ZZ
- esac
-.DE
-.LP
-The usual quoting conventions apply
-so that
-.DS
- case $i in
- \*(Ca\\?) \*(ZZ
-.DE
-will match the character \fB?\|.\fP
-.SH
-2.3\ Here\ documents
-.LP
-The shell script \fItel\fP
-in section 2.1 uses the file \fB/usr/share/telnos\fR
-to supply the data
-for \fIgrep.\fP
-An alternative is to include this
-data
-within the shell script as a \fIhere\fP document, as in,
-.DS
- for i
- do grep $i \*(HE!
- \*(DO\*(ZZ
- \*(DOfred mh0123
- \*(DObert mh0789
- \*(DO\*(ZZ
- !
- done
-.DE
-In this example
-the shell takes the lines between \fB\*(HE!\fR and \fB!\fR
-as the standard input for \fIgrep.\fP
-The string \fB!\fR is arbitrary, the document
-being terminated by a line that consists
-of the string following \*(HE\|.
-.LP
-Parameters are substituted in the document
-before it is made available to \fIgrep\fP
-as illustrated by the following script
-called \fIedg\|.\fP
-.DS
- ed $3 \*(HE%
- g/$1/s//$2/g
- w
- %
-.DE
-The call
-.DS
- edg string1 string2 file
-.DE
-is then equivalent to the command
-.DS
- ed file \*(HE%
- g/string1/s//string2/g
- w
- %
-.DE
-and changes all occurrences of \fIstring1\fP
-in \fIfile\fP to \fIstring2\|.\fP
-Substitution can be prevented using \\
-to quote the special character \fB$\fP
-as in
-.DS
- ed $3 \*(HE+
- 1,\\$s/$1/$2/g
- w
- +
-.DE
-(This version of \fIedg\fP is equivalent to
-the first except that \fIed\fP will print
-a \fB?\fR if there are no occurrences of
-the string \fB$1\|.\fP)
-Substitution within a \fIhere\fP document
-may be prevented entirely by quoting
-the terminating string,
-for example,
-.DS
- grep $i \*(HE'end'
- \*(ZZ
- end
-.DE
-The document is presented
-without modification to \fIgrep.\fP
-If parameter substitution is not required
-in a \fIhere\fP document this latter form
-is more efficient.
-.SH
-2.4\ Shell\ variables\(dg
-.LP
-.FS
-Also known as \fIenvironment variables\fB, see \fIenvironment\fB(7).
-.FE
-The shell
-provides string-valued variables.
-Variable names begin with a letter
-and consist of letters, digits and
-underscores.
-Variables may be given values by writing, for example,
-.DS
- user=fred\ box=m000\ acct=mh0000
-.DE
-which assigns values to the variables
-\fBuser, box\fP and \fBacct.\fP
-A variable may be set to the null string
-by saying, for example,
-.DS
- null=
-.DE
-The value of a variable is substituted
-by preceding its name with \fB$\|\fP;
-for example,
-.DS
- echo $user
-.DE
-will echo \fIfred.\fP
-.LP
-Variables may be used interactively
-to provide abbreviations for frequently
-used strings.
-For example,
-.DS
- b=/usr/fred/bin
- mv pgm $b
-.DE
-will move the file \fIpgm\fP
-from the current directory to the directory \fB/usr/fred/bin\|.\fR
-A more general notation is available for parameter
-(or variable)
-substitution, as in,
-.DS
- echo ${user}
-.DE
-which is equivalent to
-.DS
- echo $user
-.DE
-and is used when the parameter name is
-followed by a letter or digit.
-For example,
-.DS
- tmp=/tmp/ps
- ps a >${tmp}a
-.DE
-will direct the output of \fIps\fR
-to the file \fB/tmp/psa,\fR
-whereas,
-.DS
- ps a >$tmpa
-.DE
-would cause the value of the variable \fBtmpa\fP
-to be substituted.
-.LP
-Except for \fB$?\fP the following
-are set initially by the shell.
-\fB$?\fP is set after executing each command.
-.RS
-.IP \fB$?\fP 8
-The exit status (return code)
-of the last command executed
-as a decimal string.
-Most commands return a zero exit status
-if they complete successfully,
-otherwise a non-zero exit status is returned.
-Testing the value of return codes is dealt with
-later under \fBif\fP and \fBwhile\fP commands.
-.IP \fB$#\fP 8
-The number of positional parameters
-(in decimal).
-Used, for example, in the \fIappend\fP command
-to check the number of parameters.
-.IP \fB$$\fP 8
-The process number of this shell (in decimal).
-Since process numbers are unique among
-all existing processes, this string is
-frequently used to generate
-unique
-temporary file names.
-For example,
-.DS
- ps a >/tmp/ps$$
- \*(ZZ
- rm /tmp/ps$$
-.DE
-.IP \fB$\|!\fP 8
-The process number of the last process
-run in the background (in decimal).
-.IP \fB$\(mi\fP 8
-The current shell flags, such as
-\fB\(mix\fR and \fB\(miv\|.\fR
-.RE
-.LP
-Some variables have a special meaning to the
-shell and should be avoided for general
-use.
-.RS
-.IP \fB$\s-1MAIL\s0\fP 8
-When used interactively
-the shell looks at the file
-specified by this variable
-before it issues a prompt.
-If the specified file has been modified
-since it
-was last looked at the shell
-prints the message
-\fIyou have mail\fP before prompting
-for the next command.
-This variable is typically set
-in the file \fB.profile,\fP
-in the user's login directory.
-For example,
-.DS
- \s-1MAIL\s0=/usr/spool/mail/fred
-.DE
-.IP \fB$\s-1HOME\s0\fP 8
-The default argument
-for the \fIcd\fP command.
-The current directory is used to resolve
-file name references that do not begin with
-a \fB/\|,\fR
-and is changed using the \fIcd\fP command.
-For example,
-.DS
- cd /usr/fred/bin
-.DE
-makes the current directory \fB/usr/fred/bin\|.\fR
-.DS
- cat wn
-.DE
-will print on the terminal the file \fIwn\fP
-in this directory.
-The command
-\fIcd\fP with no argument
-is equivalent to
-.DS
- cd $\s-1HOME\s0
-.DE
-This variable is also typically set in the
-the user's login profile.
-.IP \fB$\s-1PWD\s0\fP 8
-The current working directory. Set by the \fIcd\fB command.
-.IP \fB$\s-1PATH\s0\fP 8
-A list of directories that contain commands (the \fIsearch path\fR\|).
-Each time a command is executed by the shell
-a list of directories is searched
-for an executable file.
-.ne 5
-If \fB$\s-1PATH\s0\fP is not set
-then the current directory,
-\fB/bin\fP, and \fB/usr/bin\fP are searched by default.
-.ne 5
-Otherwise \fB$\s-1PATH\s0\fP consists of directory
-names separated by \fB:\|.\fP
-For example,
-.DS
- \s-1PATH\s0=\fB:\fP/usr/fred/bin\fB:\fP/bin\fB:\fP/usr/bin
-.DE
-specifies that the current directory
-(the null string before the first \fB:\fP\|),
-\fB/usr/fred/bin, /bin \fRand\fP /usr/bin\fR
-are to be searched in that order.
-In this way individual users
-can have their own `private' commands
-that are accessible independently
-of the current directory.
-If the command name contains a \fB/\fR then this directory search
-is not used; a single attempt
-is made to execute the command.
-.IP \fB$\s-1PS1\s0\fP 8
-The primary shell prompt string, by default, `\fB$\ \fR'.
-.IP \fB$\s-1PS2\s0\fP 8
-The shell prompt when further input is needed,
-by default, `\fB>\ \fR'.
-.IP \fB$\s-1IFS\s0\fP 8
-The set of characters used by \fIblank
-interpretation\fR (see section 3.5).
-.IP \fB$\s-1ENV\s0\fP 8
-The shell reads and executes the commands in the file
-specified by this variable when it is initially started.
-Unlike the \fB.profile\fP file, these commands are executed by all
-shells, not just the one started at login.
-(Most versions of the shell specify a filename that is used if
-\s-1ENV\s0 is not explicitly set. See the manual page for your shell.)
-.RE
-.SH
-2.5\ The\ test\ command
-.LP
-The \fItest\fP command, although not part of the shell,
-is intended for use by shell programs.
-For example,
-.DS
- test \(mif file
-.DE
-returns zero exit status if \fIfile\fP
-exists and non-zero exit status otherwise.
-In general \fItest\fP evaluates a predicate
-and returns the result as its exit status.
-Some of the more frequently used \fItest\fP
-arguments are given here, see \fItest\fP(1)
-for a complete specification.
-.DS
- test s true if the argument \fIs\fP is not the null string
- test \(mif file true if \fIfile\fP exists
- test \(mir file true if \fIfile\fP is readable
- test \(miw file true if \fIfile\fP is writable
- test \(mid file true if \fIfile\fP is a directory
-.DE
-The \fItest\fP command is known as `\fB[\fP' and may be invoked as
-such.
-For aesthetic reasons, the command ignores a close bracket `\fB]\fP' given
-at the end of a command so
-.DS
- [ -f filename ]
-.DE
-and
-.DS
- test -f filename
-.DE
-are completely equivalent.
-Typically, the bracket notation is used when \fItest\fP is invoked inside
-shell control constructs.
-.SH
-2.6\ Control\ flow\ -\ while
-.LP
-The actions of
-the \fBfor\fP loop and the \fBcase\fP
-branch are determined by data available to the shell.
-A \fBwhile\fP or \fBuntil\fP loop
-and an \fBif then else\fP branch
-are also provided whose
-actions are determined by the exit status
-returned by commands.
-A \fBwhile\fP loop has the general form
-.DS
- \fBwhile\fP \fIcommand-list\*1\fP
- \fBdo\fP \fIcommand-list\*2\fP
- \fBdone\fP
-.DE
-.LP
-The value tested by the \fBwhile\fP command
-is the exit status of the last simple command
-following \fBwhile.\fP
-Each time round the loop
-\fIcommand-list\*1\fP is executed;
-if a zero exit status is returned then
-\fIcommand-list\*2\fP
-is executed;
-otherwise, the loop terminates.
-For example,
-.DS
- while [ $1 ]
- do \*(ZZ
- \*(DOshift
- done
-.DE
-is equivalent to
-.DS
- for i
- do \*(ZZ
- done
-.DE
-\fIshift\fP is a shell command that
-renames the positional parameters
-\fB$2, $3, \*(ZZ\fR as \fB$1, $2, \*(ZZ\fR
-and loses \fB$1\|.\fP
-.LP
-Another kind of use for the \fBwhile/until\fP
-loop is to wait until some
-external event occurs and then run
-some commands.
-In an \fBuntil\fP loop
-the termination condition is reversed.
-For example,
-.DS
- until [ \(mif file ]
- do sleep 300; done
- \fIcommands\fP
-.DE
-will loop until \fIfile\fP exists.
-Each time round the loop it waits for
-5 minutes before trying again.
-(Presumably another process
-will eventually create the file.)
-.LP
-The most recent enclosing loop may be exited with the \fBbreak\fP
-command, or the rest of the body skipped and the next iteration begun
-with the \fBcontinue\fP command.
-.LP
-The commands \fItrue\fP(1) and \fIfalse\fP(1) return 0 and non-zero
-exit statuses respectively. They are sometimes of use in control flow,
-e.g.:
-.DS
- while true
- do date; sleep 5
- done
-.DE
-is an infinite loop that prints the date and time every five seconds.
-.SH
-2.7\ Control\ flow\ -\ if
-.LP
-Also available is a
-general conditional branch
-of the form,
-.DS
- \fBif\fP \fIcommand-list
- \fBthen \fIcommand-list
- \fBelse \fIcommand-list
- \fBfi\fR
-.DE
-that tests the value returned by the last simple command
-following \fBif.\fP
-.LP
-The \fBif\fP command may be used
-in conjunction with the \fItest\fP command
-to test for the existence of a file as in
-.DS
- if [ \(mif file ]
- then \fIprocess file\fP
- else \fIdo something else\fP
- fi
-.DE
-.LP
-An example of the use of \fBif, case\fP
-and \fBfor\fP constructions is given in
-section 2.10\|.
-.LP
-A multiple test \fBif\fP command
-of the form
-.DS
- if \*(ZZ
- then \*(ZZ
- else if \*(ZZ
- then \*(ZZ
- else if \*(ZZ
- \*(ZZ
- fi
- fi
- fi
-.DE
-may be written using an extension of the \fBif\fP
-notation as,
-.DS
- if \*(ZZ
- then \*(ZZ
- elif \*(ZZ
- then \*(ZZ
- elif \*(ZZ
- \*(ZZ
- fi
-.DE
-.LP
-The following example is an implementation of the \fItouch\fP command
-which changes the `last modified' time for a list
-of files.
-The command may be used in conjunction
-with \fImake\fP(1) to force recompilation of a list
-of files.
-.DS
- #!/bin/sh
-
- flag=
- for i
- do case $i in
- \*(DC\(mic) flag=N ;;
- \*(DC\*(ST) if [ \(mif $i ]
- \*(DC then cp $i junk$$; mv junk$$ $i
- \*(DC elif [ $flag ]
- \*(DC then echo file \\'$i\\' does not exist
- \*(DC else >$i
- \*(DC fi
- \*(DO esac
- done
-.DE
-The \fB\(mic\fP flag is used in this command to
-force subsequent files to be created if they do not already exist.
-Otherwise, if the file does not exist, an error message is printed.
-The shell variable \fIflag\fP
-is set to some non-null string if the \fB\(mic\fP
-argument is encountered.
-The commands
-.DS
- cp \*(ZZ; mv \*(ZZ
-.DE
-copy the file and then overwrite it with the copy,
-thus causing the last modified date to be updated.
-.LP
-The sequence
-.DS
- if command1
- then command2
- fi
-.DE
-may be written
-.DS
- command1 && command2
-.DE
-Conversely,
-.DS
- command1 \*(VT\*(VT command2
-.DE
-executes \fIcommand2\fP only if \fIcommand1\fP
-fails.
-In each case the value returned
-is that of the last simple command executed.
-.LP
-Placing a `\fB!\fP' in front of a pipeline inverts its exit
-status, almost in the manner of the C operator of the same name.
-Thus:
-.DS
- if ! [ -d $1 ]
- then
- echo $1 is not a directory
- fi
-.DE
-will print a message only if $1 is not a directory.
-.SH
-2.8\ Command\ grouping
-.LP
-Commands may be grouped in two ways,
-.DS
- \fB{\fI command-list\fB ; }\fR
-.DE
-and
-.DS
- \fB(\fI command-list\fB )\fR
-.DE
-.LP
-In the first \fIcommand-list\fP is simply executed.
-The second form executes \fIcommand-list\fP
-as a separate process.
-For example,
-.DS
- (cd x; rm junk )
-.DE
-executes \fIrm junk\fP in the directory
-\fBx\fP without changing the current
-directory of the invoking shell.
-.LP
-The commands
-.DS
- cd x; rm junk
-.DE
-have the same effect but leave the invoking
-shell in the directory \fBx.\fP
-.SH
-2.9\ Shell\ Functions
-.LP
-A function may be defined by the syntax
-.DS
- \fIfuncname\fP() \fB{\fI command-list\fB ; }\fR
-.DE
-Functions are invoked within a script as though they were separate
-commands of the same name.
-While they are executed, the
-positional parameters \fB$1, $2, \*(ZZ\fR are temporarily set to the
-arguments passed to the function. For example:
-.DS
- count() {
- echo $2 : $#
- }
-
- count a b c
-.DE
-would print `b : 3'.
-.SH
-2.10\ Debugging\ shell\ scripts
-.LP
-The shell provides two tracing mechanisms
-to help when debugging shell scripts.
-The first is invoked within the script
-as
-.DS
- set \(miv
-.DE
-(\fBv\fP for verbose) and causes lines of the
-script to be printed as they are read.
-It is useful to help isolate syntax errors.
-It may be invoked without modifying the script
-by saying
-.DS
- sh \(miv \fIscript\fP \*(ZZ
-.DE
-where \fIscript\fP is the name of the shell script.
-This flag may be used in conjunction
-with the \fB\(min\fP flag which prevents
-execution of subsequent commands.
-(Note that saying \fIset \(min\fP at a terminal
-will render the terminal useless
-until an end-of-file is typed.)
-.LP
-The command
-.DS
- set \(mix
-.DE
-will produce an execution
-trace.
-Following parameter substitution
-each command is printed as it is executed.
-(Try these at the terminal to see
-what effect they have.)
-Both flags may be turned off by saying
-.DS
- set \(mi
-.DE
-and the current setting of the shell flags is available as \fB$\(mi\|\fR.
-.SH
-2.11\ The\ man\ command
-.LP
-The following is a simple implementation of the \fIman\fP command,
-which is used to display sections of the UNIX manual on your terminal.
-It is called, for example, as
-.DS
- man sh
- man \(mit ed
- man 2 fork
-.DE
-In the first the manual section for \fIsh\fP
-is displayed..
-Since no section is specified, section 1 is used.
-The second example will typeset (\fB\(mit\fP option)
-the manual section for \fIed.\fP
-The last prints the \fIfork\fP manual page
-from section 2, which covers system calls.
-.sp 2
-.DS
- #!/bin/sh
-
- cd /usr/share/man
-
- # "#" is the comment character
- # default is nroff ($N), section 1 ($s)
- N=n\ s=1
-
- for i
- do case $i in
-.sp .5
- \*(DC[1\(mi9]\*(ST) s=$i ;;
-.sp .5
- \*(DC\(mit) N=t ;;
-.sp .5
- \*(DC\(min) N=n ;;
-.sp .5
- \*(DC\(mi\*(ST) echo unknown flag \\'$i\\' ;;
-.sp .5
- \*(DC\*(ST) if [ \(mif man$s/$i.$s ]
- \*(DC then
- \*(DC ${N}roff \(miman man$s/$i.$s
- \*(DC else # look through all manual sections
- \*(DC found=no
- \*(DC for j in 1 2 3 4 5 6 7 8 9
- \*(DC do
- \*(DC \*(DOif [ \(mif man$j/$i.$j ]
- \*(DC \*(DOthen
- \*(DC \*(DO\*(THman $j $i
- \*(DC \*(DO\*(THfound=yes
- \*(DC \*(DO\*(THbreak
- \*(DC \*(DOfi
- \*(DC done
- \*(DC case $found in
- \*(DC \*(Cano) echo \\'$i: manual page not found\\'
- \*(DC esac
- \*(DC fi
- \*(DOesac
- done
-.DE
-.ce
-.ft B
-Figure 1. A version of the man command
-.ft R
diff --git a/bin/sh/USD.doc/t3 b/bin/sh/USD.doc/t3
deleted file mode 100644
index aab53ee..0000000
--- a/bin/sh/USD.doc/t3
+++ /dev/null
@@ -1,976 +0,0 @@
-.\" $NetBSD: t3,v 1.3 2010/08/22 02:19:07 perry Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions are
-.\" met:
-.\"
-.\" Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following
-.\" disclaimer.
-.\"
-.\" Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\"
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc. Neither the name of Caldera International, Inc.
-.\" nor the names of other contributors may be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-.\" DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-.\" OR OTHERWISE) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)t3 8.1 (Berkeley) 6/8/93
-.\"
-.SH
-3.0\ Keyword\ parameters
-.LP
-Shell variables may be given values
-by assignment
-or when a shell script is invoked.
-An argument to a command of the form
-\fIname=value\fP
-that precedes the command name
-causes \fIvalue\fP
-to be assigned to \fIname\fP
-before execution of the command begins.
-The value of \fIname\fP in the invoking
-shell is not affected.
-For example,
-.DS
- user=fred\ command
-.DE
-will execute \fIcommand\fP with
-\fBuser\fP set to \fIfred\fP.
-.\" Removed by Perry Metzger because -k is not in POSIX
-.\"
-.\" The \fB\(mik\fR flag causes arguments of the form
-.\" \fIname=value\fP to be interpreted in this way
-.\" anywhere in the argument list.
-.\" Such \fInames\fP are sometimes
-.\" called keyword parameters.
-.\" If any arguments remain they
-.\" are available as positional
-.\" parameters \fB$1, $2, \*(ZZ\|.\fP
-.LP
-The \fIset\fP command
-may also be used to set positional parameters
-from within a script.
-For example,
-.DS
- set\ \(mi\(mi\ \*(ST
-.DE
-will set \fB$1\fP to the first file name
-in the current directory, \fB$2\fP to the next,
-and so on.
-Note that the first argument, \(mi\(mi, ensures correct treatment
-when the first file name begins with a \(mi\|.
-.LP
-.SH
-3.1\ Parameter\ transmission
-.LP
-When a command is executed both positional parameters
-and shell variables may be set on invocation.
-Variables are also made available implicitly
-to a command
-by specifying in advance that such parameters
-are to be exported from the invoking shell.
-For example,
-.DS
- export\ user\ box=red
-.DE
-marks the variables \fBuser\fP and \fBbox\fP
-for export (setting \fBbox\fP to ``red'' in the process).
-When a command is invoked
-copies are made of all exportable variables
-(also known as \fIenvironment variables\fP)
-for use within the invoked program.
-Modification of such variables
-within an invoked command does not
-affect the values in the invoking shell.
-It is generally true of
-a shell script or other program
-that it
-cannot modify the state
-of its caller without explicit
-actions on the part of the caller.
-.\" Removed by Perry Metzger because this is confusing to beginners.
-.\"
-.\" (Shared file descriptors are an
-.\" exception to this rule.)
-.LP
-Names whose value is intended to remain
-constant may be declared \fIreadonly\|.\fP
-The form of this command is the same as that of the \fIexport\fP
-command,
-.DS
- readonly name[=value] \*(ZZ
-.DE
-Subsequent attempts to set readonly variables
-are illegal.
-.SH
-3.2\ Parameter\ substitution
-.LP
-If a shell parameter is not set
-then the null string is substituted for it.
-For example, if the variable \fBd\fP
-is not set
-.DS
- echo $d
-.DE
-or
-.DS
- echo ${d}
-.DE
-will echo nothing.
-A default string may be given
-as in
-.DS
- echo ${d:\(mi\fB.\fR}
-.DE
-which will echo
-the value of the variable \fBd\fP
-if it is set and not null and `\fB.\fP' otherwise.
-The default string is evaluated using the usual
-quoting conventions so that
-.DS
- echo ${d:\(mi\'\*(ST\'}
-.DE
-will echo \fB\*(ST\fP if the variable \fBd\fP
-is not set or null.
-Similarly
-.DS
- echo ${d:\(mi$1}
-.DE
-will echo the value of \fBd\fP if it is set and not null
-and the value (if any) of \fB$1\fP otherwise.
-.LP
-The notation ${d:+\fB.\fR} performs the inverse operation. It
-substitutes `\fB.\fP' if \fBd\fP is set or not null, and otherwise
-substitutes null.
-.LP
-A variable may be assigned a default value
-using
-the notation
-.DS
- echo ${d:=\fB.\fR}
-.DE
-which substitutes the same string as
-.DS
- echo ${d:\(mi\fB.\fR}
-.DE
-and if \fBd\fP were not previously set or null
-then it will be set to the string `\fB.\fP'\|.
-.LP
-If there is no sensible default then
-the notation
-.DS
- echo ${d:?\fImessage\fP}
-.DE
-will echo the value of the variable \fBd\fP if it is set and not null,
-otherwise \fImessage\fP is printed by the shell and
-execution of the shell script is abandoned.
-If \fImessage\fP is absent then a standard message
-is printed.
-A shell script that requires some variables
-to be set might start as follows:
-.DS
- :\ ${user:?}\ ${acct:?}\ ${bin:?}
- \*(ZZ
-.DE
-Colon (\fB:\fP) is a command
-that is
-built in to the shell and does nothing
-once its arguments have been evaluated.
-If any of the variables \fBuser, acct\fP
-or \fBbin\fP are not set then the shell
-will abandon execution of the script.
-.SH
-3.3\ Command\ substitution
-.LP
-The standard output from a command can be
-substituted in a similar way to parameters.
-The command \fIpwd\fP prints on its standard
-output the name of the current directory.
-For example, if the current directory is
-\fB/usr/fred/bin\fR
-then the commands
-.DS
- d=$(pwd)
-.DE
-(or the older notation d=\`pwd\`)
-is equivalent to
-.DS
- d=/usr/fred/bin
-.DE
-.LP
-The entire string inside $(\*(ZZ)\| (or between grave accents \`\*(ZZ\`)
-is taken as the command
-to be executed
-and is replaced with the output from
-the command.
-(The difference between the $(\*(ZZ) and \`\*(ZZ\` notations is that
-the former may be nested, while the latter cannot be.)
-.LP
-The command is written using the usual quoting conventions,
-except that inside \`\*(ZZ\`
-a \fB\`\fR must be escaped using
-a \fB\\\|\fR.
-For example,
-.DS
- ls $(echo "$HOME")
-.DE
-is equivalent to
-.DS
- ls $HOME
-.DE
-Command substitution occurs in all contexts
-where parameter substitution occurs (including \fIhere\fP documents) and the
-treatment of the resulting text is the same
-in both cases.
-This mechanism allows string
-processing commands to be used within
-shell scripts.
-An example of such a command is \fIbasename\fP
-which removes a specified suffix from a string.
-For example,
-.DS
- basename main\fB.\fPc \fB.\fPc
-.DE
-will print the string \fImain\|.\fP
-Its use is illustrated by the following
-fragment from a \fIcc\fP command.
-.DS
- case $A in
- \*(Ca\*(ZZ
- \*(Ca\*(ST\fB.\fPc) B=$(basename $A \fB.\fPc)
- \*(Ca\*(ZZ
- esac
-.DE
-that sets \fBB\fP to the part of \fB$A\fP
-with the suffix \fB.c\fP stripped.
-.LP
-Here are some composite examples.
-.RS
-.IP \(bu
-.ft B
-for i in \`ls \(mit\`; do \*(ZZ
-.ft R
-.br
-The variable \fBi\fP is set
-to the names of files in time order,
-most recent first.
-.IP \(bu
-.ft B
-set \(mi\(mi\| \`date\`; echo $6 $2 $3, $4
-.ft R
-.br
-will print, e.g.,
-.ft I
-1977 Nov 1, 23:59:59
-.ft R
-.RE
-.SH
-3.4\ Arithmetic\ Expansion
-.LP
-Within a $((\*(ZZ)) construct, integer arithmetic operations are
-evaluated.
-(The $ in front of variable names is optional within $((\*(ZZ)).
-For example:
-.DS
- x=5; y=1
- echo $(($x+3*2))
- echo $((y+=x))
- echo $y
-.DE
-will print `11', then `6', then `6' again.
-Most of the constructs permitted in C arithmetic operations are
-permitted though some (like `++') are not universally supported \(em
-see the shell manual page for details.
-.SH
-3.5\ Evaluation\ and\ quoting
-.LP
-The shell is a macro processor that
-provides parameter substitution, command substitution and file
-name generation for the arguments to commands.
-This section discusses the order in which
-these evaluations occur and the
-effects of the various quoting mechanisms.
-.LP
-Commands are parsed initially according to the grammar
-given in appendix A.
-Before a command is executed
-the following
-substitutions occur.
-.RS
-.IP \(bu
-parameter substitution, e.g. \fB$user\fP
-.IP \(bu
-command substitution, e.g. \fB$(pwd)\fP or \fB\`pwd\`\fP
-.IP \(bu
-arithmetic expansion, e.g. \fB$(($count+1))\fP
-.RS
-.LP
-Only one evaluation occurs so that if, for example, the value of the variable
-\fBX\fP
-is the string \fI$y\fP
-then
-.DS
- echo $X
-.DE
-will echo \fI$y\|.\fP
-.RE
-.IP \(bu
-blank interpretation
-.RS
-.LP
-Following the above substitutions
-the resulting characters
-are broken into non-blank words (\fIblank interpretation\fP).
-For this purpose `blanks' are the characters of the string
-\fB$\s-1IFS\s0\fP.
-By default, this string consists of blank, tab and newline.
-The null string
-is not regarded as a word unless it is quoted.
-For example,
-.DS
- echo \'\'
-.DE
-will pass on the null string as the first argument to \fIecho\fP,
-whereas
-.DS
- echo $null
-.DE
-will call \fIecho\fR with no arguments
-if the variable \fBnull\fP is not set
-or set to the null string.
-.RE
-.IP \(bu
-file name generation
-.RS
-.LP
-Each word
-is then scanned for the file pattern characters
-\fB\*(ST, ?\fR and \fB[\*(ZZ]\fR
-and an alphabetical list of file names
-is generated to replace the word.
-Each such file name is a separate argument.
-.RE
-.RE
-.LP
-The evaluations just described also occur
-in the list of words associated with a \fBfor\fP
-loop.
-Only substitution occurs
-in the \fIword\fP used
-for a \fBcase\fP branch.
-.LP
-As well as the quoting mechanisms described
-earlier using \fB\\\fR and \fB\'\*(ZZ\'\fR
-a third quoting mechanism is provided using double quotes.
-Within double quotes parameter and command substitution
-occurs but file name generation and the interpretation
-of blanks does not.
-The following characters
-have a special meaning within double quotes
-and may be quoted using \fB\\\|.\fP
-.DS
- \fB$ \fPparameter substitution
- \fB$()\fP command substitution
- \fB\`\fP command substitution
- \fB"\fP ends the quoted string
- \fB\e\fP quotes the special characters \fB$ \` " \e\fP
-.DE
-For example,
-.DS
- echo "$x"
-.DE
-will pass the value of the variable \fBx\fP as a
-single argument to \fIecho.\fP
-Similarly,
-.DS
- echo "$\*(ST"
-.DE
-will pass the positional parameters as a single
-argument and is equivalent to
-.DS
- echo "$1 $2 \*(ZZ"
-.DE
-The notation \fB$@\fP
-is the same as \fB$\*(ST\fR
-except when it is quoted.
-.DS
- echo "$@"
-.DE
-will pass the positional parameters, unevaluated, to \fIecho\fR
-and is equivalent to
-.DS
- echo "$1" "$2" \*(ZZ
-.DE
-.LP
-The following table gives, for each quoting mechanism,
-the shell metacharacters that are evaluated.
-.DS
-.ce
-.ft I
-metacharacter
-.ft
-.in 1.5i
- \e $ * \` " \'
-\' n n n n n t
-\` y n n t n n
-" y y n y t n
-
- t terminator
- y interpreted
- n not interpreted
-
-.in
-.ft B
-.ce
-Figure 2. Quoting mechanisms
-.ft
-.DE
-.LP
-In cases where more than one evaluation of a string
-is required the built-in command \fIeval\fP
-may be used.
-For example,
-if the variable \fBX\fP has the value
-\fI$y\fP, and if \fBy\fP has the value \fIpqr\fP
-then
-.DS
- eval echo $X
-.DE
-will echo the string \fIpqr\|.\fP
-.LP
-In general the \fIeval\fP command
-evaluates its arguments (as do all commands)
-and treats the result as input to the shell.
-The input is read and the resulting command(s)
-executed.
-For example,
-.DS
- wg=\'eval who\*(VTgrep\'
- $wg fred
-.DE
-is equivalent to
-.DS
- who\*(VTgrep fred
-.DE
-In this example,
-\fIeval\fP is required
-since there is no interpretation
-of metacharacters, such as \fB\*(VT\|\fR, following
-substitution.
-.SH
-3.6\ Error\ handling
-.LP
-The treatment of errors detected by
-the shell depends on the type of error
-and on whether the shell is being
-used interactively.
-An interactive shell is one whose
-input and output are connected
-to a terminal.
-.\" Removed by Perry Metzger, obsolete and excess detail
-.\"
-.\" (as determined by
-.\" \fIgtty\fP (2)).
-A shell invoked with the \fB\(mii\fP
-flag is also interactive.
-.LP
-Execution of a command (see also 3.7) may fail
-for any of the following reasons.
-.IP \(bu
-Input output redirection may fail.
-For example, if a file does not exist
-or cannot be created.
-.IP \(bu
-The command itself does not exist
-or cannot be executed.
-.IP \(bu
-The command terminates abnormally,
-for example, with a "bus error"
-or "memory fault".
-See Figure 2 below for a complete list
-of UNIX signals.
-.IP \(bu
-The command terminates normally
-but returns a non-zero exit status.
-.LP
-In all of these cases the shell
-will go on to execute the next command.
-Except for the last case an error
-message will be printed by the shell.
-All remaining errors cause the shell
-to exit from a script.
-An interactive shell will return
-to read another command from the terminal.
-Such errors include the following.
-.IP \(bu
-Syntax errors.
-e.g., if \*(ZZ then \*(ZZ done
-.IP \(bu
-A signal such as interrupt.
-The shell waits for the current
-command, if any, to finish execution and
-then either exits or returns to the terminal.
-.IP \(bu
-Failure of any of the built-in commands
-such as \fIcd.\fP
-.LP
-The shell flag \fB\(mie\fP
-causes the shell to terminate
-if any error is detected.
-.DS
-1 hangup
-2 interrupt
-3* quit
-4* illegal instruction
-5* trace trap
-6* IOT instruction
-7* EMT instruction
-8* floating point exception
-9 kill (cannot be caught or ignored)
-10* bus error
-11* segmentation violation
-12* bad argument to system call
-13 write on a pipe with no one to read it
-14 alarm clock
-15 software termination (from \fIkill\fP (1))
-
-.DE
-.ft B
-.ce
-Figure 3. UNIX signals\(dg
-.ft
-.FS
-\(dg Additional signals have been added in modern Unix.
-See \fIsigvec\fP(2) or \fIsignal\fP(3) for an up-to-date list.
-.FE
-Those signals marked with an asterisk
-produce a core dump
-if not caught.
-However,
-the shell itself ignores quit which is the only
-external signal that can cause a dump.
-The signals in this list of potential interest
-to shell programs are 1, 2, 3, 14 and 15.
-.SH
-3.7\ Fault\ handling
-.LP
-shell scripts normally terminate
-when an interrupt is received from the
-terminal.
-The \fItrap\fP command is used
-if some cleaning up is required, such
-as removing temporary files.
-For example,
-.DS
- trap\ \'rm\ /tmp/ps$$; exit\'\ 2
-.DE
-sets a trap for signal 2 (terminal
-interrupt), and if this signal is received
-will execute the commands
-.DS
- rm /tmp/ps$$; exit
-.DE
-\fIexit\fP is
-another built-in command
-that terminates execution of a shell script.
-The \fIexit\fP is required; otherwise,
-after the trap has been taken,
-the shell will resume executing
-the script
-at the place where it was interrupted.
-.LP
-UNIX signals can be handled in one of three ways.
-They can be ignored, in which case
-the signal is never sent to the process.
-They can be caught, in which case the process
-must decide what action to take when the
-signal is received.
-Lastly, they can be left to cause
-termination of the process without
-it having to take any further action.
-If a signal is being ignored
-on entry to the shell script, for example,
-by invoking it in the background (see 3.7) then \fItrap\fP
-commands (and the signal) are ignored.
-.LP
-The use of \fItrap\fP is illustrated
-by this modified version of the \fItouch\fP
-command (Figure 4).
-The cleanup action is to remove the file \fBjunk$$\fR\|.
-.DS
- #!/bin/sh
-
- flag=
- trap\ \'rm\ \(mif\ junk$$;\ exit\'\ 1 2 3 15
- for i
- do\ case\ $i\ in
- \*(DC\(mic) flag=N ;;
- \*(DC\*(ST) if\ test\ \(mif\ $i
- \*(DC then cp\ $i\ junk$$;\ mv\ junk$$ $i
- \*(DC elif\ test\ $flag
- \*(DC then echo\ file\ \\'$i\\'\ does\ not\ exist
- \*(DC else >$i
- \*(DC fi
- \*(DOesac
- done
-.DE
-.sp
-.ft B
-.ce
-Figure 4. The touch command
-.ft
-.sp
-The \fItrap\fP command
-appears before the creation
-of the temporary file;
-otherwise it would be
-possible for the process
-to die without removing
-the file.
-.LP
-Since there is no signal 0 in UNIX
-it is used by the shell to indicate the
-commands to be executed on exit from the
-shell script.
-.LP
-A script may, itself, elect to
-ignore signals by specifying the null
-string as the argument to trap.
-The following fragment is taken from the
-\fInohup\fP command.
-.DS
- trap \'\' 1 2 3 15
-.DE
-which causes \fIhangup, interrupt, quit \fRand\fI kill\fR
-to be ignored both by the
-script and by invoked commands.
-.LP
-Traps may be reset by saying
-.DS
- trap 2 3
-.DE
-which resets the traps for signals 2 and 3 to their default values.
-A list of the current values of traps may be obtained
-by writing
-.DS
- trap
-.DE
-.LP
-The script \fIscan\fP (Figure 5) is an example
-of the use of \fItrap\fP where there is no exit
-in the trap command.
-\fIscan\fP takes each directory
-in the current directory, prompts
-with its name, and then executes
-commands typed at the terminal
-until an end of file or an interrupt is received.
-Interrupts are ignored while executing
-the requested commands but cause
-termination when \fIscan\fP is
-waiting for input.
-.DS
- d=\`pwd\`
- for\ i\ in\ \*(ST
- do\ if\ test\ \(mid\ $d/$i
- \*(DOthen\ cd\ $d/$i
- \*(DO\*(THwhile\ echo\ "$i:"
- \*(DO\*(TH\*(WHtrap\ exit\ 2
- \*(DO\*(TH\*(WHread\ x
- \*(DO\*(THdo\ trap\ :\ 2;\ eval\ $x;\ done
- \*(DOfi
- done
-.DE
-.sp
-.ft B
-.ce
-Figure 5. The scan command
-.ft
-.sp
-\fIread x\fR is a built-in command that reads one line from the
-standard input
-and places the result in the variable \fBx\|.\fP
-It returns a non-zero exit status if either
-an end-of-file is read or an interrupt
-is received.
-.SH
-3.8\ Command\ execution
-.LP
-To run a command (other than a built-in) the shell first creates
-a new process using the system call \fIfork.\fP
-The execution environment for the command
-includes input, output and the states of signals, and
-is established in the child process
-before the command is executed.
-The built-in command \fIexec\fP
-is used in the rare cases when no fork
-is required
-and simply replaces the shell with a new command.
-For example, a simple version of the \fInohup\fP
-command looks like
-.DS
- trap \\'\\' 1 2 3 15
- exec $\*(ST
-.DE
-The \fItrap\fP turns off the signals specified
-so that they are ignored by subsequently created commands
-and \fIexec\fP replaces the shell by the command
-specified.
-.LP
-Most forms of input output redirection have already been
-described.
-In the following \fIword\fP is only subject
-to parameter and command substitution.
-No file name generation or blank interpretation
-takes place so that, for example,
-.DS
- echo \*(ZZ >\*(ST.c
-.DE
-will write its output into a file whose name is \fB\*(ST.c\|.\fP
-Input output specifications are evaluated left to right
-as they appear in the command.
-.IP >\ \fIword\fP 12
-The standard output (file descriptor 1)
-is sent to the file \fIword\fP which is
-created if it does not already exist.
-.IP \*(AP\ \fIword\fP 12
-The standard output is sent to file \fIword.\fP
-If the file exists then output is appended
-(by seeking to the end);
-otherwise the file is created.
-.IP <\ \fIword\fP 12
-The standard input (file descriptor 0)
-is taken from the file \fIword.\fP
-.IP \*(HE\ \fIword\fP 12
-The standard input is taken from the lines
-of shell input that follow up to but not
-including a line consisting only of \fIword.\fP
-If \fIword\fP is quoted then no interpretation
-of the document occurs.
-If \fIword\fP is not quoted
-then parameter and command substitution
-occur and \fB\\\fP is used to quote
-the characters \fB\\\fP \fB$\fP \fB\`\fP and the first character
-of \fIword.\fP
-In the latter case \fB\\newline\fP is ignored (c.f. quoted strings).
-.IP >&\ \fIdigit\fP 12
-The file descriptor \fIdigit\fP is duplicated using the system
-call \fIdup\fP (2)
-and the result is used as the standard output.
-.IP <&\ \fIdigit\fP 12
-The standard input is duplicated from file descriptor \fIdigit.\fP
-.IP <&\(mi 12
-The standard input is closed.
-.IP >&\(mi 12
-The standard output is closed.
-.LP
-Any of the above may be preceded by a digit in which
-case the file descriptor created is that specified by the digit
-instead of the default 0 or 1.
-For example,
-.DS
- \*(ZZ 2>file
-.DE
-runs a command with message output (file descriptor 2)
-directed to \fIfile.\fP
-.DS
- \*(ZZ 2>&1
-.DE
-runs a command with its standard output and message output
-merged.
-(Strictly speaking file descriptor 2 is created
-by duplicating file descriptor 1 but the effect is usually to
-merge the two streams.)
-.\" Removed by Perry Metzger, most of this is now obsolete
-.\"
-.\" .LP
-.\" The environment for a command run in the background such as
-.\" .DS
-.\" list \*(ST.c \*(VT lpr &
-.\" .DE
-.\" is modified in two ways.
-.\" Firstly, the default standard input
-.\" for such a command is the empty file \fB/dev/null\|.\fR
-.\" This prevents two processes (the shell and the command),
-.\" which are running in parallel, from trying to
-.\" read the same input.
-.\" Chaos would ensue
-.\" if this were not the case.
-.\" For example,
-.\" .DS
-.\" ed file &
-.\" .DE
-.\" would allow both the editor and the shell
-.\" to read from the same input at the same time.
-.\" .LP
-.\" The other modification to the environment of a background
-.\" command is to turn off the QUIT and INTERRUPT signals
-.\" so that they are ignored by the command.
-.\" This allows these signals to be used
-.\" at the terminal without causing background
-.\" commands to terminate.
-.\" For this reason the UNIX convention
-.\" for a signal is that if it is set to 1
-.\" (ignored) then it is never changed
-.\" even for a short time.
-.\" Note that the shell command \fItrap\fP
-.\" has no effect for an ignored signal.
-.SH
-3.9\ Invoking\ the\ shell
-.LP
-The following flags are interpreted by the shell
-when it is invoked.
-If the first character of argument zero is a minus,
-then commands are read from the file \fB.profile\|.\fP
-.IP \fB\(mic\fP\ \fIstring\fP
-.br
-If the \fB\(mic\fP flag is present then
-commands are read from \fIstring\|.\fP
-.IP \fB\(mis\fP
-If the \fB\(mis\fP flag is present or if no
-arguments remain
-then commands are read from the standard input.
-Shell output is written to
-file descriptor 2.
-.IP \fB\(mii\fP
-If the \fB\(mii\fP flag is present or
-if the shell input and output are attached to a terminal (as told by \fIgtty\fP)
-then this shell is \fIinteractive.\fP
-In this case TERMINATE is ignored (so that \fBkill 0\fP
-does not kill an interactive shell) and INTERRUPT is caught and ignored
-(so that \fBwait\fP is interruptable).
-In all cases QUIT is ignored by the shell.
-.SH
-3.10\ Job\ Control
-.LP
-When a command or pipeline (also known as a \fIjob\fP) is running in
-the foreground, entering the stop character (typically
-\s-1CONTROL-Z\s0 but user settable with the \fIstty\fP(1) command)
-will usually cause the job to stop.
-.LP
-The jobs associated with the current shell may be listed by entering
-the \fIjobs\fP command.
-Each job has an associated \fIjob number\fP.
-Jobs that are stopped may be continued by entering
-.DS
- bg %\fIjobnumber\fP
-.DE
-and jobs may be moved to the foreground by entering
-.DS
- fg %\fIjobnumber\fP
-.DE
-If there is a sole job with a particular name (say only one instance
-of \fIcc\fP running), \fIfg\fP and \fIbg\fP may also use name of the
-command in place of the number, as in:
-.DS
- bg %cc
-.DE
-If no `\fB%\fP' clause is entered, most recently stopped job
-(indicated with a `+' by the \fIjobs\fP command) will be assumed.
-See the manual page for the shell for more details.
-.SH
-3.11\ Aliases
-.LP
-The \fIalias\fP command creates a so-called shell alias, which is an
-abbreviation that macro-expands at run time into some other command.
-For example:
-.DS
- alias ls="ls -F"
-.DE
-would cause the command sequence \fBls -F\fP to be executed whenever
-the user types \fBls\fP into the shell.
-Note that if the user types \fBls -a\fP, the shell will in fact
-execute \fBls -F -a\fP.
-The command \fBalias\fP on its own prints out all current aliases.
-The \fIunalias\fP command, as in:
-.DS
- unalias ls
-.DE
-will remove an existing alias.
-Aliases can shadow pre-existing commands, as in the example above.
-They are typically used to override the interactive behavior of
-commands in small ways, for example to always invoke some program with
-a favorite option, and are almost never found in scripts.
-.SH
-3.12\ Command\ Line\ Editing\ and\ Recall
-.LP
-When working interactively with the shell, it is often tedious to
-retype previously entered commands, especially if they are complicated.
-The shell therefore maintains a so-called \fIhistory\fP, which is
-stored in the file specified by the \fB\s-1HISTFILE\s0\fP environment
-variable if it is set.
-Users may view, edit, and re-enter previous lines of input using
-a small subset of the commands of the \fIvi\fP(1) or
-\fIemacs\fP(1)\(dg editors.
-.FS
-Technically, vi command editing is standardized by POSIX while emacs
-is not.
-However, all modern shells support both styles.
-.FE
-Emacs style editing may be selected by entering
-.DS
- set -o emacs
-.DE
-and vi style editing may be selected with
-.DS
- set -o vi
-.DE
-The details of how command line editing works are beyond the scope of
-this document.
-See the shell manual page for details.
-.SH
-Acknowledgements
-.LP
-The design of the shell is
-based in part on the original UNIX shell
-.[
-unix command language thompson
-.]
-and the PWB/UNIX shell,
-.[
-pwb shell mashey unix
-.]
-some
-features having been taken from both.
-Similarities also exist with the
-command interpreters
-of the Cambridge Multiple Access System
-.[
-cambridge multiple access system hartley
-.]
-and of CTSS.
-.[
-ctss
-.]
-.LP
-I would like to thank Dennis Ritchie
-and John Mashey for many
-discussions during the design of the shell.
-I am also grateful to the members of the Computing Science Research Center
-and to Joe Maranzano for their
-comments on drafts of this document.
-.SH
-.[
-$LIST$
-.]
diff --git a/bin/sh/USD.doc/t4 b/bin/sh/USD.doc/t4
deleted file mode 100644
index 7719d6c..0000000
--- a/bin/sh/USD.doc/t4
+++ /dev/null
@@ -1,180 +0,0 @@
-.\" $NetBSD: t4,v 1.3 2010/08/22 02:19:07 perry Exp $
-.\"
-.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions are
-.\" met:
-.\"
-.\" Redistributions of source code and documentation must retain the above
-.\" copyright notice, this list of conditions and the following
-.\" disclaimer.
-.\"
-.\" Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\"
-.\" This product includes software developed or owned by Caldera
-.\" International, Inc. Neither the name of Caldera International, Inc.
-.\" nor the names of other contributors may be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
-.\" INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-.\" DISCLAIMED. IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR
-.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-.\" OR OTHERWISE) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" @(#)t4 8.1 (Berkeley) 8/14/93
-.\"
-.bp
-.SH
-Appendix\ A\ -\ Grammar
-.LP
-Note: This grammar needs updating, it is obsolete.
-.LP
-.LD
-\fIitem: word
- input-output
- name = value
-.sp 0.7
-simple-command: item
- simple-command item
-.sp 0.7
-command: simple-command
- \fB( \fIcommand-list \fB)
- \fB{ \fIcommand-list \fB}
- \fBfor \fIname \fBdo \fIcommand-list \fBdone
- \fBfor \fIname \fBin \fIword \*(ZZ \fBdo \fIcommand-list \fBdone
- \fBwhile \fIcommand-list \fBdo \fIcommand-list \fBdone
- \fBuntil \fIcommand-list \fBdo \fIcommand-list \fBdone
- \fBcase \fIword \fBin \fIcase-part \*(ZZ \fBesac
- \fBif \fIcommand-list \fBthen \fIcommand-list \fIelse-part \fBfi
-.sp 0.7
-\fIpipeline: command
- pipeline \fB\*(VT\fI command
-.sp 0.7
-andor: pipeline
- andor \fB&&\fI pipeline
- andor \fB\*(VT\*(VT\fI pipeline
-.sp 0.7
-command-list: andor
- command-list \fB;\fI
- command-list \fB&\fI
- command-list \fB;\fI andor
- command-list \fB&\fI andor
-.sp 0.7
-input-output: \fB> \fIfile
- \fB< \fIfile
- \fB\*(AP \fIword
- \fB\*(HE \fIword
-.sp 0.7
-file: word
- \fB&\fI digit
- \fB&\fI \(mi
-.sp 0.7
-case-part: pattern\fB ) \fIcommand-list\fB ;;
-.sp 0.7
-\fIpattern: word
- pattern \fB\*(VT\fI word
-.sp 0.7
-\fIelse-part: \fBelif \fIcommand-list\fB then\fI command-list else-part\fP
- \fBelse \fIcommand-list\fI
- empty
-.sp 0.7
-empty:
-.sp 0.7
-word: \fRa sequence of non-blank characters\fI
-.sp 0.7
-name: \fRa sequence of letters, digits or underscores starting with a letter\fI
-.sp 0.7
-digit: \fB0 1 2 3 4 5 6 7 8 9\fP
-.DE
-.LP
-.bp
-.SH
-Appendix\ B\ -\ Meta-characters\ and\ Reserved\ Words
-.LP
-a) syntactic
-.RS
-.IP \fB\*(VT\fR 6
-pipe symbol
-.IP \fB&&\fR 6
-`andf' symbol
-.IP \fB\*(VT\*(VT\fR 6
-`orf' symbol
-.IP \fB;\fP 8
-command separator
-.IP \fB;;\fP 8
-case delimiter
-.IP \fB&\fP 8
-background commands
-.IP \fB(\ )\fP 8
-command grouping
-.IP \fB<\fP 8
-input redirection
-.IP \fB\*(HE\fP 8
-input from a here document
-.IP \fB>\fP 8
-output creation
-.IP \fB\*(AP\fP 8
-output append
-.sp 2
-.RE
-.LP
-b) patterns
-.RS
-.IP \fB\*(ST\fP 8
-match any character(s) including none
-.IP \fB?\fP 8
-match any single character
-.IP \fB[...]\fP 8
-match any of the enclosed characters
-.sp 2
-.RE
-.LP
-c) substitution
-.RS
-.IP \fB${...}\fP 8
-substitute shell variable
-.IP \fB$(...)\fP 8
-substitute command output
-.IP \fB\`...\`\fP 8
-substitute command output
-.IP \fB$((...))\fP 8
-substitute arithmetic expression
-.sp 2
-.RE
-.LP
-d) quoting
-.RS
-.IP \fB\e\fP 8
-quote the next character
-.IP \fB\'...\'\fP 8
-quote the enclosed characters except for \'
-.IP \fB"\&..."\fP 8
-quote the enclosed characters except
-for \fB$ \` \e "\fP
-.sp 2
-.RE
-.LP
-e) reserved words
-.DS
-.ft B
-if then else elif fi
-case in esac
-for while until do done
-! { }
-.ft
-.DE