diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-26 16:38:00 -0400 |
| commit | 97d5c458cfa039d857301e1ca7d5af3beb37131d (patch) | |
| tree | b460cd850d0537eb71806ba30358840377b27688 /static/v10/man1/sh.1 | |
| parent | b89dc2331a50c63f8b33272a5c4c61ab98abdaa3 (diff) | |
build: Better Build System
Diffstat (limited to 'static/v10/man1/sh.1')
| -rw-r--r-- | static/v10/man1/sh.1 | 386 |
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. |
