Below is an older Preformatted man page for tcsh.   -- CRH
------------------------------------------------------------------------------


TCSH(1)             UNIX Programmer's Manual              TCSH(1)



NNNNAAAAMMMMEEEE
     tcsh - C shell with file name completion and command line
     editing

SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
     ttttccccsssshhhh [ ----bbbbccccddddeeeeffffiiiillllmmmmnnnnqqqqssssttttvvvvVVVVxxxxXXXX ] [ _a_r_g_u_m_e_n_t ... ]

DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
     _T_c_s_h is an enhanced version of the Berkeley UNIX C shell
     _c_s_h(1).  It behaves exactly like the C shell, except for the
     added utilities of:

       1)  Command line editing using Emacs-style commands.

       2)  Visual step up/down through the history list.

       3)  Terminal mode sanity checking and resetting.

       4)  Interactive command, file name and user name comple-
           tion.

       5)  File/directory/user list in the middle of a typed com-
           mand.

       6)  Spelling correction of command, file, and user names.

       7)  Lookup of command documentation in the middle of a
           typed command.

       8)  Enhanced history mechanism.

       9)  Automatic logout after long periods of idle time.

       10) Automatic execution of a single command prior to
           printing each prompt.

       11) Automatic periodic command execution.

       12) A new syntax for the prompt, and the ability to set
           the prompt for "while" and "for" loops.

       13) Time stamps in the history list.

       14) An addition to the syntax of filenames to access
           entries in the directory stack, and the ability treat
           symbolic links in a sane way when changing direc-
           tories.

       15) The ability to watch for logins and logouts by user or
           terminal on the machine.

       16) A scheduled event list, which specifies commands which



Printed 9/18/91           5 August 1991                         1






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           are to be executed at given times.

       17) A new builtin that does a subset of _l_s(1).

       18) An addition to the file expression syntax for a char-
           acter not in a set of characters and the ability to
           negate a globbing pattern.

       19) New automatically initialized environment variables
           _H_O_S_T and _H_O_S_T_T_Y_P_E.

       20) Commands for debugging terminal capabilities.

       21) Searching for the visual history mechanism.

       22) A new builtin for the _w_h_i_c_h(1) command.

       23) Restarting a stopped editor with two keystrokes.

       24) Status line support

       25) Automatic execution of a command when the current
           working directory is changed.

       26) Native Language System support.

       27) Automatic process time reporting.

       28) OS Dependent Builtin Support

       29) Automatic window size adjustment

       30) Input files

       31) Additional/Undocumented Options

       32) Enhanced history/variable modifier expansion

     For a description of standard C-shell features, see the _c_s_h
     manual page.

