Annotation of coherent/a/usr/man/COHERENT/ksh, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: ksh                          Command                          ksh
                      4: 
                      5: 
                      6: 
                      7: 
                      8: The Korn shell
                      9: 
                     10: kksshh _t_o_k_e_n ...
                     11: 
                     12: The  COHERENT system  offers  two command  interpreters: sshh,  the
                     13: Bourne  shell;  and  kksshh, the  Korn  shell.   sshh  is the  default
                     14: COHERENT  command interpreter.   The shell  tutorial  included in
                     15: this manual describes the Bourne shell in detail.
                     16: 
                     17: This article describes kksshh, the Korn shell.  kksshh is a superset of
                     18: the Bourne  shell, and contains  many features that  you may well
                     19: find useful.   These include MicroEMACS-style  editing of command
                     20: lines; command  hashing; a full-featured aliasing  feature; and a
                     21: job-control facility.
                     22: 
                     23: ***** Invoking ksh *****
                     24: 
                     25: To invoke  kksshh from within  the Bourne shell, simply  type kksshh at
                     26: the  command-line prompt.   To  use kksshh  as  your default  shell,
                     27: instead of sshh, append the command /uussrr/bbiinn/kksshh to the end of your
                     28: entry in the file  /eettcc/ppaasssswwdd. (See the Lexicon entry for ppaasssswwdd
                     29: for more information on this file.)
                     30: 
                     31: You can  invoke kksshh with one or more  built-in options; these are
                     32: described below.
                     33: 
                     34: ***** Commands *****
                     35: 
                     36: A _c_o_m_m_a_n_d consists of one or  more _t_o_k_e_n_s. A _t_o_k_e_n is a string of
                     37: text  characters  (i.e.,   one  or  more  alphabetic  characters,
                     38: punctuation marks,  and numerals) delineated by  spaces, tabs, or
                     39: newlines.
                     40: 
                     41: A _s_i_m_p_l_e _c_o_m_m_a_n_d consists of the command's name, followed by zero
                     42: or more tokens that  represent arguments to the command, names of
                     43: files,  or shell  operators.  A  _c_o_m_p_l_e_x  _c_o_m_m_a_n_d will  use shell
                     44: constructs  to execute  one or  more commands  conditionally.  In
                     45: effect, a  complex command is  a mini-program that  is written in
                     46: the shell's programming language and interpreted by kksshh.
                     47: 
                     48: ***** Shell Operators *****
                     49: 
                     50: The  shell  includes  a  number  of  operators that  form  pipes,
                     51: redirect  input  and  output  to  commands,  and let  you  define
                     52: conditions under which commands are executed.
                     53: 
                     54: _c_o_m_m_a_n_d | _c_o_m_m_a_n_d
                     55:      The _p_i_p_e  operator: let the  output of one  command serve as
                     56:      the input to a second.  You can combine commands with `|' to
                     57:      form _p_i_p_e_l_i_n_e_s. A pipeline passes the standard output of the
                     58:      first (leftmost) command to the standard input of the second
                     59:      command.  For example, in the pipeline
                     60: 
                     61:              sort customers | uniq | more
                     62: 
                     63: 
                     64: COHERENT Lexicon                                           Page 1
                     65: 
                     66: 
                     67: 
                     68: 
                     69: ksh                          Command                          ksh
                     70: 
                     71: 
                     72: 
                     73: 
                     74:      kksshh invokes ssoorrtt to sort the contents of file ccuussttoommeerrss.  It
                     75:      pipes the output of  ssoorrtt to the command uunniiqq, which outputs
                     76:      one unique copy of the text that is input into it.  kksshh then
                     77:      pipes the output of uunniiqq to the command mmoorree, which displays
                     78:      it  on your  terminal one  screenful at  a time.   Note that
                     79:      under   COHERENT,   unlike   MS-DOS,  pipes   are   executed
                     80:      concurrently: that is, ssoorrtt does not have to finish its work
                     81:      before uunniiqq  and mmoorree can begin to receive  input and get to
                     82:      work.
                     83: 
                     84: _c_o_m_m_a_n_d ; _c_o_m_m_a_n_d
                     85:      Execute  commands  on  a  command  line  sequentially.   The
                     86:      command to the left  of the `;' executes to completion; then
                     87:      the command  to the right  of it executes.   For example, in
                     88:      the command line
                     89: 
                     90:              a | b ; c | d
                     91: 
                     92:      first  execute  the  pipeline aa  |  bb  then,  when  aa and  bb
                     93:      complete, execute the pipeline cc | dd.
                     94: 
                     95: _c_o_m_m_a_n_d &
                     96:      Execute  a command  in the  background.  This  operator must
                     97:      follow the  command, not precede it.   It prints the process
                     98:      identifier of the command on the standard output, so you can
                     99:      use the  kkiillll command to kill  that process should something
                    100:      go  wrong.  This  operator lets  you  execute more  than one
                    101:      command simultaneously.  For example, the command
                    102: 
                    103:              /etc/fdformat -v /dev/fha0 &
                    104: 
                    105:      formats  a high-density,  5.25-inch floppy  disk in  drive 0
                    106:      (that is,  drive A); but while the  disk is being formatted,
                    107:      kksshh returns  the command line prompt  so you can immediately
                    108:      enter another command and begin to work.  If you did not use
                    109:      the  `&'  in this  command,  you would  have  to wait  until
                    110:      formatting  was  finished  before  you could  enter  another
                    111:      command.
                    112: 
                    113:      kksshh also  prints a message  on your terminal  when a command
                    114:      that you are  running in the background finishes processing.
                    115:      It  does not  check  these ``child''  processes very  often,
                    116:      however, so a command may have finished some time before kksshh
                    117:      informs you  of the fact.   See the Lexicon  article for the
                    118:      command ppss  for information on  all processes; also  see the
                    119:      description of the built-in command jjoobbss, below.
                    120: 
                    121: _c_o_m_m_a_n_d && _c_o_m_m_a_n_d
                    122:      Execute a  command upon  success.  kksshh executes  the command
                    123:      that  follows  the  token  `&&'  only  if the  command  that
                    124:      precedes  it returns  a  zero exit  status, which  signifies
                    125:      success.  For example, the command
                    126: 
                    127:              cd /etc
                    128: 
                    129: 
                    130: COHERENT Lexicon                                           Page 2
                    131: 
                    132: 
                    133: 
                    134: 
                    135: ksh                          Command                          ksh
                    136: 
                    137: 
                    138: 
                    139:              fdformat -v /dev/fha0 && badscan -o proto /dev/fha0 2400
                    140: 
                    141:      formats a  floppy disk, as  described above.  If  the format
                    142:      was successful, it  then invokes the command bbaaddssccaann to scan
                    143:      the disk for bad  blocks; if it was not successful, however,
                    144:      it does nothing.
                    145: 
                    146: _c_o_m_m_a_n_d || _c_o_m_m_a_n_d
                    147:      Execute  a  command  upon  failure.   This is  identical  to
                    148:      operator `&&', except that the second command is executed if
                    149:      the  first  returns   a  non-zero  status,  which  signifies
                    150:      failure.  For example, the command
                    151: 
                    152:              /etc/fdformat -v /dev/fha0 || echo "Format failed!"
                    153: 
                    154:      formats a floppy  disk.  If formatting failed, it echoes the
                    155:      message  FFoorrmmaatt  ffaaiilleedd!   on  your  terminal;  however,  if
                    156:      formatting succeeds, it does nothing.
                    157: 
                    158:      Note that the tokens  newline, `;' and `&' bind less tightly
                    159:      than `&&'  and `||'.  kksshh parses command  lines from left to
                    160:      right if separators bind equally.
                    161: 
                    162: >_f_i_l_e
                    163:      Redirect  standard  output.   The _s_t_a_n_d_a_r_d  _i_n_p_u_t,  _s_t_a_n_d_a_r_d
                    164:      _o_u_t_p_u_t, and _s_t_a_n_d_a_r_d _e_r_r_o_r streams are normally connected to
                    165:      the terminal.  A pipeline attaches the output of one command
                    166:      to the input  of another command.  In addition, kksshh includes
                    167:      a set of operators that redirect input and output into files
                    168:      rather than other commands.
                    169: 
                    170:      The operator `>' redirects output into a file.  For example,
                    171:      the command
                    172: 
                    173:              sort customers >customers.sort
                    174: 
                    175:      sorts file ccuussttoommeerrss  and writes the sorted output into file
                    176:      ccuussttoommeerrss.ssoorrtt.  It creates  ccuussttoommeerrss.ssoorrtt if  it  does not
                    177:      exist, and destroys its previous contents if it does exist.
                    178: 
                    179: >>_f_i_l_e
                    180:      Redirect output  into a file, and append.   If the file does
                    181:      not exist,  this operator creates  it; however, if  the file
                    182:      already  exists, this  operator appends  the output  to that
                    183:      file's contents rather  than destroying those contents.  For
                    184:      example, the command
                    185: 
                    186:              sort customers.now | uniq >>customers.all
                    187: 
                    188:      sorts file ccuussttoommeerrss.nnooww,  pipes its output to command uunniiqq,
                    189:      which throws away  duplicate lines of input, and appends the
                    190:      results to file ccuussttoommeerrss.aallll.
                    191: 
                    192: <_f_i_l_e
                    193:      Redirect input.  Here, kksshh  reads the contents of a file and
                    194: 
                    195: 
                    196: COHERENT Lexicon                                           Page 3
                    197: 
                    198: 
                    199: 
                    200: 
                    201: ksh                          Command                          ksh
                    202: 
                    203: 
                    204: 
                    205:      processes them as if  you had typed them from your keyboard.
                    206:      For example, the command
                    207: 
                    208:              ed textfile <edit.script
                    209: 
                    210:      invokes  the  line-editor  eedd  to  edit  tteexxttffiillee;  however,
                    211:      instead of reading  editing commands from your keyboard, the
                    212:      shell passes  eedd the contents of  eeddiitt.ssccrriipptt.  This command
                    213:      would  let you  prepare  an editing  script  that you  could
                    214:      execute repeatedly upon files rather than having to type the
                    215:      same commands over and over.
                    216: 
                    217: << _t_o_k_e_n
                    218:      Prepare  a ``here  document''.  This  operator tells  kksshh to
                    219:      accept standard input from  the shell input until it reads a
                    220:      line that contains only _t_o_k_e_n. For example, the command
                    221: 
                    222:              cat >FOO <<\!
                    223:                      Here is some text.
                    224:              !
                    225: 
                    226:      redirects  all  text  between  `<<\!'  and  `!' to  the  ccaatt
                    227:      command.  The  `>' in turn redirects the  output of ccaatt into
                    228:      file FFOOOO.   kksshh performs parameter substitution  on the here
                    229:      document  unless  the  leading  _t_o_k_e_n is  quoted;  parameter
                    230:      substitution and quoting are described below.
                    231: 
                    232: _c_o_m_m_a_n_d 22> _f_i_l_e
                    233:      Redirect  the  standard  error  stream  into  a  file.   For
                    234:      example, the command
                    235: 
                    236:              nroff -ms textfile >textfile.p 2>textfile.err
                    237: 
                    238:      invokes  the  command   nnrrooffff  to  format  the  contents  of
                    239:      tteexxttffiillee.   It  redirects the  output  of  nnrrooffff (i.e.,  the
                    240:      standard  output)  into tteexxttffiillee.pp;  it  also redirects  any
                    241:      error   messages   that  nnrrooffff   may   generate  into   file
                    242:      tteexxttffiillee.eerrrr.
                    243: 
                    244:      Note in passing that a command may use up to 20 streams.  By
                    245:      default, stream  0 is  the standard  input; stream 1  is the
                    246:      standard output;  and stream 2  is the standard  error.  kksshh
                    247:      lets  you redirect  any of  these streams  individually into
                    248:      files, or combine streams into each other.
                    249: 
                    250: <&_n  kksshh can redirect  the standard input and output to duplicate
                    251:      other  file  descriptors.   (See  the Lexicon  article  ffiillee
                    252:      ddeessccrriippttoorr  for details  on what  these are.)  This operator
                    253:      duplicates the standard input from file descriptor _n.
                    254: 
                    255: >&_n  Duplicate the  standard output from file  descriptor _n.  For
                    256:      example,
                    257: 
                    258:              2>&1
                    259: 
                    260: 
                    261: 
                    262: COHERENT Lexicon                                           Page 4
                    263: 
                    264: 
                    265: 
                    266: 
                    267: ksh                          Command                          ksh
                    268: 
                    269: 
                    270: 
                    271:      redirects  file descriptor  2 (the  standard error)  to file
                    272:      descriptor 1 (the standard output).
                    273: 
                    274: Note that each  command executed as a foreground process inherits
                    275: the file  descriptors and signal  traps (described below)  of the
                    276: invoking   shell,   modified   by  any   specified   redirection.
                    277: Background processes  take input  from the null  device /ddeevv/nnuullll
                    278: (unless redirected), and ignore interrupt and quit signals.
                    279: 
                    280: ***** File-Name Patterns *****
                    281: 
                    282: The  shell interprets  an  input token  that contain  any of  the
                    283: special characters `?', `*', or `[' as a file name _p_a_t_t_e_r_n.
                    284: 
                    285: ?  Match any  single character except newline.   For example, the
                    286:    command
                    287: 
                    288:            ls name?
                    289: 
                    290:    will print  the name of  any file that consists  of the string
                    291:    nnaammee  plus  any one  character.   If nnaammee  is  followed by  no
                    292:    characters, or is followed  by two or more characters, it will
                    293:    not be printed.
                    294: 
                    295: *  Match  a  string  of  non-newline  characters  of  any  length
                    296:    (including zero).
                    297: 
                    298:            ls name*
                    299: 
                    300:    will print  the name of  any file that begins  with the string
                    301:    nnaammee,  regardless  of  whether it  is  followed  by any  other
                    302:    characters.  Likewise, the command
                    303: 
                    304:            ls name?*
                    305: 
                    306:    will print  the name of  any file that consists  of the string
                    307:    nnaammee followed  by at least  one character.  Unlike  nnaammee*, the
                    308:    token  nnaammee?*  insists  that  be  followed  by  at  least  one
                    309:    character before it will be printed.
                    310: 
                    311: ~_n_a_m_e
                    312:    Replace the  name of user _n_a_m_e with  his $HHOOMMEE directory.  For
                    313:    example, the command
                    314: 
                    315:            ls -l ~norm/src
                    316: 
                    317:    lists the  contents of the _s_r_c  subdirectory located under the
                    318:    $HHOOMMEE directory for user  nnoorrmm. This spares you from having to
                    319:    know where a given user's HOME directory is located.
                    320: 
                    321: [_C-_c]
                    322:    Enclose alternatives to match a single character.  A hyphen `-
                    323:    ' indicates a range of characters.  For example, the command
                    324: 
                    325:            ls name[ABC]
                    326: 
                    327: 
                    328: COHERENT Lexicon                                           Page 5
                    329: 
                    330: 
                    331: 
                    332: 
                    333: ksh                          Command                          ksh
                    334: 
                    335: 
                    336: 
                    337: 
                    338:    will  print  the  names  of  files  nnaammeeAA,  nnaammeeBB,  and  nnaammeeCC
                    339:    (assuming, of  course, that those  files exist in  the current
                    340:    directory).  The command
                    341: 
                    342:            ls name[A-K]
                    343: 
                    344:    prints the names of files nnaammeeAA through nnaammeeKK (again, assuming
                    345:    that they exist in the current directory).
                    346: 
                    347: When kksshh reads a token that contains one of the above characters,
                    348: it replaces  the token in  the command line  with an alphabetized
                    349: list  of file  names  that match  the  pattern.  If  it finds  no
                    350: matches,  it passes  the  token unchanged  to  the command.   For
                    351: example, when you enter the command
                    352: 
                    353: 
                    354:         ls name[ABC]
                    355: 
                    356: 
                    357: kksshh  replaces the  token nnaammee[AABBCC] with  nnaammeeAA, nnaammeeBB,  and nnaammeeCC
                    358: (again, if  they exist in the current  directory), so the command
                    359: now reads:
                    360: 
                    361: 
                    362:         ls nameA nameB nameC
                    363: 
                    364: 
                    365: It then  passes this second,  transformed version of  the command
                    366: line to the command llss.
                    367: 
                    368: Note that  the slash `/'  and leading period `.'  must be matched
                    369: explicitly  in a  pattern.  The slash,  of course,  separates the
                    370: elements of  a path name; while  a period at the  begin of a file
                    371: name  usually  (but  not always)  indicates  that  that file  has
                    372: special significance.
                    373: 
                    374: ***** Quoting Text *****
                    375: 
                    376: From  time to  time, you  will want to  ``turn off''  the special
                    377: meaning of characters.  For example, you may wish to pass a token
                    378: that contains a literal asterisk to a command; to do so, you need
                    379: a way  to tell kksshh  not to expand  the token into a  list of file
                    380: names.  Therefore, kksshh includes the qquuoottaattiioonn ooppeerraattoorrss `\', `"',
                    381: and `'';  these ``turn  off'' (or  _q_u_o_t_e) the special  meaning of
                    382: operators.
                    383: 
                    384: The backslash  `\' quotes the following  character.  For example,
                    385: the command
                    386: 
                    387: 
                    388: 
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: COHERENT Lexicon                                           Page 6
                    395: 
                    396: 
                    397: 
                    398: 
                    399: ksh                          Command                          ksh
                    400: 
                    401: 
                    402: 
                    403:         ls name\*
                    404: 
                    405: 
                    406: lists a file named nnaammee*, and no other.
                    407: 
                    408: The shell ignores  a backslash immediately followed by a newline,
                    409: called a _c_o_n_c_e_a_l_e_d _n_e_w_l_i_n_e.  This lets you give more arguments to
                    410: a command than will fit on one line.  For example, the command
                    411: 
                    412: 
                    413:         cc -o output file1.c file2.c file3.c \
                    414:                 file4.c file5.c file19.c
                    415: 
                    416: 
                    417: invokes the C compiler cccc to compile a set of C source files, the
                    418: names of which extend over more than one line of input.  You will
                    419: find  this to  be extremely  helpful,  especially when  you write
                    420: scripts  and  mmaakkeeffiillees,  to help  you  write  neat, easily  read
                    421: commands.
                    422: 
                    423: A pair of apostrophes ' ' prevents interpretation of any enclosed
                    424: special characters.  For example, the command
                    425: 
                    426: 
                    427:         find . -name '*.c' -print
                    428: 
                    429: 
                    430: finds and  prints the  name of any  C-source file in  the current
                    431: directory and any  subdirectory.  The command ffiinndd interprets the
                    432: `*'  internally;  therefore, you  want  to  suppress the  shell's
                    433: expansion of  that operator,  which is accomplished  by enclosing
                    434: that token between apostrophes.
                    435: 
                    436: A pair of quotation marks " "  has   the  same   effect.   Unlike
                    437: apostrophes, however, kksshh will perform parameter substitution and
                    438: command-output  substitution (described  below) within  quotation
                    439: marks.  Note  that everything between  quotation marks will  be a
                    440: single  argument, even  if there are  spaces between  the tokens.
                    441: For example, the command
                    442: 
                    443: 
                    444:         grep "x y" *.c
                    445: 
                    446: 
                    447: calls  the string-search  command  ggrreepp to  look  for the  string
                    448: xx<ssppaaccee>yy.
                    449: 
                    450: ***** Scripts *****
                    451: 
                    452: Shell commands can be stored in a file, or _s_c_r_i_p_t. The command
                    453: 
                    454: 
                    455: 
                    456: 
                    457: 
                    458: 
                    459: 
                    460: COHERENT Lexicon                                           Page 7
                    461: 
                    462: 
                    463: 
                    464: 
                    465: ksh                          Command                          ksh
                    466: 
                    467: 
                    468: 
                    469:         ksh _s_c_r_i_p_t [ _p_a_r_a_m_e_t_e_r ... ]
                    470: 
                    471: 
                    472: executes the  commands in  _s_c_r_i_p_t with  a new subshell  kksshh. Each
                    473: _p_a_r_a_m_e_t_e_r  is a  value for a  positional parameter,  as described
                    474: below.   If  you  have used  the  command  cchhmmoodd  to make  _s_c_r_i_p_t
                    475: executable, you may omit the kksshh command.
                    476: 
                    477: Parameters  of  the form  `$_n'  represent command-line  arguments
                    478: within a  script.  _n can range from zero  through nine; $00 always
                    479: gives the  name of the script.  These  parameters are also called
                    480: _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r_s.
                    481: 
                    482: If no  corresponding parameter is given on  the command line, the
                    483: shell  substitutes  the  null  string  for that  parameter.   For
                    484: example, if the script ffoorrmmaatt contains the following line:
                    485: 
                    486: 
                    487:         nroff -ms $1 >$1.out
                    488: 
                    489: 
                    490: then invoking ffoorrmmaatt with the command line:
                    491: 
                    492: 
                    493:         format mytext
                    494: 
                    495: 
                    496: invokes the  command nnrrooffff to format the  contents of mmyytteexxtt, and
                    497: writes the output  into file mmyytteexxtt.oouutt.  If, however, you invoke
                    498: this command with the command line
                    499: 
                    500: 
                    501:         format mytext yourtext
                    502: 
                    503: 
                    504: the script will format mmyytteexxtt but ignore yyoouurrtteexxtt altogether.
                    505: 
                    506: Reference  $*  represents all  command-line  arguments.  If,  for
                    507: example, we change the contents of script ffoorrmmaatt to read
                    508: 
                    509: 
                    510:         nroff -ms $* >$1.out
                    511: 
                    512: 
                    513: then the command
                    514: 
                    515: 
                    516:         format mytext yourtext
                    517: 
                    518: 
                    519: will invoke nnrrooffff to  format the contents of mmyytteexxtt and yyoouurrtteexxtt,
                    520: and write the output into file mmyytteexxtt.oouutt.
                    521: 
                    522: Commands  in a  script  can also  be  executed with  the .  (dot)
                    523: command.   It resembles  the kksshh command,  but the  current shell
                    524: 
                    525: 
                    526: COHERENT Lexicon                                           Page 8
                    527: 
                    528: 
                    529: 
                    530: 
                    531: ksh                          Command                          ksh
                    532: 
                    533: 
                    534: 
                    535: executes the script commands without creating a new subshell or a
                    536: new   environment;  therefore,   you   cannot  use   command-line
                    537: arguments.
                    538: 
                    539: ***** Variables *****
                    540: 
                    541: Shell variables are names that can be assigned string values on a
                    542: command line, in the form
                    543: 
                    544: 
                    545:         _n_a_m_e=_v_a_l_u_e
                    546: 
                    547: 
                    548: The  name must  begin  with a  letter, and  can contain  letters,
                    549: digits,  and  underscores   `_'.   In  shell  input,  `$_n_a_m_e'  or
                    550: `${_n_a_m_e}' represents the value of the variable.  For example:
                    551: 
                    552: 
                    553:         TEXT=mytext
                    554: 
                    555:         nroff -ms $TEXT >$TEXT.out
                    556: 
                    557: 
                    558: Here,  kksshh expands  $TTEEXXTT before it  executes the  nnrrooffff command.
                    559: This technique is very useful in large, complex scripts: by using
                    560: variables, you  can change the behavior of  the script by editing
                    561: one  line,   rather  than  having  to   edit  numerous  variables
                    562: throughout the script.
                    563: 
                    564: Note that if an assignment precedes a command on the same command
                    565: line,  the effect  of the  assignment is  local to  that command;
                    566: otherwise, the effect is permanent.  For example,
                    567: 
                    568: 
                    569:         kp=one testproc
                    570: 
                    571: 
                    572: assigns variable  kkpp the value oonnee only for  the execution of the
                    573: script tteessttpprroocc.
                    574: 
                    575: kksshh sets the following variables by default:
                    576: 
                    577: #  The  number  of  actual  positional  parameters given  to  the
                    578:    current command.
                    579: 
                    580: @  The list of positional parameters ``$1 $2 ...''.
                    581: 
                    582: *  The list of positional parameters ``$1'' ``$2'' ...  (the same
                    583:    as `$@' unless some parameters are quoted).
                    584: 
                    585: -  Options  set in  the invocation  of  the shell  or by  the sseett
                    586:    command.
                    587: 
                    588: ?  The exit status returned by the last command.
                    589: 
                    590: 
                    591: 
                    592: COHERENT Lexicon                                           Page 9
                    593: 
                    594: 
                    595: 
                    596: 
                    597: ksh                          Command                          ksh
                    598: 
                    599: 
                    600: 
                    601: !  The process number of the last command invoked with `&'.
                    602: 
                    603: $  The process number of the current shell.
                    604: 
                    605: ***** Environmental Variables *****
                    606: 
                    607: kksshh references the following environmental variables:
                    608: 
                    609: CCWWDD     Current  working  directory: this  is  the  name  of  the
                    610:         directory in which you are now working.
                    611: 
                    612: EENNVV     If this variable  is set  at start-up, after  all pprrooffiillee
                    613:         files have been  executed, the expanded value  is used as
                    614:         the  shell's   start-up  file.    It  typically   defines
                    615:         functions and aliases.
                    616: 
                    617: FFCCEEDDIITT  This sets the editor used by the command ffcc.
                    618: 
                    619: HHOOMMEE    Initial  working  directory;  usually  specified  in  the
                    620:         password file /eettcc/ppaasssswwdd.
                    621: 
                    622: IIFFSS     Delimiters  for  tokens;  by   default  space,  tab,  and
                    623:         newline.
                    624: 
                    625: KKSSHH_VVEERRSSIIOONN
                    626:         The current version of the Korn shell that you are using.
                    627: 
                    628: MMAAIILL    Checked at intervals specified  by environmental variable
                    629:         MMAAIILLCCHHEECCKK. If  file  specified by  this  variable is  new
                    630:         since last checked,  the shell prints  ``You have mail.''
                    631:         on the  user's terminal.   If the  file has  increased in
                    632:         size since the  last check,  the shell prints  ``You have
                    633:         new mail.'' on the user's terminal.
                    634: 
                    635: MMAAIILLCCHHEECCKK
                    636:         Specifies the number of seconds  between checking for new
                    637:         mail.   If  not  specified,   MMAAIILLCCHHEECCKK  defaults  to  60
                    638:         seconds.
                    639: 
                    640: OOLLDDPPWWDD  The prior working directory, if any.
                    641: 
                    642: PPAATTHH    Colon-separated  list   of   directories   searched   for
                    643:         commands.
                    644: 
                    645: PPSS11     First prompt  string,  usually `$'.   Note  that in  this
                    646:         variable and  PPSS22,  kksshh  expands the  symbol  ! into  the
                    647:         current number  of the  command line.   For  example, the
                    648:         prompt kksshh !> prints the prompt kksshh _N_N>    with     every
                    649:         command, where _N_N  is the number of  the current command.
                    650:         This is useful when you have enabled the history feature,
                    651:         as described below.
                    652: 
                    653: PPSS22     Second prompt string, usually `>'.  kksshh prints it when it
                    654:         expects more input,  such as when  an open quotation-mark
                    655:         has been typed  but a  close quotation-mark has  not been
                    656: 
                    657: 
                    658: COHERENT Lexicon                                          Page 10
                    659: 
                    660: 
                    661: 
                    662: 
                    663: ksh                          Command                          ksh
                    664: 
                    665: 
                    666: 
                    667:         typed, or within a shell construct.
                    668: 
                    669: PPWWDD     The present working directory, i.e., the directory within
                    670:         which you are now working.
                    671: 
                    672: SSEECCOONNDDSS
                    673:         The  number  of  seconds  since  the  current  shell  was
                    674:         started.
                    675: 
                    676: SSHHEELLLL   The  full  path  name  of the  shell  that  you  are  now
                    677:         executing.
                    678: 
                    679: TTEERRMM    The name of  the type of  terminal you are  now using, as
                    680:         used  by   various   programs   for   reading  the   file
                    681:         /eettcc/tteerrmmccaapp.
                    682: 
                    683: TTIIMMEEZZOONNEE
                    684:         The current timezone you  are located in, as  set in your
                    685:         .pprrooffiillee.  This is an  interesting and powerful variable;
                    686:         see its entry in the Lexicon for details.
                    687: 
                    688: UUSSEERR    The login-identifier of the user, i.e., you.
                    689: 
                    690: The following special forms substitute parameters conditionally:
                    691: 
                    692: ${_n_a_m_e-_t_o_k_e_n}
                    693:      Substitite  _n_a_m_e if  it  is set;  if it  is not,  substitute
                    694:      _t_o_k_e_n.
                    695: 
                    696: ${_n_a_m_e=_t_o_k_e_n}
                    697:      Substitute _n_a_m_e  if it is set; if it  is not set, substitute
                    698:      _t_o_k_e_n and set _n_a_m_e to equal _t_o_k_e_n.
                    699: 
                    700: ${_n_a_m_e+_t_o_k_e_n}
                    701:      Substitute _t_o_k_e_n if _n_a_m_e is set.
                    702: 
                    703: ${_n_a_m_e?_t_o_k_e_n}
                    704:      Substitute _n_a_m_e if it is set;  if it is not, print _t_o_k_e_n and
                    705:      exit from the shell.
                    706: 
                    707: ***** Command Output Substitution *****
                    708: 
                    709: kksshh can  use the output of  a command as shell  input (as command
                    710: arguments,  for  example)  by  enclosing  the  command  in  grave
                    711: characters ` `.   For  example,  to  list  the  contents  of  the
                    712: directories named in file ddiirrss, use the command
                    713: 
                    714: 
                    715:         ls -l `cat dirs`
                    716: 
                    717: 
                    718: ***** Constructs *****
                    719: 
                    720: kksshh  lets  you  control the  execution  of  programs through  the
                    721: following  constructs.   It recognizes  a  construct  only if  it
                    722: 
                    723: 
                    724: COHERENT Lexicon                                          Page 11
                    725: 
                    726: 
                    727: 
                    728: 
                    729: ksh                          Command                          ksh
                    730: 
                    731: 
                    732: 
                    733: occurs unquoted  as the first  token of a  command.  This implies
                    734: that a separator must precede each reserved word in the following
                    735: constructs; for  example, newline or  `;' must precede  ddoo in the
                    736: ffoorr construct.
                    737: 
                    738: bbrreeaakk [_n]
                    739:      Exit from ffoorr,  uunnttiill, or wwhhiillee. If _n is  given, exit from _n
                    740:      levels.
                    741: 
                    742: ccaassee _t_o_k_e_n iinn [ _p_a_t_t_e_r_n [ | _p_a_t_t_e_r_n ] ...) _s_e_q_u_e_n_c_e;; ] ... eessaacc
                    743:      Check  _t_o_k_e_n  against  each  _p_a_t_t_e_r_n, and  execute  _s_e_q_u_e_n_c_e
                    744:      associated with the first matching _p_a_t_t_e_r_n.
                    745: 
                    746: ccoonnttiinnuuee [_n]
                    747:      Branch to the end of  the _nth enclosing ffoorr, uunnttiill, or wwhhiillee
                    748:      construct.
                    749: 
                    750: ffoorr _n_a_m_e [ iinn _t_o_k_e_n ... ] ddoo _s_e_q_u_e_n_c_e ddoonnee
                    751:      Execute  _s_e_q_u_e_n_c_e once  for each  _t_o_k_e_n. On  each iteration,
                    752:      _n_a_m_e takes the value of the  next _t_o_k_e_n. If the iinn clause is
                    753:      omitted,  $@ is  assumed.  For  example,  to list  all files
                    754:      ending with .cc:
                    755: 
                    756:              for i in *.c
                    757:              do
                    758:                      cat $i
                    759:              done
                    760: 
                    761: 
                    762: iiff _s_e_q_1 tthheenn _s_e_q_2 [ eelliiff _s_e_q_3 tthheenn _s_e_q_4 ] ... [ eellssee _s_e_q_5 ] ffii
                    763:      Execute _s_e_q_1.  If the exit status is  zero, execute _s_e_q_2; if
                    764:      not, execute the optional _s_e_q_3 if given.  If the exit status
                    765:      of _s_e_q_3 is zero, then execute  _s_e_q_4, and so on.  If the exit
                    766:      status of all tested sequences is nonzero, execute _s_e_q_5.
                    767: 
                    768: ttiimmee _s_e_q_u_e_n_c_e
                    769:      Time how  long it takes _s_e_q_u_e_n_c_e  to execute.  When _s_e_q_u_e_n_c_e
                    770:      has  finished  exeucting,  the  time  is  displayed  on  the
                    771:      standard output.
                    772: 
                    773: wwhhiillee _s_e_q_u_e_n_c_e_1 [ ddoo _s_e_q_u_e_n_c_e_2 ] ddoonnee
                    774:      Execute  _s_e_q_u_e_n_c_e_2 as  long  as the  execution of  _s_e_q_u_e_n_c_e_1
                    775:      results in an exit status of zero.
                    776: 
                    777: (_s_e_q_u_e_n_c_e)
                    778:      Execute _s_e_q_u_e_n_c_e within a subshell.  This allows _s_e_q_u_e_n_c_e to
                    779:      change the  current directory,  for example, and  not affect
                    780:      the enclosing environment.
                    781: 
                    782: {_s_e_q_u_e_n_c_e}
                    783:      Braces simply enclose a _s_e_q_u_e_n_c_e.
                    784: 
                    785: ***** Built-in Commands *****
                    786: 
                    787: kksshh  executes  most  commands via  the  ffoorrkk  system call,  which
                    788: 
                    789: 
                    790: COHERENT Lexicon                                          Page 12
                    791: 
                    792: 
                    793: 
                    794: 
                    795: ksh                          Command                          ksh
                    796: 
                    797: 
                    798: 
                    799: creates a  new process.  See  the Lexicon articles  on ffoorrkk() and
                    800: eexxeecc  for details  on these  calls.  kksshh  also has  the following
                    801: commands built into itself.
                    802: 
                    803: . _s_c_r_i_p_t
                    804:      Read and execute commands from _s_c_r_i_p_t. Positional parameters
                    805:      are not allowed.   kksshh searches the directories named in the
                    806:      environmental variable PPAATTHH to find the given _s_c_r_i_p_t.
                    807: 
                    808: : [_t_o_k_e_n ...]
                    809:      A colon  `:' indicates a ``partial  comment''.  kksshh normally
                    810:      ignores all  commands on  a line  that begins with  a colon,
                    811:      except for redirection and such symbols as $, {, ?, etc.
                    812: 
                    813: #    A complete  comment: if # is the first  character on a line,
                    814:      kksshh ignores all text that follows on that line.
                    815: 
                    816: aalliiaass [-dd] [_n_a_m_e=_v_a_l_u_e ...]
                    817:      When called without  arguments, aalliiaass prints all aliases and
                    818:      their  values.  When  called with a  _n_a_m_e but  no associated
                    819:      value, then it prints the value of _n_a_m_e.  When called with a
                    820:      _n_a_m_e and _v_a_l_u_e combination, it associated _v_a_l_u_e with _n_a_m_e.
                    821: 
                    822:      For example, the command
                    823: 
                    824:              alias logout='exit'
                    825: 
                    826:      binds  the  token llooggoouutt  to  the  command eexxiitt:  hereafter,
                    827:      whenever you  type llooggoouutt,  it will be  as if you  typed the
                    828:      eexxiitt command.
                    829: 
                    830:      The -dd option creates an alias for a directory.
                    831: 
                    832:      kksshh has a number of aliases set by default.  See the section
                    833:      AAlliiaasseess, below, for details.
                    834: 
                    835: bbiinndd [-mm] [_k_e_y__s_e_q_u_e_n_c_e=_b_i_n_d_i_n_g__n_a_m_e ...]
                    836:      When called  without arguments, list the  current set of key
                    837:      bindings  for  MicroEMACS-style  editing of  command  lines.
                    838:      When  called  with   arguments,  bind  the  _k_e_y__s_e_q_u_e_n_c_e  to
                    839:      _b_i_n_d_i_n_g__n_a_m_e.
                    840: 
                    841:      For example, the command
                    842: 
                    843:              bind '^[^H'=delete-word-backward
                    844: 
                    845:      binds  the editing command  ddeelleettee-wwoorrdd-bbaacckkwwaarrdd to  the key
                    846:      sequence <eesscc><bbaacckkssppaaccee>.   Note that the  carat characters
                    847:      in  this  command   are  literally  that,  not  the  shell's
                    848:      representation of a literal <eesscc> or <bbaacckkssppaaccee> character.
                    849: 
                    850:      When  called  with   the  -mm  option,  bind  more  than  one
                    851:      _b_i_n_d_i_n_g__n_a_m_e to  a given _k_e_y__s_e_q_u_e_n_c_e.  This  lets you build
                    852:      keyboard macros,  to perform complex editing  tasks with one
                    853:      or two keystrokes.
                    854: 
                    855: 
                    856: COHERENT Lexicon                                          Page 13
                    857: 
                    858: 
                    859: 
                    860: 
                    861: ksh                          Command                          ksh
                    862: 
                    863: 
                    864: 
                    865: 
                    866:      See the section on CCoommmmaanndd-lliinnee EEddiittiinngg, below, for details.
                    867: 
                    868: bbuuiillttiinn _c_o_m_m_a_n_d
                    869:      Execute _c_o_m_m_a_n_d as a built-in command.
                    870: 
                    871: ccdd _d_i_r
                    872:      Change  the working  directory  to _d_i_r.  If  no argument  is
                    873:      given,  change   to  the  home  directory   as  set  by  the
                    874:      environmental variable  HHOOMMEE. When invoked,  it also changes
                    875:      the environmental variables PPWWDD and OOLLDDPPWWDD.
                    876: 
                    877:      Using a  hyphen `-' as the argument causes  kksshh to change to
                    878:      the  previous directory,  i.e., the  one indicated  by shell
                    879:      variable OOLLDDPPWWDD. In  effect, this swaps OOLLDDPPWWDD and PPWWDD, thus
                    880:      allowing  you to  flop  back and  forth  easily between  two
                    881:      directories.
                    882: 
                    883: eecchhoo _t_o_k_e_n ...
                    884:      Echo  _t_o_k_e_n  onto the  standard  output.   kksshh replaces  the
                    885:      command eecchhoo with the alias eecchhoo='pprriinntt'.
                    886: 
                    887: eevvaall [_t_o_k_e_n ...]
                    888:      Evaluate each _t_o_k_e_n and treat the result as shell input.
                    889: 
                    890: eexxeecc [_c_o_m_m_a_n_d]
                    891:      Execute _c_o_m_m_a_n_d directly  rather than as a subprocess.  This
                    892:      terminates the current shell.
                    893: 
                    894: eexxiitt [_s_t_a_t_u_s]
                    895:      Set  the exit  status to _s_t_a_t_u_s,  if given,  then terminate;
                    896:      otherwise, the previous status is used.
                    897: 
                    898: eexxppoorrtt [_n_a_m_e ...]
                    899:      kksshh  executes  each  command  in  an _e_n_v_i_r_o_n_m_e_n_t,  which  is
                    900:      essentially a set  of shell variable names and corresponding
                    901:      string values.  It inherits an environment when invoked, and
                    902:      normally it  passes the same environment  to each command it
                    903:      invokes.  eexxppoorrtt  specifies that  the shell should  pass the
                    904:      modified  value of  each given  _n_a_m_e  to the  environment of
                    905:      subsequent commands.  When  no _n_a_m_e is given, kksshh prints the
                    906:      name of each variable marked for export.
                    907: 
                    908: ffcc [-ll] [-nn] [_f_i_r_s_t [_l_a_s_t]]
                    909:      Draw  the previously  executed commands  _f_i_r_s_t  through _l_a_s_t
                    910:      back  for manipulation  and possible  execution.   _f_i_r_s_t and
                    911:      _l_a_s_t can  be referenced either by  their history numbers, or
                    912:      by  a string  with  which the  command  in question  begins.
                    913:      Normally,  the  commands  are  pulled  into  an  editor  for
                    914:      manipulation before they are executed; the editor is defined
                    915:      by  the environmental  variable FFCCEEDDIITT  (default,  eedd).  The
                    916:      commands in  question are executed as soon  as you exit from
                    917:      the editor.   Option -ll lists the  command(s) on ssttddoouutt, and
                    918:      so suppresses  the editing feature.  Option  -nn inhibits the
                    919:      default history numbers.
                    920: 
                    921: 
                    922: COHERENT Lexicon                                          Page 14
                    923: 
                    924: 
                    925: 
                    926: 
                    927: ksh                          Command                          ksh
                    928: 
                    929: 
                    930: 
                    931: 
                    932: ffcc -ss [_o_l_d=_n_e_w] [_c_o_m_m_a_n_d]
                    933:      Re-execute _c_o_m_m_a_n_d after substituting string _n_e_w for _o_l_d.
                    934: 
                    935: ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g ...]
                    936:      Parse  the _a_r_gs  to See  the Lexicon  entry for  ggeettooppttss for
                    937:      details.
                    938: 
                    939: hhaasshh [-rr] [_n_a_m_e ...]
                    940:      When called without  arguments, hhaasshh lists the path names of
                    941:      all hashed  commands.  When called  with _n_a_m_e hhaasshh  check to
                    942:      see if it is an executable command, and if so adds it to the
                    943:      shell's hash list.  The -rr option removes _n_a_m_e from the hash
                    944:      list.
                    945: 
                    946: kkiillll [-ll] [_s_i_g_n_a_l] _p_r_o_c_e_s_s ...
                    947:      Send _s_i_g_n_a_l  to _p_r_o_c_e_s_s. The  default signal is  TTEERRMM, which
                    948:      terminates the process.  _s_i_g_n_a_l  may either be a number or a
                    949:      mnemonic as #ddeeffiinneed  in header file <ssiiggnnaall.hh>. When called
                    950:      with the  -ll option,  it lists  all known types  of signals.
                    951:      See the Lexicon entry for kkiillll for details.
                    952: 
                    953: lleett [_e_x_p_r_e_s_s_i_o_n]
                    954:      Evaluate  each  _e_x_p_r_e_s_s_i_o_n.  This  command returns  zero  if
                    955:      _e_x_p_r_e_s_s_i_o_n evaluates to  non-zero (i.e., fails), and returns
                    956:      non-zero if  it evalutes to zero  (i.e., succeeds).  This is
                    957:      useful for evaluating  expressions before actually executing
                    958:      them.
                    959: 
                    960: pprriinntt [-nnrreeuu_n] [_a_r_g_u_m_e_n_t ...]
                    961:      Print  each _a_r_g_u_m_e_n_t  on the  standard output,  separated by
                    962:      spaces and terminated  with a newline.  Option -nn suppresses
                    963:      printing of  the newline.  Option -uu_n  redirects output from
                    964:      the standard output to file descriptor _n.
                    965: 
                    966:      Note that each _a_r_g_u_m_e_n_t can contain the following standard C
                    967:      escape characters:  \bb, \ff,  \nn, \rr,  \vv, and \###.  See the
                    968:      Lexicon article  on CC LLaanngguuaaggee for  details each character's
                    969:      meaning.  The  option -rr inhibits  this feature, and  the -ee
                    970:      option re-enables it.
                    971: 
                    972: rreeaadd _n_a_m_e ...
                    973:      Read a line from the standard input and assign each token of
                    974:      the input  to the corresponding shell  variable _n_a_m_e. If the
                    975:      input contains  fewer tokens than the  _n_a_m_e list, assign the
                    976:      null string to  extra variables.  If the input contains more
                    977:      tokens, assign the last _n_a_m_e the remainder of the input.
                    978: 
                    979: rreeaaddoonnllyy [_n_a_m_e ...]
                    980:      Mark  each  shell variable  _n_a_m_e  as  a read-only  variable.
                    981:      Subsequent  assignments to read-only  variables will  not be
                    982:      permitted.  With  no arguments, print the  name and value of
                    983:      each read-only variable.
                    984: 
                    985: 
                    986: 
                    987: 
                    988: COHERENT Lexicon                                          Page 15
                    989: 
                    990: 
                    991: 
                    992: 
                    993: ksh                          Command                          ksh
                    994: 
                    995: 
                    996: 
                    997: rreettuurrnn [_s_t_a_t_u_s]
                    998:      Return _s_t_a_t_u_s to the parent process.
                    999: 
                   1000: sseett [-aaeeffhhkkmmnnuuvvxx [-oo _k_e_y_w_o_r_d] [_n_a_m_e ...] ]
                   1001:      Set listed flag.   The -oo option sets _k_e_y_w_o_r_d, where _k_e_y_w_o_r_d
                   1002:      is a shell option.
                   1003: 
                   1004:      When used  with one or  more _n_a_m_e_s, this  command sets shell
                   1005:      variables _n_a_m_e to  values of positional parameters beginning
                   1006:      with $11.
                   1007: 
                   1008:      For example, the command
                   1009: 
                   1010:              set -h -o emacs ignoreeof
                   1011: 
                   1012:      performs the  following: turns on hashing  for all commands,
                   1013:      turns  on MicroEMACS-style  command-line editing,  and turns
                   1014:      off exiting  upon EOF (that  is, you must type  eexxiitt to exit
                   1015:      from the  shell).  sseett  commands are especially  useful when
                   1016:      embedded in  your .pprrooffiillee, where they  can customize kksshh to
                   1017:      your preferences.
                   1018: 
                   1019:      For details of this command, see its Lexicon entry.
                   1020: 
                   1021: sshhiifftt
                   1022:      Rename positional parameter 11 to current value of $22, and so
                   1023:      on.
                   1024: 
                   1025: tteesstt [_o_p_t_i_o_n] [_e_x_p_r_e_s_s_i_o_n]
                   1026:      Check _e_x_p_r_e_s_s_i_o_n for condition  _o_p_t_i_o_n. This is a useful and
                   1027:      complex command, with  more options than can be listed here.
                   1028:      See its Lexicon entry for details.
                   1029: 
                   1030: ttiimmeess
                   1031:      Print on  the standard output  a summary of  processing time
                   1032:      used by the current shell and all of its child processes.
                   1033: 
                   1034: ttrraapp [_c_o_m_m_a_n_d] [_n ...]
                   1035:      Execute  _c_o_m_m_a_n_d if  kksshh receives  signal  _n. If  _c_o_m_m_a_n_d is
                   1036:      omitted,  reset  traps  to  original  values.  To  ignore  a
                   1037:      signal, pass  null string as  _c_o_m_m_a_n_d. With _n  zero, execute
                   1038:      _c_o_m_m_a_n_d when the  shell exits.  With no arguments, print the
                   1039:      current trap settings.
                   1040: 
                   1041: ttyyppeesseett [-ffiirrxx] [+ffiirrxx] [_n_a_m_e [=_v_a_l_u_e] ... ]
                   1042:      When  called without  an  argument, this  command lists  all
                   1043:      variables and their attributes.
                   1044: 
                   1045:      When called with an option  but without a _n_a_m_e, it lists all
                   1046:      variables that have the specified attribute; - tells ttyyppeesseett
                   1047:      to list the value of each variable and + tells it not to.
                   1048: 
                   1049:      When called  with one  or more _n_a_m_e_s,  it gives _n_a_m_e  to the
                   1050:      listed  attribute.   If _n_a_m_e  is  associated  with a  _v_a_l_u_e,
                   1051:      ttyyppeesseett also assigns the _v_a_l_u_e to it.
                   1052: 
                   1053: 
                   1054: COHERENT Lexicon                                          Page 16
                   1055: 
                   1056: 
                   1057: 
                   1058: 
                   1059: ksh                          Command                          ksh
                   1060: 
                   1061: 
                   1062: 
                   1063: 
                   1064:      ttyyppeesseett recognizes the following attributes:
                   1065: 
                   1066:              -ii      Store variable's value as an integer
                   1067:              -ff      List function instead of variable
                   1068:              -rr      Make the variable read-only
                   1069:              -xx      Export variable to the environment
                   1070: 
                   1071: uummaasskk [_n_n_n]
                   1072:      Set user file creation mask to _n_n_n. If no argument is given,
                   1073:      print the current file creation mask.
                   1074: 
                   1075: uunnaalliiaass [-dd] _n_a_m_e ...
                   1076:      Remove the  alias for each _n_a_m_e. The  -dd option unaliases an
                   1077:      alias for a directory.
                   1078: 
                   1079: wwaaiitt [_p_i_d]
                   1080:      Hold  execution  of   further  commands  until  process  _p_i_d
                   1081:      terminates.   If   _p_i_d  is  omitted,  wait   for  all  child
                   1082:      processes.  If no children are active, this command finishes
                   1083:      immediately.
                   1084: 
                   1085: wwhheennccee [-vv] _n_a_m_e ...
                   1086:      List the type of command for each _n_a_m_e. When called with the
                   1087:      -vv option, also list functions and aliases.
                   1088: 
                   1089: ***** Aliases *****
                   1090: 
                   1091: kksshh implements  as aliases a number of commands  that sshh calls as
                   1092: separate executable programs.  The eecchhoo alias, for instance, does
                   1093: everything that  /bbiinn/eecchhoo does, but kksshh does  not have to ffoorrkk()
                   1094: and eexxeecc() simply to echo a token.  Other aliases, like ppwwdd, work
                   1095: by  printing  the  contents  of  shell  variables.   The  command
                   1096: /bbiinn/ppwwdd still  works should you prefer it,  but you must request
                   1097: it by  its full  path name  should you not  wish to use  the much
                   1098: faster alias version.
                   1099: 
                   1100: kksshh sets the following aliases  by default.  If you wish, you can
                   1101: use the  built-in command uunnaalliiaass to  make one or all  of them go
                   1102: away.
                   1103: 
                   1104:         eecchhoo=pprriinntt
                   1105:         ffaallssee=lleett
                   1106:         ffuunnccttiioonnss=ttyyppeesseett -ff
                   1107:         hhiissttoorryy=ffcc -ll
                   1108:         iinntteeggeerr=ttyyppeesseett -ii
                   1109:         llooggiinn=eexxeecc llooggiinn
                   1110:         nneewwggrrpp=eexxeecc nneewwggrrpp
                   1111:         ppwwdd=pprriinntt -rr $PPWWDD
                   1112:         rr=ffcc -ss
                   1113:         ttrruuee=:
                   1114:         ttyyppee=wwhheennccee -vv
                   1115: 
                   1116: 
                   1117: 
                   1118: 
                   1119: 
                   1120: COHERENT Lexicon                                          Page 17
                   1121: 
                   1122: 
                   1123: 
                   1124: 
                   1125: ksh                          Command                          ksh
                   1126: 
                   1127: 
                   1128: 
                   1129: ***** Job Control *****
                   1130: 
                   1131: kksshh lets  you manipulate and monitor background  jobs via its _j_o_b
                   1132: _c_o_n_t_r_o_l commands.
                   1133: 
                   1134: The following commands manipulate background jobs:
                   1135: 
                   1136: jjoobbss Display information about  all controlled jobs.  Information
                   1137:      is in the following format:
                   1138: 
                   1139:              %_n_u_m [+-] _p_i_d _s_t_a_t_u_s _c_o_m_m_a_n_d
                   1140: 
                   1141:      where  _n_u_m indicates  the  job number,    `+' indicates  the
                   1142:      current  job, `-'  indicates the  previous  job, _p_i_d  is the
                   1143:      job's process identifier, _s_t_a_t_u_s shows the status of the job
                   1144:      (e.g., Running,  Done, Killed),  and _c_o_m_m_a_n_d is  the command
                   1145:      description.  Note  that kksshh only checks  for changes in job
                   1146:      status when waiting for a command to complete.
                   1147: 
                   1148: kkiillll [-_s_i_g_n_a_l] _p_i_d ...
                   1149:      Described above.
                   1150: 
                   1151: wwaaiitt [_p_i_d]
                   1152:      Hold  execution  of   further  commands  until  process  _p_i_d
                   1153:      terminates.  See its Lexicon entry for details.
                   1154: 
                   1155: The following `%' syntax can be used with the above commands:
                   1156: 
                   1157: %+   Select the current job.
                   1158: 
                   1159: %-   Select the previous job.
                   1160: 
                   1161: %_n_u_m Select the job with job number _n_u_m.
                   1162: 
                   1163: %_s_t_r_i_n_g
                   1164:      Select the  most recently  invoked job whose  command begins
                   1165:      with _s_t_r_i_n_g.
                   1166: 
                   1167: %?_s_t_r_i_n_g
                   1168:      Select the most  recently invoked job whose command contains
                   1169:      _s_t_r_i_n_g.
                   1170: 
                   1171: ***** Command-line Editing *****
                   1172: 
                   1173: One of the most useful features of kksshh is its ability to remember
                   1174: commands that  you have typed previously.   You can interactively
                   1175: edit previously issued commands and re-issue them with just a few
                   1176: keystrokes.
                   1177: 
                   1178: You  can recall  commands  and edit  them using  the ffcc  command,
                   1179: described  above.   kksshh,  however,  also  has  built  into  it  a
                   1180: MicroEMACS editing feature that lets you recall and edit commands
                   1181: using MicroEMACS-style editing  commands.  When you have finished
                   1182: editing,  simply typing  <eenntteerr> dispatches  the command  for re-
                   1183: execution.
                   1184: 
                   1185: 
                   1186: COHERENT Lexicon                                          Page 18
                   1187: 
                   1188: 
                   1189: 
                   1190: 
                   1191: ksh                          Command                          ksh
                   1192: 
                   1193: 
                   1194: 
                   1195: 
                   1196: To turn on MicroEMACS editing, use the command
                   1197: 
                   1198: 
                   1199:         set -o emacs
                   1200: 
                   1201: 
                   1202: The following  table gives each  editing command and  its default
                   1203: keybinding.   Note that  you  can replace  any  of the  following
                   1204: keybindings by  using the  bbiinndd command, described  above.  Note,
                   1205: too, that not every command has a default keybinding.  Those that
                   1206: do not have one are marked ``None''.
                   1207: 
                   1208: aabboorrtt (<ccttrrll-GG>)
                   1209:      Abort the current input line or function.
                   1210: 
                   1211: aauuttoo-iinnsseerrtt
                   1212:      Insert text into the  command line.  This is the default for
                   1213:      almost every key.
                   1214: 
                   1215: bbaacckkwwaarrdd-cchhaarr (<ccttrrll-BB>)
                   1216:      Move the cursor one character to the left.
                   1217: 
                   1218: bbaacckkwwaarrdd-wwoorrdd (<eesscc>BB)
                   1219:      Move the cursor one word to  the left.  A wwoorrdd is defined as
                   1220:      any  cluster   of  characters  delineated  by   any  of  the
                   1221:      characters  named  in  the  environmental variable  IIFFSS:  by
                   1222:      default, <ssppaaccee>, <ttaabb>, and <nneewwlliinnee>.
                   1223: 
                   1224: bbeeggiinnnniinngg-ooff-lliinnee (<ccttrrll-AA>)
                   1225:      Move  the  cursor   to  the  leftmost  position  (i.e.,  the
                   1226:      beginning) of the line.
                   1227: 
                   1228: ccoommpplleettee (<eesscc><eesscc>)
                   1229:      Complete as much as is  unique of the hashed command name or
                   1230:      file name  in which the cursor is  positioned.  If no unique
                   1231:      command or  file name is  found, kksshh beeps.   Note that this
                   1232:      command does nothing unless you have used the sseett command to
                   1233:      turn on hashing.
                   1234: 
                   1235: ccoommpplleettee-ccoommmmaanndd (<ccttrrll-XX><eesscc>)
                   1236:      Automatically complete  as much as  is unique of  the hashed
                   1237:      command name.  Like the ccoommpplleettee command, above, except that
                   1238:      file names are not expanded.
                   1239: 
                   1240: ccoommpplleettee-ffiillee (<ccttrrll-XX><ccttrrll-XX>)
                   1241:      Automatically  complete as  much as  is  unique of  the file
                   1242:      name.   Like  the   ccoommpplleettee  command,  above,  except  that
                   1243:      commands are not expanded.
                   1244: 
                   1245: ddeelleettee-cchhaarr-bbaacckkwwaarrdd (<ccttrrll-HH>)
                   1246:      Delete the character to  the left of the cursor.  Shift text
                   1247:      to the left to fill the gap left by the deleted character.
                   1248: 
                   1249: 
                   1250: 
                   1251: 
                   1252: COHERENT Lexicon                                          Page 19
                   1253: 
                   1254: 
                   1255: 
                   1256: 
                   1257: ksh                          Command                          ksh
                   1258: 
                   1259: 
                   1260: 
                   1261: ddeelleettee-cchhaarr-ffoorrwwaarrdd (<ccttrrll-DD>)
                   1262:      Delete the  character upon  which the cursor  is positioned.
                   1263:      Shift text to  the left to fill the gap  left by the deleted
                   1264:      character.
                   1265: 
                   1266: ddeelleettee-wwoorrdd-bbaacckkwwaarrdd (<ccttrrll-WW>)
                   1267:      Delete the  word to the  left of the cursor.   Shift text to
                   1268:      the left to fill the gap left by the deleted word.
                   1269: 
                   1270: ddeelleettee-wwoorrdd-ffoorrwwaarrdd (<eesscc>DD)
                   1271:      Delete the  word to the right of the  cursor.  Shift text to
                   1272:      the left to fill the gap left by the deleted word.
                   1273: 
                   1274: ddoowwnn-hhiissttoorryy (<ccttrrll-NN>)
                   1275:      Scroll to the next command in the history buffer, if any.
                   1276: 
                   1277: eenndd-ooff-lliinnee (<ccttrrll-EE>)
                   1278:      Move the cursor to the rightmost position (i.e., the end) of
                   1279:      the line.
                   1280: 
                   1281: eeoott (<ccttrrll-_>)
                   1282:      Send  an EOT  (end  of transmission)  signal  to the  shell.
                   1283:      Normally,  this is  sent  by <ccttrrll-DD>,  but MicroEMACS  mode
                   1284:      binds this keystroke to an editing command.
                   1285: 
                   1286: ffoorrwwaarrdd-cchhaarr (<ccttrrll-FF>)
                   1287:      Move the cursor one character to the right.
                   1288: 
                   1289: ffoorrwwaarrdd-wwoorrdd (<eesscc>FF)
                   1290:      Move the cursor one word to the right.
                   1291: 
                   1292: kkiillll-lliinnee (<ccttrrll-UU>)
                   1293:      Delete (i.e., erase) this entire input line.
                   1294: 
                   1295: kkiillll-ttoo-eeooll (<ccttrrll-KK>)
                   1296:      Kill the  input line from where the  cursor is positioned to
                   1297:      the end of the line.
                   1298: 
                   1299: lliisstt (<eesscc>?)
                   1300:      Display  a sorted  listed of  all  hashed commands  and file
                   1301:      names that have been entered so far, and so lists the tokens
                   1302:      that can  be expanded with the  ccoommpplleettee commands, described
                   1303:      above.
                   1304: 
                   1305: lliisstt-ccoommmmaanndd (<ccttrrll-XX>?)
                   1306:      List all hashed commands.
                   1307: 
                   1308: lliisstt-ffiillee (none)
                   1309:      List all files used in hashed commands so far.
                   1310: 
                   1311: nneewwlliinnee (<ccttrrll-JJ> or <ccttrrll-MM>)
                   1312:      Dispatch the  current line to the  shell for execution.  The
                   1313:      cursor need not  be at the beginning or end  of the line for
                   1314:      this command to work correctly.
                   1315: 
                   1316: 
                   1317: 
                   1318: COHERENT Lexicon                                          Page 20
                   1319: 
                   1320: 
                   1321: 
                   1322: 
                   1323: ksh                          Command                          ksh
                   1324: 
                   1325: 
                   1326: 
                   1327: pprreeffiixx-11 (<eesscc>)
                   1328:      Introduce a two-character command sequence.
                   1329: 
                   1330: pprreeffiixx-22 (<ccttrrll-XX>)
                   1331:      Introduce a two-character command sequence.
                   1332: 
                   1333: qquuoottee (<ccttrrll-^>)
                   1334:      Read the  following character  literally, rather than  as an
                   1335:      editing command.
                   1336: 
                   1337: rreeddrraaww (<ccttrrll-LL>)
                   1338:      Redisplay the prompt  and the current command line.  This is
                   1339:      useful if  the line is garbled due to,  say, line noise when
                   1340:      you are using a modem.
                   1341: 
                   1342: sseeaarrcchh-cchhaarraacctteerr (<ccttrrll-]>)
                   1343:      Search  forward in  the current  command  line for  the next
                   1344:      character typed.
                   1345: 
                   1346: sseeaarrcchh-hhiissttoorryy (<ccttrrll-RR>)
                   1347:      Enter incremental-search  mode and search  backwards through
                   1348:      the history buffer.   aabboorrtt aborts search and returns you to
                   1349:      the  line  from  which  you  began  the search;  <eesscc>  ends
                   1350:      searching and leaves you in the current line.
                   1351: 
                   1352: ssttuuffff (none)
                   1353:      Take a  character that  is bound  to an editing  command and
                   1354:      ``stuff'' it back into the terminal input, so it can receive
                   1355:      special treatment by the terminal handler.
                   1356: 
                   1357: ssttuuffff-rreesseett (none)
                   1358:      ``Stuffs'' a character, then aborts input.
                   1359: 
                   1360: ttrraannssppoossee-cchhaarrss (<ccttrrll-TT>)
                   1361:      Swap the  character the cursor in on,  with the character to
                   1362:      its left.
                   1363: 
                   1364: uupp-hhiissttoorryy (<ccttrrll-PP>)
                   1365:      Move to the previous line in the history buffer (if any).
                   1366: 
                   1367: yyaannkk (<ccttrrll-YY>)
                   1368:      Insert the  most recently killed text  back into the command
                   1369:      string, at the point where the cursor is positioned.
                   1370: 
                   1371: yyaannkk-ppoopp (<eesscc>YY)
                   1372:      Yank a  string, then replace  it within the  ``yank'' buffer
                   1373:      with the next most previously killed string.
                   1374: 
                   1375: ***** Example *****
                   1376: 
                   1377: The  following C  code  creates a  program  called sspplluurrtt.cc.   It
                   1378: demonstrates  numbered redirection  of  kksshh, by  writing to  five
                   1379: streams without opening them.  Compile it with the command:
                   1380: 
                   1381: 
                   1382: 
                   1383: 
                   1384: COHERENT Lexicon                                          Page 21
                   1385: 
                   1386: 
                   1387: 
                   1388: 
                   1389: ksh                          Command                          ksh
                   1390: 
                   1391: 
                   1392: 
                   1393: 
                   1394:         cc -o splurt splurt.c
                   1395: 
                   1396: 
                   1397: To call it from the command line, you could type a command of the
                   1398: form:
                   1399: 
                   1400: 
                   1401:         splurt  3> splurt3 4> splurt4 5> splurt5 6> splurt6 7> splurt7
                   1402: 
                   1403: 
                   1404: This will redirect the sspplluurrtt's output into files sspplluurrtt33 through
                   1405: sspplluurrtt77.
                   1406: 
                   1407: 
                   1408: #include <stdio.h>
                   1409: main()
                   1410: {
                   1411:         int i;
                   1412:         char buf[50];
                   1413: 
                   1414: 
                   1415: 
                   1416:         for(i = 3; i < 8; i++) {
                   1417:                 sprintf(buf, "For fd %d\n", i);
                   1418:                 write(i, buf, strlen(buf));
                   1419:         }
                   1420: }
                   1421: 
                   1422: 
                   1423: ***** Files *****
                   1424: 
                   1425: /eettcc/pprrooffiillee -- System-wide initial commands
                   1426: $HHOOMMEE/.pprrooffiillee -- User-specific initial commands
                   1427: /ddeevv/nnuullll -- For background input
                   1428: 
                   1429: ***** See Also *****
                   1430: 
                   1431: bbiinndd,  ccoommmmaannddss,  dduupp(), eennvviirroonn,  eexxeecc,  ffoorrkk(), ggeettooppttss,  jjoobbss,
                   1432: kkiillll, llooggiinn, nneewwggrrpp, sseett, sshh, ssiiggnnaall(), tteesstt, wwaaiitt
                   1433: _I_n_t_r_o_d_u_c_t_i_o_n _t_o _s_h, _t_h_e _B_o_u_r_n_e _S_h_e_l_l, tutorial
                   1434: 
                   1435: ***** Notes *****
                   1436: 
                   1437: This version of  kksshh offers a subset of the  features of the Korn
                   1438: shell  shipped  with UNIX  System  V.2.  It  does  _n_o_t offer  the
                   1439: following features:
                   1440: 
                   1441: -> vvii-style command-line editing.
                   1442: 
                   1443: -> Command ffcc -ee.
                   1444: 
                   1445: -> Variables RRAANNDDOOMM and PPPPIIDD.
                   1446: 
                   1447: 
                   1448: 
                   1449: 
                   1450: COHERENT Lexicon                                          Page 22
                   1451: 
                   1452: 
                   1453: 
                   1454: 
                   1455: ksh                          Command                          ksh
                   1456: 
                   1457: 
                   1458: 
                   1459: -> Variable arrays.
                   1460: 
                   1461: -> Variable attributes other than integers.
                   1462: 
                   1463: The Mark  Williams version of  kksshh is based  on the public-domain
                   1464: version of the Korn shell, which  in turn is based on the public-
                   1465: domain  version of  the seventh edition  Bourne shell  written by
                   1466: Charles Forsyth  and modified by Eric  Gisin, Ron Natalie, Arnold
                   1467: Robbins, Doug Gwyn, and Erik Baalbergen.
                   1468: 
                   1469: 
                   1470: 
                   1471: 
                   1472: 
                   1473: 
                   1474: 
                   1475: 
                   1476: 
                   1477: 
                   1478: 
                   1479: 
                   1480: 
                   1481: 
                   1482: 
                   1483: 
                   1484: 
                   1485: 
                   1486: 
                   1487: 
                   1488: 
                   1489: 
                   1490: 
                   1491: 
                   1492: 
                   1493: 
                   1494: 
                   1495: 
                   1496: 
                   1497: 
                   1498: 
                   1499: 
                   1500: 
                   1501: 
                   1502: 
                   1503: 
                   1504: 
                   1505: 
                   1506: 
                   1507: 
                   1508: 
                   1509: 
                   1510: 
                   1511: 
                   1512: 
                   1513: 
                   1514: 
                   1515: 
                   1516: COHERENT Lexicon                                          Page 23
                   1517: 
                   1518: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.