|
|
1.1 ! root 1: .nr OJ 1 \" Job Control ! 2: .nr OE 1 \" Command Editing ! 3: .nr OB 1 \" BSD enhanced ulimit options ! 4: .ds OK [\| ! 5: .ds CK \|] ! 6: .TH KSH "MWC In-House Docs" ! 7: .SH NAME ! 8: ksh \- Korn Shell (Public Domain) ! 9: .SH SYNOPSIS ! 10: \fBksh\fP ! 11: [\fB\-\fIset_options\fR] [\fB\-st\fP] [\fB\-c\fP \fIcommand\fP] ! 12: [\fIfile\fP [\fIargument ...\fP]] ! 13: .SH INTRODUCTION ! 14: This document only summarizes the System V, release 2 shell features. ! 15: All of the System V features except for "restricted mode" ! 16: and the CDPATH and MAIL* variables are implemented. ! 17: See also the BUGS section. ! 18: .LP ! 19: Features of the Korn shell are described in more detail. ! 20: Only a subset of the Korn shell features are currently implemented. ! 21: .SH DESCRIPTION ! 22: .SS Command syntax ! 23: The ``#'' character begins a one-line comment, ! 24: unless the ``#'' occurs inside a word. ! 25: The tokens ``;'', ``|'', ``&'', ``;;'', ``||'', ``&&'', ``('', and ``)'' ! 26: stand by themselves. ! 27: A \fIword\fP is a sequence of any other non-whitespace characters, ! 28: which may also contain quoted strings ! 29: (quote character are ``\''', ``"'', ``\`'', ! 30: or a matching ``${ }'' or ``$( )'' pair). ! 31: A \fIname\fP is an unquoted word made up of letters, digits, or ``_''. ! 32: Any number of whitespace characters (space and tab) may separate words and tokens. ! 33: .LP ! 34: In the following syntax, { ... }? indicates an optional thing, ! 35: { ... }* indicates zero or more repetitions, { ... | ... } indicates alternatives. ! 36: .de S ! 37: .br ! 38: \\$1 ! 39: .br ! 40: .. ! 41: .IP statement: ! 42: .S "\fB(\fP list \fB)\fP" ! 43: .S "\fB{\fP list \fB;\fP \fB}\fP" ! 44: .S "\fBfor\fP name { \fBin\fP { word }* }? \fBdo\fP list \fB;\fP \fBdone\fP" ! 45: .S "{ \fBwhile\fP | \fBuntil\fP } list \fB;\fP \fBdo\fP list \fB;\fP \fBdone\fP" ! 46: .S "\fBif\fP list \fB;\fP \fBthen\fP list \fB;\fP { \fBelif\fP list \fB;\fP \fBthen\fP list \fB;\fP }* { \fBelse\fP list \fB;\fP }?\fBfi\fP" ! 47: .S "\fBcase\fP name \fBin\fP { \fB(\fP word { \fB|\fP word } \fB)\fP list \fB;;\fP }* \fBesac\fP" ! 48: .S "\fBfunction\fP name \fB{\fP list \fB;\fP \fB}\fP" ! 49: .S "name \fB() {\fP list \fB;\fP \fB}\fP" ! 50: .S "\fBtime\fP pipe" ! 51: The opening parenthesis of the pattern is optional. ! 52: Redirection may occur at the beginning or end of a statement. ! 53: .IP command: ! 54: .S "{ name=word }* { word }*" ! 55: Redirection may occur anywhere in a command. ! 56: .IP list: ! 57: .S "cond" ! 58: .S "cond \fB;\fP list" ! 59: .S "cond \fB&\fP list" ! 60: .IP cond: ! 61: .S "pipe" ! 62: .S "pipe \fB&&\fP cond" ! 63: .S "pipe \fB||\fP cond" ! 64: .IP pipe: ! 65: .S "statement { \fB|\fP statement }*" ! 66: .SS Alias expansion ! 67: Alias expansion occurs when the first word of a statement is a defined alias, ! 68: except when that alias is already being expanded. ! 69: It also occurs after the expansion of an alias whose definition ends with a space. ! 70: .SS Shell variables ! 71: The following standard special variables exist: ! 72: \fB!\fP, \fB#\fP, \fB$\fP, \fB\-\fP, \fB?\fP. ! 73: .IP CDPATH ! 74: Not yet implemented. ! 75: .IP ENV ! 76: If this variable is set at start-up ! 77: (after any profile files are executed), ! 78: the expanded value is used as shell start-up file. ! 79: It typically contains function and alias definitions. ! 80: .IP FCEDIT ! 81: The editor used by the \fIfc\fP command. ! 82: .IP IFS ! 83: \fIInternal field separator\fP, ! 84: used during substitution and the \fIread\fP command. ! 85: .IP HOME ! 86: The default directory for the \fIcd\fP command. ! 87: .IP "MAIL MAILCHECK MAILPATH" ! 88: Not yet implemented. ! 89: .IP PATH ! 90: The search path for executable commands and \fB.\fP'd files. ! 91: .IP "PS1 PS2" ! 92: \fBPS1\fP is the primary prompt for interactive shells. ! 93: Dollar substitution is performed, and \fB!\fP is replaced ! 94: with the command number (see \fIfc\fP). ! 95: .IP "PWD OLDPWD" ! 96: The current and previous working directories. ! 97: .IP SECONDS ! 98: The number of seconds since the shell was started. ! 99: .SS Substitution ! 100: In addition to the System Vr2 substitutions, ! 101: the following are available. ! 102: .IP "$(command)" ! 103: Like `command`, but no escapes are recognized. ! 104: .IP "$(<file)" ! 105: Equivalent to $(cat file), but without forking. ! 106: .IP "${#var}" ! 107: The length of the string value of \fIvar\fP, ! 108: or the number of arguments if \fIvar\fP is \fB*\fP or \fB@\fP. ! 109: .IP "${var#pattern} ${var##pattern}" ! 110: If \fIpattern\fP matches the beginning of the value of \fIvar\fP, ! 111: the matched text is deleted from the result of substitution. ! 112: A single \fB#\fP results in the shortest match, ! 113: two \fB#\fP's results in the longest match. ! 114: .IP "${var%pattern} ${var%%pattern}" ! 115: Like \fB#\fP substition, but deleting from the end of the value. ! 116: .SS Expressions ! 117: Expressions can be used with the \fBlet\fP command, ! 118: as numeric arguments to the \fBtest\fP command, ! 119: and as the value of an assignment to an integer variable. ! 120: .LP ! 121: Expression may contain alpha-numeric variable identifiers and integer constants ! 122: and may be combined with the following operators. ! 123: [list them] ! 124: .SS Command execution ! 125: After evaluation of keyword assignments and arguments, ! 126: the type of command is determined. ! 127: A command may execute a shell function, a shell built-in, ! 128: or an executable file. ! 129: .LP ! 130: Any keyword assignments are then performed according to ! 131: the type of command. ! 132: In function calls assignments are local to the function. ! 133: Assignments in built-in commands marked with a \(dg persist, ! 134: otherwise they are temporary. ! 135: Assignments in executable commands are exported to the sub-process ! 136: executing the command. ! 137: .LP ! 138: There are several built-in commands. ! 139: .IP ":" ! 140: Only expansion and assignment are performed. ! 141: This is the default if a command has no arguments. ! 142: .IP ". \fIfile\fP" ! 143: Execute the commands in \fIfile\fP without forking. ! 144: The file is searched in the directories of $PATH. ! 145: Passing arguments is not implemented. ! 146: .IP "alias [-d] [\fIname\fB=\fIvalue\fI ...]\fR" ! 147: Without arguments, \fBalias\fP lists all aliases and their values. ! 148: For any name without a value, its value is listed. ! 149: Any name with a value defines an alias, see "Alias Expansion" above. ! 150: Korn's tracked aliases are not implemented, ! 151: but System V command hashing is (see "hash"). ! 152: .IP "bind [-m] [\fIkey_sequence=binding_name ...\fP]" ! 153: See section \fBInteractive Input Line Editing\fP for further details. ! 154: .IP "break [\fIlevels\fP]" ! 155: .IP "builtin \fIcommand arg ...\fP" ! 156: \fICommand\fP is executed as a built-in command. ! 157: .IP "cd [\fIpath\fP]" ! 158: Set the working directory to \fIpath\fP. ! 159: If \fIpath\fP is missing, the home directory ($HOME) is used. ! 160: If \fIpath\fP is \fB\-\fP, the previous working directory is used. ! 161: The PWD and OLDPWD variables are reset. ! 162: The System V two argument form is not implemented. ! 163: .IP "continue [\fIlevels\fP]" ! 164: .IP "echo ..." ! 165: \fIEcho\fP is replaced with the alias echo='print' in the Korn shell. ! 166: .IP "eval \fIcommand ...\fP" ! 167: .IP "exec \fIcommand arg ...\fP" ! 168: The executable command is executed without forking. ! 169: If no arguments are given, any IO redirection is permanent. ! 170: .IP "exit [\fIstatus\fP]" ! 171: .IP "fc [\fB\-l\fP] [\fB\-n\fP] [\fIfirst\fP [\fIlast\fP]]" ! 172: A simple subset of Korn's ``fix command''. ! 173: \fIFirst\fP and \fIlast\fP select commands. ! 174: Commands can be selected by history number, ! 175: or a string specifing the most recent command starting with that string. ! 176: The \fB\-l\fP option lists the command on stdout, ! 177: and \fB\-n\fP inhibits the default command numbers. ! 178: Without \fB\-l\fP, the selected commands can be edited by ! 179: the \fB$FCEDIT\fP editor, then executed by the shell. ! 180: .IP "\fBfc \-s\fP [\fIold\fB=\fInew\fR] [\fIcommand\fP]" ! 181: Re-execute the selected command (the previous command by default) ! 182: after performing the optional substitution of \fIold\fP with \fInew\fP. ! 183: This non-standard command is usually accessed with the predefined alias r="fc -s". ! 184: .IP "getopts" ! 185: See the attached manual page. ! 186: .IP "hash [\fB\-r\fP] [\fIname ...\fP]" ! 187: Without arguments, any hashed executable command pathnames are listed. ! 188: The \fB\-r\fP flag causes all hashed commands to be removed. ! 189: Each \fIname\fP is searched as if it where a command name ! 190: and added to the hash table if it is an executable command. ! 191: .IP "kill [-l] [\fB\-\fIsignal\fR] \fIprocess\fP ..." ! 192: Send a signal (TERM by default) to the named process. ! 193: The signal may be specified as a number or a mnemonic from <signal.h> ! 194: with the SIG prefix removed. ! 195: If option \fB-l\fP is specified, list all known signal types. ! 196: .IP "let [\fIexpression ...\fP]" ! 197: Each expression is evaluated, see "Expressions" above. ! 198: A zero status is returned if the last expression evaluates ! 199: to a non-zero value, otherwise a non-zero status is returned. ! 200: .IP "\fBprint\fP [\fB\-nreu\fIn\fR] [\fIargument ...\fP]" ! 201: \fBPrint\fP prints its arguments on the standard output, ! 202: separated by spaces, and terminated with a newline. ! 203: The \fB\-n\fP option eliminates the newline. ! 204: If option \fB-u\fIn\fR is specified, output is sent to shell ! 205: file descriptor \fIn\fP instead of \fIstdout\fR. ! 206: .PP ! 207: By default, certain C escapes are translated. ! 208: These include \eb, \ef, \en, \er, \et, \ev, and \e### (# is an octal digit). ! 209: \ec is equivalent to the \fB\-n\fP option. ! 210: This expansion may be inhibitted with the \fB\-r\fP option, ! 211: and may be re-enabled with the addition of the \fB\-e\fP option. ! 212: .IP "read [\fB\-ru\fIn\fR] \fIname ...\fP" ! 213: The first variable name may be of the form \fIname\fB?\fIprompt\fR. ! 214: .IP "readonly [\fIname ...\fP]" ! 215: .IP "return [\fIstatus\fP]" ! 216: .ta 5n 10n 30n ! 217: .de O ! 218: .br ! 219: \t\\$1\t\\$2\t\\$3 ! 220: .. ! 221: .IP "set [\fB-\fP\fI[a-z]\fP] [\fB-o\fP \fIkeyword\fP] ..." ! 222: Set (\fB\-\fP) or clear (\fB+\fP) a shell option: ! 223: .O \-a allexport "all new variable are created with export attribute" ! 224: .O \-e errexit "exit on non-zero status [incorrect]" ! 225: .O "" bgnice "background jobs are run with lower priority" ! 226: .if \n(OE \{ ! 227: .O "" emacs "BRL emacs-like line editing"\} ! 228: .O "" ignoreeof "shell will not exit of EOF, must use \fIexit\fP" ! 229: .O \-k keyword "variable assignments are recognized anywhere in command" ! 230: .O "" markdirs "[not implemented]" ! 231: .if \n(OJ \{ ! 232: .O \-m monitor "job control enabled (default for interactive shell)"\} ! 233: .O \-n noexec "compile input but do not execute (ignored if interactive)" ! 234: .O \-f noglob "don't expand filenames" ! 235: .O \-u nounset "dollar expansion of unset variables is an error" ! 236: .O \-v verbose "echo shell commands on stdout when compiling" ! 237: .O \-h trackall "add command pathnames to hash table" ! 238: .O \-x xtrace "echo simple commands while executing" ! 239: .IP "set [\fB\-\-\fP] \fIarg ...\fP" ! 240: Set shell arguments. ! 241: .IP "shift [\fInumber\fP]" ! 242: .IP "test" ! 243: See the attached manual page. ! 244: .IP "times" ! 245: .IP "trap [\fIhandler\fP] [\fIsignal ...\fP]" ! 246: .IP "typeset [\fB\(+-irtx\fP] [\fIname\fP[\fB=\fIvalue\fR] ...]" ! 247: If no arguments are given, lists all variables and their attributes. ! 248: .PP ! 249: If options but no names are given, lists variables with specified ! 250: attributes, and their values if unless ``+'' is used. ! 251: .PP ! 252: If names are given, set the attributes of the named variables. ! 253: Variables may also be assigned a value. ! 254: If used inside a function, the created variable are local to the function. ! 255: .PP ! 256: The attributes are as follows. ! 257: .ta 5n 10n ! 258: \t\-i\tThe variable's value is stored as an integer. ! 259: .br ! 260: \t\-x\tThe variable is exported to the enviroment. ! 261: .br ! 262: \t\-r\tThe variable is read-only cannot be reassigned a value. ! 263: .br ! 264: \t\-t\tTrace (not implemented). ! 265: .br ! 266: \t\-f\tList functions instead of variable. ! 267: .IP "umask [\fIvalue\fP]" ! 268: .IP "unalias [-d] \fIname ...\fP" ! 269: The aliases for the given names are removed. ! 270: .IP "unset [\fB\-f\fP] \fIname ...\fP" ! 271: .IP "wait [\fIprocess-id\fP]" ! 272: .IP "whence [\fB\-v\fP] name ..." ! 273: For each name, the type of command is listed. ! 274: The \fB\-v\fP flag causes function and alias values to be listed. ! 275: .if \n(OJ \{.SS Job Control ! 276: Job control features are enabled by the ! 277: \fB\-m\fP or \fB\-o monitor\fP flags. ! 278: When job control is enabled, ! 279: background commands and foreground commands that have been stopped ! 280: (usually by a ! 281: .SM SIGTSTP ! 282: signal generated by typing ! 283: .IR ^Z\^ ) ! 284: are placed into separate individual ! 285: .IR "process groups" . ! 286: The following commands are used to manipulate these process groups: ! 287: .PP ! 288: .PD 0 ! 289: .TP "\w'\fBkill\fP \*(OK \fIjob\fP \*(CK\ \ \ 'u" ! 290: \fBjobs\fP ! 291: Display information about the controlled jobs. ! 292: The job number is given preceeded by a percent sign, ! 293: followed by a plus sign if it is the ``current job'', ! 294: or by a minus sign if it is the ``previous job'', ! 295: then the process group number for the job, ! 296: then the command. ! 297: .TP ! 298: kill [\fB\-\fIsignal\fR] \fIjob\fP ... ! 299: Send a signal (TERM by default) to the named job process group. ! 300: .TP ! 301: \fBfg\fP \*(OK \fIjob\fP \*(CK ! 302: Resume the stopped foreground job in the foreground. ! 303: If the process group ! 304: .I n ! 305: is not specified then the ``current job'' is resumed. ! 306: .TP ! 307: \fBbg\fP \*(OK \fIjob\fP \*(CK ! 308: Resume the stopped foreground job in the background. ! 309: If the process group ! 310: .I n ! 311: is not specified then the ``current job'' is resumed. ! 312: .PD ! 313: .PP ! 314: The \fBfg\fP, \fBbg\fP, \fBkill\fP, and \fBwait\fP commands ! 315: may refer to jobs with the following ``percent'' sequences. ! 316: The percent sign is optional with the fg and bg commands. ! 317: .PP ! 318: .PD 0 ! 319: .TP "\w'\fBbg\fP \*(OK \fIn\fP \*(CK\ \ \ 'u" ! 320: .BR %+ ( %\- ) ! 321: If there is a ``current job'' (``previous job''), ! 322: then that job is selected. ! 323: .TP ! 324: .BI % n ! 325: If the specified job number is one of the known jobs, ! 326: then that job is selected. ! 327: .TP ! 328: .BI % string ! 329: If the string matches the initial part of a job's command, ! 330: then that job is selected. ! 331: .TP ! 332: .BI %? string ! 333: As above, but the string may match any portion of the command. ! 334: .PD\} ! 335: .br ! 336: .if \n(OE \{.SS "Interactive Input Line Editing" ! 337: When the ! 338: .B emacs ! 339: option is set, ! 340: interactive input line editing is enabled. ! 341: This mode is slightly different from the emacs mode in AT&T's KornShell. ! 342: In this mode various ! 343: .I "editing commands" ! 344: (typically bound to one or more control characters) ! 345: cause immediate actions without waiting for a new-line. ! 346: Several ! 347: .I "editing commands" ! 348: are bound to particular control characters ! 349: when the shell is invoked; ! 350: these bindings can be changed using the following commands: ! 351: .br ! 352: .PP ! 353: .PD 0 ! 354: .TP 2i ! 355: \fBbind\fP ! 356: The current bindings are listed. ! 357: .TP ! 358: \fBbind\fP \*(OK \fIstring\fP \*(CK = \*(OK \fIediting-command\fP \*(CK ! 359: The specified ! 360: .I "editing command\^" ! 361: is bound to the given ! 362: .IR string , ! 363: which should consist of a control character ! 364: (which may be written using ``caret notation'' \fB^\fP\fIx\fP\|), ! 365: optionally preceded by one of the two prefix characters. ! 366: Future input of the ! 367: .I string ! 368: will cause the ! 369: .I "editing command\^" ! 370: to be immediately invoked. ! 371: .br ! 372: .TP ! 373: \fBbind -m\fP \*(OK \fIstring\fP \*(CK = \*(OK \fIsubstitute\fP \*(CK ! 374: The specified input ! 375: .I string ! 376: will afterwards be immediately replaced by the given ! 377: .I substitute ! 378: string, ! 379: which may contain ! 380: .IR "editing commands" . ! 381: .PD ! 382: .PP ! 383: The following ! 384: .I "editing commands" ! 385: are available; ! 386: first the command name is given ! 387: followed by its default binding (if any) ! 388: using caret notation ! 389: (note that the ASCII ! 390: .SM ESC ! 391: character is written as \s-1^[\s0\|), ! 392: then the editing function performed is decribed. ! 393: Note that ! 394: .I "editing command" ! 395: names are used only with the ! 396: .B bind ! 397: command. ! 398: Furthermore, ! 399: many ! 400: .I "editing commands" ! 401: are useful only on terminals with a visible cursor. ! 402: The default bindings were chosen to resemble corresponding EMACS key bindings. ! 403: .br ! 404: .PP ! 405: .PD 0 ! 406: .TP "\w'\fBdelete-word-backward\ \ ^W\fP\ \ \ 'u" ! 407: \fBabort\ \ ^G\fP ! 408: Useful as a response to a request for a ! 409: .B search-history ! 410: pattern in order to abort the search. ! 411: .br ! 412: .TP ! 413: \fBauto-insert\fP ! 414: Simply causes the character to appear as literal input. ! 415: (Most ordinary characters are bound to this.) ! 416: .br ! 417: .TP ! 418: \fBbackward-char\ \ ^B\fP ! 419: Moves the cursor backward one character. ! 420: .br ! 421: .TP ! 422: \fBbackward-word\ \ ^[\|b\fP ! 423: Moves the cursor backward to the beginning of a word; ! 424: words are delimited by the current setting of \fB\s-1IFS\s0\fP. ! 425: .br ! 426: .TP ! 427: \fBbeginning-of-line\ \ ^A\fP ! 428: Moves the cursor to the beginning of the input line ! 429: (after the prompt string). ! 430: .br ! 431: .TP ! 432: \fBcomplete\ \ ^[\|^[\fP ! 433: Automatically completes as much as is unique of the hashed command name ! 434: or the file name containing the cursor. ! 435: If the entire remaining command or file name is unique ! 436: a space is printed after its completion, ! 437: unless it is a directory name in which case ! 438: .B / ! 439: is postpended. ! 440: If there is no hashed command or file name with the current partial word ! 441: as its prefix, ! 442: a bell character is output (usually causing a ``beep''). ! 443: .br ! 444: .TP ! 445: \fBcomplete-command\ \ ^X^[\fP ! 446: Automatically completes as much as is unique of the hashed command name ! 447: having the partial word up to the cursor as its prefix, ! 448: as in the ! 449: .B complete ! 450: command described above. ! 451: Only command and function names seen since the last ! 452: .B "hash \-r" ! 453: command are available for completion; ! 454: the ! 455: .B "hash" ! 456: command may be used to register additional names. ! 457: .br ! 458: .TP ! 459: \fBcomplete-file\ \ ^X\|^X\fP ! 460: Automatically completes as much as is unique of the file name ! 461: having the partial word up to the cursor as its prefix, ! 462: as in the ! 463: .B complete ! 464: command described above. ! 465: .br ! 466: .TP ! 467: \fBdelete-char-backward\ \ ^H\fP ! 468: Deletes the character before the cursor. ! 469: .br ! 470: .TP ! 471: \fBdelete-char-forward\ \ ^D\fP ! 472: Deletes the character after the cursor. ! 473: .br ! 474: .TP ! 475: \fBdelete-word-backward\ \ ^W\fP ! 476: Deletes characters before the cursor back to the beginning of a word. ! 477: .br ! 478: .TP ! 479: \fBdelete-word-forward\ \ ^[\|d\fP ! 480: Deletes characters after the cursor up to the end of a word. ! 481: .br ! 482: .TP ! 483: \fBdown-history\ \ ^N\fP ! 484: Scrolls the history buffer forward one line (later). ! 485: Each input line originally starts just after ! 486: the last entry in the history buffer, ! 487: so ! 488: .B down-history ! 489: is not useful until either ! 490: .B search-history ! 491: or ! 492: .B up-history ! 493: has been performed. ! 494: .br ! 495: .TP ! 496: \fBend-of-line\ \ ^E\fP ! 497: Moves the cursor to the end of the input line. ! 498: .br ! 499: .TP ! 500: \fBeot\ \ ^_\fP ! 501: Acts as an end-of-file; ! 502: this is useful because edit-mode input ! 503: disables normal terminal input canonicalization. ! 504: .br ! 505: .TP ! 506: \fBforward-char\ \ ^F\fP ! 507: Moves the cursor forward one position. ! 508: .br ! 509: .TP ! 510: \fBforward-word\ \ ^[\|f\fP ! 511: Moves the cursor forward to the end of a word. ! 512: .br ! 513: .TP ! 514: \fBkill-line\ \ ^U\fP ! 515: Deletes the entire input line. ! 516: .br ! 517: .TP ! 518: \fBkill-to-eol\ \ ^K\fP ! 519: Deletes the input from the cursor to the end of the line. ! 520: .br ! 521: .TP ! 522: \fBlist\ \ ^[\|?\fP ! 523: Prints a sorted, columnated list of hashed command names or file names ! 524: (if any) that can complete the partial word containing the cursor. ! 525: Directory names have ! 526: .B / ! 527: postpended to them, ! 528: and executable file names are followed by ! 529: .BR \(** . ! 530: .br ! 531: .TP ! 532: \fBlist-command\ \ ^X\|?\fP ! 533: Prints a sorted, columnated list of hashed command names ! 534: (if any) that can complete the partial word containing the cursor. ! 535: .br ! 536: .TP ! 537: \fBlist-file\fP ! 538: Prints a sorted, columnated list of file names ! 539: (if any) that can complete the partial word containing the cursor. ! 540: File type indicators are postpended as described under ! 541: .B list ! 542: above. ! 543: .br ! 544: .TP ! 545: \fBnewline\ \ ^J\ \fP\fIand\^\fP\fB\ ^M\fP ! 546: Causes the current input line to be processed by the shell. ! 547: (The current cursor position may be anywhere on the line.) ! 548: .br ! 549: .TP ! 550: \fBprefix-1\ \ ^[\fP ! 551: Introduces a 2-character command sequence. ! 552: .br ! 553: .TP ! 554: \fBprefix-2\ \ ^X\fP ! 555: Introduces a 2-character command sequence. ! 556: .br ! 557: .TP ! 558: \fBquote\ \ ^^\fP ! 559: The following character is taken literally ! 560: rather than as an ! 561: .IR "editing command" . ! 562: .br ! 563: .TP ! 564: \fBredraw\ \ ^L\fP ! 565: Reprints the prompt string and the current input line. ! 566: .br ! 567: .TP ! 568: \fBsearch-character\ \ ^]\fP ! 569: Search forward in the current line for the next keyboard character. ! 570: .br ! 571: .TP ! 572: \fBsearch-history\ \ ^R\fP ! 573: Enter incremental search mode. ! 574: The internal history list is searched backwards for commands matching the input. ! 575: An initial ``^'' in the search string anchors the search. ! 576: The escape key will leave search mode. ! 577: Other commands will be executed after leaving search mode. ! 578: Successive ! 579: .B search-history ! 580: commands continue searching backward ! 581: to the next previous occurrence of the pattern. ! 582: The history buffer retains only a finite number of lines; ! 583: the oldest are discarded as necessary. ! 584: .br ! 585: .ie \n(OX \{.TP ! 586: \fBstuff\ \ ^T\fP\} ! 587: .el \{.TP ! 588: \fBstuff\fP\} ! 589: On systems supporting it, ! 590: pushes the bound character back onto the terminal input ! 591: where it may receive special processing by the terminal handler. ! 592: .if \n(OX \{This is useful for the BRL ! 593: .B ^T ! 594: ``mini-systat'' feature, ! 595: for example.\} ! 596: .br ! 597: .TP ! 598: \fBstuff-reset\fP ! 599: Acts like ! 600: .BR stuff\^ , ! 601: then aborts input the same as an interrupt. ! 602: .br ! 603: .ie \n(OX \{.TP ! 604: \fBtranspose-chars\fP\} ! 605: .el \{.TP ! 606: \fBtranspose-chars\ \ ^T\fP\} ! 607: Exchanges the two characters on either side of the cursor. ! 608: .br ! 609: .TP ! 610: \fBup-history\ \ ^P\fP ! 611: Scrolls the history buffer backward one line (earlier). ! 612: .br ! 613: .TP ! 614: \fByank\ \ ^Y\fP ! 615: Inserts the most recently killed text string at the current cursor position. ! 616: .br ! 617: .TP ! 618: \fByank-pop\ \ ^[\|y\fP ! 619: Immediately after a ! 620: .BR yank , ! 621: replaces the inserted text string with the ! 622: next previous killed text string. ! 623: .PD\} ! 624: .br ! 625: .SH FILES ! 626: ~/.profile ! 627: .br ! 628: /etc/profile ! 629: .SH "SEE ALSO" ! 630: sh(1) on System V or Sun OS. ! 631: .LP ! 632: .I "UNIX Shell Programming," ! 633: Stephan G. Kochan, ! 634: Patrick H. Wood, ! 635: Hayden. ! 636: .LP ! 637: .I "KornShell: Command and Programming Language (not yet published)," ! 638: Morris Bolsky and David Korn. ! 639: .SH AUTHORS ! 640: Based on the public domain 7th edition Bourne shell. ! 641: .LP ! 642: System V and Korn modifications by Eric Gisin, ! 643: with contributions by ! 644: Ron Natalie, Arnold Robbins, Doug Gwyn, Erik Baalbergen, AT&T.\" getopt(3) ! 645: .SH "DIFFERENCES FROM AT&T VERSION" ! 646: Vi editing mode is not implemented. ! 647: The \fBselect\fP statement is not implemented. ! 648: "\fBfc \-e \-\fP" is not implemented, use "\fBfc \-s\fP". ! 649: The variables \fBRANDOM\fP and \fBPPID\fP are not implemented. ! 650: Variable arrays are not implemented. ! 651: Variable attributes other than integer are not implemented. ! 652: The \fBERR\fP and \fBEXIT\fP traps are not implemented for functions. ! 653: Alias expansion is inhibited at the beginning of an alias definition ! 654: in the AT&T version. ! 655: .SH BUGS ! 656: Interactive shells will occasionally hang while waiting for a job. ! 657: .LP ! 658: The 8th bit is stripped in emacs mode. ! 659: .LP ! 660: Please report any other bugs by mail to [email protected] or [email protected]. ! 661: .TH TEST 1 "January 1988" "Korn shell" ! 662: .ta 30n ! 663: .de X ! 664: .br ! 665: \\$1\t\\$2 ! 666: .. ! 667: .SH NAME ! 668: test \- test condition (Korn and 8th edition) ! 669: .SH SYNOPSIS ! 670: \fBtest\fP \fIexpression\fP ! 671: .br ! 672: \fB[\fP \fIexpression\fP \fB]\fP ! 673: .SH DESCRIPTION ! 674: \fBTest\f evalutates the \fIexpression\fP and returns zero status if true, ! 675: and non-zero status otherwise. ! 676: It is normally used as the controlling command of the \fBif\fP and \fBwhile\fP statements. ! 677: .LP ! 678: The following basic expressions are available. ! 679: .IP ! 680: .X "-r file" "file exists and is readable" ! 681: .X "-w file" "file exists and is writable" ! 682: .X "-x file" "file exists and is executable" ! 683: .X "-f file" "file is a regular file" ! 684: .X "-d file" "file is a directory" ! 685: .X "-c file" "file is a character special device" ! 686: .X "-b file" "file is a block special device" ! 687: .X "-p file" "file is a named pipe" ! 688: .X "-u file" "file mode has setuid bit" ! 689: .X "-g file" "file mode has setgid bit" ! 690: .X "-k file" "file mode has sticky bit" ! 691: .X "-s file" "file is not empty" ! 692: .X "-L file" "file is a symbolic link" ! 693: .X "-S file" "file is a socket" ! 694: .X "file -nt file" "first file is newer than second file" ! 695: .X "file -ot file" "first file is older than second file" ! 696: .X "file -ef file" "first file is the same file as second file" ! 697: .X "-t filedes" "file descriptor is a tty device" ! 698: .IP ! 699: .X "string" "string is not null" ! 700: .X "-z string" "string is null" ! 701: .X "-n string" "string is not null" ! 702: .X "string = string" "strings are equal" ! 703: .X "string != string" "strings are not equal" ! 704: .IP ! 705: .X "number -eq number" "numbers compare equal" ! 706: .X "number -ne number" "numbers compare not equal" ! 707: .X "number -ge number" "numbers compare greater than or equal" ! 708: .X "number -gt number" "numbers compare greater than" ! 709: .X "number -le number" "numbers compare less than or equal" ! 710: .X "number -lt number" "numbers compare less than" ! 711: .LP ! 712: The above basic expressions may be combined with the following operators. ! 713: .IP ! 714: .X "expr -o expr" "logical or" ! 715: .X "expr -a expr" "logical and" ! 716: .X "! expr" "logical not" ! 717: .X "( expr )" "grouping" ! 718: .SH AUTHOR ! 719: Erik Baalbergen. Modified by Arnold Robbins. ! 720: .rn LP P ! 721: .TH GETOPTS 1 "January 1988" "Korn shell" ! 722: .SH NAME ! 723: getopts \- parse command options ! 724: .SH SYNOPSIS ! 725: .B getopts ! 726: optstring name [arg ...] ! 727: .SH DESCRIPTION ! 728: .I getopts ! 729: is used by shell procedures ! 730: to parse positional parameters and to check for legal options. ! 731: It supports all applicable rules of the command syntax standard ! 732: (see Rules 3-10, ! 733: .IR intro (1)). ! 734: It should be used in place of the ! 735: .IR getopt (1) ! 736: command. ! 737: (See the ! 738: .BR \s-1WARNING\s0 , ! 739: below.) ! 740: .PP ! 741: .I optstring ! 742: must contain the option letters the command using ! 743: .I getopts ! 744: will recognize; ! 745: if a letter is followed by a colon, ! 746: the option is expected to have an argument ! 747: which should be separated from it by white space. ! 748: .PP ! 749: Each time it is invoked, ! 750: .I getopts ! 751: will place the next option in the shell variable ! 752: .I name ! 753: and the index of the next argument to be processed in the shell variable ! 754: .BR \s-1OPTIND\s0 . ! 755: Whenever the shell or a shell procedure is invoked, ! 756: .B \s-1OPTIND\s0 ! 757: is initialized to ! 758: .BR 1 . ! 759: .PP ! 760: When an option requires an option-argument, ! 761: .I getopts ! 762: places it in the shell variable ! 763: .BR \s-1OPTARG\s0 . ! 764: .P ! 765: If an illegal option is encountered, ! 766: .B ?\& ! 767: will be placed in ! 768: .IR name . ! 769: .P ! 770: When the end of the options is encountered, ! 771: .I getopts ! 772: exits with a non-zero exit status. ! 773: The special option ! 774: .RB `` \-\- '' ! 775: may be used to delimit the end of the options. ! 776: .P ! 777: By default, ! 778: .I getopts ! 779: parses the positional parameters. ! 780: If extra arguments ! 781: .RI ( arg ! 782: \&...) are given on the ! 783: .I getopts ! 784: command line, ! 785: .I getopts ! 786: will parse them instead. ! 787: .PP ! 788: So all new commands will adhere to the command syntax standard described in ! 789: .IR intro (1), ! 790: they should use ! 791: .IR getopts (1) ! 792: or ! 793: .IR getopt (3C) ! 794: to parse positional parameters ! 795: and check for options that are legal for that command ! 796: (see ! 797: .BR \s-1WARNINGS\s0 , ! 798: below). ! 799: .SH EXAMPLE ! 800: The following fragment of a shell program ! 801: shows how one might process the arguments ! 802: for a command that can take the options ! 803: .B a ! 804: or ! 805: .BR b , ! 806: as well as the option ! 807: .BR o , ! 808: which requires an option-argument: ! 809: .PP ! 810: .RS ! 811: .nf ! 812: .ss 18 ! 813: .ta +.5i +1i ! 814: \fBwhile getopts abo: c ! 815: do ! 816: case $c in ! 817: a\(bvb) FLAGS=$FLAGS$c;; ! 818: o) OARG=$OPTARG;; ! 819: \e?) echo $USAGE 1>&2 ! 820: exit 2;; ! 821: esac ! 822: done ! 823: shift OPTIND\-1\fP ! 824: .fi ! 825: .ta ! 826: .ss 12 ! 827: .RE ! 828: .PP ! 829: This code will accept any of the following as equivalent: ! 830: .PP ! 831: .RS ! 832: .nf ! 833: .ss 18 ! 834: \fBcmd \-a \-b \-o "xxx z yy" file ! 835: cmd \-a \-b \-o "xxx z yy" \-\- file ! 836: cmd \-ab \-o "xxx z yy" file ! 837: cmd \-ab \-o "xxx z yy" \-\- file\fP ! 838: .fi ! 839: .ss 12 ! 840: .RE ! 841: .SH SEE ALSO ! 842: intro(1), ! 843: sh(1). ! 844: .br ! 845: getopt(3C) ! 846: in the ! 847: .IR "Programmer's Reference Manual" . ! 848: .br ! 849: .IR "UNIX System V Release 3.0 Release Notes" . ! 850: .SH WARNING ! 851: Although the following command syntax rule (see ! 852: .IR intro (1)) ! 853: relaxations are permitted under the current implementation, ! 854: they should not be used because they may not be supported ! 855: in future releases of the system. ! 856: As in the ! 857: .B \s-1EXAMPLE\s0 ! 858: section above, ! 859: .B a ! 860: and ! 861: .B b ! 862: are options, ! 863: and the option ! 864: .B o ! 865: requires an option-argument: ! 866: .PP ! 867: .RS ! 868: .nf ! 869: .ta +1i +1.5i ! 870: \fBcmd \-aboxxx file\fP (Rule 5 violation: options with ! 871: option-arguments must not be grouped with other options) ! 872: \fBcmd \-ab \-oxxx file\fP (Rule 6 violation: there must be ! 873: white space after an option that takes an option-argument) ! 874: .fi ! 875: .ta ! 876: .RE ! 877: .PP ! 878: Changing the value of the shell variable ! 879: .B \s-1OPTIND\s0 ! 880: or parsing different sets of arguments ! 881: may lead to unexpected results. ! 882: .SH DIAGNOSTICS ! 883: .I getopts ! 884: prints an error message on the standard error output ! 885: when it encounters an option letter not included in ! 886: .IR optstring .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.