1111.... CCCCOOOOMMMMMMMMAAAANNNNDDDD LLLLIIIINNNNEEEE EEEEDDDDIIIITTTTIIIINNNNGGGG
     Commands that the user types in may be edited using the same
     control characters that Gnu Emacs or vi uses.  Arrow and
     function key sequences are also allowed.  _T_c_s_h allows this
     by setting the terminal to `CBREAK' mode and reading the
     input one character at a time.

     There is a new shell command, _b_i_n_d_k_e_y, that allows the user
     to redefine what any key does, or find out what any or all
     of the keys do.




Printed 9/18/91           5 August 1991                         2






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     Syntax: bindkey [ -a ] [ -s ] [ -v ] [ -e ] [ -d ] [ -l ] [
     -r ] [ -- ] [ in-string [ out-string | command ]]

     If no values are given all bindings are listed. If only in-
     string is given, bindings for the in-string is listed.

     Otherwise it binds the in-string to the given out-string or
     command.  If out-string, this is treated as input to _t_c_s_h
     when in-string is typed. This may be used recursively to
     currently a level of 10 deep.

     There are two basic key maps: the normal and alternative
     one. The alternative is used by VI command mode. For multi-
     character input the basic key maps contains a sequence-
     lead-in for the first character in the input.

     Options:
         -a    bind in-string in alternative key map.
         -s    bind an out-string instead of a command
         -v    bind for default VI-mode
         -e    bind for default emacs-mode
         -d    bind to compiled in default
         -l    list functions available with short description
         -r    remove the binding of in-string

     In strings control characters may be written as caret-
     <letter> and backslash ("\") is used to escape a character
     as follows:
          \\\\aaaa   bell character
          \\\\nnnn   line feed (new line)
          \\\\bbbb   back space
          \\\\tttt   horizontal tab
          \\\\vvvv   vertical tab
          \\\\ffff   form feed
          \\\\rrrr   carriage return
          \\\\eeee   escape
          \\\\nnnnnnnnnnnn character code in octal
     In all other cases \ escapes the following character. Needed
     for escaping the special meaning of \ and ^.  Delete is
     written as "^?" (caret-question mark).

     _T_c_s_h always binds the arrow keys as defined by the termcap
     entry to:

           up arrow       up-history
           down arrow     down-history
           right arrow    forward-char
           left arrow     backward-char

     except where these bindings would alter other single charac-
     ter bindings.  If this is not desired one can avoid the
     automatic arrow key binding using _s_e_t_t_c to change the arrow



Printed 9/18/91           5 August 1991                         3






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     key escape sequences to the empty string.  The ansi/vt100
     sequences for arrow keys are always bound.

     The following is a list of the default emacs and vi bind-
     ings.  Characters with the 8th bit set are written as M-
     <character>.  Note however, that unlike with the old _b_i_n_d
     command (see below), the syntax M-<character> has no special
     meaning to the _b_i_n_d_k_e_y command, and the bindings for the
     sequence escape+<character> and M-<character> as given below
     are handled separately (although the the default bindings
     are the same).  The printable ascii characters not mentioned
     in the list are bound to the _s_e_l_f-_i_n_s_e_r_t-_c_o_m_m_a_n_d function,
     which just inserts the given character literally into the
     input line.  The remaining characters are bound to the
     _u_n_d_e_f_i_n_e_d-_k_e_y function, which only causes a beep (unless
     _n_o_b_e_e_p is set, of course).

           EMACS bindings

           "^@"                     ->  set-mark-command
           "^A"                     ->  beginning-of-line
           "^B"                     ->  backward-char
           "^C"                     ->  tty-sigintr
           "^D"                     ->  delete-char-or-list
           "^E"                     ->  end-of-line
           "^F"                     ->  forward-char
           "^G"                     ->  is undefined
           "^H"                     ->  backward-delete-char
           "^I"                     ->  complete-word
           "^J"                     ->  newline
           "^K"                     ->  kill-line
           "^L"                     ->  clear-screen
           "^M"                     ->  newline
           "^N"                     ->  down-history
           "^O"                     ->  tty-flush-output
           "^P"                     ->  up-history
           "^Q"                     ->  tty-start-output
           "^R"                     ->  redisplay
           "^S"                     ->  tty-stop-output
           "^T"                     ->  transpose-chars
           "^U"                     ->  kill-whole-line
           "^V"                     ->  quoted-insert
           "^W"                     ->  kill-region
           "^X"                     ->  sequence-lead-in
           "^Y"                     ->  yank
           "^Z"                     ->  tty-sigtsusp
           "^["                     ->  sequence-lead-in
           "^\"                     ->  tty-sigquit
           "^]"                     ->  tty-dsusp
           " " to "/"               ->  self-insert-command
           "0"  to "9"              ->  digit
           ":"  to "~"              ->  self-insert-command



Printed 9/18/91           5 August 1991                         4






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           "^?"                     ->  backward-delete-char

           EMACS Multi-character and 8 bit bindings

           "^[^D" or "M-^D"         ->  list-choices
           "^[^H" or "M-^H"         ->  backward-delete-word
           "^[^I" or "M-^I"         ->  complete-word
           "^[^L" or "M-^L"         ->  clear-screen
           "^[^Z" or "M-^Z"         ->  run-fg-editor
           "^[^[" or "M-^["         ->  complete-word
           "^[^_" or "M-^_"         ->  copy-prev-word
           "^[ "  or "M- "          ->  expand-history
           "^[!"  or "M-!"          ->  expand-history
           "^[$"  or "M-$"          ->  spell-line
           "^[0"  or "M-0"          ->  digit-argument
           "^[1"  or "M-1"          ->  digit-argument
           "^[2"  or "M-2"          ->  digit-argument
           "^[3"  or "M-3"          ->  digit-argument
           "^[4"  or "M-4"          ->  digit-argument
           "^[5"  or "M-5"          ->  digit-argument
           "^[6"  or "M-6"          ->  digit-argument
           "^[7"  or "M-7"          ->  digit-argument
           "^[8"  or "M-8"          ->  digit-argument
           "^[9"  or "M-9"          ->  digit-argument
           "^[?"  or "M-?"          ->  which-command
           "^[B"  or "M-B"          ->  backward-word
           "^[C"  or "M-C"          ->  capitalize-word
           "^[D"  or "M-D"          ->  delete-word
           "^[F"  or "M-F"          ->  forward-word
           "^[H"  or "M-H"          ->  run-help
           "^[L"  or "M-L"          ->  downcase-word
           "^[N"  or "M-N"          ->  history-search-forward
           "^[P"  or "M-P"          ->  history-search-backward
           "^[R"  or "M-R"          ->  toggle-literal-history
           "^[S"  or "M-S"          ->  spell-word
           "^[U"  or "M-U"          ->  upcase-word
           "^[W"  or "M-W"          ->  copy-region-as-kill
           "^[_"  or "M-_"          ->  insert-last-word
           "^[b"  or "M-b"          ->  backward-word
           "^[c"  or "M-c"          ->  capitalize-word
           "^[d"  or "M-d"          ->  delete-word
           "^[f"  or "M-f"          ->  forward-word
           "^[h"  or "M-h"          ->  run-help
           "^[l"  or "M-l"          ->  downcase-word
           "^[n"  or "M-n"          ->  history-search-forward
           "^[p"  or "M-p"          ->  history-search-backward
           "^[r"  or "M-r"          ->  toggle-literal-history
           "^[s"  or "M-s"          ->  spell-word
           "^[u"  or "M-u"          ->  upcase-word
           "^[w"  or "M-w"          ->  copy-region-as-kill
           "^[^?" or "M-^?"         ->  backward-delete-word
           "^X^X"                   ->  exchange-point-and-mark



Printed 9/18/91           5 August 1991                         5






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           "^X*"                    ->  expand-glob
           "^X$"                    ->  expand-variables
           "^XG"                    ->  list-glob
           "^Xg"                    ->  list-glob


           VI Insert Mode functions

           "^C"                     ->  tty-sigintr
           "^D"                     ->  list-or-eof
           "^H"                     ->  backward-delete-char
           "^I"                     ->  complete-word
           "^J"                     ->  newline
           "^K"                     ->  kill-line
           "^L"                     ->  clear-screen
           "^M"                     ->  newline
           "^N"                     ->  is undefined
           "^O"                     ->  tty-flush-output
           "^P"                     ->  is undefined
           "^Q"                     ->  tty-start-output
           "^R"                     ->  redisplay
           "^S"                     ->  tty-stop-output
           "^T"                     ->  is undefined
           "^U"                     ->  backward-kill-line
           "^V"                     ->  quoted-insert
           "^W"                     ->  backward-delete-word
           "^X"                     ->  is undefined
           "^Y"                     ->  tty-dsusp
           "^Z"                     ->  tty-sigtsusp
           "^["                     ->  vi-cmd-mode
           "^\"                     ->  tty-sigquit
           " "  to "~"              ->  self-insert-command
           "^?"                     ->  backward-delete-char

           VI Command Mode functions

           "^@"                     ->  is undefined
           "^A"                     ->  beginning-of-line
           "^B"                     ->  is undefined
           "^C"                     ->  tty-sigintr
           "^D"                     ->  list-choices
           "^E"                     ->  end-of-line
           "^F"                     ->  is undefined
           "^G"                     ->  list-glob
           "^H"                     ->  backward-delete-char
           "^I"                     ->  vi-cmd-mode-complete
           "^J"                     ->  newline
           "^K"                     ->  kill-line
           "^L"                     ->  clear-screen
           "^M"                     ->  newline
           "^N"                     ->  down-history
           "^O"                     ->  tty-flush-output



Printed 9/18/91           5 August 1991                         6






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           "^P"                     ->  up-history
           "^Q"                     ->  tty-start-output
           "^R"                     ->  redisplay
           "^S"                     ->  tty-stop-output
           "^T"                     ->  is undefined
           "^U"                     ->  backward-kill-line
           "^V"                     ->  is undefined
           "^W"                     ->  backward-delete-word
           "^X"                     ->  expand-line
           "^["                     ->  sequence-lead-in
           "^\"                     ->  tty-sigquit
           " "                      ->  forward-char
           "!"                      ->  expand-history
           "$"                      ->  end-of-line
           "*"                      ->  expand-glob
           "0"                      ->  vi-zero
           "1"  to "9"              ->  digit-argument
           "?"                      ->  which-command
           "@"                      ->  is undefined
           "A"                      ->  vi-add-at-eol
           "B"                      ->  backward-word
           "C"                      ->  vi-chg-to-eol
           "D"                      ->  kill-line
           "I"                      ->  vi-insert-at-bol
           "J"                      ->  history-search-forward
           "K"                      ->  history-search-backward
           "O"                      ->  sequence-lead-in
           "R"                      ->  vi-replace-mode
           "S"                      ->  vi-substitute-line
           "T"                      ->  toggle-literal-history
           "V"                      ->  expand-variables
           "W"                      ->  forward-word
           "X"                      ->  backward-delete-char
           "["                      ->  sequence-lead-in
           "\^"                     ->  beginning-of-line
           "a"                      ->  vi-add
           "b"                      ->  backward-word
           "c"                      ->  is undefined
           "d"                      ->  delete-word
           "h"                      ->  backward-char
           "i"                      ->  vi-insert
           "j"                      ->  down-history
           "k"                      ->  up-history
           "l"                      ->  forward-char
           "r"                      ->  vi-replace-char
           "s"                      ->  vi-substitute-char
           "t"                      ->  toggle-literal-history
           "v"                      ->  expand-variables
           "w"                      ->  vi-beginning-of-next-word
           "x"                      ->  delete-char
           "~"                      ->  change-case
           "^?"                     ->  backward-delete-char



Printed 9/18/91           5 August 1991                         7






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           "M-?"                    ->  run-help
           "M-["                    ->  sequence-lead-in
           "M-O"                    ->  sequence-lead-in

           VI Multi-character bindings

           "^[?"                    ->  run-help


     There is also an older version of bindkey called _b_i_n_d, that
     allows the user to redefine what any key does, or find out
     what any or all of the keys do. This is retained for compa-
     tibility reasons.

     If given two arguments _b_i_n_d binds the function (first argu-
     ment) to the given key (second argument).  The key may be:
     the direct character or a caret-<letter> combination, which
     is converted to control-<letter>; M-<letter> for an escaped
     character; or F-<string> for a function key.  For the last
     of these, the function key prefix must be bound to the func-
     tion "sequence-lead-in" and the string specified to the _b_i_n_d
     command must not include this prefix.

     If given one argument _b_i_n_d takes the argument as the name
     for a key and tells what that key does.  As a special case,
     the user can say

           bind emacs
     or
           bind vi

     to bind all the keys for Emacs or vi mode respectively.

     If given no arguments _b_i_n_d tells what all of the keys do.
     If you give bind the single argument of 'defaults', it
     resets each key to its default value (see the above list).

2222.... VVVVIIIISSSSUUUUAAAALLLL HHHHIIIISSSSTTTTOOOORRRRYYYY
     The keys ^P and ^N are used to step up and down the history
     list.  If the user has typed in the following:

           > ls
           foo  bar
           > echo mumble
           mumble
           >

     then enters ^_P, the shell will place "echo mumble" into the
     editing buffer, and will put the cursor at the end of the
     line.  If another ^_P is entered, then the editing line will
     change to "ls".  More ^_Ps will make the bell ring, since
     there are no more lines in the history.  ^_N works the same



Printed 9/18/91           5 August 1991                         8






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     way, except it steps down (forward in time).

     An easy way to re-do a command is to type ^_P followed by
     _R_e_t_u_r_n. Also, pieces of previous commands can be assembled
     to make a new command.  The commands that work on regions
     are especially useful for this.

     ^_P and ^_N actually only copy commands from out of the his-
     tory into the edit buffer; thus the user may step back into
     the history and then edit things, but those changes do not
     affect what is actually in _t_c_s_h '_s history.

     Another way to recall (parts of) history commands is via the
     'expand-history' function. A variation of the 'expand-
     history' function is called 'magic-space'.  This function
     expands _c_s_h history, and always appends a space. Magic-space
     thus can be bound to <space>, to automatically expand _c_s_h
     history.  Expand-history is normally bound to _M-<_s_p_a_c_e> and
     magic-space is not bound.

3333.... TTTTTTTTYYYY MMMMOOOODDDDEEEE SSSSAAAANNNNIIIITTTTYYYY
     As part of the editor, _t_c_s_h does a check and reset of the
     terminal mode bits.  If the speed has been changed, then
     _t_c_s_h will change to using that speed.  _T_c_s_h will also obey
     changes in the padding needed by the tty.  Some changes to
     the command keys will be obeyed, however if a command key is
     unset, _t_c_s_h will reset it to what it was.  Also, the shell
     will automatically turn off RAW and CBREAK (on systems that
     use _t_e_r_m_i_o(_7) it will turn on ICANON) modes, and will turn
     on the tty driver's output processing (OPOST).

     The list of the tty modes that are always set or cleared by
     _t_c_s_h can be examined and modified using the _s_e_t_t_y builtin.
     The _s_e_t_t_y display is similar to _s_t_t_y(_1), and varies depend-
     ing on the system's tty driver. Modes that _t_c_s_h will always
     try to set are shown as +_m_o_d_e modes that _t_c_s_h will always
     try to clear are shown as -_m_o_d_e and modes that tcsh will
     track and allow to be modified are not shown by default, or
     if the -_a flag is given, are shown without a leading sign.
     For example if one wants to set the _e_c_h_o_k flag and let the
     _e_c_h_o_e pass unchanged:

           > setty
           iflag:-inlcr -igncr +icrnl
           oflag:+opost +onlcr -onlret
           cflag:
           lflag:+isig +icanon +echo +echoe -echok -echonl -noflsh
                 +echoctl -flusho +iexten
           > setty +echok echoe
           > setty
           iflag:-inlcr -igncr +icrnl
           oflag:+opost +onlcr -onlret



Printed 9/18/91           5 August 1991                         9






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           cflag:
           lflag:+isig +icanon +echo +echok -echonl -noflsh +echoctl
                 -flusho +iexten


4444.... WWWWOOOORRRRDDDD CCCCOOOOMMMMPPPPLLLLEEEETTTTIIIIOOOONNNN
     In typing commands, it is no longer necessary to type a com-
     plete name, only a unique abbreviation is necessary.  When
     you type a TAB to _t_c_s_h it will complete the name for you,
     echoing the full name on the terminal (and entering it into
     the edit buffer).  If the prefix you typed matches no name,
     the terminal bell is rung, unless the variable _n_o_b_e_e_p is
     set.  The name may be partially completed if the prefix
     matches several longer names.  If this is the case, the name
     is extended up to the point of ambiguity, and the bell is
     rung.  This works for file names, command names, shell vari-
     ables and the ~ user name convention.  The variable _f_i_g_n_o_r_e
     may be set to a list of suffixes to be disregarded during
     completion.

     _E_x_a_m_p_l_e

     Assume the current directory contained the files:

           DSC.TXT   bin       cmd       lib       memos
           DSC.NEW   chaos     cmtest    mail      netnews
           bench     class     dev       mbox      new

     The command:

           > gnumacs ch[TAB]

     would cause _t_c_s_h to complete the command with the file name
     chaos.  If instead, the user had typed:

           > gnumacs D[TAB]

     _t_c_s_h would have extended the name to DSC and rung the termi-
     nal bell, indicating partial completion. However, if _f_i_g_n_o_r_e
     had previously been set to a list containing .NEW as one
     element, e.g. ( .o .NEW ), _t_c_s_h would have completed the `D'
     to DSC.TXT.

     File name completion works equally well when other direc-
     tories are addressed.  Additionally, _t_c_s_h understands the C
     shell tilde (~) convention for home directories.  Thus,

           > cd ~speech/data/fr[TAB]

     does what one might expect.  This may also be used to expand
     login names only.  Thus,




Printed 9/18/91           5 August 1991                        10






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           > cd ~sy[TAB]

     expands to

           > cd ~synthesis


     Command names may also be completed, for example,

           > gnum[TAB]

     will expand to "gnumacs" (assuming that there are no other
     commands that begin with "gnum").

     Shell and environment variables are recognized also and in
     addition they can be expanded:

           > set local=/usr/local
           > echo $lo[TAB]

     will expand to "$local/". Note that a slash is appended
     because the expanded variable points to a directory. Also:

           > set local=/usr/local
           > echo $local/[^D]
           bin/ etc/ lib/ man/ src/

     will correctly list the contents of /usr/local. Shell and
     environment variables can also be expanded via the expand-
     variables function:

           > echo $local/[^X$]
           > echo /usr/local/


     Completion also works when the cursor is in the middle of
     the line, rather than just the end.  All of the text after
     the cursor will be saved, the completion will work (possibly
     adding to the current name), and then the saved text will be
     restored in place, after the cursor.

     The behavior of the completion can be changed by the setting
     of several shell variables:

     Setting the _r_e_c_e_x_a_c_t variable makes an exact command be
     expanded rather than just ringing the bell.  For example,
     assume the current directory has two subdirectories called
     foo and food, then with _r_e_c_e_x_a_c_t set the following could be
     done:

           > cd fo[TAB]
     to ...



Printed 9/18/91           5 August 1991                        11






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           > cd foo[TAB]
     to ...
           > cd foo/

     rather than beeping on the second TAB.

     If the _a_u_t_o_l_i_s_t variable is set, invoking completion when
     several choices are possible will automatically list the
     choices, effectively merging the functionality described in
     the next section into the completion mechanism.  The "noise
     level" can be controlled by the value that _m_a_t_c_h_b_e_e_p is set
     to: With matchbeep=nomatch, completion will only beep if
     there are no matching names; with matchbeep=ambiguous, com-
     pletion will _a_l_s_o beep if there are many possible matches;
     with matchbeep=notunique, completion will _a_l_s_o beep when
     there is an exact match but there are other, longer, matches
     (see recexact).  With matchbeep=never or set to any other
     value completion will never beep. If matchbeep is not set it
     defaults to ambiquous.

     If the _a_u_t_o_e_x_p_a_n_d variable is set, the expand-history func-
     tion will be invoked automatically before the completion
     attempt, expanding normal _c_s_h history substitutions.

     For covert operation, the variable _n_o_b_e_e_p can be set; it
     will prevent the completion mechanism, as well as _t_c_s_h in
     general, from actually beeping.  Finally, if the _a_u_t_o_c_o_r_r_e_c_t
     variable is set, the spelling correction is attempted for
     any path components up to the completion point.

