v18i041: Mail user's shell version 6.4, Part19/19

Rich Salz rsalz at bbn.com
Sat Mar 18 04:37:30 AEST 1989


Submitted-by: Dan Heller <island!argv at sun.com>
Posting-number: Volume 18, Issue 41
Archive-name: mush6.4/part19



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 19 (of 19)."
# Contents:  mush.1.1
# Wrapped by rsalz at papaya.bbn.com on Mon Mar 13 19:25:25 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'mush.1.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mush.1.1'\"
else
echo shar: Extracting \"'mush.1.1'\" \(49833 characters\)
sed "s/^X//" >'mush.1.1' <<'END_OF_FILE'
X.\" Mush Man Page: Copyright (c) 1987 Dan Heller
X.\" Cleaned up January 1988 by Bart Schaefer <schaefer at cse.ogc.edu>
X.\"
X.if n .ds Q \&"
X.if n .ds U \&"
X.if t .ds Q \&``
X.if t .ds U \&''
X.if n .ds - --
X.if t .ds - \(em
X.nh
X.TH MUSH 1 "Oct 24, 1988" "Version 6.4"
X.UC 4
X.SH NAME
XThe Mail User's Shell \- Shell for electronic mail.
X.SH SYNOPSIS
X.B mush
X[
X.B \-n
X]
X[
X.B \-v
X]
X[
X.B \-s
Xsubject
X]
X[
X.B \-c
Xcc-list
X]
X[
X.B \-b
Xbcc-list
X]
X[
Xaddress-list
X]
X.br
X.B mush
X[
Xmode-options
X]
X[
Xfile-options
X]
X.SH INTRODUCTION
XThe Mail User's Shell (Mush) is an interface for sending and manipulating
Xa database of electronic mail messages under the
X.IR UNIX (TM)
Xenvironment.
XThere are three user interfaces that allow the user to interact with
X.I Mush.
XThe default interface is the conventional tty-based line mode
Xsimilar to command line interpreters such as
X.I csh
Xas well as other mailers, such as University of California, Berkeley's
X.I Mail
Xand Bell Lab's System V
X.I mailx
Xinterface.
XThis mode requires nothing from the terminal in terms of screen
Xcapability and may be run on many different versions of the
X.IR UNIX (TM)
Xoperating system.
X.PP
XThe text-graphics
X.RI ( curses )
Xinterface is reminiscent of the
X.I vi
Xvisual editor, but is user-configurable to simulate other editors.
XThis interface does not require graphics capabilities of
Xthe computer or the terminal on which it is run, but the terminal must
Xhave the minimum capabilities required by any visual screen editor.
X.PP
XThe
X.I window
Xinterface for the Sun Workstation utilizes the icon and
Xmenu based (mouse selectable) windowing system.
XThis
X.I tool
X(graphics) mode is highly subject to the version of operating system
Xyour Sun may be running.
XWhile the program works with variable levels of success on earlier versions, it
Xis intended to be run on Sun versions 2.0 and higher.
XSee the BUGS section at the end for more information.
X.PP
XSee the corresponding sections for more information on the user
Xinterface desired.
XMost of this manual deals with commands, variables
Xand actions that are common to all three interfaces although
Xsome attention is paid to individual characteristics of each interface.
X.PP
XThe following command line arguments are understood by
X.I Mush
X(full word forms in parentheses):
X.TP
X\-b
X(\-blindcarbon, \-blind)
XThe list of Blind Carbon Copy recipients is set on the command line.
XIf more than one address or an address containing spaces is specified, the
Xentire list should be enclosed in quotes.
XThis option applies when sending mail only.
XIf you are entering the shell, curses mode, or the tool mode, this option is
Xignored.
X.TP
X\-C
X(\-curses)
XEnter the mailer in curses mode upon startup.
X.TP
X\-c cc-list
X(\-carbon, \-copy)
XThe list of Carbon Copy recipients is set on the command line.
XIf more than one address or an address containing spaces is specified, the
Xentire list should be enclosed in quotes.
XThis option applies when sending mail only.
XIf you are entering the shell, curses mode, or the tool mode, this option is
Xignored.
X.TP
X\-d
X(\-debug)
XTurns on the debugging level to 1.
XYou can change debugging levels from within the shell using the
X.B debug
Xcommand.
X.TP
X\-F[!] filename
X(\-source)
XThis file is the same type as the initialization file read on startup
X(see INITIALIZATION) with the exception that commands that manipulate
Xor search messages may be given.
XNormally, such commands may not appear in the initialization file since
Xthat file is read before the folder is scanned.
XThe file specified by \-F is read after the folder is scanned, so
Xcommands that affect messages are allowed.
XThe optional `!' argument prevents the shell from running after the
Xfile has been sourced.
XOtherwise,
X.I Mush
Xcontinues into whatever interface has been specified.
X.TP
X\-f [ filename ]
X(\-folder)
XThe optional filename argument specifies a folder containing mail messages.
XWith no argument,
X.B mbox
Xin the current directory (or the variable
X.BR mbox )
Xis used.
XIf no filename is given, this option must be last on the command line.
X.TP
X\-H[:c]
X(\-headers)
XHave
X.I Mush
Xdisplay mail headers without entering the shell.
XSee the
X.B headers
Xcommand for information on the
X.B :c
Xargument.
XNo colon modifier is equivalent to \*Q\-H:a\*U.
XThis option prevents the shell from running, so this option will turn off the
X\-S and \-C flags.
XThis option is ignored if the tool mode is in effect.
X.TP
X\-i
X(\-interact)
XForces interactive mode even if input has been redirected to the program.
XThis is intended for remote host mail sessions but also allows
Xthe user to redirect \*Qscripts\*U of
X.I Mush
Xcommands.
XSee the INITIALIZATION section for information on how to
Xwrite scripts that deal with mail.
XNote that this flag is different from the \*Qignore\*U flag of UCB Mail.
X.TP
X\-N
X(\-noheaders)
XEnter
X.I Mush
Xwithout displaying any message headers.
XThis argument is passed to the
X.B folder
Xcommand.
X.TP
X\-n
X(\-noinit)
XNo initialization is done on start up.
XThat is, do not source
X.I .mushrc
Xor
X.I .mailrc
Xfiles.
XSee the INITIALIZATION section for more information on
Xstartup and the significance of these files.
X.TP
X\-r
X(\-readonly)
XInitialize the folder in Read-Only mode; no modification of the folder is
Xpermitted.
XThis argument is passed on to the
X.B folder
Xcommand.
X.TP
X\-S
X(\-shell)
XThis flag allows the user to enter the shell even if the system
Xmailbox or specified folder is empty or doesn't exist.
X.TP
X\-s subject
X(\-subject)
XThe subject is set on the command line using this flag.
XIf the subject has
Xany spaces or tabs, the entire subject should be enclosed in quotes.
XThis applies when sending mail only.
XIf you are entering the shell,
Xcurses mode, or the tool mode, this option is ignored.
X.TP
X\-T timeout
X(\-timeout)
XIn the tool mode (Sun only),
X.I timeout
Xspecifies the length of time (seconds) to wait between each check for new mail.
X30 seconds is the smallest time allowed for performance reasons.
X60 seconds is the default value.
X.TP
X\-t
X(\-tool)
XUse the graphics tool mode (Sun only).
X.TP
X\-u [ user ]
X(\-user)
XThe mailbox to use is /usr/spool/mail/\fBuser\fR.
XIf the login name for user is not specified, then root is used.
X.TP
X\-m mailbox-path
X(\-mailbox)
XThe mailbox specified will be interpreted as if it were the user's main
X(system) mailbox in place of /usr/spool/mail/$USER (or whatever path is
Xapplicable for your system and Mail Transport Agent).
X.TP
X\-v
X(\-verbose)
XVerbose mode is turned on.
XThis option is passed to the actual mail delivery
Xsubsystem internal to your version of
X.IR UNIX (TM).
XSome mailers do not have a verbose option, so this flag may not apply
Xto your system (System V, for example).
XThis applies when sending mail only.
XIf you are entering the shell,
Xcurses mode, or the tool mode, this option is ignored.
X.TP
X\-1 cmd_help
X.ns
X.TP
X\-2 tool_help
X.rs
X(\-help, \-sunhelp)
XSpecify alternate locations of help files.
XThese should be full pathnames accessible for reading.
XThis is usually done if a binary copy of
X.I Mush
Xhas been copied from another machine and the wrong pathnames to the
Xhelp files cannot be changed.
X.SH FEATURES
X.BR "New Mail" .
X.PP
XIf during a
X.I Mush
Xsession, new mail arrives for you, it is automatically incorporated into
Xyour system mailbox and you are told that new mail has arrived.
X.PP
XIn the default line mode, new mail is checked between each command
Xissued.
XIn the curses mode, new mail is checked on each
Xcommand and is displayed in the bottom line of the screen.
XIn the tool based graphics mode, new mail is checked approximately
Xevery minute or by the number of seconds specified by the
X.B -T
Xoption on the command line.
X.PP
XIf you are using your system mailbox as your \*Qcurrent folder,\*U then the
Xnew mail is added immediately to your current
Xlist of messages and information similar to the following example is
Xdisplayed, to tell you whom the mail is from:
X.sp
X.ti +2
XNew mail: (#15) island!argv at sun.com (Dan Heller)
X.sp
XIf you are not in your system mailbox, then the new mail will not be added
Xto your list of messages, but you will instead be informed of the new arrival.
X.sp
XIf you are using the tool based mode and
X.I Mush
Xis closed to an iconic state, then the number of messages in the current
Xfolder is displayed on the mailbox icon and the flag on the mailbox will go up.
X.PP
X.BR History .
X.PP
XIn the line-mode interface,
X.I Mush
Xsupports a history mechanism similar to that supplied by
X.IR csh .
XA subset of
X.I csh
Xhistory modifiers are supported to reference previously
Xissued commands and to extract specified arguments from these commands.
X.PP
X.BR "Mail Aliases" .
X.PP
XMail aliases are shorthand names for long mail addresses.
XThese are supported in the same manner as UCB Mail supports them.
XBecause
X.I Mush
Xhas command line history reminiscent of
X.IR csh ,
Xcommands that use UUCP's `!' character for user-host and host-host
Xseparation should be escaped (preceded by a backslash).
XThis is not necessary in the initialization file (.mushrc) because history
Xreferencing is ignored while these files are being sourced.
XSee the INITIALIZATION and LINE-MODE INTERFACE sections for more
Xinformation on initialization file format and the history mechanism.
X.PP
XAliases reference normal mailing addresses as well as other aliases.
XIf a loop is detected, then the user will be notified and the message will
Xbe forced into the file
X.B dead.letter
Xin the user's home directory.
XThe
X.B unalias
Xcommand is used to reverse the effects of the
X.B alias
Xcommand.
X.PP
X.BR "Command Line Aliases" .
X.PP
XCommand aliases are different from mail aliases in that they are used
Xto expand to commands.
XThe usage of command line aliases is similar to that supplied by
X.IR csh .
X.PP
X.BR "Command Pipes" .
X.PP
X.I Mush
Xcommands can be \*Qpiped\*U to one another so as to provide output of
Xone command to be used as input to the next command in the pipeline.
XHowever, the output of commands is not the \*Qtext\*U that is returned
X(as it is in
X.IR csh )
Xbut a list of the messages that were affected.
X.PP
X.BR Help .
X.PP
X.I Mush
Xwas designed so that each command or action should not be a mystery.
XHelping the user understand what to do and how to do whatever he wishes
Xis the goal behind the help facility.
XFor this reason, the
X.B help
Xcommand gives information on both general usage and a few specific help
Xcategories.
X.PP
XIn text mode, most help is gotten by typing \-? as an argument to a
Xcommand.
XAmost every command has the \-? option.
XWhen this option is specified, most commands will attempt to read from
Xa help file a brief explanation of the functionality of the command.
XIf necessary, a pointer to other sources of information will
Xbe given to fully explain a concept.
X.PP
XIn the curses mode, the `?' key will display a list of the current
Xkey-to-command bindings; a keystroke or set of keystrokes correspond
Xdirectly to a command.
X.PP
XIn the tool/graphics mode, this is
Xalso available, but more extensive help is provided in the pop-up menus.
XPop-up menus can be gotten from virtually anywhere on the screen; press the
XRIGHT mouse button (the \*Qmenu button\*U) and a number of items will appear
Xin a menu.
XThe last command in the menu list will be one labelled \*Qhelp\*U.
XSelecting this menu item will display a \*Qhelp box\*U in the center of the
Xconsole and wait for input to remove the box.
X.PP
X.BR "Sorting mail" .
X.PP
X.I Mush
Xallows you to sort your mail according to various constraints such
Xas time, status (new, unread, deleted, etc.), author and subject.
XSee the
X.B sort
Xcommand in the COMMANDS section for more information on sorting.
X.PP
X.B Picking specific messages.
X.PP
XYou can select messages that contain unique information, or from
Xmessages that have special attributes.
XYou have the option of restricting your search to messages between dates,
Xmessage numbers, author names and other constraints.
X.SH INITIALIZATION
XAfter the command line arguments have been interpreted, if the argument
X.B -n
Xis not given,
X.B Mush
Xwill read commands from an
X.B "initialization file"
Xthat (typically) sets variable values, aliases, command line aliases,
Xand so forth.
XThe default system initialization file is read first and then the
Xuser's personal initialization file is read.
XThe system default file
Xis set up by the system administrator and may contain commands that
Xshould be set system-wide.
X.PP
XThe user's file is determined by first looking for the environment variable
X.IR MAILRC .
XIf that file isn't found, then the file
X.I .mushrc
Xis searched for in the home directory of the user.
XIf that file cannot be found,
X.I Mush
Xwill attempt to read the file
X.I .mailrc
Xfrom the same directory.
XFinally, if that file cannot be read, no initialization is done
Xand the default values will be in effect.
X.PP
XIf the user has no home directory, or permissions prevent read/write access
Xto $HOME, /tmp is used as the home directory.
XSee the
X.B home
Xvariable under the VARIABLES section.
X.PP
XOnce in the shell, the
X.B source
Xcommand may be used to specify a file if you want to read commands
Xfrom a file other than the default.
XThe command
X.B saveopts
Xwill save all variable settings, aliases, and all other
X.I Mush
Xsettable attributes, to aid in creating an initialization file.
XIf no filename is given on the command line,
Xthe
X.B source
Xand
X.B saveopts
Xcommands choose a file in the manner described above.
X.B Saveopts
Xwill not overwrite the file if it exists.
XIn such cases, you will be prompted to confirm overwrite.
XIf you confirm overwriting the existing file, remember that existing \*Qif\*U
Xexpressions or other manually entered comments or non variable-setting type
Xcommands that previously existed in the file will be lost.
X.PP
XNo interactive commands should be called from any initialization file.
XThese commands are not prevented because it is impossible to trace which
Xcommands are actually
X.IR UNIX (TM)
Xcommands that will be interactive.
XThe responsibility of not running interactive commands is left to the user.
XBecause the initialization file is read
X.I before
Xany messages are read into the program,
Xmessage filtering commands should not be placed in this file unless you know
Xyou're going to
X.IB re- source
Xthe file later as a command.
X.PP
X.IR "Initialization File Format" .
XWhen reading the initialization file,
X.I Mush
Xwill recognize the `#' character as a comment character.
XIt may be anywhere on a line in the file.
XWhen that character is encountered,
Xprocessing of that line is discontinued to the end of the line.
XIf the `#' is enclosed in quotes (single or double), then it is not
Xconsidered a comment.
XExamples:
X.sp
X.ti +2
Xset shell = /bin/csh  # set the shell variable
X.ti +2
X# this entire line has been commented out.
X.ti +2
Xset prompt = "Message #%m: "  # The `#' is within quotes
X.PP
XThe
X.B exit
Xcommand has special meaning in the initialization file.
XIf the command is found,
X.I Mush
Xwill not exit, but rather, discontinue reading from the file immediately.
X.PP
XThere may be \*Qif\*U expressions within the initialization file to determine
Xcertain runtime states of
X.IR Mush .
XNo parentheses are allowed and only one boolean expression may be
Xevaluated per line; that is, no \*Q&&\*U or \*Q|\||\*U may be used in
Xexpressions.
XAn \*Qelse\*U on a line by itself may precede alternative
Xactions.
X\&\*QIf\*U expressions may be nested to any reasonable depth, but
Xthere must always be an \*Qendif\*U matching each \*Qif\*U expression.
XThe statements associated with an \*Qif\*U expression are never on the
Xsame line with the conditional expression.
X.PP
XConditional expressions understood include the internal variables
X.IR istool ,
X.IR iscurses ,
X.IR hdrs_only ,
X.IR is_sending ,
Xand
X.IR redirect .
XIf
X.I istool
Xis true, the program is going to run in the tool mode.
XIf
X.I iscurses
Xis true, the program is in or is going to run in the curses mode even
Xthough the screen package may not yet have been started.
XIf
X.I hdrs_only
Xis true, then the -H flag on the command line has been given.
XIf
X.I is_sending
Xis true, then the user is sending mail to a user.
XThis does not imply
Xthat the user is not going to be running a shell after the mail is sent.
XIf
X.I redirect
Xis true, then input to the program is redirected.
XThe test for redirection tells whether input, not output, has been
Xredirected to the program.
XThe
X.B \-i
Xoption on the command line is required to run the shell if redirect is on.
XIf \-i is specified, the value for
X.I redirect
Xwill be set to false.
XThese are internal variables whose values cannot be referenced using the
X\*Q$variable\*U method of variable expansion.
X.PP
XThe `!' operator may be used to negate expressions, thus,
X.sp
X.nf
X.in +2
Xif !istool
X.ti +4
Xexit
Xelse
X.ti +4
Xset autoprint
Xendif
X.in -2
X.fi
X.sp
Xmeans that if you are not running as a tool, stop reading commands from this
Xfile.
XOtherwise, set the autoprint variable.
X.sp
X.in +2
X.nf
Xset hdr_format = "%25f %7d (%l/%c) %25s"
Xif hdrs_only
X.ti +4
Xexit
Xendif
X.in -2
X.fi
X.sp
XThis tells the program to set the hdr_format variable and check to see if
Xwe're running the program to read headers only.
XIf so, stop reading this file (exit) and continue on with the program.
XThis speeds up runtime quite a bit for those who have lengthy initialization
Xfiles, because no other shell variables are necessary.
X.sp
X.in +2
X.nf
Xif !iscurses
X.ti +4
Xset crt = 24 screen = 18
Xendif
X.in -2
X.fi
X.sp
XThis segment checks to see that we're not running in curses mode, and if not
Xit will set our crt and screen sizes.
XThis is mostly because the curses mode will set those values for us by looking
Xat the size of the screen.
XLike other interactive commands, the
X.B curses
Xcommand itself should never be called from an initialization file.
XDoing so will cause terminal settings to be set incorrectly and cause
Xunpredictable results from there.
XSee the CURSES INTERFACE section for configuring your
Xenvironment so you enter curses mode each time you run the shell.
X.PP
XString evaluation is allowed in \*Qif\*U expressions, and the operators
X\*Q==\*U and \*Q!=\*U may be used to determine equality or inequality.
XUsually, variables are compared with constants for evaluation.
XNote that it is not possible to compare variables to an empty string, and
Xvariables that evaluate to an empty string may cause errors.
XIt is possible to test whether a variable is set by using the syntax
X\*Q$?variable\*U (as in
X.IR csh )
Xbut there is not currently any way to test for an empty string value.
X.sp
X.in +2
X.nf
Xif $TERM == adm3a
X.ti +4
Xset pager = more
Xelse
X.ti +4
Xset pager = less
Xendif
X.in -2
X.fi
X.sp
XThis segment tests to see if the user's terminal type is \*Qadm3a\*U.
XIf it is, then it sets the pager variable to be the 
X.I more
Xprogram.
XNote that the variable TERM will be gotten from the user's environment if a
Xshell variable is not set already.
XOtherwise, the pager variable is set to \*Qless\*U.
XThis exemplifies the fact that
X.I less
Xfrequently fails to function correctly
Xfor the terminal type \*Qadm3a\*U so we don't use it.
X.sp
XAlso supported in \*Qif\*U expressions are the test flags \*Q-e\*U
Xand \*Q-z\*U.  These flags test to see if a file exists (\*Q-e\*U) or
Xif it is zero-length (\*Q-z\*U).
X.sp
X.nf
X.in +2
Xset mbox = ~/Mail/mbox
Xset newfolder = /usr/spool/mail/$USER
Xif -z $newfolder
X.ti +4
Xset newfolder = $mbox
Xendif
Xif -e $newfolder
X.ti +4
Xfolder $newfolder
Xelse
X.ti +4
Xquit
Xendif
X.fi
X.in -2
X.sp
XThis sets a new variable called \fBnewfolder\fR to the the user's spool
Xmailbox (the system mailbox).  It then tests to see if it is zero length,
Xand if it is, resets the variable to the value of the user's \fBmbox\fR
Xvariable (mbox must be set here).  It then tests to see if the new folder
Xexists.  If it does, it changes folders to the new folder.  If it doesn't
Xexist, the program exits (via \fBquit\fR).
X.PP
XAfter sourcing the initialization file,
X.I Mush
Xreads all the mail out of the specified folder (the system spool directory
Xif no folder is given) and creates a list of messages.
XThe current maximum number of messages the user
Xcan load is set to 1000 by default.
XThe system administrator who configures the program can reset this
Xvalue higher or lower if you ask nicely.
XIf the user has the
X.B sort
Xvariable set, then when the current folder's messages have all been read,
Xthe messages are sorted according to the value of the
Xvariable (see the
X.B sort
Xentry under the VARIABLES heading for more information).
XEach message has a number of message header lines that contain information
Xabout whom the mail is from, the subject of the message, the date it was
Xreceived, and other information about the letter.
XThis information is then compiled into a one-line summary for
Xeach message and is printed out in an appropriate manner
Xdepending on the interface you're using.
X.PP
XAt this point, commands may be input by the user.
XLengthy or complex commands can be placed in a file and then executed via the
X.B source
Xcommand; for example, a filtering file, "filter", might contain:
X.sp
X.in +2
X.nf
Xpick -f Mailer-Daemon | save mail_errors
Xpick -f yukko | delete
Xpick -s -i thesis | save +thesis_mail
Xpick -t unix-wizards | +wizmail
Xupdate
Xsort d
X.in -2
X.fi
X.sp
XThen the first command the user typed might be \*Qsource filter\*U
Xand the following would happen:
XFirst, all messages that have \*QMailer-Daemon\*U in the from line
Xwill be saved in the file mail_errors.
XThen, all mail from the user \*Qyukko\*U will simply be deleted.
XNext, all mail that has in the subject field \*Qthesis\*U
X(case ignored, so \*QThesis\*U would also match) would be
Xsaved in the file $folder/thesis.
XThe next command will find all messages that are addressed to
Xthe group \*Qunix-wizards\*U (of which the user is an elite
Xmember) and save them in the file $folder/wizmail.
XLast, the folder will be updated, removing all deleted mail
X(saved mail may be marked as deleted)
Xand the folder is reread and sorted according to the date of the messages.
X.SH "GENERAL USAGE"
XBecause there are three different interfaces available to the user,
Xthe tty characteristics (backspace, kill-word, kill-line, redraw line)
Xare simulated identically in all interfaces.
XWhen the user has to type something, the 4.2BSD style of tty driver interface
Xis simulated whether you're in the window system, the curses mode, or
Xthe tty-line
Xmode, and even on System-V machines.
XThis means that backspacing causes a
Xbackspace-space-backspace effect (erasing the character backspaced over).
XThe user may reset his tty characteristics using the
X.B stty
Xcommand.
X.PP
X.IR "Displaying messages" .
X.PP
XDepending on the interface you use, you can display any message in your
Xlist of messages as long as the message is not marked for deletion.
XIf the message is marked as deleted, then use the 
X.B undelete
Xcommand supplied by the interface you are using.
XTo display a message in line mode, specify the message using
X.BR print ,
X.BR type ,
X.BR p ,
X.BR t ,
Xor type a message number to display that message on the screen.
X.PP
XIn curses mode, move the cursor over the message you want and type
Xa `t' or `p' to read the message.
XYou may \*Qbind\*U other keys to call
Xthe function that displays messages if `t' and `p' are uncomfortable.
X.PP
XIn the graphics mode, move the mouse over the message you wish to
Xbe displayed and select the LEFT mouse button.
XIf the message you want is not visible (in the header subwindow), you may type,
Xin the message subwindow, the number of the message and hit return.
XThat message number will be displayed.
X.PP
XIn the line or curses mode, if the message has more lines than the variable
X.BR crt ,
Xthen a
X.I pager
Xwill be invoked to allow the user to page through the message without
Xhaving it scroll off the screen.
XThe pager used is determined by the variable
X.BR pager .
XIf that variable is unset, then a default pager will be used.
XNote that if pager is set, but not to a value, or is set to the value
Xof \*Qinternal\*U, then the internal pager is used.
XThe internal pager
Xis very simple; the spacebar displays the next
X.B crt
Xlines, carriage return prints the next line, and \*Qq\*U quits the pager.
X.PP
XIn the tool mode, if a message is larger than the size of the message
Xsubwindow, the amount of the message viewed is displayed and the user
Xmay page through the message via `\\n', `\\r', `j', `J', or `+' (forward
Xby lines), `k', `K', or `-' (backwards
Xby lines), `\ ' or LEFT mouse button (forward by pages), or MIDDLE mouse button
X(backwards by pages).
XThe user may precede the forward and backwards by lines keystrokes with a
Xnumerical
X.I count
Xto specify how many lines to scroll.  This
X.I count
Xremains in effect (across message and folder changes)
Xuntil a new one is specified.
X.PP
XAn alternative to displaying messages is the
X.B top
Xcommand.
XThis command will print just the top few lines of a message.
XThe number of lines is determined by the variable
X.BR toplines .
XIf this variable isn't set,
X.B top
Xwill print a number of lines equal to the value of the variable
X.BR crt .
X.PP
X.IR "Sending mail" .
X.PP
XYou can send mail using the
X.B mail
Xcommand or by responding to other mail.
XIn either case, when you are sending mail, you are in a mode where everything
Xyou type is added to the contents of the message.
XWhen you are done typing your message, you can type `^D'
X(control-D) to signify the end of the message.
XIf you have the variable
X.B dot
Xset, then you can end a message with a `.' on a line by itself.
X.PP
XWhile you are composing a message,
X.I Mush
Xtreats lines beginning with the character `~' specially.
XThis is called a
X.B tilde escape.
XFor instance, typing \*Q~i\*U (alone on a line) will place a copy
Xof the \*Qcurrent message\*U into your message body.
XIt will not include the message headers of the message, just the body of text
Xthat comprises the message.
X.PP
XAvailable
X.BR "tilde escapes" :
X[OPTIONAL arguments in square brackets]
X.TP
X~a file
XAppend message buffer to file name.
X.TP
X~b [bcc-list]
XModify blind carbon recipients; otherwise identical to ~t.
X.TP
X~c [cc-list]
XModify carbon copy recipients; otherwise identical to ~t.
X.TP
X~E[!]
XErase message buffer.
XSave the contents of the letter to \*Qdead.letter\*U
X(unless the `!' is specified) and then clear the message buffer; the user
Xremains in editing mode.
XIf the variable
X.B nosave
Xis set, then `!' need not be specified.
X.TP
X~e [editor]
XEnter the editor.
XDefaults to variable
X.BR editor ,
Xenvironment EDITOR, or
X.IR vi .
X.TP
X~F[!]
XAdd a fortune [don't add] at end of message.
X.TP
X~f [msg-list]
XForward mail.
XThe included messages are not indented,
Xbut are marked as \*Qforwarded mail\*U.
X.TP
X~H [msg-list]
XSame as ~i, but also include the message headers.
X.TP
X~h
XModify all message headers.
XEach header is displayed one by one and each may be edited.
X.TP
X~i [msg-list]
XInclude current message body (or numbered messages).
XSee the descriptions of the variables
X.BR indent_str ,
X.BR pre_indent_str ,
Xand
X.BR post_indent_str .
X.TP
X~p [pager]
XPage the message body.
XDefaults to variable
X.BR pager ,
Xenvironment PAGER, or the default pager set up by the system administrator.
XThis may be the internal pager.
X.TP
X~q
XQuit message; save in ~/dead.letter if
X.B nosave
Xis not set.
X.TP
X~r file
XRead filename into message buffer.
X.TP
X~S[!]
XInclude [don't include] signature at end of message.
XThe variables
X.B autosign
Xand
X.B autosign2
Xdescribe the file or string to append to the message.
XSee the VARIABLES section for more information on these variables.
X.TP
X~s [subject]
XModify the subject header.
XIf an argument is given (a new subject), then the subject line is
X.I replaced
Xby the new subject line.
XIf none is given, then the subject line is
Xdisplayed for editing just as in the ~t command.
X.TP
X~t [list]
XChange list of recipients (\*QTo\*U list).
XIf a list is given, this list is
X.B appended
Xto the current list.
XIf no list is given, then the current list
Xis displayed and the cursor placed at the end of the list.
XYou can backspace over the stuff in the list or you can append more
Xaddresses onto the end of the list as desired.
X.TP
X~u
XUp one line.
XIf the user made a mistake typing a letter and he
Xhas already hit carriage return, he may avoid entering the editor
Xand edit the previous line using ~u.
XThe line is retyped and
Xthe cursor is placed at the end allowing the user to backspace
Xover it and retype the line.
XSystem-V users should note that if
Xthe new line is shorter than it was before the ~u command, the
Xline is padded with blanks to the previous length of the file.
X.TP
X~v [editor]
XEnter the visual editor.
XDefaults to variable
X.BR visual ,
Xenvironment VISUAL, or
X.IR vi .
X.TP
X~w file
XWrite message buffer to file name.
X.TP
X~x
XExit message; don't save in dead.letter.
X.TP
X~$variable
XInsert the string value for variable into message.
XIf a boolean variable is listed, nothing is appended regardless of its value.
X.TP
X~:command
XRun the
X.I Mush
Xcommand specified by \*Qcommand\*U.
XYou may not run any command that sends mail.
XIt is inadvisable to change folders at this time
Xsince the current message list may be corrupted, but the action is
Xallowed nonetheless to provide flexibility for experienced users.
X.TP
X~~
XA line beginning with two escape characters will be unaffected by
X.I Mush
Xexcept that only a single tilde will be inserted into the letter.
X.PP
XThe variable
X.B escape
Xmay be set to describe a character other than `~' to be used as the
Xescape character.
XWhen sending mail, the above tilde escapes are available in
Xall three user interfaces.
X.SH "LINE-MODE INTERFACE"
XIn the line-mode, the user is given a prompt to which commands are issued
Xand arguments are passed to commands.
XWhen the user types at the prompt, each line is parsed and words (or
Xarguments) are separated into an array of strings.
XThis array, also called an
X.IR "argument vector" ,
Xis then modified by expanding history references, command line aliases,
Xand variable references.
XA command line ends when the end of the line is encountered or a pipe (|)
Xor semicolon (;) character is encountered, separating discrete commands.
X.PP
XWhen a command line has been parsed and placed in an argument vector, the
Xfirst argument in the vector (the \*Qcommand\*U) is searched for in a list
Xof legal
X.I Mush
Xcommands.
XIf found, the function associated with that command is called and
Xthe rest of the line is passed to that function as
X.IR "command line arguments" .
X.PP
XBefore commands are called, however, the input the user gives is preprocessed
Xin a style reminiscent of the C-shell
X.RI ( csh ).
X.I Mush
Xalso supports a subset from each of the following aspects of
X.IR csh :
X.in +2
X\(bu Command history.
X.br
X\(bu Command line aliasing.
X.br
X\(bu \*QPiping\*U mechanism to
Xredirect \*Qinput\*U and \*Qoutput\*U of commands.
X.in -2
X.PP
X.BR "Command history" .
X.PP
XThe history mechanism remembers commands up to the value of the
X.B history
Xvariable.
XIf this variable is not set, only the most recent command is remembered.
XTo reference previously typed commands, the `!' character
Xis used in the same manner as in
X.IR csh .
XThere is a limited implementation of history modification;
Xsupported are the argument selectors that reference
Xcommand line arguments and \*Q:p\*U (echo, but don't execute the command).
X.sp
XExamples:
X.nf
X.in +2
X.ta 1i
X!-2:$	two commands ago, last argument.
X!3:2-4	the third command, arguments two through four.
X!!:p	print the last command in its entirety.
X.in -2
X.fi
X.PP
XDuring the sourcing of initialization files (.mushrc), history is not
Xin effect and therefore the `!' character does not cause history expansion.
XThis includes startup of the program and when the command
X.I source
Xis issued.
XUUCP style addresses that contain the `!' character may be given in the
Xinitialization file without the need to be preceded by a backslash.
XHowever, `!' does need to be escaped if
X.BR cmd 's
Xare used to reference command line arguments.
X.PP
X.BR "Command line aliasing" .
X.PP
XThis feature enables command substitution similar to
X.IR csh .
XTo be backwards compatible with UCB Mail, the
X.B alias
Xcommand is used for address aliasing.
XThus, the command
X.B cmd
Xis introduced in place of
X.BR alias .
X.PP
XExamples:
X.nf
X.in +2
Xcmd d delete
Xcmd t type
Xcmd dt 'd ; t'
Xcmd - previous
Xcmd r 'reply \\!* -e -i'
X.in -2
X.fi
X.sp
XIn the last example, if the user types \*Qr 5\*U,
X.I Mush
Xwill reply to sender of the fifth message and pass all the other
Xarguments along to the
X.B reply
Xcommand.
XNote the escaping of the `!' character.
XThis must also be done if set in the initialization file (.mushrc).
XHad the user not specified a message number on the `r' command line,
X.B reply
Xwould respond to the \*Qcurrent message\*U rather than the fifth message.
X.PP
X.BR "Piping commands" .
X.PP
X\*QOutput\*U from a command is a
X.BR "message list" ,
Xnot the
X.I text
Xin a message.
XA
X.B "message list"
Xis defined as the set of messages that the user specifies in a command or
Xthe messages a command affects after it is through executing.
XWhen one command is piped to another, the effect is that the second command
Xwill consider only those messages affected by first command.
XIn most cases,
X.I Mush
Xis smart enough to know when piping is occurring and may suppress text output
Xthat a command might produce.
X.PP
XExamples:
X.sp
X.ti +2
Xpick -f fred | save fred_mail
X.sp
XThis will find all the messages from \*Qfred\*U
Xand save them all in the file named fred_mail.
X.sp
X.ti +2
Xlpr 4-8 | delete
X.sp
XThis will send messages 4, 5, 6, 7, and 8 to the printer and then delete them.
X.sp
X.ti +2
Xheaders :o | delete
X.sp
XDeletes all old (already read) mail.
X.PP
XBecause action is taken on mail messages, not files,
Xmetacharacters such as `*' and `?' are not expanded to file names as
X.I csh
Xwould do.
XInstead,
X.I Mush
Xcommands take
X.I "message lists"
Xas arguments (a list references one or messages) to take action upon.
XWhen referencing message numbers,
X.I Mush
Xunderstands the following special syntax:
X.sp
X.in +2
X.nf
X.ta 1.0i
X*	All messages
X^	The first message
X$	The last message
X\&.	The current message
XN\-M	A range of messages between N and M, inclusive
X.sp
X.fi
X.in -2
XIn the last case, N and M may be * ^ $ . or digits referencing
Xexplicit message numbers.
XThe range must be in ascending order.
X.sp
XYou can also negate messages by placing the message list inside
Xbraces, `{' `}' \*- thus, the expression \*Q2-19 {11-14}\*U references
Xmessages 2 through 19 except for messages 11 through 14.
X.sp
XNote that message lists are parsed left to right.
XNegated messages may be reset by turning them on
Xagain later in the argument list.
XA common error new users make is to specify a negated list without
Xspecifying any beginning messages.
X.sp
X.ti +2
Xdelete { 6 }
X.sp
XIn this example, the user attempted to delete all messages
Xexcept for number 6.
XHe should have specified `*' beforehand.
XA correct example:
X.sp
X.ti +2
Xpreserve ^-. { 3 }
X.sp
XHere, the user specifies a valid message list and causes
X.I Mush
Xto preserve all messages from the beginning of the list (message 1)
Xto the current message, excluding message 3.
X.PP
XAs discussed, after the command line is parsed, the command given is
Xcalled and the rest of the arguments on the command line are passed to it.
XIf no
X.I Mush
Xcommand has been found that matches the one given, then the variable
X.B unix
Xis checked.
XIf it is set,
X.I Mush
Xattempts to run the command line as a
X.IR UNIX (TM)
Xcommand.
X.PP
XIf
X.B unix
Xis not set, or if the command could not be found in the user's PATH
Xenvironment, a message will be printed indicating that the command was
Xnot found.
X.PP
XSince no \*Qmessages\*U are affected by \fIUNIX\fR
Xcommands, those that appear within \fIMush\fR
Xpipelines are executed by the \fBpipe\fR command.  A \fIUNIX\fR
Xcommand may never be the first command in a pipeline unless the \fBpipe\fR
Xcommand is used explicitly.
XIf the user wishes to execute \fIUNIX\fR
Xcommands that are to be piped to one another (or use any sort of redirection),
Xthe command \fBsh\fR is provided for such purposes.
XSince \fIMush\fR will parse the entire command line, caution should be
Xtaken to enclose questionable shell variables or metacharacters with
Xquotes to prevent \fIMush\fR from expanding them.
XSee the COMMANDS heading below for more detail.
X.PP
XThis shell-like quality is for the convenience of the user and is not
Xintended to replace the functionality of
X.IR sh ,
X.IR csh ,
Xor any other command interpreter.
X.SH "CURSES INTERFACE"
XThe curses interface utilizes the curses routines intrinsic to most
X.I UNIX
Xsystems.
XThis interface is screen oriented rather
Xthan line oriented and allows the user to access commands and messages
Xmore quickly at the cost of history, piping, and a few commands.
X.PP
XMany users who prefer the curses interface might want to always start
Xall their mail sessions in the curses interface.
XPutting the curses
Xcommand in your initialization file is a no-no, so you can alias your
Xlogin shell mail command to include the -C option.
XIf you use the Bourne Shell, you're going to have to type it out all the time.
XMush will to attempt to know not to run a shell if you're just sending mail to
Xsomeone, so the
X.I csh
Xcommand line sequences:
X.sp
X.ti +2
X% alias mail 'mush -C'
X.ti +2
X% mail fred
X.sp
Xwill mail to fred and not enter the shell.
XHowever, if you just said, "mail"
Xwith no arguments, you'll enter the shell in curses mode if you have mail.
XIf you don't, you'll be told so, and the shell will not start.
XIf you want to enter curses mode even if
Xyou don't have mail, use the \-S option on the command line.
X.PP
XIn curses mode, the user's terminal has its \*Qecho\*U turned off so commands
Xthat are issued are not echoed on the screen.
XCertain commands cause the mode
Xto return to normal for typing purposes (sending mail, for example).
XIn normal operation, the screen will display the current set of message
Xheaders, the current message number is in the top left corner, the
Xmail status on the top line, and the cursor will be placed on the current
Xmessage.
XThe number of message headers displayed is set by the variable
X.BR screen .
XIf the user does not have that variable set, the baud rate is checked and
Xthe size of the screen is set according to optimal refresh time.
XUsually, 300 baud gives 7 lines, 1200 gives 14, 2400 gives 22 lines, and all
Xhigher baud rates give the size of the screen, whatever that may be.
XNote that the top line is reserved for \*Qstatus\*U and the bottom line is
Xfor user interaction should it be required.
X.PP
XThe user may now type commands via key sequences that are not echoed
Xto the screen.
XThus, function keys may be bound to \*Qcommands\*U by using the 
X.B bind
Xcommand.
XA list of key-to-command bindings can be found at runtime by typing `?'
Xin curses mode or by using the
X.B bind
Xcommand in line mode.
X.PP
XThe commands to which you can map sequences are intended to be as self
Xexplanatory as possible, but admittedly, it's easier to figure out via
Xtrial and error than to try to wade through this documentation.
XA list of the legal curses commands can be obtained when executing the
Xbind command.
XRegular tty line-mode commands are not issued from
Xthe curses interface; only special curses mode commands are understood.
XThe current list of valid curses commands is:
X.sp
X.ta 1.5i 3i 4.5i
X.in +4
X.nf
Xalias	back-msg	bind	bind-macro
Xbottom-page	chdir	copy	copy-list
Xdelete	delete-list	display	display-next
Xexit	exit!	first-msg	folder
Xgoto-msg	ignore	last-msg	line-mode
Xlpr	mail	mail-flags	map
Xmap!	my-hdrs	next-msg	preserve
Xquit	quit!	redraw	reply
Xreply-all	reverse-video	save	save-list
Xsaveopts	screen-back	screen-next	search-again
Xsearch-back	search-next	shell-escape	sort
Xsort-reverse	source	top	top-page
Xunbind	undelete	undelete-list	update
Xvariable	version	write	write-list
Xhelp
X.fi
X.in -4
X.sp
X.PP
XThe following is a list of default key-command bindings.
XIf you specify bind commands in your initialization file that conflict with
Xthese defaults, your settings will override the defaults.
XThe default settings given here
Xuse the ^-character method to indicate control characters.
XThus, `^X' would mean control-X even
Xthough you'd have to type \*Q\\CX\*U to set
Xthe binding and actually use the control key and the `X' key simultaneously
Xto really
X.I do
Xa Control-X.
XThis is mostly because nroff makes printing the backslash
Xcharacter so amazingly difficult.
X.TP
X\&., t, p, T=top, n=next
XDisplay (type/print) message.
XTop will display the first
X.B crt
Xlines of a message.
XNext will print the next message.
XIf the current message is deleted, the next undeleted message is found.
XYou might notice this is different from the line mode, which will return
Xan error message that the current message is marked as deleted.
X.TP
X+, j, J, RETURN
XGo to next message.
X.TP
X-, k, K, ^K
XGo to previous message.
X.TP
X^, $
XGo to first/last message.
X.TP
X{, }
XGo to top/bottom of screen.
X.TP
Xa
XSet aliases.
X.TP
Xb, B
XSet/unset bindings.
X.TP
Xd, D, u, U
XDelete/undelete messages (capitals prompt for message list).
X.TP
Xf
XChange folder.
XIf current folder has changed, verification for update will be requested.
X.TP
Xg, 0-9
XGo directly to a specified message.
XWhen the \*Qgoto\*U command
Xis selected, a prompt at the bottom of the window prompts for a
X.BR "message list" .
XAnything that describes a message list may be used.
XSince
X.I Mush
Xcommands return message lists, a legal
X.I Mush
Xcommand enclosed in backquotes may be used to go to a particular message.
XThe new current message pointer will point to the next
Xmessage, returned by the command, that is below the old current message.
XAn example:
X.sp
X.ti +2
Xgoto msg: `pick \-f argv`
X.sp
XThis will cause the current message to move to the first message
Xin the current folder from the user \*Qargv\*U that comes after the
Xmessage pointed to when the \*Qgoto\*U was issued.
XSo, if messages 1 and 5
Xare from the user \*Qargv\*U and the current message the user was on
Xwas message 3, then the new current message would be message 5, since it
Xis the first message found after message 3 that is from \*Qargv\*U.
XIf none of the messages are found after the current message, the new
Xcurrent message will be the first one returned by the command.
X.TP
Xh
XSet personal headers.
X.TP
Xi
XSet ignored headers.
X.TP
Xm, M
XSend mail (capital prompts for mail flags).
X.TP
Xo, O
XOrder messages (sort; capital reverses order).
XA prompt requests the sort constraints.
X.TP
Xq, Q, x, X
XQuit/exit.
X\&`q' will test to see if the current folder has been updated and prompt
Xthe user to verify updating.
X\&`x' does not update mail, but quits the program.
X\&`Q' does not prompt for update verification; if changes were
Xmade, updating is automatic.
X\&`Q' (quit!) and `X' (exit!) will work even when typed at the
X\*Q...continue...\*U prompt, whereas `q' and `x' will not.
X.TP
Xr, R
XReply/reply all.
X.TP
Xs, S, c, C, w, W
XSave, copy, or write messages (capitals prompt for message lists).
X.TP
Xv
XSet regular variables (as opposed to environment variables).
X.TP
XV
XPrint version number.
X.TP
Xz, Z
XPrint next/previous screenful of message headers.
X.TP
X^L
XRedraw the screen.
X.TP
X^P
XPreserve current message (toggle).
X.TP
X^U
XUpdate folder.
XA prompt will request confirmation.
X.TP
X^R
XToggle reverse video mode (current message is in reverse video).
X.TP
X|
XSend message to printer
X.TP
X!
XShell Escape.
XPrompts for command; RETURN invokes a shell.
X.TP
X%
Xchange directory.
X.TP
X(, )
XSource/saveopts.
XPrompts for file name.
X.TP
X/, ^/, ^N
XForward, backward, continue search for patterns.
XEntire messages are not searched for here.
XOnly the text available on the screen is searched for.
XNote that some terminals use `^_' (control-underscore) for `^/',
Xso you may wish to re-bind this key.
X.TP
X&&
XCreate a curses mode macro.
X.TP
X&:
XCreate a line mode macro.
X.TP
X&!
XCreate a composition mode macro.
X.TP
X:[cmd]
XEnter line mode for one command.
XHistory is not recorded for this escape,
Xand line mode macros are not available.
XIf no command is given, curses mode
Xis exited and the session continues in line mode
X(in which case history and macros become available).
X.PP
XWhen setting new key sequences to be bound to commands, the user may
Xuse control keys and the ESCAPE character for extended commands.
XExceptions are control-C, control-\\, and possibly other control characters
Xdepending on your system's configuration or your current tty mode settings.
X.PP
XWhen assigning key sequences to commands, the user enters the
X.B bind
Xcommand and prompting is done.
XIf the
Xuser wishes to have control characters or the escape character in a key
Xsequence while still using ASCII format, a special notation for control
Xcharacters is provided.
XThis sequence is used primarily for the use of
Xbinding control character sequences in the initialization file.
XThis format
Xis also used to display the current key-command mappings by the program.
X.PP
XTo specify control characters in ascii format for the bind command, the
Xsequence \*Q\\Cc\*U is used where `c' is the
Xcharacter that the control key will translate to and must be in upper case.
XThe sequence \*Q\\CP\*U would map to control-P.
XIf the user wishes to indicate the RETURN key, this is specified
Xwith the string \*Q\\n\*U and
Xthe tab key is specified by the string \*Q\\t\*U.
XAs a more complex example, on a Wyse-50 terminal, the 8th function key
Xoutputs the three characters: control-A, H, line-feed.
XTo map this function key to a command, the
Xuser would have to enter the sequence \*Q\\CAH\\n\*U as the key sequence,
Xthen follow up with a valid curses command.  From then on, if the user
Xpresses that function key,
Xthe command mapped to it will be executed.
X.PP
XThe ESCAPE key is signified by the sequence, \*Q\\E\*U.
XOn a Sun-3 workstation,
Xthe R1 key outputs the character sequence: ESC, [, 2, 0, 8, z.
XThe corresponding
X.B bind
Xkey sequence would be \*Q\\E[208z\*U.
XRestrictions are that key sequences may not contain the space character
Xunless bound in line mode, and can never begin with a digit.
X.PP
XWhenever a command is entered, other than `^L'
X.RB ( redraw ),
Xwhich causes the screen to scroll or be refreshed in any way,
X.I Mush
Xis left in the
X.I continue
Xmode.
XWhen in this mode, the user is given his line-mode prompt followed
Xby \*Q...continue...\*U indicating that he may issue a new command or
Xreturn to the top level where the current message headers are displayed
Xon the screen.
XRemember that this is still the curses mode, but much time
Xis saved by avoiding redrawing the screen after each command.
XThe user may move up and down messages using the appropriate commands
X(j/k by default) or anything else the curses mode allows.
XOnly the exit and quit commands will return to the top level.
XBecause of this, there are 2 additional
Xways to \*Qquit\*U from curses mode and return to the login shell.
XThe \*Qexit\*U and \*Qquit\*U commands will quit from the top level, but
Xthe commands
X.B exit!
Xand 
X.B quit!
Xare used to exit from the \*Qcontinue\*U level in the curses interface as well
Xas from the top level.
X.PP
XNote that the best way to understand the curses interface is to just use it.
XIn line mode, the command \*Qcurses\*U puts you into curses mode.
X.SH "GRAPHICS INTERFACE"
XWhen running the window-based graphics interface, there will be 5
Xwindows displaying panels of commands, message headers and a text
Xwindow which is used for displaying messages or writing messages
Xto send to other users.
X.PP
XThe panel items have labels describing their functionality.
XSelecting
Xa panel item with the LEFT mouse button causes the action to be executed.
XThe RIGHT mouse button displays a menu of options that the command may
Xbranch to.
XFor example, the
X.B save
Xpanel item by default will save messages to the file \*Qmbox\*U, but the
XRIGHT mouse button causes a menu to be displayed, and the choices of
Xwhere to save the message increase to include the items in the menu.
XThese typically include the files in the user's folder directory (see the
X.B folder
Xvariable below).
X.PP
XAt the end of each list of menu entries for panel items is an item
Xlabelled \*Qhelp\*U.
XWhen this item is chosen, help for that command
Xis displayed in the center of the console.
X.PP
XWhen composing letters, the interface is the same for the tool mode,
Xthe line mode and the curses mode.
XTilde escapes are recognized by all
Xthe interfaces, but the tool interface allows the user to use the menu
Xmouse button to select the tilde escape desired.
X.PP
XIf the user wishes to review a mail message while in edit-mode, he may
Xdo as the other interfaces and enter the tilde escape command \*Q~:print\*U.
XThis will cause the current message (or the numbered message, if given) to
Xbe displayed in the window.
XEditing is temporarily put on hold till the user
Xenters a `q' in the message window to indicate that he is done reading the
Xmessage and input is to be directed again to the letter being composed.
X.SH COMMANDS
XDescribed below are legal commands understood by
X.I Mush
Xthat you can type at the line mode prompt.
XMost commands have abbreviations
X(given in parentheses) and can be followed by message lists.
XIn most cases,
Xwhitespace is not necessary to separate commands from message lists.
XFor example, \*Qd*\*U will delete all messages, and \*Qu1-7 {4}\*U will
Xundelete messages 1 through 7 except for message number 4.
X.PP
XThe ability to customize commands using the
X.B cmd
Xfacility allows users to customize
X.I Mush
Xto resemble other mailers.
XHowever, efforts have already been made to include commands that are backwards
Xcompatible with other line-mode mailers.
XUsers of the graphics tool mode of
X.I Mush
Xmay have little need for the command line mode because the icon based
Xinterface allows interaction with many commands.
XThe graphics mode is much more restrictive in favor of user
Xfriendliness but most useful commands may be achieved anyway.
X.PP
XThe following is a list of all recognized commands.
XSince most commands accept a
X.I "message list"
Xas an argument, arguments are noted only when they differ from a message list.
X.TP
X.BR alias " [name] [address-list]"
X.ns
X.TP
X.BR unalias " name"
XThe
X.B alias
Xcommand defines a name to stand for a list of addresses.
XThe defined name can then be substituted for the entire list when
Xsending mail.
XFor example,
END_OF_FILE
if test 49833 -ne `wc -c <'mush.1.1'`; then
    echo shar: \"'mush.1.1'\" unpacked with wrong size!
fi
# end of 'mush.1.1'
fi
echo shar: End of archive 19 \(of 19\).
cp /dev/null ark19isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 19 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.



More information about the Comp.sources.unix mailing list