|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)mail4.nr 6.1 (Berkeley) 5/23/86 ! 6: .\" ! 7: .bp ! 8: .sh 1 "More about sending mail" ! 9: .sh 2 "Tilde escapes" ! 10: .pp ! 11: While typing in a message to be sent to others, it is often ! 12: useful to be able to invoke the text editor on the partial message, ! 13: print the message, execute a shell command, or do some other ! 14: auxiliary function. ! 15: .i Mail ! 16: provides these capabilities through ! 17: .i "tilde escapes" , ! 18: which consist of a tilde (~) at the beginning of a line, followed by ! 19: a single character which indicates the function to be performed. For ! 20: example, to print the text of the message so far, use: ! 21: .(l ! 22: ~p ! 23: .)l ! 24: which will print a line of dashes, the recipients of your message, and ! 25: the text of the message so far. ! 26: Since ! 27: .i Mail ! 28: requires two consecutive \s-2RUBOUT\s0's to abort a letter, you ! 29: can use a single \s-2RUBOUT\s0 to abort the output of ~p or any other ! 30: ~ escape without killing your letter. ! 31: .pp ! 32: If you are dissatisfied with the message as ! 33: it stands, you can invoke the text editor on it using the escape ! 34: .(l ! 35: ~e ! 36: .)l ! 37: which causes the message to be copied into a temporary file and an ! 38: instance of the editor to be spawned. After modifying the message to ! 39: your satisfaction, write it out and quit the editor. ! 40: .i Mail ! 41: will respond ! 42: by typing ! 43: .(l ! 44: (continue) ! 45: .)l ! 46: after which you may continue typing text which will be appended to your ! 47: message, or type <control-d> to end the message. ! 48: A standard text editor is provided by ! 49: .i Mail . ! 50: You can override this default by setting the valued option ! 51: .q EDITOR ! 52: to something else. For example, you might prefer: ! 53: .(l ! 54: set EDITOR=/usr/ucb/ex ! 55: .)l ! 56: .pp ! 57: Many systems offer a screen editor as an alternative to the standard ! 58: text editor, such as the ! 59: .i vi ! 60: editor from UC Berkeley. ! 61: To use the screen, or ! 62: .i visual ! 63: editor, on your current message, you can use the escape, ! 64: .(l ! 65: ~v ! 66: .)l ! 67: ~v works like ~e, except that the screen editor is invoked instead. ! 68: A default screen editor is defined by ! 69: .i Mail . ! 70: If it does not suit you, you can set the valued option ! 71: .q VISUAL ! 72: to the path name of a different editor. ! 73: .pp ! 74: It is often useful to be able to include the contents of some ! 75: file in your message; the escape ! 76: .(l ! 77: ~r filename ! 78: .)l ! 79: is provided for this purpose, and causes the named file to be appended ! 80: to your current message. ! 81: .i Mail ! 82: complains if the file doesn't exist ! 83: or can't be read. If the read is successful, the number of lines and ! 84: characters appended to your message is printed, after which you may continue ! 85: appending text. The filename may contain shell metacharacters like * and ? ! 86: which are expanded according to the conventions of your shell. ! 87: .pp ! 88: As a special case of ~r, the escape ! 89: .(l ! 90: ~d ! 91: .)l ! 92: reads in the file ! 93: .q dead.letter ! 94: in your home directory. This is often useful since ! 95: .i Mail ! 96: copies the text ! 97: of your message there when you abort a message with \s-2RUBOUT\s0. ! 98: .pp ! 99: To save the current text of your message on a file you may use the ! 100: .(l ! 101: ~w filename ! 102: .)l ! 103: escape. ! 104: .i Mail ! 105: will print out the number of lines and characters written ! 106: to the file, after which you may continue appending text to your message. ! 107: Shell metacharacters may be used in the filename, as in ~r and are expanded ! 108: with the conventions of your shell. ! 109: .pp ! 110: If you are sending mail from within ! 111: .i Mail's ! 112: command mode ! 113: you can read a message sent to you into the message ! 114: you are constructing with the escape: ! 115: .(l ! 116: ~m 4 ! 117: .)l ! 118: which will read message 4 into the current message, shifted right by ! 119: one tab stop. You can name any non-deleted message, or list of messages. ! 120: Messages can also be forwarded without shifting by a tab stop with ~f. ! 121: This is the usual way to forward a message. ! 122: .pp ! 123: If, in the process of composing a message, you decide to add additional ! 124: people to the list of message recipients, you can do so with the escape ! 125: .(l ! 126: ~t name1 name2 ... ! 127: .)l ! 128: You may name as few or many additional recipients as you wish. Note ! 129: that the users originally on the recipient list will still receive ! 130: the message; you cannot remove someone from the recipient ! 131: list with ~t. ! 132: .pp ! 133: If you wish, you can associate a subject with your message by using the ! 134: escape ! 135: .(l ! 136: ~s Arbitrary string of text ! 137: .)l ! 138: which replaces any previous subject with ! 139: .q "Arbitrary string of text." ! 140: The subject, if given, is sent near the ! 141: top of the message prefixed with ! 142: .q "Subject:" ! 143: You can see what the message will look like by using ~p. ! 144: .pp ! 145: For political reasons, one occasionally prefers to list certain ! 146: people as recipients of carbon copies of a message rather than ! 147: direct recipients. The escape ! 148: .(l ! 149: ~c name1 name2 ... ! 150: .)l ! 151: adds the named people to the ! 152: .q "Cc:" ! 153: list, similar to ~t. ! 154: Again, you can execute ~p to see what the message will look like. ! 155: .pp ! 156: The escape ! 157: .(l ! 158: ~b name1 name2 ... ! 159: .)l ! 160: adds the named people to the ! 161: .q "Cc:" ! 162: list, but does not make the names visible in the ! 163: .q "Cc:" ! 164: line ("blind" carbon copy). ! 165: .pp ! 166: The recipients of the message together constitute the ! 167: .q "To:" ! 168: field, the subject the ! 169: .q "Subject:" ! 170: field, and the carbon copies the ! 171: .q "Cc:" ! 172: field. If you wish to edit these in ways impossible with the ~t, ~s, ~c ! 173: and ~b escapes, you can use the escape ! 174: .(l ! 175: ~h ! 176: .)l ! 177: which prints ! 178: .q "To:" ! 179: followed by the current list of recipients and leaves the cursor ! 180: (or printhead) at the end of the line. If you type in ordinary ! 181: characters, they are appended to the end of the current list of ! 182: recipients. You can also use your erase character to erase back into ! 183: the list of recipients, or your kill character to erase them altogether. ! 184: Thus, for example, if your erase and kill characters are the standard ! 185: (on printing terminals) # and @ symbols, ! 186: .(l ! 187: ~h ! 188: To: root kurt####bill ! 189: .)l ! 190: would change the initial recipients ! 191: .q "root kurt" ! 192: to ! 193: .q "root bill." ! 194: When you type a newline, ! 195: .i Mail ! 196: advances to the ! 197: .q "Subject:" ! 198: field, where the same rules apply. Another newline brings you to ! 199: the ! 200: .q "Cc:" ! 201: field, which may be edited in the same fashion. Another newline ! 202: brings you to the ! 203: .q "Bcc:" ! 204: ("blind" carbon copy) field, which follows the same rules as the "Cc:" ! 205: field. Another newline ! 206: leaves you appending text to the end of your message. You can use ! 207: ~p to print the current text of the header fields and the body ! 208: of the message. ! 209: .pp ! 210: To effect a temporary escape to the shell, the escape ! 211: .(l ! 212: ~!command ! 213: .)l ! 214: is used, which executes ! 215: .i command ! 216: and returns you to mailing mode without altering the text of ! 217: your message. If you wish, instead, to filter the body of your ! 218: message through a shell command, then you can use ! 219: .(l ! 220: ~|command ! 221: .)l ! 222: which pipes your message through the command and uses the output ! 223: as the new text of your message. If the command produces no output, ! 224: .i Mail ! 225: assumes that something is amiss and retains the old version ! 226: of your message. A frequently-used filter is the command ! 227: .i fmt , ! 228: designed to format outgoing mail. ! 229: .pp ! 230: To effect a temporary escape to ! 231: .i Mail ! 232: command mode instead, you can use the ! 233: .(l ! 234: ~:\fIMail command\fP ! 235: .)l ! 236: escape. This is especially useful for retyping the message you are ! 237: replying to, using, for example: ! 238: .(l ! 239: ~:t ! 240: .)l ! 241: It is also useful for setting options and modifying aliases. ! 242: .pp ! 243: If you wish abort the current message, you can use the escape ! 244: .(l ! 245: ~q ! 246: .)l ! 247: This will terminate the current message and return you to the ! 248: shell (or \fIMail\fP if you were using the \fBmail\fP command). ! 249: If the \fBsave\fP option is set, the message will be copied ! 250: to the file ! 251: .q dead.letter ! 252: in your home directory. ! 253: .pp ! 254: If you wish (for some reason) to send a message that contains ! 255: a line beginning with a tilde, you must double it. Thus, for example, ! 256: .(l ! 257: ~~This line begins with a tilde. ! 258: .)l ! 259: sends the line ! 260: .(l ! 261: ~This line begins with a tilde. ! 262: .)l ! 263: .pp ! 264: Finally, the escape ! 265: .(l ! 266: ~? ! 267: .)l ! 268: prints out a brief summary of the available tilde escapes. ! 269: .pp ! 270: On some terminals (particularly ones with no lower case) ! 271: tilde's are difficult to type. ! 272: .i Mail ! 273: allows you to change the escape character with the ! 274: .q escape ! 275: option. For example, I set ! 276: .(l ! 277: set escape=] ! 278: .)l ! 279: and use a right bracket instead of a tilde. If I ever need to ! 280: send a line beginning with right bracket, I double it, just as for ~. ! 281: Changing the escape character removes the special meaning of ~. ! 282: .sh 2 "Network access" ! 283: .pp ! 284: This section describes how to send mail to people on other machines. ! 285: Recall that sending to a plain login name sends mail to that person ! 286: on your machine. If your machine is directly (or sometimes, even, ! 287: indirectly) connected to the Arpanet, you can send messages to people ! 288: on the Arpanet using a name of the form ! 289: .(l ! 290: [email protected] ! 291: .)l ! 292: where ! 293: .i name ! 294: is the login name of the person you're trying to reach, ! 295: .i host ! 296: is the name of the machine on the Arpanet, ! 297: and ! 298: .i domain ! 299: is the higher-level scope within which the hostname is known, e.g. EDU (for educational ! 300: institutions), COM (for commercial entities), GOV (for governmental agencies), ! 301: ARPA for many other things, BITNET or CSNET for those networks. ! 302: .pp ! 303: If your recipient logs in on a machine connected to yours by ! 304: UUCP (the Bell Laboratories supplied network that communicates ! 305: over telephone lines), sending mail can be a bit more complicated. ! 306: You must know the list of machines through which your message must ! 307: travel to arrive at his site. So, if his machine is directly connected ! 308: to yours, you can send mail to him using the syntax: ! 309: .(l ! 310: host!name ! 311: .)l ! 312: where, again, ! 313: .i host ! 314: is the name of the machine and ! 315: .i name ! 316: is the login name. ! 317: If your message must go through an intermediary machine first, you ! 318: must use the syntax: ! 319: .(l ! 320: intermediary!host!name ! 321: .)l ! 322: and so on. It is actually a feature of UUCP that the map of all ! 323: the systems in the network is not known anywhere (except where people ! 324: decide to write it down for convenience). Talk to your system administrator ! 325: about good ways to get places; the ! 326: .i uuname ! 327: command will tell you systems whose names are recognized, but not which ! 328: ones are frequently called or well-connected. ! 329: .pp ! 330: When you use the ! 331: .b reply ! 332: command to respond to a letter, there is a problem of figuring out the ! 333: names of the users in the ! 334: .q "To:" ! 335: and ! 336: .q "Cc:" ! 337: lists ! 338: .i "relative to the current machine" . ! 339: If the original letter was sent to you by someone on the local machine, ! 340: then this problem does not exist, but if the message came from a remote ! 341: machine, the problem must be dealt with. ! 342: .i Mail ! 343: uses a heuristic to build the correct name for each user relative ! 344: to the local machine. So, when you ! 345: .b reply ! 346: to remote mail, the names in the ! 347: .q "To:" ! 348: and ! 349: .q "Cc:" ! 350: lists may change somewhat. ! 351: .sh 2 "Special recipients" ! 352: .pp ! 353: As described previously, you can send mail to either user names or ! 354: .b alias ! 355: names. It is also possible to send messages directly to files or to ! 356: programs, using special conventions. If a recipient name has a ! 357: `/' in it or begins with a `+', it is assumed to be the ! 358: path name of a file into which ! 359: to send the message. If the file already exists, the message is ! 360: appended to the end of the file. If you want to name a file in ! 361: your current directory (ie, one for which a `/' would not usually ! 362: be needed) you can precede the name with `./' ! 363: So, to send mail to the file ! 364: .q memo ! 365: in the current directory, you can give the command: ! 366: .(l ! 367: % Mail ./memo ! 368: .)l ! 369: If the name begins with a `+,' it is expanded into the full path name ! 370: of the folder name in your folder directory. ! 371: This ability to send mail to files can be used for a variety of ! 372: purposes, such as maintaining a journal and keeping a record of ! 373: mail sent to a certain group of users. The second example can be ! 374: done automatically by including the full pathname of the record ! 375: file in the ! 376: .b alias ! 377: command for the group. Using our previous ! 378: .b alias ! 379: example, you might give the command: ! 380: .(l ! 381: alias project sam sally steve susan /usr/project/mail_record ! 382: .)l ! 383: Then, all mail sent to "project" would be saved on the file ! 384: .q /usr/project/mail_record ! 385: as well as being sent to the members of the project. This file ! 386: can be examined using ! 387: .i "Mail \-f" . ! 388: .pp ! 389: It is sometimes useful to send mail directly to a program, for ! 390: example one might write a project billboard program and want to access ! 391: it using ! 392: .i Mail . ! 393: To send messages to the billboard program, one can send mail ! 394: to the special name `|billboard' for example. ! 395: .i Mail ! 396: treats recipient names that begin with a `|' as a program to send ! 397: the mail to. An ! 398: .b alias ! 399: can be set up to reference a `|' prefaced name if desired. ! 400: .i Caveats : ! 401: the shell treats `|' specially, so it must be quoted on the command ! 402: line. Also, the `| program' must be presented as a single argument to ! 403: mail. The safest course is to surround the entire name with double ! 404: quotes. This also applies to usage in the ! 405: .b alias ! 406: command. For example, if we wanted to alias `rmsgs' to `rmsgs \-s' ! 407: we would need to say: ! 408: .(l ! 409: alias rmsgs "| rmsgs -s" ! 410: .)l
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.