5555.... LLLLIIIISSSSTTTTIIIINNNNGGGG OOOOFFFF PPPPOOOOSSSSSSSSIIIIBBBBLLLLEEEE NNNNAAAAMMMMEEEESSSS
     At any point in typing a command, you may request "what
     names are available".  Thus, when you have typed, perhaps:

           > cd ~speech/data/fritz/

     you may wish to know what files or subdirectories exist (in
     ~speech/data/fritz), without, of course, aborting the com-
     mand you are typing.  Typing the character Control-D (^D),
     will list the names (files, in this case) available.  The
     files are listed in multicolumn format, sorted column-wise.
     Directories are indicated with a trailing `/', executable
     files with a `*', symbolic links with a '@', sockets with a
     '=', FIFOs (named pipes) with a '|', character devices with
     a '%', and block devices with a '#'.  Once printed, the com-
     mand is re-echoed for you to complete.

     Additionally, one may want to know which files match a pre-
     fix.  If the user had typed:

           > cd ~speech/data/fr[^D]




Printed 9/18/91           5 August 1991                        12






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     all files and subdirectories whose prefix was ``fr'' would
     be printed.  Notice that the example before was simply a
     degenerate case of this with a null trailing file name. (The
     null string is a prefix of all strings.)  Notice also, that
     a trailing slash is required to pass to a new directory for
     both file name completion and listing.

     The degenerate

           > ~[^D]

     will print a full list of login names on the current system.
     Note, however, that the degenerate

           > <Spaces>[^D]

     does not list all of the commands, but only beeps.

     Listing/expanding of words that match a name containing
     wildcard characters can be done via the list-glob/expand-
     glob function:
           > ls
           foo.c  bar.c  a.out
           > vi *.c[^Xg]
           foo.c bar.c
           > vi *.c[^X*]
           > vi foo.c bar.c

CCCCoooommmmmmmmaaaannnndddd NNNNaaaammmmeeee RRRReeeeccccooooggggnnnniiiittttiiiioooonnnn
     Command name recognition and completion works in the same
     manner as file name recognition and completion above.  The
     current value of the environment variable _P_A_T_H is used in
     searching for the command.  For example

           > newa[TAB]

     might expand to

           > newaliases

     Also,

           > new[^D]

     would list all commands (along PATH) that begin with "new".

     Note that Control-D has three different effects on _t_c_s_h. On
     an empty line (one that contains nothing, not even spaces),
     ^_D sends an EOF to _t_c_s_h just as it does for normal programs.
     When the cursor is in the middle of a line of text, ^_D
     deletes the character that the cursor is under.  Finally, a
     ^_D at the end of a line of text lists the available names at



Printed 9/18/91           5 August 1991                        13






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     that point.  To get a list of available names when the cur-
     sor is in the middle of a line (or on an empty line), a
     Meta-Control-D should be typed (Escape followed by Control-
     D).

6666.... SSSSPPPPEEEELLLLLLLLIIIINNNNGGGG CCCCOOOORRRRRRRREEEECCCCTTTTIIIIOOOONNNN
     If while typing a command, the user mistypes or misspells a
     file name, user name, or command name, _t_c_s_h can correct the
     spelling.  When correcting a file name, each part of the
     path is individually checked and corrected.  Spelling
     correction can be invoked in several different ways:

     The _s_p_e_l_l-_w_o_r_d function, normally bound to M-s (and M-S),
     will attempt to correct the word immediately before the cur-
     sor.  For example, suppose that the user has typed:

           > cd /uxr/spol/news[ESC s]

     _T_c_s_h will check the path for spelling, correct the mistakes,
     and redraw the line as

           > cd /usr/spool/news

     leaving the cursor at the end of the line.

     Spelling correction of the entire command line (independent
     of where the cursor is) can be done with the _s_p_e_l_l-_l_i_n_e
     function, normally bound to M-$ (Escape Dollar-sign).  It
     will check each word independently, but in order to avoid
     e.g. command options, no correction is attempted on words
     whose first character is found in the string "!.\^-*%".

     Finally, automatic spelling correction will be done each
     time the Return key is hit, if the _c_o_r_r_e_c_t variable is set
     to an appropriate value: correct=cmd will cause the spelling
     of the command name only to be checked, while correct=all
     causes checking of all words on the line, like the spell-
     line function.  If any part of the command line is
     corrected, the user will be given a special prompt as
     defined by the _p_r_o_m_p_t_3 variable, followed by the corrected
     line, e.g.

           > lz /usr/bin
           CORRECT>ls /usr/bin (y/n)?

     Answering 'y' or <space> at the prompt will cause the
     corrected line to be used, anything else will leave the ori-
     ginal line unchanged.

     Automatic correction is not guaranteed to work the way the
     user intended.  Command line parsing is done in a rudimen-
     tary fashion. It is mostly provided as an experimental



Printed 9/18/91           5 August 1991                        14






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     feature. Suggestions and improvements are welcome.

7777.... DDDDOOOOCCCCUUUUMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN LLLLOOOOOOOOKKKKUUUUPPPP
     The editor function _r_u_n-_h_e_l_p (M-h) prints a help file on the
     current command (using the same definition of current as the
     completion routines use).  This help file is found by
     searching the path list HPATH for files of the form
     foo.help, foo.1, foo.8, or foo.6 in that order (assuming
     that the current command is foo).  The file is just printed,
     not paged in any way.  This is because _r_u_n-_h_e_l_p is meant to
     be used to look up short help files, not manual pages
     (although it can do manual pages also).

8888.... EEEENNNNHHHHAAAANNNNCCCCEEEEDDDD HHHHIIIISSSSTTTTOOOORRRRYYYY MMMMEEEECCCCHHHHAAAANNNNIIIISSSSMMMM
     _T_c_s_h will save the history list between login sessions.  It
     does this by writing the current list to the file "~/.his-
     tory" on logout, and reading it in on login.  For example,
     placing the line

           > set history=25 savehist=20

     tells _t_c_s_h to save the last 25 commands on the history list,
     and to save the last 20 of them between logins.  The
     "savehist" variable may be set up to the size of history,
     although it is an error to have _s_a_v_e_h_i_s_t larger than _h_i_s_-
     _t_o_r_y. In addition to the above _t_c_s_h, keeps unparsed
     (literal) versions of the history if the variable _h_i_s_t_l_i_t is
     set. Also the toggle-history function toggles between the
     parsed and literal version of the recalled history in the
     editor buffer. For example:

           > set histlit
           > echo !:s/foo/bar; ls
           Modifier failed.
           > ^P
           > echo !:s/foo/bar; ls
           > unset histlit
           > echo !:s/foo/bar; ls
           Modifier failed.
           > ^P
           > echo unset histlit[M-r]
           > echo !:s/foo/bar; ls

     _T_c_s_h also supports the history escape !#. This undocumented
     _c_s_h escape holds the words of the current line. This is use-
     ful in renaming commands:

           > mv foo bar!#:1
           mv foo barfoo

     Care should be taken when using this history expansion in
     _c_s_h since there is no check for recursion. In _t_c_s_h up to 10



Printed 9/18/91           5 August 1991                        15






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     levels of recursion are allowed.

     Another difference between _t_c_s_h and _c_s_h history expansion,
     is the treatment of history arguments. In _c_s_h !_3_d expands to
     event 3 with the letter "d" appended to it. There is no way
     to repeat a command that begins with a number using the name
     of the command in the history escape. In _t_c_s_h only numeric
     arguments are treated as event numbers; therefore !_3_d is
     interpreted as: repeat the last command that started with
     the string "3d". To mimick the _c_s_h behavior !_3\_d can be
     used.


9999.... AAAAUUUUTTTTOOOOMMMMAAAATTTTIIIICCCC LLLLOOOOGGGGOOOOUUUUTTTT
     The automatic logout time is controlled by the variable
     _a_u_t_o_l_o_g_o_u_t, the value of which is the number of minutes of
     inactivity will be allowed before automatically logging the
     user out.  When that many minutes have been reached, the
     shell prints "autologout" and dies (without executing
     ~/.logout).  The default for _t_c_s_h is to set _a_u_t_o_l_o_g_o_u_t for
     60 minutes on login shells, and when the user is root.  To
     disable autologout (for instance in a window system), unset
     the shell variable _a_u_t_o_l_o_g_o_u_t.

11110000.... EEEEXXXXEEEECCCCUUUUTTTTIIIIOOOONNNN OOOOFFFF AAAA CCCCOOOOMMMMMMMMAAAANNNNDDDD PPPPRRRRIIIIOOOORRRR TTTTOOOO EEEEAAAACCCCHHHH PPPPRRRROOOOMMMMPPPPTTTT
     _T_c_s_h supports a special alias, _p_r_e_c_m_d, which if set holds a
     command that will be executed before printing each prompt.
     For example, if the user has done

           > alias precmd date

     then the program _d_a_t_e will be run just before the shell
     prompts for each command.  There are no limitations on what
     precmd can be set to do, although discretion should be used.

11111111.... PPPPEEEERRRRIIIIOOOODDDDIIIICCCC CCCCOOOOMMMMMMMMAAAANNNNDDDD EEEEXXXXEEEECCCCUUUUTTTTIIIIOOOONNNN
     _T_c_s_h is now capable of providing periodic command execution
     through the use of the shell variable _t_p_e_r_i_o_d and the alias
     _p_e_r_i_o_d_i_c. When these items are set, the alias _p_e_r_i_o_d_i_c will
     be executed every _t_p_e_r_i_o_d minutes.  This provides a con-
     venient means for checking on common but infrequent changes,
     such as new messages.  Example:

           > set tperiod = 30
           > alias periodic checknews

     This will cause the _c_h_e_c_k_n_e_w_s(1) program to be run every 30
     minutes.  Having the alias _p_e_r_i_o_d_i_c set but with an unset
     _t_p_e_r_i_o_d (or a value of 0 for _t_p_e_r_i_o_d) will cause _p_e_r_i_o_d_i_c to
     degenerate to another form of _p_r_e_c_m_d.





Printed 9/18/91           5 August 1991                        16






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



