summaryrefslogtreecommitdiff
path: root/static/v10/man1/sh.1
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-26 16:38:00 -0400
commit97d5c458cfa039d857301e1ca7d5af3beb37131d (patch)
treeb460cd850d0537eb71806ba30358840377b27688 /static/v10/man1/sh.1
parentb89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff)
build: Better Build System
Diffstat (limited to 'static/v10/man1/sh.1')
-rw-r--r--static/v10/man1/sh.1386
1 files changed, 0 insertions, 386 deletions
diff --git a/static/v10/man1/sh.1 b/static/v10/man1/sh.1
deleted file mode 100644
index 114920c2..00000000
--- a/static/v10/man1/sh.1
+++ /dev/null
@@ -1,386 +0,0 @@
-.pa 1
-.he 'SH (I)'1/15/73'SH (I)'
-.ti 0
-NAME sh -- shell (command interpreter)
-.sp
-.ti 0
-SYNOPSIS sh__ [ name [ arg\d1\u ... [ arg\d9\u ] ] ]
-.sp
-.ti 0
-DESCRIPTION
-.br
-.in 8
-sh__
-is the standard command interpreter.
-It is the program which reads and arranges the execution of
-the command lines typed by most users.
-It may itself be called as a command to interpret
-files of commands.
-Before discussing the arguments to the shell
-used as a command, the structure of command
-lines themselves will be given.
-
-.ul
-Command lines
-.sp
-Command lines are sequences of commands separated by command
-delimiters.
-Each command is a sequence of non-blank command arguments
-separated by blanks.
-The
-first argument specifies the name of a command to be
-executed. Except for certain types of special
-arguments discussed below, the arguments
-other than the command name are passed
-without interpretation to the invoked
-command.
-.sp
-If the first argument is the name of an executable
-file, it is invoked;
-otherwise the string "/bin/" is prepended to the argument.
-(In this way most standard commands,
-which reside in "/bin", are found.)
-If no such command is found,
-the string "/usr" is further prepended
-(to give "/usr/bin/command") and another attempt
-is made to execute the resulting
-file.
-(Certain "overflow" commands
-live in "/usr/bin".) If
-the "/usr/bin" file exists, but is not
-executable, it is used by the shell as
-a command file.
-That is to say it is executed
-as though it were typed from the console.
-If all attempts fail, a diagnostic is printed.
-.sp
-The remaining non-special arguments are simply passed to the command
-without further interpretation by the shell.
-.sp
-.ul
-Command delimiters
-
-There are three command delimiters: the new-line, ";", and "&".
-The semicolon ";" specifies sequential execution of the commands
-so separated; that is,
-.sp
- coma; comb
-.sp
-causes the execution first of command coma____, then of comb____.
-The ampersand "&" causes simultaneous execution:
-.sp
- coma & comb
-.sp
-causes coma____ to be called,
-followed immediately by comb____ without waiting for coma____ to finish.
-Thus coma____ and comb____
-execute simultaneously. As a special case,
-.sp
- coma &
-.sp
-causes coma____ to be executed and the shell immediately
-to request another command without waiting for coma____.
-.a
-.sp
-.ul
-Termination Reporting
-.sp
-If a command (not followed by "&") terminates abnormally,
-a message is printed.
-(All terminations other than exit and interrupt
-are considered abnormal.)
-The following is a list of the abnormal
-termination messages:
-.sp
- Bus error
- Trace/BPT trap
- Illegal instruction
- IOT trap
- Power fail trap
- EMT trap
- Bad system call
- Quit
- PIR trap
- Floating exception
- Memory violation
- Killed
- User I/O
- Error
-.sp
-If a core image is produced,
-" -- Core dumped" is appended to the appropriate message.
-.sp
-.ul
-Redirection of I/O
-
-Three character sequences cause the immediately following string
-to be interpreted as a special argument to the shell itself, not
-passed to the command.
-
-An argument of the form "<arg" causes the file arg___
-to be used as the standard input file of the given command.
-
-An argument of the form ">arg" causes file "arg" to be used
-as the standard output file for the given command.
-"Arg" is created if it did not exist, and in any case is truncated
-at the outset.
-
-An argument of the form ">>arg" causes file "arg" to be used as the
-standard output for the given command. If "arg"
-did not exist, it is created; if it did exist,
-the command output is appended to the file.
-
-.ul
-Pipes and Filters
-
-A pipe____ is a channel such that information
-can be written into one end of the pipe by one program,
-and read at the other end by another program.
-(See pipe____ (II)). A
-filter______ is a program which reads the standard
-input file, performs some transformation,
-and writes the result on the standard output file.
-By extending the syntax used
-for redirection of I/O, a command line can
-specify that the output produced by
-a command be passed via a pipe
-through another command which acts as a filter.
-For example:
-
- command >filter>
-
-More generally, special arguments of the form
-
- >f\d1\u>f\d2\u>...>
-
-specify that output is to be passed successively
-through the filters f\d1\u, f\d2\u, ...,
-and end up on the standard output stream.
-By saying instead
-
- >f\d1\u>f\d2\u>...>file
-
-the output finally ends up in file____. (The
-last ">" could also have been a ">>"
-to specify concatenation onto the end of file____.)
-
-In exactly analogous manner input filtering can
-be specified via one of
-
- <f\d1\u<f\d2\u<...<
- <f\d1\u<f\d2\u<...<file
-
-Both input and output filtering
-can be specified in the same command, though not in the same
-special argument.
-
-For example:
-
- ls >pr>
-
-produces a listing of the current directory with
-page headings, while
-
- ls >pr>xx
-
-puts the paginated listing into the file xx.
-
-If any of the filters needs arguments, quotes can be used
-to prevent the required blank characters from
-violating the blankless
-syntax of filters.
-For example:
-
- ls >"pr -h 'My directory'">
-
-uses quotes twice, once to protect the entire pr__ command,
-once to protect the heading argument of pr__.
-(Quotes are discussed fully below.)
-
-.ul
-Generation of argument lists
-
-If any argument contains any of the characters "?",
-"*" or '[', it is treated specially as follows.
-The current directory is searched for files which match_____
-the given argument.
-
-The character "*" in an argument matches any string of characters
-in a file name (including the null string).
-
-The character "?" matches any
-single character in a file name.
-
-Square brackets "[...]" specify
-a class of characters which
-matches any single file-name character in the class.
-Within the brackets,
-each ordinary character is taken
-to be a member of the class.
-A pair of characters separated by "-" places
-in the class
-each character lexically greater than or equal to
-the first and less than or equal to the second
-member of the pair.
-
-Other characters match only the same character in
-the file name.
-
-For example, "*" matches all file names;
-"?" matches all one-character file names; "[ab]*.s" matches
-all file names beginning with "a" or "b" and ending with ".s";
-"?[zi-m]" matches all two-character file names ending
-with "z" or the letters "i" through "m".
-
-If the argument with "*" or "?" also contains a "/", a slightly
-different procedure is used: instead of the current directory,
-the directory used is the one obtained
-by taking the argument up to the last "/" before a "*" or "?".
-The matching process matches the remainder of the argument
-after this "/" against the files in the derived directory.
-For example: "/usr/dmr/a*.s" matches
-all files in directory "/usr/dmr" which begin
-with "a" and end with ".s".
-
-In any event, a list of names is obtained which match
-the argument. This list is sorted into alphabetical order,
-and the resulting sequence of arguments replaces the
-single argument containing the "*", "[", or "?".
-The same process is carried out for each argument
-(the resulting lists are not___ merged)
-and finally the command is called with the resulting list of
-arguments.
-
-For example: directory /usr/dmr contains the files
-a1.s, a2.s, ..., a9.s. From any directory, the command
-
- as /usr/dmr/a?.s
-
-calls as__ with arguments
-/usr/dmr/a1.s, /usr/dmr/a2.s, ...
-/usr/dmr/a9.s
-in that order.
-.sp
-.ul
-.ul
-Quoting
-
-The character "\\" causes the immediately following character
-to lose any special meaning it may have to the shell; in this
-way "<", ">", and other characters meaningful to the
-shell may be passed as part of arguments.
-A special case of this feature allows the continuation of commands
-onto more than one line: a new-line preceded by "\\" is translated
-into a blank.
-.sp
-Sequences of characters enclosed in double (") or single (')
-quotes are also taken literally.
-.sp
-.ul
-Argument passing
-
-When the shell is invoked as a command, it has additional
-string processing capabilities.
-Recall that the form in which the shell is invoked is
-
- sh [ name [ arg\d1\u ... [ arg\d9\u ] ] ]
-
-The name____ is the name of a file which will be read and
-interpreted. If not given, this subinstance of the shell
-will continue to read the standard input file.
-
-In command lines in the file
-(not in command input),
-character sequences of the form "$n", where n_ is a digit 0, ..., 9,
-are replaced by the n_th argument to the invocation
-of the shell (arg\dn\u).
-"$0" is replaced by name____.
-
-.ul
-End of file
-
-An end-of-file in the shell's input causes it to exit.
-A side effect of this fact means that the way to
-log out from UNIX is to type an end of file.
-
-.ul
-Special commands
-
-Two commands are treated specially by the shell.
-
-"Chdir" is done without
-spawning a new process by executing the sys___ chdir_____
-primitive.
-
-"Login" is done by executing
-/bin/login without creating a new process.
-
-These peculiarities are inexorably imposed
-upon the shell by the basic structure
-of the UNIX process control system.
-It is a rewarding exercise to work
-out why.
-
-.ul
-Command file errors; interrupts
-
-Any shell-detected error, or an interrupt signal,
-during the execution of a command file
-causes the shell to cease execution of that file.
-
-.in 16
-.ti 0
-FILES /etc/glob,
-which interprets "*", "?", and "[".
-.sp
-.ti 0
-SEE ALSO "The UNIX Time-sharing System",
-which gives the theory of operation of the
-shell.
-.sp
-.ti 0
-DIAGNOSTICS
-.br
-.in 8
-"Input not found", when a command file is
-specified which cannot be read;
-.br
-"Arg count", if the number of arguments to the chdir pseudo-command
-is not exactly 1,
-or if "*", "?", or "[" is used inappropriately;
-.br
-"Bad directory", if the directory given in "chdir" cannot be
-switched to;
-.br
-"Try again", if no new process can be created to execute
-the specified command;
-.br
-""' imbalance", if single or double quotes are not matched;
-.br
-"Input file", if an argument after "<" cannot be read;
-.br
-"Output file", if an argument after ">" or ">>" cannot
-be written (or created);
-.br
-"Command not found", if the specified command cannot be executed.
-.br
-"No match", if no arguments are generated for a command
-which contains "*", "?", or "[".
-.br
-Termination messages described above.
-.sp
-.in 16
-.ti 0
-BUGS If any argument contains a quoted "*",
-"?", or "[", then all instances of these characters
-must be quoted.
-This is because sh__ calls the glob____ routine whenever
-an unquoted "*", "?", or "[" is noticed;
-the fact that other instances of these characters occurred
-quoted is not noticed by glob____.
-
-When output is redirected,
-particularly through a filter,
-diagnostics tend to be
-sent down the pipe and are sometimes
-lost altogether.