使用者邮件信箱: mail
使用 wall, write 毕竟要等到使用者在在线才能够进行,有没有其他方式来联络啊? 不是说每个 Linux 主机上面的用户都具有一个 mailbox 吗? 我们可否寄信给使用者啊!呵呵!当然可以啊!我们可以寄、收 mailbox 内的信件呢! 一般来说, mailbox 都会放置在 /var/spool/mail 里面,一个账号一个 mailbox (文件)。 举例来说,我的 vbird1 就具有 /var/spool/mail/vbird1 这个 mailbox 喔!
那么我该如何寄出信件呢?就直接使用 mail 这个命令即可!这个命令的用法很简单的,直接这样下达:『 mail username@localhost -s "邮件标题" 』即可! 一般来说,如果是寄给本机上的使用者,基本上,连『 @localhost 』都不用写啦! 举例来说,我以 root 寄信给 vbird1
,信件标题是『 nice to meet you 』,则:
[root@www ~]# mail vbird1 -s "nice to meet you" Hello, D.M. Tsai Nice to meet you in the network. You are so nice. byebye! . <==这里很重要喔,结束时,最后一行输入小数点 . 即可! Cc: <==这里是所谓的『副本』,不需要寄给其他人,所以直接 [Enter] [root@www ~]# <==出现提示字符,表示输入完毕了! |
如此一来,你就已经寄出一封信给 vbird1 这位使用者啰,而且,该信件标题为: nice to meet you,信件内容就如同上面提到的。不过,你或许会觉得 mail 这个程序不好用~ 因为在信件编写的过程中,如果写错字而按下 Enter 进入次行,前一行的数据很难删除ㄟ! 那怎么办?没关系啦!我们使用数据流重导向啊!呵呵!利用那个小于的符号 ( < ) 就可以达到取代键盘输入的要求了。也就是说,你可以先用 vi 将信件内容编好, 然后再以 mail vbird1 -s "nice to meet
you" < filename 来将文件内容传输即可。
例题:
请将你的家目录下的环境变量文件 (~/.bashrc) 寄给自己!
答: mail -s "bashrc file content" vbird < ~/.bashrc
|
刚刚上面提到的是关于『寄信』的问题,那么如果是要收信呢?呵呵!同样的使用 mail 啊! 假设我以 vbird1 的身份登陆主机,然后输入 mail 后,会得到什么?
[vbird1@www ~]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/vbird1": 1 message 1 new >N 1 root@www.vbird.tsai Wed Mar 4 13:36 18/663 "nice to meet you" & <==这里可以输入很多的命令,如果要查阅,输入 ? 即可! |
在 mail 当中的提示字符是 & 符号喔,别搞错了~输入 mail 之后,我可以看到我有一封信件, 这封信件的前面那个 > 代表目前处理的信件,而在大于符号的左边那个 N 代表该封信件尚未读过, 如果我想要知道这个 mail 内部的命令有哪些,可以在 & 之后输入『 ? 』,就可以看到如下的画面:
& ? Mail Commands t <message list> type messages n goto and type next message e <message list> edit messages f <message list> give head lines of messages d <message list> delete messages s <message list> file append messages to file u <message list> undelete messages R <message list> reply to message senders r <message list> reply to message senders and all recipients pre <message list> make messages go back to /usr/spool/mail m <user list> mail to specific users q quit, saving unresolved messages in mbox x quit, do not remove system mailbox h print out active message headers ! shell escape cd [directory] chdir to directory or home if none given |
<message list> 指的是每封邮件的左边那个数字啦!而几个比较常见的命令是:
命令 | 意义 |
h | 列出信件标头;如果要查阅 40 封信件左右的信件标头,可以输入『 h 40 』 |
d | 删除后续接的信件号码,删除单封是『 d10 』,删除 20~40 封则为『 d20-40 』。 不过,这个动作要生效的话,必须要配合 q 这个命令才行(参考底下说明)! |
s | 将信件储存成文件。例如我要将第 5 封信件的内容存成 ~/mail.file:『s 5 ~/mail.file』 |
x | 或者输入 exit 都可以。这个是『不作任何动作离开 mail 程序』的意思。 不论你刚刚删除了什么信件,或者读过什么,使用 exit 都会直接离开 mail,所以刚刚进行的删除与阅读工作都会无效。 如果您只是查阅一下邮件而已的话,一般来说,建议使用这个离开啦!除非你真的要删除某些信件。 |
q | 相对于 exit 是不动作离开, q 则会进行两项动作: 1. 将刚刚删除的信件移出 mailbox 之外; 2. 将刚刚有阅读过的信件存入 ~/mbox ,且移出 mailbox 之外。鸟哥通常不很喜欢使用 q 离开, 因为,很容易忘记读过什么咚咚~导致信件给他移出 mailbox 说~ |
由于读过的信件若使用『 q 』来离开 mail 时,会将该信件移动到 ~/mbox 中,所以你可以这样想象: /var/spool/mail/vbird1 为 vbird1 的『新件匣』,而 /home/vbird1/mbox 则为『收件匣』的意思。 那如何读取 /home/vbird1/mbox 呢?就使用『mail -f /home/vbird1/mbox』即可。