11112222.... NNNNEEEEWWWW PPPPRRRROOOOMMMMPPPPTTTT FFFFOOOORRRRMMMMAAAATTTT
     The format for the _p_r_o_m_p_t shell variable has been changed to
     include many new things, such as the current time of day,
     current working directory, etc..  The new format uses
     "%<char>" to signal an expansion, much like _p_r_i_n_t_f(_3_S). The
     available sequences are:

           %d or %/    Current working directory.
           %~          cwd.  If it starts with $HOME, that part is
                       replaced by a ~. In addition if a directory
                       name prefix matches a user's home directory,
                       that part of the directory will be substituted
                       with ~user. NOTE: The ~user substitution will
                       only happen if the shell has performed a ~
                       expansion for that user name in this session.
           %c or %.    Trailing component of cwd, may be
                       followed by by a digit to get more than one
                       component, if it starts with $HOME, that
                       part is replaced with a ~.
           %C          Trailing component of cwd, may be followed
                       by a digit to get more than one component, no
                       ~ substitution.
           %h, %!, !   Current history event number.
           %M          The full machine hostname.
           %m          The hostname up to the first ".".
           %S (%s)     Start (stop) standout mode.
           %B (%b)     Start (stop) boldfacing mode. (Only if
                       tcsh was compiled to be eight bit clean.)
           %U (%u)     Start (stop) underline mode. (Only if
                       tcsh was compiled to be eight bit clean.)
           %t or %@    Current time of day, in 12-hour, am/pm format.
           %T          Current time of day, in 24-hour format.
                       (But see the _a_m_p_m shell variable below.)
           \c          `c' is parsed the same way as in bindkey.
           ^c          `c' is parsed the same way as in bindkey.
           %%          A single %.
           %n          The user name, contents of $user.
           %w          The date in <Mon> dd format.
           %W          The date in mm/dd/yy format.
           %D          The date in yy-mm-dd format.
           %l          The line (tty) the user is logged on.
           %L          clear from prompt to end of display or end of line.
           %#          A `#' if tcsh is run as a root shell,
                       a `>' if not.
           %{..%}      Include string as a literal escape sequence.
                       Note that the enclosed escape sequence, should
                       only be used to change terminal attributes and
                       should not move the cursor location. Also, this
                       cannot be the last character in the prompt
                       string. (Available only if tcsh was compiled to
                       be eight bit clean.)
           %?          return code of the last command executed just



Printed 9/18/91           5 August 1991                        17






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



                       before the prompt.
           %R          In prompt3 this is the corrected string; in
                       prompt2 it is the status of the parser.

     The sequences for standout are often used to indicate that
     this is an enabled (running as root) shell.  An example:

           > set prompt="%m [%h] %U[%@]%u [%/] you rang? "
           tut [37] [_2:_5_4_p_m] [/usr/accts/sys] you rang? _

     In addition, there is a new variable, _p_r_o_m_p_t_2, which is used
     to prompt for the body of while and for loops (wherever nor-
     mal _c_s_h prompts with a question mark).  The default for
     _p_r_o_m_p_t_2 is "%R? ": the status of the parser followed by a
     question mark.  This alternate prompt is also used when the
     parser is waiting for more input; i.e. when the previous
     line ended in a \.  The _p_r_o_m_p_t_3 variable is used when
     displaying the corrected command line when automatic spel-
     ling correction is in effect; it defaults to "CORRECT>%R
     (y|n)? ".


11113333.... TTTTIIIIMMMMEEEE----SSSSTTTTAAAAMMMMPPPPEEEEDDDD HHHHIIIISSSSTTTTOOOORRRRYYYY LLLLIIIISSSSTTTT
     The history list in _t_c_s_h now has a time-of-day stamp
     attached to each history list event.  This time stamp is
     printed whenever the history command is executed.  This
     allows the user to keep track of when the various events
     occurred.  The time stamps are not maintained on the saved
     history list (also available in _c_s_h); thus, on logging back
     in, all the saved history events will be recorded with the
     login time as their time stamp.  The time stamp printouts
     can be omitted from the history list by adding the -t switch
     to the _h_i_s_t_o_r_y command.

11114444.... DDDDIIIIRRRREEEECCCCTTTTOOOORRRRYYYY AAAACCCCCCCCEEEESSSSSSSS
     _T_c_s_h supports three new flags to control directory style
     printing for cd, pushd, popd, and dirs:

     -_n  Print entries in new lines so that the screen width is
         not exceeded

     -_l  Don't print ~ but print the whole path

     -_v  Print the stack entries one in each line, preceeded by
         the stack number.

     Note that popd +n can be used to pop out stack entries of
     directories that do not exist any more.

     _T_c_s_h will now allow the user to access all elements in the
     directory stack directly.  The syntax "=<digit>" is recog-
     nized by _t_c_s_h as indicating a particular directory in the



Printed 9/18/91           5 August 1991                        18






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     stack.  (This works for the file/command name recognition as
     well.)  This syntax is analogous to the ~ syntax for access
     to users' home directories.  The stack is viewed as zero-
     based, i.e., =0 is the same as $cwd, which is the same as
     ".".  As a special case, the string "=-" is recognized as
     indicating the last directory in the stack.  Thus,

           > dirs -v
           0 /usr/net/bin
           1 /usr/spool/uucp
           2 /usr/accts/sys
           > echo =2
           /usr/accts/sys
           > ls -l =1/LOGFILE
           -rw-r--r-- 1 uucp   2594 Jan 19 09:09 /usr/spool/uucp/LOGFILE
           > echo =-/.cs*
           /usr/accts/sys/.cshrc
           > echo =4
           Not that many dir stack entries.
           >

     _T_c_s_h will complain if you ask for a directory stack item
     which does not exist.

     In the normal _c_s_h, saying "pushd +2" would rotate the entire
     stack around through 2 stack elements, placing the entry
     found there at the top of the stack.  If, however, the new
     shell variable _d_e_x_t_r_a_c_t is set, then issuing "pushd +n" will
     cause the nth directory stack element to be extracted from
     its current position, which will then be pushed onto the top
     of the stack.  Example:

           > dirs
           ~ /usr/spool/uucp /usr/net/bin /sys/src
           > set dextract
           > pushd +2
           /usr/net/bin ~ /usr/spool/uucp /sys/src
           > unset dextract
           > pushd +2
           /usr/spool/uucp /sys/src /usr/net/bin ~

     The way symbolic links that point to directories are crossed
     is determined by two variables: _c_h_a_s_e__s_y_m_l_i_n_k_s and
     _i_g_n_o_r_e__s_y_m_l_i_n_k_s. If _c_h_a_s_e__s_y_m_l_i_n_k_s is set, then every time
     the directory changes, $_c_w_d reflects the real directory
     name, and not the name through the link. A notable exception
     is the user's home directory, but that should be fixed. If
     _i_g_n_o_r_e__s_y_m_l_i_n_k_s is set, then directory change tries to find
     where you came from before you crossed the link to change
     the directory relatively. If you chdir through a symbolic
     link and then cd .., you will end .. relatively to where you
     were before you crossed the link and not .. relatively to



Printed 9/18/91           5 August 1991                        19






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     where the symbolic link points.

     For example:

           > cd /tmp
           > mkdir from from/src to
           > ln -s ../from/src to/dst
           > echo $cwd
           /tmp

           > unset ignore_symlinks; unset chase_symlinks
           > cd to/dst; echo $cwd
           /tmp/to/dst
           > cd ..
           /tmp/from

           > unset ignore_symlinks; set chase_symlinks
           > cd /tmp/to/dst; echo $cwd
           /tmp/from/src
           > cd ..; echo $cwd
           /tmp/from

           > set ignore_symlinks; unset chase_symlinks
           > cd /tmp/to/dst; echo $cwd
           /tmp/to/dst
           > cd ..; echo $pwd
           /tmp/to

     In case you are wondering what happens when you set both,
     _i_g_n_o_r_e__s_y_m_l_i_n_k_s will override _c_h_a_s_e__s_y_m_l_i_n_k_s.

11115555.... WWWWAAAATTTTCCCCHHHHIIIINNNNGGGG FFFFOOOORRRR LLLLOOOOGGGGIIIINNNNSSSS AAAANNNNDDDD LLLLOOOOGGGGOOOOUUUUTTTTSSSS
     _T_c_s_h has a mechanism so that the user can watch for login
     and logout activity of any user or terminal in the system.
     This is accomplished using the new special shell variable
     _w_a_t_c_h, which contains login/terminal name pairs to be
     checked for activity.  For example:

           > set watch=(sys ttyjd root console)

     This setting will allow the user to check on when the user
     "sys" logs in on /dev/ttyjd.  Similarly, it will inform the
     user of root's activity on the console.  In order to be more
     general, the word "any" may be substituted for either a
     user's or a terminal's name, thus allowing

           > set watch=(brad any any ttyh0)

     which will check for user "brad" logging in or out of the
     system on any terminal, as well as anyone logging in to
     /dev/ttyh0.  Naturally, the completely general case




Printed 9/18/91           5 August 1991                        20






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           > set watch=(any any)

     allows the user to check on any and all login/logout
     activity in the the system.

     By default, the interval between checks of users on the sys-
     tem is 10 minutes; this can be changed by making the first
     element of _w_a_t_c_h a number of minutes which should be used
     instead, as in

           > set watch=(40 any any)

     which will check for any users logging in or out every 40
     minutes.

     There is also a new command, _l_o_g, which is used to cause
     _t_c_s_h to inform the user of all users/terminals affected by
     _w_a_t_c_h whether they have been announced before or not.  This
     is useful if a user has been on for some time and cannot
     remember if a particular person/terminal is online right now
     or not.  _L_o_g will reset all indication of previous announce-
     ment and give the user the login list all over again, as
     well as printing the current value of _w_a_t_c_h.

     The first time that _w_a_t_c_h is set at _t_c_s_h startup, all
     affected users and terminals will be printed as though those
     users/terminals had just logged on.  This may appear to be a
     bug, but is generally considered a feature, since it allows
     the user to see who is on when he first logs in.

     The format of the printouts can be tailored via setting of
     the variable _w_h_o. The following sequences are available for
     the format specification:

           %n          The name of the user that logged in/out.
           %a          The observed action, i.e. "logged on",
                       "logged off", or "replaced <olduser> on".
           %l          The line (tty) the user is logged on.
           %S (%s)     Start (stop) standout mode.
           %B (%b)     Start (stop) boldfacing mode. (Only if
                       tcsh was compiled to be eight bit clean)
           %U (%u)     Start (stop) underline mode. (Only if
                       tcsh was compiled to be eight bit clean)
           %M          The full hostname of the remote host ("local"
                       if non-remote).
           %m          The hostname up to the first ".". If only
                       the ip address is available or the utmp
                       field contains the name of an x-windows
                       display, the whole name is printed.
           %t or %@    The time, in 12-hour, am/pm format (logout
                       time is approximated if unavailable).
           %T          The time, in 24-hour format. (but see



Printed 9/18/91           5 August 1991                        21






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



                       the "ampm" shell variable below).
           %w          The date in <Mon> dd format.
           %W          The date in mm/dd/yy format.
           %D          The date in yy-mm-dd format.

     The %M and %m sequences are only available on systems that
     store the remote hostname in /etc/utmp. If _w_h_o is not set,
     the format defaults to "%n has %a %l from %m.", or "%n has
     %a %l." on systems that don't store the hostname.

11116666.... TTTTIIIIMMMMEEEEDDDD EEEEVVVVEEEENNNNTTTT LLLLIIIISSSSTTTT
     _T_c_s_h now supports a scheduled-event list through the use of
     the command _s_c_h_e_d. This command gives the user a mechanism
     by which to arrange for other commands to be executed at
     given times.  An event is added to the scheduled-event list
     by saying

           > sched [+]hh:mm <command>

     as in

           > sched 11:00 echo It\'s eleven o\'clock.

     This will make an entry in the list at 11am for the echo
     command to be run with the given arguments.  The time may be
     specified in either absolute or relative time, and absolute
     times may have a morning/afternoon specification as well,
     using "am" or "pm."  For example,

           > sched +2:15 /usr/lib/uucp/uucico -r1 -sother
           > sched 5pm set prompt='[%h] It\'s after 5; go home: >'
           > sched +3am echo This syntax doesn\'t work.
           Relative time inconsistent with am/pm.
           >

     Note that _t_c_s_h will complain if you try to make faulty time
     specifications.

     Printing the current time-event list is accomplished by giv-
     ing the _s_c_h_e_d command with no arguments:

           > sched
                1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
                2  Wed Apr  4 17:00  set prompt=[%h] It's after 5; go home: >
           >

     There is also a mechanism by which the user can remove an
     item from the list:

           > sched --3
           Usage for delete: sched -<item#>.
           > sched -3



Printed 9/18/91           5 August 1991                        22






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           Not that many scheduled events.
           > sched -2
           > sched
                1  Wed Apr  4 15:42  /usr/lib/uucp/uucico -r1 -sother
           >

     All commands specified on the scheduled-event list will be
     executed just prior to printing the first prompt immediately
     following the time when the command is to be run.  Hence, it
     is possible to miss the exact time when the command is to be
     run, but _t_c_s_h will definitely get around to all commands
     which are overdue at its next prompt.  Scheduled-event list
     items which come due while _t_c_s_h is waiting for user input
     will be executed immediately.  In no case, however, will
     normal operation of already-running commands be interrupted
     so that a scheduled-event list element may be run.

     This mechanism is similar to, but not the same as, the _a_t(1)
     command on some Unix systems.  Its major disadvantage is
     that it does not necessarily run a command at exactly the
     specified time (but only if another command is already being
     run).  Its major advantage is that commands which run
     directly from _t_c_s_h, as sched commands are, have access to
     shell variables and other structures.  This provides a
     mechanism for changing one's working environment based on
     the time of day.

11117777.... BBBBUUUUIIIILLLLTTTTIIIINNNN FFFFOOOORRRR llllssss ----FFFF
     There is a new builtin command called _l_s-_F which does the
     same thing as the command "ls -aF" if the shell variable
     _s_h_o_w_d_o_t_s has been set, and acts like "ls -F" otherwise. Ls-F
     works like ls, only it is generally faster. If other
     switches are passed to _l_s-_F, then the normal ls is executed.
     Aliasing ls to ls-F provides a fast alternative way of list-
     ing files.  Note that on non BSD machines, where ls -C is
     not the default, _l_s-_F, behaves like ls -CF.

     _l_s-_F appends the following characters depending on the file
     type:

           =           File is an AF_UNIX domain socket.
                       [if system supports sockets]
           |           File is a named pipe (fifo)
                       [if system supports named pipes]
           %           File is a character device
           #           File is a block device
           /           File is a directory
           *           File is executable
           +           File is a hidden directory [aix]
                       or context dependent [hpux]
           :           File is network special [hpux]




Printed 9/18/91           5 August 1991                        23






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     On systems that support symbolic links the variable _l_i_s_t_-
     _l_i_n_k_s controls the way symbolic links are identified. If
     _l_i_s_t_l_i_n_k_s is not set then the character '@' is appended to
     the file. If _l_i_s_t_l_i_n_k_s is set then the following characters
     are appended to the filename depending on the type of file
     the symbolic links points to:

           @           File is a symbolic link pointing
                       to a non-directory
           >           File is a symbolic link pointing
                       to a directory
           &           File is a symbolic link pointing
                       to nowhere

     While setting _l_i_s_t_l_i_n_k_s can be helpful while navigating
     around the filesystem, it slows down _l_s-_F and it causes
     mounting of filesystems if the symbolic links point to an
     NFS automounted partition.

11118888.... GGGGLLLLOOOOBBBBBBBBIIIINNNNGGGG SSSSYYYYNNNNTTTTAAAAXXXX AAAADDDDDDDDIIIITTTTIIIIOOOONNNNSSSS
     The syntax for any character in a range (for example ".[a-
     z]*") has been extended so as to conform with standard Unix
     regular expression syntax (see _e_d(1)).  Specifically, after
     an open bracket ("["), if the first character is a caret
     ("^") then the character matched will be any not in the
     range specified.  For example:

           > cd ~
           > echo .[a-z]*
           .cshrc .emacs .login .logout .menuwmrc
           > echo .[^.]*
           .Xdefaults .Xinit .cshrc .emacs .login .logout .menuwmrc
           >

     Note that the second form includes .Xdefaults and .Xinit
     because 'X' (and all the lower case letters) are outside of
     the range of a single '.'.

     Also the ability to negate a globbing pattern has been
     added:

           > echo *
           foo foobar bar barfoo
           > echo ^foo*
           bar barfoo

     Note that this does not work correctly if the expression
     does not have any wildcard characters (?*[]) or if the
     expression has braces {}.

11119999.... NNNNEEEEWWWW EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT AAAANNNNDDDD SSSSHHHHEEEELLLLLLLL VVVVAAAARRRRIIIIAAAABBBBLLLLEEEESSSS
     On startup, _t_c_s_h now automatically initializes the



Printed 9/18/91           5 August 1991                        24






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     environment variable _H_O_S_T to the name of the machine that it
     is running on.  It does this by doing a _g_e_t_h_o_s_t_n_a_m_e(2) sys-
     tem call, and setting _H_O_S_T to the result.

     _T_c_s_h also initializes the environment variable _H_O_S_T_T_Y_P_E to a
     symbolic name for the type of computer that it is running
     on.  This is useful when sharing a single physical directory
     between several types of machines (running NFS, for
     instance).  For example, if the following is in ._l_o_g_i_n:

        set path = (~/bin.$HOSTTYPE /usr/ucb /bin /usr/bin
        /usr/games .)

     and the user has directories named "bin._m_a_c_h_i_n_e" (where
     _m_a_c_h_i_n_e is a name from the above list), then the user can
     have the same programs compiled for different machines in
     the appropriate "bin._m_a_c_h_i_n_e" directories and _t_c_s_h will run
     the binary for the correct machine.

     The current possible values are:

     _a_i_x_3_7_0         an IBM 370, running aix
     _a_l_l_i_a_n_t        an Alliant FX series
     _a_m_d_a_h_l         an Amdahl running uts 2.1
     _a_p_o_l_l_o         an Apollo running DomainOS
     _a_t_t_3_b_1_5        an AT&T 3b15
     _a_t_t_3_b_2         an AT&T 3b2
     _a_t_t_3_b_2_0        an AT&T 3b20
     _a_t_t_3_b_5         an AT&T 3b5
     _b_a_l_a_n_c_e        a Sequent Balance (32000 based)
     _b_u_t_t_e_r_f_l_y      a BBN Computer Butterfly 1000
     _c_o_n_v_e_x         a Convex
     _d_e_c_s_t_a_t_i_o_n     a DecStation XXXX
     _g_o_u_l_d-_n_p_1      a Gould NP1
     _h_k_6_8           a Heurikon HK68 running Uniplus+ 5.0
     _h_p_3_0_0          an HP 9000, series 300, running mtXinu
     _h_p_8_0_0          an HP 9000, series 800, running mtXinu
     _h_p_9_0_0_0_s_3_0_0     an HP 9000, series 300, running hpux
     _h_p_9_0_0_0_s_5_0_0     an HP 9000, series 500, running hpux
     _h_p_9_0_0_0_s_7_0_0     an HP 9000, series 700, running hpux
     _h_p_9_0_0_0_s_8_0_0     an HP 9000, series 800, running hpux
     _h_p             an HP, running hpux
     _i_3_8_6           an Intel 386, generic
     _i_3_8_6-_m_a_c_h      an Intel 386, running mach
     _i_n_t_e_l_3_8_6       an Intel 386, running INTEL's SVR3
     _i_r_i_s_3_d         a Silicon Graphics Iris 3000
     _i_r_i_s_4_d         a Silicon Graphics Iris 4D
     _i_s_c_3_8_6         an Intel 386, running ISC
     _m_8_8_k           an mc88000 CPU machine
     _m_a_c_2           an Apple Computer Macintosh II, running AUX
     _m_a_s_s_c_o_m_p       a Concurrent (Masscomp), running RTU
     _m_i_p_s           another mips CPU



Printed 9/18/91           5 August 1991                        25






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     _m_u_l_t_i_m_a_x       an Encore Computer Corp. Multimax (32000 based)
     _n_e_w_s           a Sony NEWS 800 or 1700 workstation
     _n_e_w_s__m_i_p_s      a NeWS machine with mips CPU
     _n_s_3_2_0_0_0        an NS32000 CPU machine
     _n_e_x_t           a NeXT computer
     _p_f_a_5_0          a PFU/Fujitsu A-xx computer
     _p_s_2            an IBM PS/2, running aix
     _p_t_x            a Sequent Symmetry running DYNIX/ptx (386/486 based)
     _p_y_r_a_m_i_d        a Pyramid Technology computer (of any flavor)
     _r_s_6_0_0_0         an IBM RS6000, running aix
     _r_t             an IBM PC/RT, running BSD (AOS 4.3) or mach
     _r_t_p_c           an IBM PC/RT, running aix
     _s_c_o_3_8_6         an Intel 386, running SCO
     _s_u_n            a Sun workstation of none of the above types
     _s_u_n_2           a Sun Microsystems series 2 workstation (68010 based)
     _s_u_n_3           a Sun Microsystems series 3 workstation (68020 based)
     _s_u_n_3_8_6_i        a Sun Microsystems 386i workstation (386 based)
     _s_u_n_4           a Sun Microsystems series 4 workstation (SPARC based)
     _s_y_m_m_e_t_r_y       a Sequent Symmetry running DYNIX 3 (386/486 based)
     _t_i_t_a_n          an Stardent Titan
     _u_n_i_x_p_c         an UNIX/PC running SVR1 att7300 aka att3b1
     _v_a_x            a Digital Equipment Corp. Vax (of any flavor)

     (The names of the machines are usually trade marks of the
     corresponding companies.)

     _T_c_s_h also initializes the shell variables _u_i_d and _g_i_d to the
     value of the current real user ID/GID.  This is useful for
     telling what user/group the shell is running as. Under
     Domain/OS _t_c_s_h will also set _o_i_d indicating the current real
     organization id.

22220000.... CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS FFFFOOOORRRR DDDDEEEEBBBBUUUUGGGGGGGGIIIINNNNGGGG
     Only two such commands are available at this point, both
     concerned with testing termcap entries.
     _t_e_l_l_t_c tells you, politely, what _t_c_s_h thinks of your termi-
     nal, and _s_e_t_t_c `cap' `value' tells _t_c_s_h to believe that the
     termcap capability `cap' ( as defined in _t_e_r_m_c_a_p(5) ) has
     the value `value'. No checking for sanity is performed, so
     beware of improper use.

