rsalz@bbn.com (Rich Salz) (03/18/89)
Submitted-by: Dan Heller <island!argv@sun.com> Posting-number: Volume 18, Issue 40 Archive-name: mush6.4/part18 #! /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 18 (of 19)." # Contents: mush.1.2 # Wrapped by rsalz@papaya.bbn.com on Mon Mar 13 19:25:24 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'mush.1.2' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'mush.1.2'\" else echo shar: Extracting \"'mush.1.2'\" \(49816 characters\) sed "s/^X//" >'mush.1.2' <<'END_OF_FILE' X.sp X.nf X.ti +2 Xalias dan dheller@cory.berkeley.edu island!argv@sun.com X.fi X.sp XThis defines the name \*Qdan\*U to be shorthand for two addresses, Xboth of which happen to be Dan Heller. X.sp XThe command X.B unalias Xcan be used to remove an alias definition. X.sp XWith no arguments, X.B alias Xprints out all the current aliases. XWith one argument, it prints the list associated with that name, Xand with more than one argument, it creates a new alias. X.TP X.BR alternates " [host-list] [!path!login] [*]" X.RB ( alts ) XThis command Xis useful if you have accounts on several machines. XIt can be used to inform X.I Mush Xthat your login name at each of the listed hosts is really you. XWhen you X.B reply Xto messages, X.I Mush Xwill not send a copy of the message to your login name at any of the Xhosts listed on the X.B alternates Xlist. If the special symbox \*Q*\*U is used, then your login name is Xmatched against all pathnames and local addresses. X.sp XIf you have another login name on the local or remote machine, then Xthat login may be specified by preceding the login name or the path Xto the login name by a `!' character. X.sp XFor example, X.sp X.nf X.ti +2 Xalts island maui molokai ceylon !cory.berkeley.edu!dheller !root X.fi X.sp Xare all either hostnames or pathnames to my other accounts. XThe last item, \*Q!root\*U will match root that is only destined for my Xworkstation. XRoot accounts elsewhere are not considered to be me. X.sp XIf the X.B alternates Xcommand is given with no arguments, the current set of alternate Xnames is displayed. X.TP X.BR bind " [string [command [parameters]]]" X.ns X.TP X.BR unbind " string" X.rs XBind the sequence of keystrokes specified by X.I string Xto the curses-mode function, X.IR command . XThe X.I string Xis usually one or two characters, or a sequence sent by Xone of the \*Qfunction keys\*U of a particular terminal. XSee the CURSES INTERFACE section for a complete list of curses-mode Xfunctions; this interface is not available on all systems. XThe X.I parameters Xare currently recognized only for the special X.B macro Xfunction; see the X.B bind-macro Xcommand for details. X.sp XIf no arguments are given to X.BR bind , Xthe current set of curses bindings are listed; Xif only a X.I string Xargument is given, the binding for that string is listed; Xand if both a X.I string Xand a X.I command Xare given, a curses binding is created such that when the X.I string Xis typed in curses mode, the function specified by X.I command Xwill be executed. X.sp XBindings can be removed by using the X.B unbind Xcommand. X.TP X.BR bind-macro " [string [expansion]]" XThis command is an abbreviation, which invokes the X.B bind Xcommand with the special function X.B macro Xas the second argument. XThe effect of binding a curses macro is that whenever the X.I string Xis typed in curses mode, the effect is the same as if the X.I expansion Xhad been typed instead. XA special sytax is provided for including non-printing (control) Xcharacters in both the X.I string Xand the X.IR expansion ; Xsee the CURSES INTERFACE section and the MACROS section for details. X.sp XIf no arguments are given, X.B bind-macro Xwill list the current curses mode macros. XIt is otherwise identical to X.in +4 X.B bind X.I string X.B macro X.IR expansion . X.in -4 X.TP X.B cd XChange the working directory to that specified, if given. XIf no directory is given, then changes to the user's home directory. X.TP X.BR cmd " [name [command]]" X.ns X.TP X.BR uncmd " name" X.rs XCommand line aliases are set and unset using these commands. XMore extensive information is given in the LINE-MODE INTERFACE section. X.B Uncmd Xmay take `*' as an argument to uncmd everything set. X.TP X.BR debug " [N]" XSet debugging level to N (1 by default). XWhen in debug mode, the user can see some of the flow of Xcontrol the program makes while executing. XThe intent of the debug level is for tracking down Xbugs with the program at specific locations. XOccasionally, the program may segmentation fault and core dump. XWhen this happens, the user can reenter the program, Xset the debugging level and recreate the problem. X.sp XIf the user suspects memory allocation problems, a debugging Xlevel of 2 or higher will prevent memory from being freed so that Xmemory bounds won't get overwritten. X.sp XIf the user suspects sendmail errors, Xa debugging level of 3 or higher will prevent sendmail from starting Xand outgoing mail is directed to the standard output instead of actually Xbeing sent. X.TP X.BR delete / undelete X.RB ( d / u ) XTakes a message list as argument and marks them all as deleted. XDeleted messages will not be saved in X.IR mbox , Xnor will they be available for most other commands. XIf the folder has not been updated, deleted messages can be recovered Xwith X.BR undelete . X.TP X.B dt XDeletes the current message and prints the next message. X.TP X.BR echo " [-n] [-h | -p] arguments" XEchoes all the arguments given on the command line, expanding variables Xand history references. If the -n flag is given, then no newline is appended. XIf the -h flag is given, then echo looks for formatting parameters Xas if the "from" command were given on the "current" message. XIf the -p flag is given, then echo looks for formatting parameters Xas if your prompt were changed temporarily. X.sp XExamples: X.sp X.nf X.ti +2 Xecho -h This message is from %a and is dated %d. X.br Xmight produce: X.ti +2 XThis message is from island!argv and is dated Dec 14, 1988. X.sp X.ti +2 Xecho -p There are %n new messages to read in %f. X.br Xmight produce: X.ti +2 XThere are 5 new messages to read in /usr/spool/mail/argv. X.fi X.sp XNote that -h and -p cannot be specified together. X.TP X.B edit X.RB ( e , X.BR v ) XThis function lets you edit messages in your folder. When editing messages, Xbe careful not to remove certain message headers such as Date or From or Xany others that looks important. If you remove or change something you Xshouldn't have, you will be notified and the temporary file used to edit Xthe message will not be removed. X.TP X.BR eval " arg ..." XAs in most shells, the list of arguments to X.B eval Xis re-parsed and then executed as a command. XThis is useful primarily for causing multiple levels of variable expansion. X.TP X.B exit X.RB ( x ) XReturns immediately to the login shell without Xmodifying the current folder or system spool directory. X.TP X.BR expand " alias-list" XAliases, given as arguments, are expanded as they would be if you Xwere to send mail to each. X.TP X.BR fkey " [string [command]]" X.ns X.TP X.BR unfkey " string" X.rs XWith no arguments, X.B fkey Xprints the values of the function keys. XThe function keys are used in the graphics tool mode only. XYou can set the values of function keys explicitly using the X.B fkey Xcommand, but the whole process is automated by using the function key Xinterface provided by the graphics mode. XBy default, the last key in each function key pad displays Xthe values of all the function keys in that set. XThere are the left, right and top set of keys. X.sp XFunction keys may be unset with the X.B unfkey Xcommand, or by using the function key interface. X.TP X.BR flags " [msg-list] [ [ + | \- ] [ D N O P R r S U ] ]" XThis command modifies the flag bits set on the listed messages. XIt should not normally be needed, but is provided to allow users, through Xthe X.B cmd Xfacility, to alter the ways that certain conditions are recorded. XMultiple flag bits may be set or modified at once. XThe modifiable flag bits are: X.sp X.nf X.ta 2i X.in +4 XD deleted XN new XO old XP preserved XR read Xr replied-to XS saved XU unread X.in -4 X.fi X.sp XIf a `+' or `\-' precedes the list of bits, the specified bits are turned Xon or off respectively, without modifying other bits. XIf no `+' or `\-' is given, then the list of bits is set explicitly and Xall other bits are lost. X.sp XMessage lists can be piped to the X.B flags Xcommand; for example, you may use X.sp X.nf X.ti +4 Xcmd r 'reply \\!* | flags + r' X.fi X.sp Xto mark as X.I replied-to Xall messages included in a reply, X.TP X.BR folder " [\-N] [\-r] [!] [ %[user] | # | & | file ]" X.RB ( fo ) XChange current folder. XWith no arguments, prints the name of the current folder. XThe arguments are: X.nf X.ta 1i X.in +2 X\-N No headers are displayed upon entering new folder X\-r Set Read-Only mode (can't alter new folder) X! If specified, the current folder is not updated X%[user] Change to /usr/spool/mail/[user] (default is yours) X# Switch back to the previous folder X& Change folder to $mbox (default is ~/mbox) X.in -2 X.fi X.sp XThis command can only appear in a pipeline if it is the first command; Xit returns a list of all the messages in the new folder. X.TP X.B folders XList the names of the folders in your folder directory. XYour folder directory is the directory X.I Mail Xin your home directory. XOr, you can set the variable X.B folder Xto specify another folder directory. X.br X.TP X.BR from " [ + | \- ]" X.RB ( f ) XWith no arguments, X.I from Xwill print the current message's header. XIf given a message list, X.I from Xwill print the headers of those messages that are in the list. X.sp XThe special arguments `\-' and `+' can be given to move the Xcurrent message pointer to the previous or next message, Xrespectively, while also printing that message's header. XIf a message list was given in addition to `\-' or `+', then Xthe current message pointer will be set to the first or last Xmessage, respectively, in the message list given. XExamples: X.sp X.ti +2 Xpick \-f Dan | from + X.sp Xwill print the headers of all messages that contain \*QDan\*U in Xin the author's name and set the current message pointer to Xthe last one of that kind in the list. X.sp X.ti +2 Xfrom \- 10-30 {16} X.sp Xwill print the headers of messages 10 through 30 except for Xmessage 16 and set the current message pointer to 10. X.sp X.ti +2 Xfrom + X.sp Xwill print the header of the message after the current message Xand increment the current message pointer to the next message. X.sp X.ti +2 Xfrom $ X.sp Xwill print the last message's header and not move the current Xmessage pointer. X.TP X.BR headers " [ [\-H][:c] ] [ + | \- ]" X.RB ( h , X.BR z ) XPrints a screenful of message headers listed in the Xcurrent folder. XIf a message number is given on the command line, Xthe first message of the screenful of messages will be Xthat message number. XThe `z' command is identical to the \*Qh +\*U Xcommand and remains for compatibility reasons. XThe variable X.B screen Xmay be set to tell how many headers are in a screenful. XIn the graphics tool mode, the variable X.B screen_win Xcontains the number of headers used in the headers subwindow. X.sp XA typical header may look like: X.sp X.ti +2 X5 >N argv@spam.istc.sri.com Feb 19, (10/278) Test X.sp XThis line indicates that it is message number 5 and the X.I > Xindicates that the \*Qcurrent message pointer\*U is pointing to this Xmessage. XThe next two positions indicate the message status. XThe first Xmay be one of, \*QN\*U (new and unread), \*QU\*U (old, but still Xunread), \*Q*\*U (deleted), \*QS\*U (saved), \*QP\*U (preserved), Xor \*Q \*U (read). XThe second position may have an \*Qr\*U if the message Xhas been replied to. X.sp XThe author of the example message header is X.IR argv@spam.istc.sri.com , Xthe date is X.IR "Feb 19" , Xthe number of lines in the message is X.IR 10 , Xthe number of characters is X.I 278 Xand the subject of the message is X.IR Test . XThe format of the message header shown here is described by Xthe string variable X.BR hdr_format . XThe example given above has a hdr_format of X.sp X.ti +2 Xset hdr_format = "%25f %7d (%l/%c) %25s" X.sp XSee the description of X.B hdr_format Xin the VARIABLES section for more information on header formats. X.sp XYou can print a special subset of message headers by using the X.I \-H:c Xoption, where `c' is one of: X.nf X.in +2 X.ta 1i X.if t .ta 1.5i Xa all messages Xd deleted messages Xn new messages Xo old messages Xr replied to messages Xs saved messages Xu unread messages X.fi X.in -2 XNote that the \-H is not required; \*Qheaders :c\*U is valid. X.sp XMore options to the X.B headers Xcommand include X.RI ` + ' Xand X.RI ` \- '. XEach will print the next or previous screenful of message headers. XThe X.B z Xcommand can also be used; `z' alone will print the next Xscreenful (thus, the `+' is optional) Xand \*Qz \-\*U is equivalent to \*Qh \-\*U. X.sp XHeaders affects all the messages it displays, so piping may be done Xfrom the headers command. XPiping to the headers command causes the Xmessage headers affected by the previous command to be printed. XThis action is identical to piping to the X.B from Xcommand. X.TP X.BR help " [topic]" XHelp is provided on a per topic basis and on a general basis. XFor general help, just typing X.I help Xwill provide some general information as to how to get further help Xand a list of topics suggested for more specific help. XThere is also help provided for each command by using the \-? Xoption to most commands. XThis option will provide command line usage information as well as a Xdescription of what the command does and how to use it. X.TP X.BR history " [\-h] [\-r] [N]" XThis command displays the command history in chronological order; early Xcommands are printed first followed by more recent commands displayed last. XOption X.I \-h Xsuppresses printing of history event numbers with each history command. XOption X.I \-r Xreverses the order of the history events displayed. X.sp XIf a number X.I N Xis given, then that number of previous commands is Xechoed rather than the number set by the variable X.BR history . X.TP X.BR ignore / unignore " [header-list]" XDisplay or set a list of headers to be ignored when displaying messages. XWhen reading messages, all the message headers are displayed with the text Xbody of the message. XSince these message identifier fields are cumbersome and uninteresting Xin many cases, you can filter out unwanted headers by using this command. XFor example, X.sp X.ti +2 Xignore Received Date Message-Id X.sp Xwill ignore the three specified fields. XThe command X.B unignore Xis used to reverse the effects of X.BR ignore . X.TP X.BR lpr " [\-Pname] [msg_list]" XTakes a message list and sends those messages, one by one, to the printer, Xeach separated by page feeds. XA default printer name is supplied if one is not specified on the Xcommand line (-Pprinter-name). XIf you have the variable X.B printer Xset, that printer name will be used. X.sp XIf the variable X.B print_cmd Xis set, the command described by that variable will be used instead Xof the default system command. XIn such cases, the -P option and the X.B printer Xvariable are ignored and the command is simply executed as is. X.TP X.BR ls " [flags]" XThis command duplicates the X.IR UNIX (TM) Xcommand X.I /bin/ls. XThe variable X.B lister Xdescribes flags to be passed to ls automatically. XBy default, X.I ls Xalways uses the -C flag (column output). X.TP X.BR mail " [flags] [recipient ...]" X.RB ( m ) XSend mail to a list of users. XIf no recipient list is specified on the X.I Mush Xcommand line, then a \*QTo: \*U prompt will request one. XA list of recipients must be supplied. XThis implementation of X.I Mush Xsupports mailing to files and programs as recipients, but at least one Xlegitimate user must be specified. XFilenames must be full pathnames, thus, they must start with a `/' or there Xis no way to know whether a recipient is a pathname or a real user. XThe special characters `+' and `~' may precede pathnames since they are Xexpanded first to the user's folder directory (+), as described by the variable X.BR folder , Xand the user's home directory (~). XMailing to programs is indicated by the pipe `|' character preceding the Xprogram name. XSince the user's path is searched, full pathnames are not required for Xprograms that lie in the user's PATH environment variable. X.sp XExample: X.sp X.ti +2 Xmail username, /path/to/filename, "|program_name", +folder_name, ~user/mbox X.sp XOptions are: X.nf X.in +2 X.if n .ta 1.5i X.if t .ta 1.8i X\-b addr-list set list of blind carbon recipients X\-c addr-list set list of carbon copy recipients X\-e immediately enter editor (autoedit) X\-F add random fortune to the end of message X\-f [msg-list] forward msg_list (not indented) X\-h [msg-list] include msg_list with headers X\-i [msg-list] include msg_list into letter X\-s [subject] prompt for subject [set subject explicitly] X\-v verbose (passed to mail delivery program) X.in -2 X.fi X.sp XThe verbose option may not be available depending on the mail transport Xagent on your system. X.sp XThe \-e flag causes you to enter the editor described by the variable X.BR visual . X.sp XThe \-i flag will include the current message into the body of the Xmessage you are about to send. XThe included message is indented by Xthe string \*Q> \*U or by the string described by the variables X.BR indent_str , X.BR pre_indent_str , Xand X.BR post_indent_str . XSee the VARIABLES section for more information on these string values. XIf a message list is given after the \-i option, then the messages Xdescribed by that list are included. XThe \-h option is identical to the \-i option except that the headers of Xthe message are also included. X.sp XThe \-s flag looks at the next argument and sets the subject to that Xstring. XIf the string is to contain spaces, enclose the entire subject Xin quotes. XIf there is no following argument, then the subject will Xbe prompted for. XThis flag is useful if the user: X.sp X.in +2 X.nf X\(bu does not have the variable \fBask\fR set, or X\(bu wishes to change the subject used with \fBreply\fR X.in -2 X.fi X.sp XThe subject is not prompted for and is ignored completely if the \-f flag Xis specified (see below). X.sp XThe \-f flag is for message forwarding only. XAn optional message list can be given just as the -i option has. XThe forward option does not allow you to edit the message(s) being forwarded Xunless the -e flag is also specified. XThe subject of the message (if available) is the same as the \fIcurrent\f Xmessage; it is not necessarily the subject of the message being forwarded. XThe subject of forwarded mail cannot be changed. XHowever, using the \-e flag Xwill allow the user to change the subject once in editing mode using the Xescape sequence, \*Q~s\*U. X.sp XForwarded mail that has not been edited by the user will contain special Xheaders such as X.sp X.ti +2 XResent-To: X.ti +2 XResent-From: X.sp Xand perhaps others, depending on your mail transport agent. XSendmail, for example, may add a number of other \*QResent-*\*U headers. X.TP X.BR map [ ! "] [string [expansion]]" X.ns X.TP X.BR unmap [ ! "] string" X.rs XThe X.B map Xcommand creates or lists macros for the line mode interface, and the X.B map! Xcommand creates or lists macros for the message composition mode. XIn either mode, macros act in such a way that, when X.I string Xis typed, the effect is the same as if X.I expansion Xhad been typed instead. XThe X.I string Xis usually one or two control characters, or a sequence sent by Xone of the \*Qfunction keys\*U of a particular terminal. XSee the MACROS section for the syntax used to specify the X.I string Xand the X.IR expansion , Xand for comments on the interactions of macros in the same and in Xdifferent modes. X.sp XIf no arguments are given, these commands will display the list of Xmacros and expansions for the appropriate mode. XIf only a X.I string Xis given, they will display the X.I expansion Xassociated with that string for the appropriate mode. XOtherwise, they will create a macro, associating the given X.I expansion Xwith the specified X.IR string . X.sp XLine mode macros are unset with the X.B unmap Xcommand, and composition mode macros are unset with the X.B unmap! Xcommand. X.TP X.BR merge " [-N] folder-name" XMessages from the named folder are read into the current folder. XThe header summaries of the merged messages are printed unless the \-N Xoption is given (see the X.B folder Xcommand, above). XThis command can only appear in a pipeline if it is the first command; Xit returns a list of all the messages from the merged-in folder. X.TP X.BR my_hdr / un_hdr " [header]" XYou can create personalized headers in your outgoing mail using this command. X.sp X.nf XUsages: X.in +2 X.ta 2.5i Xmy_hdr print all your headers Xmy_hdr header print value of header Xmy_hdr header: string set header to string Xun_hdr header: unset header X.in -2 X.sp X.fi XTo set a header, the first argument must be a string Xthat contains no whitespace (spaces or tabs) and must end with Xa colon (:). XThe rest of the command line is taken to be the Xtext associated with the mail header specified. XIf any quotes are used in the header and the header itself is not set in Xquotes, then quotes should be escaped (preceded) by a backslash. XThis holds true for semicolons, pipe characters Xor any other metacharacter that X.I Mush Xmight interpret as a command line modifier. X.sp XIf the variable X.B no_hdrs Xis set, then your headers will not be added to outgoing messages, Xbut no headers will be unset. XThe X.B un_hdr Xcommand may take `*' as an argument to un_hdr everything set. X.TP X.BR pick " [flags] [<pattern>]" XAllows the user to select particular messages from a folder. XThe <pattern> is a \*Qregular expression\*U as described by X.IR ed . XIf no arguments are given, the previous expression searched for is used. XYou can search for messages from a user, for a particular subject line, Xbetween certain dates, and limit searches to a range of messages. XYou can also find all messages that do not Xmatch the same arguments mentioned above. X.sp X.nf XOptions: X.ta 1.5i X.in +2 X\-ago <format> search for messages relative to today's date. X\-d [+|\-]date messages sent on or [+ after] [`\-' before] date. X\-f search for pattern in \*QFrom\*U field only. X\-h header search for pattern in specified header only. X\-i ignore case of letters when searching. X\-r msg_list search only the listed messages. X\-s search for pattern in \*QSubject\*U field only. X\-t search for pattern in \*QTo\*U field only. X\-x select messages not containing the pattern. X.in -2 X.fi X.sp XThe X.I \-ago Xoption can be abbreviated as X.IR \-a . XOnly one of \-a, \-d, \-f, \-h, \-s and \-t can be specified at once. XEntire messages are scanned for the <pattern> Xunless \-a, \-d, \-f, \-h, \-s or \-t is specified. XMessages marked for deletion are also searched. XNo patterns can be specified with the \-a or \-d options. X.sp XFor the \-d option, \*Qdate\*U is of the form: X.sp X.ti +2 Xmonth/day/year X.sp Xwith an optional `\-' to specify that the messages of interest are those Xolder than that date. XOmitted fields of the date default to today's values. XExamples of selecting on date: X.nf X.in +2 X.ta 2.0i X.sp Xpick \-d 4/20 on April 20, this year. Xpick \-d \-/2/85 on or before the 2nd, this month, 1985. Xpick \-d +5/4 on or after May 4 of this year. Xpick \-d / today only. X.fi X.in -2 X.sp XAt least one `/' char must be used in a date. XThere is no strong date checking; 2/30 would be considered a valid date. X.sp XFor the \-ago option, the format is very simple. Specify the number of Xdays followed by the word \*Qdays\*U, or the number of weeks followed by Xthe word \*Qweeks\*U, and so on with months and years. Truncation is allowed, Xsince only the first character is examined, so all of the following are Xequivalent: X.sp X.in +2 X.nf Xpick \-ago 1 day, 2 weeks Xpick \-ago 2Weeks 1Day Xpick \-ago 2w,1day Xpick \-a 2w1d X.fi X.in -2 X.sp XThese examples will find all messages that are exactly 2 weeks and 1 day Xold. All \*Qago\*U dates collapse into \*Qday\*U time segments. This Xmeans that months are 30.5 days long. If more precise date selection is Xrequired, use the \-d option and specify specific dates. X.sp XAlso note that the \-ago option allows Xthe \*Qbefore\*U (\-) and \*Qafter\*U (+) Xarguments. Thus, you may pick all messages older than 1 week with: X.sp X.ti +2 Xpick \-ago \-1 week X.sp XOther examples of X.B pick: X.sp X.ti +2 Xpick \-d 2/5/86 | pick \-d \-2/5/87 | pick \-s "mail stuff" | lpr X.sp Xwill find all the messages between the dates February 5, 1986, and XFebruary 5, 1987, that contain the subject "mail stuff" and send them Xto the printer. X.sp X.ti +2 Xpick -s Re: | delete X.sp Xdeletes messages that have \*QRe:\*U in the Subject header. X.sp X.ti +2 Xfolder +project | pick \-f frank X.sp XFinds all messages from frank in the folder described by +project. X.sp X.ti +2 Xpick \-h return-path ucbvax X.sp XSearches all messages that have the header "Return-Path:" and determines Xif the string \*Qucbvax\*U is in the header. XNote that case sensitivity Xapplies only to the pattern searched, not the header itself. X.sp X.ti +2 Xpick \-ago +1w | save +current X.sp XThis finds all messages that are a week or less old and saves them in the file Xcalled \fIcurrent\fR, which is found in the user's \fIfolder\fR variable. X.TP X.BR pipe " [msg-list] unix-command" XAllows the user to send the texts of a list of messages to a X.IR UNIX (TM) Xcommand. XThe list of messages may either be given explicitly or may come from Xa mush pipeline (see \*QCommand Pipes\*U under FEATURES, and also the XLINE-MODE INTERFACE section). XIf a list is neither given nor piped, the current message is used. XHeaders which have not been ignored are considered part of the message Xtext for purposes of this command. XFor example, X.sp X.in +4 X.nf Xpipe 3 5 7 patch X.fi X.in -4 X.sp Xsends the text of messages 3, 5 and 7 to the X.I patch Xutility. X.sp XThis command can also be invoked as X.BR Pipe X(note capitalization), in which case only the body of the messages, Xand none of the message headers, are sent to the unix command. X.sp XWhen the variable X.B unix Xis set, X.IR UNIX (TM) Xcommands can appear anywhere X.I except as the first command Xin a mush pipeline without explicitly using X.BR pipe . XHowever, it is still necessary to specify X.B Pipe Xin order to exclude all headers. X.TP X.B preserve X.RB ( pre ) XSaves a message list in your spool directory rather than Xyour mailbox unless it has been explicitly deleted. XThe variable X.B hold Xcauses all messages to be held in your spool directory automatically. X.TP X.B print X.RB ( p , X.BR type , X.BR t ) XTakes a message list and displays each message on the user's terminal. XIf the first letter of the command is a capital letter (`P' or `T') Xthen \*Qignored\*U headers are not ignored X.I provided Xthat the variable X.B alwaysignore Xis not set. XIf this variable is set, the ignored headers will be Xignored regardless of the command used to display the message. XSee the X.B ignore Xcommand for more information about ignored message headers. X.sp XThe `+' and the `\-' keys can be used to display the \*Qnext\*U Xand \*Qprevious\*U messages respectively. XThe `+' key has the caveat that the Xmessage is not paged at all and none of the messages headers are displayed. X.TP X.B pwd XPrints the current working directory. X.TP X.B quit X.RB ( q ) XUpdates the current folder and exits from X.IR Mush . XIf the variable \*Qhold\*U is set, all messages not marked for deletion are Xsaved in the spool directory. XOtherwise, messages that have been read are saved to X.I ~/mbox Xor to the file described by the string variable X.BR mbox . XMessages marked for deletion are discarded. XUnread messages go back to the spool directory in all cases. X.TP X.BR reply / replyall " [msg_list] [-r path] [flags] [users]" X.RB ( r / R ) XMessages are replied to by sending mail to the sender of each message Xin the given message list. XThe command X.B replysender Xis equivalent to X.BR reply . X.B Replyall Xresponds to all the recipients as well as the sender of the message. XThese commands understand all the same flags as the X.B mail Xcommand. X.sp XWhen constructing a return mail address to the author of a message, X.B reply Xsearches for special mail headers in the author's message that Xindicate the most efficient mail path for return mail. X.I Mush Xwill search for the \*QReply-To:\*U, \*QReturn-Path:\*U, Xand \*QFrom:\*U headers, in that order, by default. X.sp XIf none of these fields are found in the message, the first line of the Xmessage is parsed if possible; Xthis \*QFrom \*U line is different from the \*QFrom: \*U line. XIf the user wishes to change the order or the actual fields to search for Xreturn paths, then the variable X.B reply_to_hdr Xmay be set to a list of headers to be used (in the order specified). XIf it is set, but has no value, the first \*QFrom \*U line is used Xregardless of what headers the author's message contains. XThe \*QFrom \*U line may be specified explicitly as an item in the Xlist of reply-to headers by specifying the header: X.B From_. XSee the VARIABLES section for more information about X.B reply_to_hdr. X.sp XWhen replying to all recipients of the message using the X.B replyall X.RB ( R ) Xcommand, only the original author's address can be obtained from Xthe message headers. XThere is no way determine the best path to the Xother recipients of the message from message headers aside from taking Xtheir addresses directly from the \*QTo:\*U and \*QCc:\*U lines. X.sp XExample: X.sp X.ti +2 Xreplyall 3,4,5 -i 4,5 7 -s response mail-group X.sp XHere, messages 3, 4 and 5 are replied to (all the authors are obtained Xfrom each of those messages as well as the recipients from those messages) Xand the text from messages 4, 5 and 7 are included in the body of the reply. XThe subject is set to "response" and the alias mail-group is appended to Xthe list of recipients for this message. X.sp XThe -r flag will prepend the path to each recipient in the address list Xwith the indicated path. This overrides the value of \fBauto_route\fR, Xbut has the exact same functionality. See the explanation of the variable Xin the VARIABLES section. Also see the MAIL ADDRESSES section for more Xinformation concerning replying to messages. X.nf X.TP X.BR save / write / copy " [!] [-s | -a] [msg-list] [filename / directory]" X.fi X.RB ( s / w ) XWith no arguments, X.B save Xand X.B write Xwill save the current message to the file X.I mbox Xin the user's home directory (or the file specified by the X.B mbox Xvariable). XIf a message list is given, then the messages specified by Xthe list are saved. XIf a filename is given, then that filename is used instead of mbox. XThe -s options forces the filename used to be that of the subject of Xthe message. Similarly, the -a option causes the filename used to be Xthat of the author of the message being saved. If more than one message Xis being saved, the subject or author name used is that of the smallest Xmessage number (since message lists have no order of precedence). With Xthese two options, a directly name may be given to specify a directory Xother than the current directory. X.sp XIf the file exists and is writable, the specified command Xwill append each message to the end of the file. XIf the `!' is given, then the file is overwritten causing whatever contents it Xcontains to be lost. XThe X.B write Xcommand differs from X.B save Xand X.B copy Xin that the message headers are X.I not Xsaved in the file along with the body of text. X.sp XIf the current folder is the system mailbox, then saved messages are Xmarked for deletion when the user exits using the X.B quit Xcommand. XIf the variable X.I keepsave Xis set or the current folder is not the system mailbox, then messages are Xnot marked for deletion. XThe X.B copy Xcommand is is like X.B save Xexcept that messages are never marked for deletion, whether or not X.B keepsave Xis set. X.sp XBecause message lists are used to determine the messages to be saved, Xif the user wishes to save messages to a file that begins with a digit Xor any other message list metacharacter, a backslash should precede Xthe filename to escape the message list expansion routine. XThe backslash will not become a part of the filename. X.TP X.BR saveopts " [file]" XThe complement of X.BR source , X.BR saveopts , Xwill save all settable variables, aliases Xand cmd's in the initialization file. X(See the INITIALIZATION Xsection for more information on initialization files.) XIf an argument is given, that file is used. XBeware that this will overwrite files, so any \*Qif\*U expressions Xwill be lost, as will settings that have changed since entering X.IR Mush . XUsing saveopts is highly discouraged Xand is intended for the naive user only. X.TP X.BR set " [[?]variable [= value]]" X.ns X.TP X.BR unset " variable" X.rs XWith no arguments, prints all variable values. XOtherwise, sets option. XArguments are of the form \*Qoption=value\*U (whitespace is allowed). XBoolean expressions need not have \*Q=value\*U associated in the command. X.sp XThe special command X.sp X.ti +2 Xset ?all X.sp Xwill print all known variables utilized by the program and a brief Xdescription of what they do. XThe user may set and manipulate his own set of variables, but internal Xvariables that are utilized by the program are the only ones displayed. X.sp XThe command X.sp X.ti +2 Xset ?variable_name X.sp Xwill print the same information for one variable instead of all variables. XYou may unset everything by issuing the command \*Qunset *\*U. X.sp XIt is possible to set a variable to a list of messages returned by another Xcommand by using the piping mechanism. For example, X.sp X.ti +2 Xpick \-s Status Reports | set reports X.sp XThe variable, reports, now contains a message list which can be used Xas the message list argument to any commands which accepts one. X.sp X.ti +2 Xmail \-i $reports boss X.sp XThis command will mail to \*Qboss\*U and include all the messages held Xin the \fIreports\fP variable. X.TP X.BR sh " [command]" XInvokes an interactive version of the shell. XThe shell spawned is described by the variable X.BR shell . XIf the optional argument X.B command Xis given, then that command is executed under the Bourne Shell. XIf the special character `&' is at the end of any shell command, Xthen the command will be executed in background. X.TP X.BR source " [file]" XRead X.I Mush Xcommands from a file. XIf no filename is specified, the files searched Xfor are .mushrc or .mailrc in the user's home directory. XIf the environment variable MAILRC is set, then that file is sourced. XIf a filename is given on the command line, that file is sourced. XSee the INITIALIZATION heading and the X.B home Xvariable descriptions for more information. X.TP X.BR sort " [\-] [a | d | s | S | R]" XThis command Xwill sort messages according to author, date, status or subject X(with or without considering the "Re: ", in replied messages). XIn addition, the messages can be sorted in reverse order (same arguments). X.sp X.nf XOptions: X.in +2 X.ta 1i X\- reverse sort order Xa sort by author (alphabetical) Xd sort by date Xs sort by subject ignoring \*QRe:\*U XR sort by subject (alphabetical) XS sort by message status X.in -2 X.fi X.sp XNote that only one argument (except for the `\-'), may be used. XBy default (no arguments), X.B sort Xsorts messages by X.IR status . XNew, unread messages are first, followed by preserved messages, Xand finally deleted messages are placed at the end of the list. X.sp XWhen sorting by date, the boolean variable X.B date_received Xis checked. If it is set, then sorting goes by date received. XOtherwise (default), sorting is by date sent by the original author. X.sp XIf the variable X.I sort Xis set, messages are sorted each time the user's system mailbox is Xread as the current folder. XThe X.I sort Xvariable can be set either to nothing or to legal "sort" arguments. X.sp XSubsorting can be achieved by using the piping mechanism intrinsic to Xthe line mode interface; Xno other interface allows subsorting \*Qdirectly\*U. XEach interface may allow subsorting if appropriate actions are taken, Xas discussed below. X.sp XTo subsort messages, the folder must be in a particular order to begin Xwith. XTo sort mail by author and then by subject heading, you would Xhave to first sort by author: X.sp X.ti +2 Xsort a X.sp XNow that the messages are in order according to author, sorting a Xsublist of messages is done using pipes: X.sp X.ti +2 Xpick \-f island!argv@sun.com | sort s X.sp XThis finds all messages from the user \*Qisland!argv@sun.com\*U Xand sorts them by subject. XSince these messages are already grouped together via the Xprevious sort command, the sorting by subject (s) will restrict itself Xto such messages. XYou may specify the exact message list by specifying Xthat message list on the command line and using a pipe: X.sp X.ti +2 X10\-. | sort d X.sp XThis command means to sort the messages from 10 to the current message Xaccording to the date. X.sp XTo specify subsorting from with the curses interface, the temporary Xcurses escape key must be used (the colon `:') and the command issued Xat the `:' prompt (as if giving an \*Qex\*U command to \*Qvi\*U). XWhen the command is finished, the \*Q...continue...\*U prompt is given and Xthe user may continue or return to the top level of the curses mode. X.sp XIn the tool interface, the user must map a function key to the desired Xcommand. XSelect the \*QOpts\*U icon with the right mouse button, choose Xthe menu item labeled \*Qfunction keys\*U and use the interface provided Xto set a function key to the desired piped mechanism. X.TP X.B stop XFor systems with job control, stop will cause X.I Mush Xto send a SIGTSTP to itself. XThe command was introduced to facilitate Xthe stop-job action from a complex command line alias rather than the user Xhaving to type his stop character explicitly. X.TP X.B top XTakes a message list and prints the top few lines of each. XThe number of lines printed is controlled by the variable X.B toplines Xand defaults to the size of the value of the variable X.B crt. XThis command is ignored in the tool mode. X.TP X.BR undigest " [-m] [msg_list] [filename]" XA \*Qdigest\*U is a mail message which is a collection of other mail messages Xmailed to a \*Qmoderator\*U by other users. The moderator compiles all the Xmessages into a folder and sends the result to all the subscribers of the Xmailing list. The X.B undigest Xcommand disassembles the entries into the set of messages which comprises Xthe digest. X.sp XThe -m option will merge these messages into the current folder. Otherwise, Xif a filename is specified, a new folder is created and the user can change Xfolders to read the messages separately. X.sp XIf a message list is specified, each digest is disassembled to the same Xfilename (if given). If no filename is given and the user did not request Xa merge, then a temporary file is made. X.sp X.SH VARIABLES XShell variables are controlled via the X.B set Xand X.B unset Xcommands. XOptions may be either boolean, in which case it is only Xsignificant to see whether or not they are set; Xstring, in which case the actual value is of interest; Xor numerical, in which case the numerical value is important. XSome variables may have attributes Xof boolean and string at the same time. X.PP XIf you or the program references a variable that is not explicitly set, Xthen the environment variables are checked and a pointer to that data Xis returned. X.PP XCertain variables that happen to be set to pathnames can be modified Xby one of two variable modifiers. XThe modifiers `:h' and `:t' may be applied to the variable names. XThe current implementation allows only one `:' modifier on each `$' expansion. X.TP X:t XThe variable is treated as a file path name, and the name of the file X(the \*Qtail\*U of the path) is substituted for the variable. XThat is, everything to the right of the last `/' Xis returned. X.TP X:h XThe variable is treated as a path name, and the \*Qhead\*U of the pathname Xis substituted for the variable. XThat is, everything up to, but not including, the last `/' is returned. X.PP XThus, you could set your prompt: X.sp X.nf X.ti +2 Xcmd fo 'fo \!*; set prompt = "! [$thisfolder:t] "' X.fi X.sp XHere, whenever you change folders, your prompt will tell you the name Xof the folder you're in. X.PP XFollowing is a list of all predefined variables. X.TP X.B alwaysignore X(Boolean) XIf set, the mail headers set by the X.B ignore Xcommand are always ignored. XNormally, ignored headers are not ignored when sending messages to Xthe printer, when interpolating messages into letters with ~f or ~H, Xwhen the `P' or `T' command is given (see the \fBprint\f command), Xor with the \-h flag to the X.B mail Xor X.B reply Xcommands. XSetting X.B alwaysignore Xwill ignore those headers even in the situations mentioned here. XNo headers can be ignored during updates and when using the X.B save Xcommand since the user may ignore headers that are required by X.I Mush Xor any other mail system to read those folders. X.sp XAlso see the X.B ignore Xcommand for more information. X.TP X.B ask X(Boolean) XIf set, you will be prompted for a subject header for outgoing mail. XIf not set, the Subject header will be displayed as a blank header. XUse the tilde escape \*Q~s\*U to set the header once in the message Xor specify the \-s option on the X.B mail Xcommand line at the X.I Mush Xprompt. X.TP X.B askcc X(Boolean) XIf set, you will be prompted for a Cc (carbon copy) list when you are Xfinished editing a letter to be sent. XIn the tool mode, this is ignored; the Cc list Xis always prompted for after the Subject prompt. X.TP X.B autodelete X(Boolean) XWhen exiting mail, all messages that have been read X.I "regardless of whether they have been marked for deletion" Xare removed. XOnly messages that haven't been read or that have been marked as X.B preserved Xare not removed. X.TP X.B autoedit X(Boolean) XIf set, you are automatically put into your editor whenever you Xsend or reply to mail. X.TP X.B autoinclude X(Boolean) XWhen replying to any mail, a copy of the message being replied to Xis automatically inserted into your message body indented by Xthe string described by the variable X.BR indent_str . X.TP X.B autoprint X(Boolean) XAfter you delete a message, the next message is printed automatically. X.TP X.B auto_route X(String) XIf set boolean (not to a string), all the recipients in a message that Xis being replied to (via \fBreplyall\fR), will be routed through the path Xback to the original author. X.sp XFor example, if the original sender of a message came from the remote host X.B c3p0 Xand the list of recipients looked like X.sp X.nf X.in +2 XFrom: c3p0!user1 XTo: yourhost!you XCc: r2d2!user2, r2d2!user3 X.in -2 X.fi X.sp Xthen clearly, \*Quser1\*U on the machine c3p0 can talk to your machine Xand the machine named r2d2. XHowever, you would not be able to respond to those users if your machine Xdid not exchange UUCP mail with the host r2d2. X.sp X.I Mush Xwill attempt to solve this problem by reconstructing the addresses Xfor \*Quser2\*U and \*Quser3\*U according to the address of the original Xsender, \*Qc3p0\*U. XThe new addresses for \*Quser2\*U and \*Quser3\*U should therefore become X.sp X.ti +2 Xc3p0!r2d2!user2, c3p0!r2d2!user3. X.sp XIf your machine not only talks to c3p0, Xbut talks to r2d2 as well, it becomes unnecessary to route the mail Xthrough both c3p0 and r2d2. XSo, the variable X.B known_hosts Xmay be set to a list of hosts which you know your machine to have XUUCP mail connections with. XThis list is checked when constructing mail addresses for replies only and Xthe shortest path is made by removing from the UUCP path those hosts Xthat do not need to be called or are redundant. XSee the entry for X.B known_hosts Xfor more information. X.sp XIf X.B auto_route Xis set to a specific \fBpathname\fR (host names separated by !'s), Xall addresses in the reply will have this route prepended to their addresses. XThis ignores the original path of the author. This is quite useful for Xhosts which talk uucp to a node which is connected to the internet or uunet Xsince both of those machines tend to be one-hop away from all other hosts X(or reroute accordingly). For example, if a message was addressed like so: X.sp X.in +2 X.nf XTo: root@ucbvax.berkeley.edu, argv@island.uucp XCc: ucbcad!foo!bar X.sp X.fi X.in -2 XIf auto_route were set to "ucbcad", then replies to this address would be Xdirected addressed like so: X.sp X.in +2 X.nf XTo: ucbcad!ucbvax.berkeley.edu!root, ucbcad!island.uucp!argv XCc: ucbcad!foo!bar X.sp X.fi X.in -2 X.sp XThis assumes that the host in question talks uucp with ucbcad. This example Xdemonstrates several things. First, notice that all addresses are converted Xto uucp-style format. Whenever routing is changed, the format is converted Xlike this. Secondly, note that the Cc: line did not change. This is because Xall redundant hostnames from UUCP pathnames are removed Xto avoid unnecessary UUCP connections and speed up mail delivery. X.sp XAnother example of how auto_route truncates UUCP paths: X.sp X.ti +2 Xpixar!island!sun!island!argv X.sp XHere, mail was probably originally sent to users at pixar and sun from Xsomewhere undetermined now. XSince sun and pixar do not talk to each other, the users on those machines may Xhave responded to mail creating the type of addresses stated above. XHere, it can be seen that we can reduce the path to the host X.IR island : X.sp X.ti +2 Xpixar!island!argv X.sp XSee the MAIL ADDRESSES section for more detailed information Xabout legal mail addresses. X.sp XNote that the -r flag to \fBreply\fR and \fRreplyall\fR overrides the Xvalue of \fBauto_route\fR. X.TP X.B autosign X(Boolean/string) XAppend a signature to outgoing mail. XIf this variable is set, but not to a string (e.g., boolean-true) Xthen the file ~/.signature is used. X.sp XOtherwise, the variable is interpreted in one of three ways. XBy default, the string is interpreted as a pathname relative to the X.I current Xdirectory. XFor this reason, it is advisable to use full pathnames here. XAs usual, the special characters `~' and `+' are expanded. XIf a file is found, it is opened and its contents are read into the Xmessage buffer. X.sp XIf the variable is set to a string that begins with `$', then that string Xis interpreted as a user-definable variable and is expanded and appended Xto the letter. X.sp XFinally, if the variable is set to a string that begins with a backslash (\\) Xthen the string itself (minus the `\\' character) is used; no expansion Xis done and no files are read. X.sp XIn the latter two cases, it is advisable to set the variable using single Xquotes to avoid expanding the variable beforehand or eliminating the Xbackslash. XExamples: X.sp X.nf X.ti +2 Xset autosign = '$foo' X.ti +2 Xset autosign = '\\ Dan Heller island!argv@ucbcad.berkeley.edu' X.fi X.sp X.BR Warning : Xif redirection from the calling shell is used, Xno signature or fortune will be added to outgoing mail. XFor example, X.sp X.ti +2 X% mush \-s report manager < report_file X.sp XIn this command, mail is being sent to the user \*Qmanager\*U and the Xsubject is set to \*Qreport\*U and the file \*Qreport_file\*U is being Xredirected as input. In this case, there will be \fIno\fR signature Xappended. X.TP X.B autosign2 X(String) XThis alternate signature is available for special cases where the default Xsignature is not desired or if no signature is desired for special addresses Xor if only special addresses require a signature. XThe format for this variable is: X.sp X.ti +2 Xautosign2 = \*Qaddress1, address2, ... : <signature>\*U X.sp XEach address can be one of these types: X.TP X1) address XLegal mailing addresses that do not contain comment Xfields (see the sections MAIL ADDRESSES for more information on legitimate Xmail addresses). X.TP X2) *username XIf the username is present on the recipient list, regardless of what Xremove site the user may reside (including locally), the pattern matches. X.TP X3) !hostname !host1!host2... XAny user can be specified as long as he resides on the specified hostname. XIf a path of hosts is specified, then the user must reside on the end of Xthe specified path. X.TP X4) @dom.ain XThe user must reside on any host within the domain specified. Neither Xthe user or the hostname needs to match; only the domain name must be Xrequired to match. X.sp XExample: X.sp X.nf X.ti +2 Xset autosign2 = \*Q!island @berkeley.edu @mit.edu *schaefer root: \--dan\*U X.fi X.sp XThis means that any mail sent to 1) anyone at island, 2) anyone within Xthe berkeley domain, 3) anyone within the mit domain, 4) Bart Schaefer X(at any host anywhere -- even locally), Xand 4) root on my local machine only (or, root@my-machine-name) Xwill be signed by my "alternate" signature. If any address on the Xrecipient list fails to satisfy these four matches, the mail will be Xsigned by my regular signature. X.sp XOne can have a local signature and a remote signature by specifying Xthe autosign2 to include the hostname of the home machine the user Xis logged into. Note the \*Qisland\*U example above. X.sp XThe list of recipients, after alias expansion and comment removal, is Xthen scanned and the following patterns are matched against those addresses Xspecified in the autosign2 or fortunates variable according to these rules. X.sp XThe signature description is the same as described by X.B autosign Xvariable. The colon (:) separates the list of addresses from the signature Xdescription. If there is no colon or the address list is missing, the Xentire string is considered the signature (except for the colon). X.sp XIf X.B autosign Xis not set, then autosign2 will ONLY work if the tilde command \*Q~S\*U Xis specified. In this way, a user may never have autosign set and just Xset autosign2 to be some signature value. The user may then issue the Xtilde command to automatically sign the letter. XIf a list of addresses is given (terminated by a colon), then all Xrecipients of the message must be in the list of addresses in autosign2; Xotherwise, the signature in \fBautosign\fR (if set) is used instead. XA null signature in autosign2 will not sign the letter. X.sp XExample: X.sp X.nf X.ti +2 Xset autosign2 = "fred, barney, wilma, betty: ~/flintstone.sig" X.fi X.sp XIf a message is sent to: X.sp X.ti +2 XTo: fred, wilma X.sp XThen the file ~/flinstone.sig will be used. XHowever, if the address were: X.sp X.ti +2 XTo: barney, betty, bambam X.sp XThen autosign2 will not be used because bambam is not in the list. X.sp XNote that mail sent via redirection from the calling shell will not Xsign letters or append fortunes. X.TP X.B cdpath X(String) XSet to a string of pathnames separated by spaces to use when searching Xfor a directory when the X.B cd Xcommand is issued. XIf this variable is used, it is recommended that the path `.' be included. XNote that this differs from the X.IR csh , Xwhich does not require that `.' be present. X.TP X.B crt X(Numeric) XSet to a value that describes the number of lines a message Xmust have before invoking the X.B pager Xto view a message. X.TP X.B cwd X(String) XThe X.B "current working directory" Xstring is automatically set upon startup of X.I Mush END_OF_FILE if test 49816 -ne `wc -c <'mush.1.2'`; then echo shar: \"'mush.1.2'\" unpacked with wrong size! fi # end of 'mush.1.2' fi echo shar: End of archive 18 \(of 19\). cp /dev/null ark18isdone 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@uunet.uu.net.