22221111.... SSSSEEEEAAAARRRRCCCCHHHHIIIINNNNGGGG FFFFOOOORRRR TTTTHHHHEEEE VVVVIIIISSSSUUUUAAAALLLL HHHHIIIISSSSTTTTOOOORRRRYYYY
     Two new editor functions have been added: history-search-
     backward, bound to M-p (and M-P), and history-search-
     forward, bound to M-n (and M-N).  Each of these search back-
     ward (or forward) through the history list for previous
     (next) occurrence of the first word in the input buffer as a
     command.  That is, if the user types:

           > echo foo
           foo
           > ls



Printed 9/18/91           5 August 1991                        26






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



           filea     fileb
           > echo bar
           bar
           >

     and then types "echo<ESC>p", the shell will place "echo bar"
     in the editing buffer.  If another _M-_p was entered, the
     editing buffer would change to "echo foo".  This capability
     is compatible with the plain visual history; if the user
     were to then enter ^_P the editing buffer would be changed to
     "ls". The pattern used to search through the history is
     defined by the characters from the beginning of the line up
     to the current cursor position and may contain a shell glob-
     bing pattern. Successive history searches use the same pat-
     tern.

22222222.... BBBBUUUUIIIILLLLTTTTIIIINNNN WWWWHHHHIIIICCCCHHHH((((1111)))) CCCCOOOOMMMMMMMMAAAANNNNDDDD
     There is now a builtin version of the _w_h_i_c_h(1) command.  The
     builtin version is just like the original, except that it
     correctly reports aliases peculiar to this _t_c_s_h, and builtin
     commands.  The only other difference is that the builtin
     runs somewhere between 10 and 100 times faster.  There is
     also a key-function interface to this command: the _w_h_i_c_h-
     _c_o_m_m_a_n_d function (normally bound to M-?), can be used any-
     where on the command line, and will in effect do a 'which'
     on the command name.

22223333.... RRRREEEESSSSTTTTAAAARRRRTTTTIIIINNNNGGGG AAAA SSSSTTTTOOOOPPPPPPPPEEEEDDDD EEEEDDDDIIIITTTTOOOORRRR
     There is another new editor function: run-fg-editor, which
     is bound to _M-^_Z.  When typed, it saves away the current
     input buffer, and looks for a stopped job with a name equal
     to the file name part (last element) of either the EDITOR or
     VISUAL environment variables (if not defined, the default
     names are "ed" and "vi" respectively).  If such a job is
     found, then it is restarted as if "fg %_n_a_m_e" had been typed.
     This is used to toggle back and forth between an editor and
     the shell easily.  Some people bind this function to ^_Z so
     they can do this even more easily.

22224444.... SSSSTTTTAAAATTTTUUUUSSSS LLLLIIIINNNNEEEE SSSSUUUUPPPPPPPPOOOORRRRTTTT
     _T_c_s_h has a new builtin called _e_c_h_o_t_c that allows the user to
     access the terminal capabilities from the command line,
     similar to the system V _t_p_u_t(1).

           > echotc home

     Places the cursor at the home position and

           > echotc cm 3 10

     places the cursor at column 3 row 10.  This command replaces
     the _e_l and _s_l variables that used contain the escape



Printed 9/18/91           5 August 1991                        27






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     sequences to begin and end status line changes. The command:

           > echo $sl this is a test $el

     is replaced by:

           > echotc ts 0; echo "this is a test"; echotc fs

     In addition _e_c_h_o_t_c understands the arguments _b_a_u_d, _l_i_n_e_s,
     _c_o_l_s, _m_e_t_a, and _t_a_b_s And prints the baud rate, the number of
     lines and columns, and "yes" or "no" depending if the termi-
     nal has tabs or a meta key.  This can be useful in determin-
     ing how terse the output of commands will be depending on
     the baud rate, or setting limits to commands like history to
     the highest number so that the terminal does not scroll:

           > set history=`echotc lines`
           > @ history--

     Note: Termcap strings may contain wildcard characters, and
     echoing them will not work correctly. The suggested method
     of setting shell variables to terminal capability strings is
     using double quotes, as in the following example that places
     the date in the status line:

           > set tosl="`echotc ts 0`"
           > set frsl="`echotc fs`"
           > echo -n "$tosl";date; echo -n "$frsl"

     _E_c_h_o_t_c accepts two flags. The flag -_v enables verbose mes-
     sages and the flag -_s ignores any errors and returns the
     empty string if the capability is not found.


22225555.... EEEEXXXXEEEECCCCUUUUTTTTIIIIOOOONNNN OOOOFFFF AAAA CCCCOOOOMMMMMMMMAAAANNNNDDDD AAAAFFFFTTTTEEEERRRR CCCCHHHHAAAANNNNGGGGIIIINNNNGGGG TTTTHHHHEEEE CCCCUUUURRRRRRRREEEENNNNTTTT WWWWOOOORRRRKKKKIIIINNNNGGGG
     DDDDIIIIRRRREEEECCCCTTTTOOOORRRRYYYY
     _T_c_s_h now supports a special alias, _c_w_d_c_m_d, which if set
     holds a command that will be executed after changing the
     value of $cwd.  For example, if the user is running on an X
     window system _x_t_e_r_m(_1), and a reparenting window manager
     that supports title bars such as _t_w_m(_1) _a_n_d _h_a_s _d_o_n_e:

           > alias cwdcmd  'echo -n "^[]2;${HOST}:$cwd ^G"'

     then the shell will change the title of the running _x_t_e_r_m(_1)
     to be the name of the host, a colon, and the full current
     working directory. A more fancy way to do that is:

           > alias cwdcmd 'echo -n "]2;${HOST}:$cwd]1;${HOST}"'

     This will put the hostname and working directory on the
     title bar but only the hostname in the icon manager menu.



Printed 9/18/91           5 August 1991                        28






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     Note that if a user defines _c_w_d_c_m_d to contain a _c_d, _p_u_s_h_d,
     or _p_o_p_d, command, an infinite loop may result.  In this
     case, it is the author's opinion that said user will get
     what he deserves.

22226666.... NNNNAAAATTTTIIIIVVVVEEEE LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE SSSSYYYYSSSSTTTTEEEEMMMM
     _T_c_s_h is eight bit clean (if so compiled, see the description
     of the _v_e_r_s_i_o_n shell variable below), and will thus support
     character sets needing this capability.  The _t_c_s_h support
     for NLS differs depending on whether it was compiled to use
     the system's NLS (again, see the _v_e_r_s_i_o_n variable) or not.
     In either case, the default for character classification
     (i.e. which characters are printable etc) and sorting is 7-
     bit ascii, and any setting or unsetting of the LANG or
     LC_CTYPE environment variables will cause a check for possi-
     ble changes in these respects.

     When using the system's NLS, the _s_e_t_l_o_c_a_l_e C library func-
     tion will be called to determine appropriate character clas-
     sification and sorting - this function will typically exam-
     ine the LANG and LC_CTYPE variables for this purpose (refer
     to the system documentation for further details).  Other-
     wise, NLS will be simulated, by assuming that the ISO 8859-1
     character set is used whenever either of the LANG and
     LC_CTYPE variables are set, regardless of their values.
     Sorting is not affected for the simulated NLS.

     In addition, with both real and simulated NLS, all printable
     characters in the range \200-\377, i.e. those that have M-
     <char> bindings, are automatically rebound to _s_e_l_f-_i_n_s_e_r_t-
     _c_o_m_m_a_n_d (the corresponding binding for the escape+<char>
     sequence, if any, is left alone).  This automatic rebinding
     is inhibited if the NOREBIND environment variable is set -
     this may be useful for the simulated NLS, or a primitive
     real NLS which assumes full ISO 8859-1 (otherwise all M-
     <char> bindings in the range \240-\377 will effectively be
     undone in these cases).  Explicitly rebinding the relevant
     keys, using _b_i_n_d_k_e_y, is of course still possible.

     Unknown characters (i.e. those that are neither printable
     nor control characters) will be printed using the \nnn for-
     mat.  If the tty is not in 8 bit mode, other 8 bit charac-
     ters will be printed by converting them to ascii and using
     standout mode.  _T_c_s_h will never change the 7/8 bit mode of
     the tty, and will track user-initiated settings for this -
     i.e. it may be necessary for NLS users (or, for that matter,
     those that want to use a Meta key) to explicitly set the tty
     in 8 bit mode through the appropriate _s_t_t_y(1) command in
     e.g. the .login file.

22227777.... AAAAUUUUTTTTOOOOMMMMAAAATTTTIIIICCCC PPPPRRRROOOOCCCCEEEESSSSSSSS TTTTIIIIMMMMEEEE RRRREEEEPPPPOOOORRRRTTTTIIIINNNNGGGG
     Automatic process time reporting is a feature that exists in



Printed 9/18/91           5 August 1991                        29






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     _c_s_h, but it is usually not documented. In addition _t_c_s_h pro-
     vides a slightly enriched syntax. Process time reports are
     controlled via the _t_i_m_e shell variable.  The first word of
     the _t_i_m_e variable indicates the minimum number of CPU
     seconds the process has to consume before a time report is
     produced. The optional second word controls the format of
     the report.  The following sequences are available for the
     format specification:

           %U          The time the process spent in user mode
                       in cpu seconds.
           %S          The time the process spent in kernel mode
                       in cpu seconds.
           %E          The elapsed time in seconds.
           %P          The CPU percentage computed as (%U + %S) / %E.

     The following sequences are supported only in systems that
     have the BSD resource limit functions.

           %W          Number of times the process was swapped.
           %X          The average amount in (shared) text space used
                       in Kbytes.
           %D          The average amount in (unshared) data/stack
                       space used in Kbytes.
           %K          The total space used (%X + %D) in Kbytes.
           %M          The maximum memory the process had in use at
                       any time in Kbytes.
           %F          The number of major page faults (page needed to
                       be brought from disk).
           %R          The number of minor page faults.
           %I          The number of input operations.
           %O          The number of output operations.
           %r          The number of socket messages received.
           %s          The number of socket messages sent.
           %k          The number of signals received.
           %w          Number of voluntary context switches (waits).
           %c          Number of involuntary context switches.

     The default time format is "%Uu %Ss %E %P %X+%Dk %I+%Oio
     %Fpf+%Ww" for systems that support resource usage reporting
     and "%Uu %Ss %E %P" for systems that do not.

     For Sequent's DYNIX/ptx %X, %D, %K, %r and %s are not sup-
     ported.  However, the following additional sequences are
     available.

           %Y          The number of system calls performed.
           %Z          The number of pages which are zero-filled
                       on demand.
           %i          The number of times a process' resident
                       set size was increased by the kernel.
           %d          The number of times a process' resident



Printed 9/18/91           5 August 1991                        30






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



                       set size was decreased by the kernel.
           %l          The number of read system calls performed.
           %m          The number of write system calls performed.
           %p          the number of reads from raw disk devices.
           %q          the number of writes to raw disk devices.

     The default time format for Sequent's DYNIX/ptx is "%Uu %Ss
     $E %P %I+%Oio %Fpf+%Ww". Also note that the CPU percentage
     can be higher than 100% on multi-processors.

22228888.... OOOOSSSS////DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNTTTT BBBBUUUUIIIILLLLTTTTIIIINNNN SSSSUUUUPPPPPPPPOOOORRRRTTTT
     _T_R_A_N_S_P_A_R_E_N_T _C_O_M_P_U_T_I_N_G _F_A_C_I_L_I_T_Y

     On systems that support TCF (aix-ibm370, aix-ps2) the fol-
     lowing builtins have been added:

     ggggeeeettttssssppppaaaatttthhhh  Print the current system execution path.

     sssseeeettttssssppppaaaatttthhhh LLLLOOOOCCCCAAAALLLL||||<<<<ssssiiiitttteeee>>>>||||<<<<ccccppppuuuu>>>> ............
               Set the current execution path.


     ggggeeeettttxxxxvvvveeeerrrrssss  Print the current experimental version prefix.


     sssseeeettttxxxxvvvveeeerrrrssss [[[[<<<<ssssttttrrrriiiinnnngggg>>>>]]]]
               If the optional string is ommited, any experimen-
               tal version prefix is removed.  Otherwise the
               experimental version prefix is set to string.


     mmmmiiiiggggrrrraaaatttteeee [[[[----<<<<ssssiiiitttteeee>>>>]]]] <<<<ppppiiiidddd>>>>||||%%%%<<<<jjjjoooobbbbiiiidddd>>>> ............
     mmmmiiiiggggrrrraaaatttteeee ----<<<<ssssiiiitttteeee>>>>
               The first form migrates the process or job to the
               site specified or the default site determined by
               the system path.  The second form, is equivalent
               to 'migrate -<site> $$', i.e. migrates the current
               process to the site specified. Note: migrating
               _t_c_s_h itself can cause unexpected behavior, since
               the shell does not like to lose its tty.


     In addition, jobs will print the site the job is executing.

     _D_o_m_a_i_n/_O_S _S_u_p_p_o_r_t

     iiiinnnnlllliiiibbbb <<<<sssshhhhaaaarrrreeeedddd----lllliiiibbbbrrrraaaarrrryyyy>>>> ............
          Inlib adds shared libraries to the current enviroment.
          There is no way to remove them...

     rrrroooooooottttnnnnooooddddeeee ////////<<<<nnnnooooddddeeeennnnaaaammmmeeee>>>>
          Change the name of the current rootnode. From now on, /



Printed 9/18/91           5 August 1991                        31






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



          will resolve to //<_r_o_o_t_n_o_d_e>

     vvvveeeerrrr [[[[<<<<ssssyyyyssssttttyyyyppppeeee>>>>]]]] [[[[<<<<ccccoooommmmmmmmaaaannnndddd>>>>]]]]
          Without arguments, print $_S_Y_S_T_Y_P_E; with the <_s_y_s_t_y_p_e>
          provided, set _S_Y_S_T_Y_P_E to the one provided. Valid sys-
          types are bsd4.3 and sys5.3. If a <_c_o_m_m_a_n_d> is argument
          is given, then <_c_o_m_m_a_n_d> is executed under the <_s_y_s_-
          _t_y_p_e> specified.

     _M_a_c_h

     sssseeeettttppppaaaatttthhhh <<<<ppppaaaatttthhhh----ssssppppeeeecccc>>>> ............
          XXX: What does it do?

     _M_a_s_s_c_o_m_p/_R_T_U

     uuuunnnniiiivvvveeeerrrrsssseeee <<<<uuuunnnniiiivvvveeeerrrrsssseeee----ssssppppeeeecccc>>>> ............
          Sets the current universe to the specified parameter.

     _C_o_n_v_e_x/_O_S

     wwwwaaaarrrrpppp [[[[<<<<uuuunnnniiiivvvveeeerrrrsssseeee----ssssppppeeeecccc>>>>]]]] ............
          Without arguments prints the current value of the
          universe. With a universe argument it sets the current
          universe to the value of the argument.


22229999.... WWWWIIIINNNNDDDDOOOOWWWW SSSSIIIIZZZZEEEE TTTTRRRRAAAACCCCKKKKIIIINNNNGGGG
     On systems that support SIGWINCH or SIGWINDOW, _t_c_s_h adapts
     to window resizing automatically and adjusts the environment
     variables LINES and COLUMNS if set. Also if the environment
     variable TERMCAP contains li#, and co# fields, these will be
     adjusted also to reflect the new window size.


33330000.... IIIINNNNPPPPUUUUTTTT FFFFIIIILLLLEEEESSSS
     On startup _t_c_s_h will try to source /_e_t_c/_c_s_h._c_s_h_r_c and then
     /_e_t_c/_c_s_h._l_o_g_i_n if the shell is a login shell. Then it will
     try to source $_H_O_M_E/._t_c_s_h_r_c and then $_H_O_M_E/._c_s_h_r_c if
     $_H_O_M_E/._t_c_s_h_r_c is not found. Then it will source $_H_O_M_E/._l_o_g_i_n
     if the shell is a login shell.  On exit _t_c_s_h will source
     first /_e_t_c/_c_s_h._l_o_g_o_u_t and then $_H_O_M_E/._l_o_g_o_u_t if the shell
     was a login shell.

     Note: On _c_o_n_v_e_x_o_s the names of the system default files are
     /_e_t_c/_c_s_h_r_c , /_e_t_c/_l_o_g_i_n and /_e_t_c/_l_o_g_o_u_t respectively and on
     _i_r_i_x or _A/_U_X only the file /_e_t_c/_c_s_h_r_c is executed if the
     shell is a login shell.


33331111.... CCCCOOOOMMMMMMMMAAAANNNNDDDD LLLLIIIINNNNEEEE OOOOPPPPTTTTIIIIOOOONNNNSSSS
     This section describes options that are either undocumented



Printed 9/18/91           5 August 1991                        32






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     in _c_s_h (*) or present only in _t_c_s_h. (+)


     -_d  Load ~/.cshdirs (If _t_c_s_h was compiled with CSHDIRS
         enabled)(+)

     -_l  Make _t_c_s_h behave like a login shell.  (+)

     -_m  Allow reading of a .cshrc that does not belong to the
         effective user. Newer versions of _s_u(_1) can pass that to
         the shell. (some versions of csh have it) (+*)

     -_q  Make the shell accept SIGQUIT, and behave when it is
         used under a debugger.  Job control is disabled. (*)


33332222.... HHHHIIIISSSSTTTTOOOORRRRYYYY AAAANNNNDDDD VVVVAAAARRRRIIIIAAAABBBBLLLLEEEE MMMMOOOODDDDIIIIFFFFIIIIEEEERRRR EEEENNNNHHHHAAAANNNNCCCCEEEEMMMMEEEENNNNTTTTSSSS
     _T_c_s_h accepts more than one variable modifier per variable or
     history expansion. For example, in _c_s_h(_1) the following com-
     mand expands to:

           % set a=/usr/local/foo.bar.baz
           % echo $a:t:r:e
           foo.bar.baz:r:e

     but in _t_c_s_h:

           > set a=/usr/local/foo.bar.baz
           > echo $a:t:r:e
           bar

     This bug fix changes slightly the input syntax of _c_s_h, caus-
     ing expressions of the form to have invalid syntax:

           > set a=/usr/local/foo.bar.baz
           > echo $a:t:$cwd
           Unknown variable modifier.

     Which is the correct behavior, since after the second colon
     a variable modifier is expected and `$' is found.  Expres-
     sions like this should be re-written as:

           > echo ${a:t}:$cwd


FFFFYYYYIIII
     This shell uses cbreak mode but takes typed-ahead characters
     anyway.  You can still use _s_t_t_y(1) to set some of the modes
     of your terminal (but not bindings).

     This shell will restore your tty to a sane mode if it
     appears to return from some command in raw, cbreak, or



Printed 9/18/91           5 August 1991                        33






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     noecho mode. This behavior can be changed using _s_e_t_t_y.

EEEENNNNVVVVIIIIRRRROOOONNNNMMMMEEEENNNNTTTT
     HPATH -- path to look for command documentation
     LANG -- used to give preferred character environment (see
     NLS)
     LC_CTYPE -- used to change only ctype character handling
     (see NLS)
     NOREBIND -- inhibits rebinding of printable characters to
     self-insert-command
     PATH -- path to look for command execution
     SHLVL -- current shell level nesting
     TERM -- used to tell how to handle the terminal
     LINES -- Number of lines in terminal (see WINDOW SIZE)
     COLUMNS -- Number of columns in terminal (see WINDOW SIZE)
     TERMCAP -- Terminal capability string (see WINDOW SIZE)
     SYSTYPE -- The current system type (Domain OS only)

NNNNEEEEWWWW SSSSHHHHEEEELLLLLLLL VVVVAAAARRRRIIIIAAAABBBBLLLLEEEESSSS
     aaaaddddddddssssuuuuffffffffiiiixxxx add a / for directories, and a space for normal
               files when complete matches a name exactly.  If
               unset don't add anything extra.

     aaaammmmppppmmmm      show all times in 12 hour, AM/PM format.

     aaaauuuuttttooooccccoooorrrrrrrreeeecccctttt
               Correct mis-spelled path components automatically
               before attempting completion.

     aaaauuuuttttooooeeeexxxxppppaaaannnndddd
               invoke the expand-history function automatically
               on completion.

     aaaauuuuttttoooolllliiiisssstttt  list possibilities on an ambiguous completion.

     aaaauuuuttttoooollllooooggggoooouuuutttt
               number of minutes of inactivity before automatic
               logout.

     bbbbaaaacccckkkkssssllllaaaasssshhhh____qqqquuuuooootttteeee
               makes the backslash quote \, ', and ". This option
               changes the parsing mechanism for tcsh, and it can
               cause syntax errors in _c_s_h scripts.

     cccchhhhaaaasssseeee____ssssyyyymmmmlllliiiinnnnkkkkssss
               always resolve symbolic links to real names on cd,
               etc.

     ccccoooorrrrrrrreeeecccctttt   automatically try to correct the spelling of com-
               mands.  Must be set to either correct=cmd, only
               command name will be corrected, or correct=all,
               the whole line will be corrected.



Printed 9/18/91           5 August 1991                        34






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     ddddeeeexxxxttttrrrraaaacccctttt  extract a directory on pushd rather than rotating.

     eeeeddddiiiitttt      use the input editor, set by default.

     ffffiiiiggggnnnnoooorrrreeee   list of file name suffixes (e.g. .o, ~) to ignore
               during complete.

     ggggiiiidddd       the current real group id.

     hhhhiiiissssttttlllliiiitttt   If set, history lines in the editor will be shown
               with its literal value (that is the line as it was
               input) instead of the shells lexical version. The
               current history line can be toggled between
               literal and lexical with the toggle-literal-
               history function.  History lines saved at shell
               exit are also saved as this variable indicates.

     hhhhiiiissssttttffffiiiilllleeee  If set, it contains the full path-name where a
               history file is read/written.  It defaults to
               $home/.history. This is useful when sharing the
               same home directory in different machines, or if
               one wants to save all the histories in the tty
               sessions. It is usually set in .cshrc for inter-
               ractive shells, because history is sourced between
               .cshrc and .login so that it is available from
               .login.

     iiiiggggnnnnoooorrrreeee____ssssyyyymmmmlllliiiinnnnkkkkssss
               don't resolve symbolic links to real names on cd,
               etc.

     lllliiiissssttttjjjjoooobbbbssss  list all jobs when suspending. set listjobs=long,
               produces long format.

     lllliiiissssttttlllliiiinnnnkkkkssss Resolve symbolic links when listing files so that
               the correct filetype is shown.

     lllliiiissssttttmmmmaaaaxxxx   maximum number of items to list without asking
               first.

     mmmmaaaattttcccchhhhbbbbeeeeeeeepppp control beeping on completion.  With
               matchbeep=nomatch, completion only beeps when
               there is no match, with matchbeep=ambiguous, beeps
               also when there are multiple matches, with
               matchbeep=notunique, beeps when there is one exact
               and other longer matches, with matchbeep=never, it
               never beeps.

     nnnnoooobbbbeeeeeeeepppp    Disables beeping completely.

     ooooiiiidddd       The organization id number (Domain OS only).




Printed 9/18/91           5 August 1991                        35






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     pppprrrriiiinnnntttteeeexxxxiiiittttvvvvaaaalllluuuueeee
               if an interactive program exits non-zero, print
               the exit value.

     pppprrrroooommmmpppptttt    the string to prompt with.

     pppprrrroooommmmpppptttt2222   the string to prompt for while and for loops with.

     pppprrrroooommmmpppptttt3333   the string to prompt with when automatic spelling
               correction has corrected a command line.

     ppppuuuusssshhhhddddttttoooohhhhoooommmmeeee
               make pushd with no args do a "pushd ~" (like cd
               does).

     ppppuuuusssshhhhddddssssiiiilllleeeennnntttt
               do not print the dir stack on every pushd and
               popd.

     rrrreeeecccceeeexxxxaaaacccctttt  recognize exact matches even if they are ambigu-
               ous.

     rrrreeeeccccooooggggnnnniiiizzzzeeee____oooonnnnllllyyyy____eeeexxxxeeeeccccuuuuttttaaaabbbblllleeeessss
               list choices of commands only displays files in
               the path that are executable (slow).

     rrrrmmmmssssttttaaaarrrr    Prompt the user before execution of `rm *'.

     ssssaaaavvvveeeehhhhiiiisssstttt  number of history items to save between login ses-
               sions.

     sssshhhhllllvvvvllll     Integer value indicating the number of nested
               shells.

     sssshhhhoooowwwwddddoooottttssss  show hidden files in list and complete operations.

     ttttccccsssshhhh      Contains the current version of the shell as
               R.VV.PP. The _R indicates the major release number,
               the _V_V the current version and the _P_P the
               patchlevel.

     tttteeeerrrrmmmm      the terminal type; see above.

     ttttppppeeeerrrriiiioooodddd   periodic command wait period (in minutes).

     ttttttttyyyy       The name of the tty, or empty if not attached to
               one.

     uuuuiiiidddd       the current real user ID.

     vvvveeeerrrrssssiiiioooonnnn   the version ID stamp for this _t_c_s_h. It contains,
               the origin of this version of _t_c_s_h, the date this



Printed 9/18/91           5 August 1991                        36






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



               version was released and a string containing a
               comma separated list of the compile time options
               enabled:
               8b 7b  If tcsh was compiled to be eight bit clean
                      or not.  The default is 8b.
               nls    Set if tcsh uses the system's NLS, should be
                      the default for systems that have NLS.
               lf     Set if tcsh should execute .login before
                      .cshrc on login shells. Default is not set.
               dl     Set if tcsh should put . last on the path
                      for security. Default is set.
               vi     Set if tcsh's default editor is vi. Default
                      is unset (emacs)
               dtr    Set if tcsh should drop dtr on login shells
                      when exiting.  Default is unset.
               bye    Set if tcsh should accept bye in addition
                      to logout, and rename log to watchlog.
                      Default is unset.
               al     Set if tcsh should determine if autologout
                      should be enabled. The default is set.
               dir    Set if tcsh should save and restore the directory
                      stack.
               kan    Set if tcsh is compiled for Kanji.
                      (ignore the iso character set.) Default is unset.
               sm     Set if tcsh was compiled to use the system's malloc.

     In addition to the above strings, administrators can enter
     local strings to indicate differences in the local version.


     vvvviiiissssiiiibbbblllleeeebbbbeeeellllllll
               use the visible bell (screen flash) rather than
               audible bell.

     wwwwaaaattttcccchhhh     list of events to watch.

     wwwwhhhhoooo       format string for the printouts generated when
               _w_a_t_c_h is set.

     wwwwoooorrrrddddcccchhhhaaaarrrrssss list of nonalphanumeric characters considered part
               of a word for the purpose of the forward-word,
               backward-word etc functions -- defaults to "*?_-
               .[]~=".

NNNNEEEEWWWW SSSSPPPPEEEECCCCIIIIAAAALLLL AAAALLLLIIIIAAAASSSSEEEESSSS
     _c_w_d_c_m_d    the command is run after every change of working
               directory.

     _p_e_r_i_o_d_i_c  the command to be run every _t_p_e_r_i_o_d minutes.

     _p_r_e_c_m_d    the command to be run prior to printing each
               prompt.



Printed 9/18/91           5 August 1991                        37






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     _b_e_e_p_c_m_d   the command to be run every time _t_c_s_h wants to
               echo the terminal bell.

SSSSEEEEEEEE AAAALLLLSSSSOOOO
     xterm(1), twm(1), csh(1), chsh(1), termcap(5), termio(7)

BBBBUUUUGGGGSSSS
     The screen update for lines longer than the screen width is
     very poor if the terminal cannot move the cursor up (i.e.
     terminal type "dumb").

     I am certain that there are bugs.  Bugs (preferably with
     fixes) should be sent to Christos Zoulas
     (christos@ee.cornell.edu).

VVVVEEEERRRRSSSSIIIIOOOONNNN
     This man page documents tcsh 6.00.02 (Cornell) 08/05/91.

AAAAUUUUTTTTHHHHOOOORRRRSSSS
     Ken Greer, HP Labs, 1981
     Wrote the command completion.

     Mike Ellis, Fairchild, 1983
     Added command name recognition/completion.

     Paul Placeway, Ohio State CIS dept., 1983
     Added the command line editor.

     Rayan Zachariassen, University of Toronto, 1984
     Added the builtin _w_h_i_c_h feature to the editor, and the code
     for _l_s-_F . Also numerous bug fixes, modifications, and per-
     formance enhancements.

     Chris Kingsley, Caltech
     Wrote the fast storage allocator routines (nmalloc.c).

     Karl Kleinpaste, CCI 1983-4
     Added special aliases, directory stack extraction stuff,
     login/logout watch, and scheduled events.  Also came up with
     the idea of the new prompt format.

     Paul Placeway, Ohio State CIS dept., 1987
     Re-wrote the editor, cleaned up other code, and added the
     prompt routines, added to the syntax for file name expres-
     sions, and sped up the shell some.

     Chris Grevstad, TRW, 1987
     Ported the 4.3 csh sources to tcsh.

     Christos S. Zoulas, Cornell U. EE dept., 1987-91
     ported tcsh to HPUX, and System V rel. 2 and 3 and wrote a
     SysV version of getwd.c. Added SHORT_STRINGS support. New



Printed 9/18/91           5 August 1991                        38






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     version of sh.glob.c.

     James J Dempsey, BBN, 1988, and Paul Placeway, OSU, 1988
     Re-ported tcsh to A/UX.


BBBBUUUUGGGGFFFFIIIIXXXXEEEESSSS AAAANNNNDDDD EEEENNNNHHHHAAAANNNNCCCCEEEEMMMMEEEENNNNTTTTSSSS
     Marc Horowitz, MIT, 1991 Ansification fixes
     Eric Schnoebelen, Convex, 1990
     Convex support, lots of csh bug fixes, save and restore of
     directory stack.

     Jaap Vermeulen, Sequent, 1990-91
     Vi mode fixes, expand-line, window change fixes, ported to
     symmetry machines.

     Ron Flax, Apple, 1990
     Ported again to A/UX 2.0

     Dan Oscarsson, LTH Sweden, 1990
     NLS support and simulated for non NLS sites.  Correction of
     file names also handles the case when the / is replaced by
     another character.  The editor does not switch into cbreak
     mode unless needed.  The shell will not use character attri-
     butes when output is not to a tty.

     Johan Widen, SICS Sweden, 1990
     Shell level variable, mach support, correct-line, 8-bit
     printing.

     Matthew T. Day, Sanyo/ICON, 1990
     Added POSIX termio support; Fixed limit stuff for SysV.

     Hans J. Albertsson (Sun Sweden)
     Added the ampm variable handling, DING!, and the settc and
     telltc builtins.

     Michael Bloom
     Fixed some of the interrupt handling.

     Michael Fine, Digital Equipment Corp
     added the extended key support.

     Daniel Long, NNSC, 1988
     Added the wordchars variable.

     George Hartzell, MCD Biology, University of Colorado-
     Boulder, 1988
     Fixed the always reseting to DEL bug.

     Patrick Wolfe, Kuck and Associates, Inc., 1988
     Cleaned up VI mode and wrote the new editor description (in



Printed 9/18/91           5 August 1991                        39






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     section 1).

     Jak Kirman, 1988
     Fixed the SunOS 4 giant stack allocation bug.

     Bruce Robertson, Tektronix, 1989
     Fixed setting erase and kill (again).

     David C Lawrence, Rensselaer Polytechnic Institute, 1989
     Added "autolist" variable and code to list possibilities on
     ambiguous completion.

     Martin Boyer, Institut de recherche d'Hydro-Quebec, 1991.
     Modified "autolist" variable and code to give options on
     beeping behavior.  Modified the history search to search for
     the whole string from the beginning of the line to the cur-
     sor.

     Alec Wolman, DEC, 1989
     Added code to allow newlines in the prompt.

     Matt Landau, BBN, 1989
     Fixed YP bugs on Suns, added .tcshrc stuff.

     Ray Moody, Purdue Physics, 1989
     Added the code to do magic spacebar history expansion.

     Mordechai ????, Intel, 1989
     Re-arranged the printprompt() routine to use a switch(*cp)
     (rather than a bunch of ifs), and added a few things to it.

     Josh Siegel, dspo.gov, 1989
     Fixed "fg-editor" and added the status line shell variables
     "sl" and "el".

     Karl Berry, UMB, 1989
     Fixed a bug involving environ (in sh.func.c) on NeXT comput-
     ers.

     Michael Greim, Universitaet des Saarlandes, Saarbruecken,
     W-Germany,
     Fixed the nested backquote bug (yes, you can do it; think
     about aliases) in 4.2 csh.  This fix was posted to
     comp.bugs.4bsd.

     Kazuhiro Honda, Department of Computer Science, Keio Univer-
     sity, 1989
     Added the code for automatic spelling correction, the
     prompt3 stuff (the autocorrect prompt), and HOSTTYPE symbols
     for the Sony NEWS.

     Paul Placeway, BBN, 1990



Printed 9/18/91           5 August 1991                        40






TCSH(1)             UNIX Programmer's Manual              TCSH(1)



     Fixed character redrawing code insert bugs, and made redraw-
     ing code handle multiple character movement, insert, and
     delete (if it exists).  Fixed setting of SHELL.

     Per Hedeland, Ellemtel, Sweden, 1990
     Various bugfixes and improvements, e.g. in history expan-
     sion, autolist, added autoexpand, updated the manual.

TTTTHHHHAAAANNNNKKKKSSSS TTTTOOOO
     A special thanks to: Bryan Dunlap, Clayton Elwell, Karl
     Kleinpaste, Bob Manson, Steve Romig, Diana Smetters, Bob
     Sutterfield, Mark Verber, Elizabeth Zwicky, and all the
     other people at Ohio State for suggestions and encourage-
     ment.

     Also, thanks to all the people on the net for putting up
     with, reporting bugs in, and suggesting new additions to the
     old tcsh editor.





































Printed 9/18/91           5 August 1991                        41



