标 题: UNIX 系统 MAIL 简介及使用 作 者: Antony@nckubbs (□ 清*都*山*水*郎 □) 电子邮递简介及使用的方法 编撰者: 林文能 □□□□□□□□□□□□□□□ □ UNIX 系统 MAIL 简介及使用□ □□□□□□□□□□□□□□□ 1-1 简介 目前在本校工作站装设的邮件工具程式有二,一个是标准 BSD UNIX 所提供的 MAIL 程式,一个是由 Dave Taylor 在 HP LAB 所发展的一 个叫作 ELM 的邮件工具程式,我们比较推荐初学者来使用 ELM ,因为 它是全萤幕式的,而且使用者介面也比较友善,几乎不须教导就可使用 了, 相对的话,标准的 UNIX MAIL 就比较简洁,而且若使用熟练的话 , 比起 ELM 更为方便。由於其较为标准,故在许多别的机器上皆有提 供此邮件工具程式,而不一定装有 ELM ,因此关於 ELM 请读者自行使 用, 有问题的话可洽本中心谘询室。 1-2 标准 UNIX MAIL 在本工作站上的 UNIX 叫做 SUNOS,为 BSD 版本中的一派,它所提 供的 MAIL 工具程式就叫作 MAIL,你可以在提示符号下,打入 MAIL 就 可启动它,MAIL程式提供有读信、写信、寄信、收信、转寄、储存和删 除信件的功能,这个 MAIL 程式可以在一般的 TTY 下执行,因此你可以 透过网路,TELNET 至本工作站,来使用 E-MAIL 服务。 1-2-1 启动 MAIL 系统   通常在你 LOGIN 进入系统後,如果你有新的信寄到,萤幕上有 显示一行讯息 "You have mail" 或 " You have new mail",这时 你只要打入 mail 就可以看看是谁寄信给你。如果目前并没有信寄 来,而你打入 mail 的话,系统则会告诉你: No mail for user"。 mail程式的操作通常在二个状态之下,一般寄信皆在 Shell 的命 令行模式下直接下达即可,而读信、转寄、删除、储存等,则在 mail 程式内的命令模式中下达 ( mail 在此模式时,会出现一提示符号, 准备接收你所下的命令,一般来讲系统的内定提示符号为 &)。 1-2-2 寄信 我们最先从寄一封信给自己开始,来学习如何操作 mail 工具 程式,要写一封信,首先我们必须知道收信人的地址,在电子邮递中, 这个地址叫做 E-MAIL ADDRESS 此地址,是由三部份所组成:(a) 收 信人姓名 (login name) (b) 收信人所在的机器名称 (hostname) (c) 收信人所在的网路区域名称 (domain name) (读者可以连想如 同在现实生活中的邮政糸统一般,如某某县市、什麽路、几号、某 某人等),其格式如下:   username@hostname.domainname 其读法为 : " 我要寄信给一个叫做 user-name 的人, 他住在叫做 hostname 的电脑上,那一台电脑是位於 domainname 这个区域内 " (注意: user-name 与 hostname 中间以'@'符号分隔,'@'读作 at, 而 hostname 与 domainname 则以句点"." 隔开)。  1-2-3 找出自己的 E-MAIL ADDRESS 首先我们先来找出你在此工作站的 E-MAIL ADDRESS 为何: 1. user-name: 此名称即为你 login 时,所输入的 login-name , 或者你也可以用 whoami 命令来查看系统认定的你 的称谓,例如: mail% whoami lin mail% 2. host-name: 此名称即你所在机器的名字,通常在 login 时,就 会有显示出来,另外你也可以用 hostname 命令来 查询,例如 : mail% hostname mail mail% 因此本工作站的名字恰好就叫做 mail 3. domain-name:此名称即为你所在的机器所在电脑网路的区域名 称,此名称可用 domainname 命令查询,例如 :  mail% domainname +ncku.edu.tw mail% 这表示本工作站是位於 ncku.edu.tw 这个domain 之内。( '+' 号可不管) 所以合起来之後,你的 E-MAIL 收信地址是 lin@mail.ncku.edu.tw 同样的,你也可以用上述同样的方法,教导你的朋友找出他自己的 E-MAIL ADDRESS。 1-2-4 寄信给自己 想要寄信给自己,只要在 Shell 下,键入下列命令即可 ( 假设你的 username 叫作 'lin' ) mail% mail% mail lin Subject: A test letter test test test . Cc: mail% 说明: 在这里,因为你是写信给同一台机器上的人 (自己) ,因此 @ 後面的部份便可省略,系统会认定你是要写信给一个在同一机器上 叫做 lin 的人,而不替你作转寄的工作,譬如你有问题要问本机的 root ,则打入 :   mail% mail root 此信的标题或主旨,输入标题然後按下 Enter 後就可打入信件的内 容,最後要结束信件本文时,於行首处打入句号 "." 做为信件的结 尾 , 此符号在 mail 程式中有此一特定的意义 ( 另一个方法是按 CTRL-D),接著 mail 又 出现 Cc: 的提示符号, 表示询问你是否要 顺便将此信寄给某人,若没有就打入 ENTER 即可,然後又回到Shell ,信件便寄出去了。若在写信途中, 临时想放弃, 可打二次 CTRL-C 退出 mail 程式。 1-2-5 寄信给别人   我们可以把 E-MAIL ADDRESS 想成如下的格式  user-name@host-name.domain-name => user-name@where 因此在上例中,我们如果是寄给同一机器上的 user,只要打 user- name 的部分即可 @where 部份便可省略,当然如果你要全部打也 可以,我们称这一种格式的 E-MAIL ADDRESS 叫做 FQDN(Full Q- ualify Domain Name),例如:写给自己的信,可下如下的命令   mail% mail lin@mail.ncku.edu.tw 这与如下的命令是同样的 mail% mail lin 而如果你所要送的信是要送往别的机器的话,就必须非用 FQDN 不可 ,这样 mail 才有办法替你转寄, 例如要写信给本校电算中心一台叫 做 dec6 的工作站上的 root ,就必须用如下的方式   mail% mail root@dec6.ncku.edu.tw 才能寄的到,如果@where的部分省略了,就变成寄给本机的 root 了。 1-2-6 读信   在1-2-4 中,当你把信寄出去後,我们便可以打 mail,命令来 读取信件,例如你可能会看到如下的萤幕: mail% mail Mail version SMI 4.0 Thu Oct 11 12:59:09 PDT 1990 Type ? for help. "/usr/spool/mail/lin": 1 message 1 new >N 1 lin Thu Sep 10 16:11 14/302 A testing letter & 这时我们称您进入了 mail 内的命令模式, 提示符号也由系统的 提示符号改为 mail 程式自己的提示符号,接下来,我们来讨论在图中 mail程式所显示的各项资料,首先第一行是 mail 程式的 版本序号与 发行日期,并提示使用者打入问号?可列出在此命令模式中, mail 程 式可提供的指令及其解释, 在第二行显示使用者用来存放收到之信件 的档案的全路径名,(Incoming mailbox),且在该档中, 原有一封信, 其状态是新寄到的。接下来的每一行则列出该 user 目前所收到的每 一封信(在此只有一封)的相关资料,依序为" 状态,信件编号,寄信人, 日期,信件标题" *状态栏位: 以不同的字元,表示不同的信件状况,指出信是新到'N', 尚未读取而过时的'U',而已读过的信件则无任何记号,在 一列寄来的信中,开头有'>'记号者,则表示目前命令所作 用的信件 (Active letter) *信件编号: 指示信件到达的次序编号 *寄信人 : 指出是谁在什麽地方 (FQDN) ,寄信给你 *时间 :□X信件寄出时的日期及时间 *大小 : 指出该信件的内容大小 (BYTE 数) *主题 : 指出该信的主题 2-2-7 选取欲读的信件 在列完所有的信後,mail 程式会出现它的提示符号,等待你下命令 给它。此时打入欲看的信件编号便可读取该信,举例如下: mail% mail Mail version SMI 4.0 Thu Oct 11 12:59:09 PDT 1990 Type ? for help. "/usr/spool/mail/lin 1 message 1 new >N 1 lin Thu Sep 10 16:11 14/302 A testing letter & 1 Message 1: From lin Thu Sep 10 16:11:18 1992 To: lin Subject: A testing letter test test test & 而如果欲读取的信,恰为目前作用的信件(有'>'符号者),则直 接按ENTER 即可(不必打信件编号)。   如果信件太长,无法一次在萤幕内颢示完,则 mail 会呼叫 more 程式来完全显示,因此在 more 中的功能在此便也可以用得上。 2-2-8 信件的内容   在 2-2-7 中,我们看到了刚刚寄给自己的信,除了,信件的内 容外,此信还包括了一些重要的讯息: From:显示寄信的 E-mail ADDRESS 如此可看出此信是谁在什麽 地方寄来的。 TO:即为你的收件人 E-mail ADDRESS Subject:此信的标题 2-2-9 储存删除与退出 mail 在 mail 的命令模式内,我们可以键入问号'?',来询问 mail 在此提供的命令有那些,以下是键入问号之後的结果: mail% mail Mail version SMI 4.0 Thu Oct 11 12:59:09 PDT 1990 Type ? for help. "/usr/spool/mail/lin": 1 message 1 new >N 1 lin Thu Sep 10 16:11 14/302 A testing letter & ? cd [directory] chdir to directory or home if none given d [message list] delete messages e [message list] edit messages f [message list] show from lines of messages h print out active message headers m [user list] mail to specific users n goto and type next message p [message list] print messages pre [message list] make messages go back to system mailbox q quit, saving unresolved messages in mbox r [message list] reply to sender (only) of messages R [message list] reply to sender and all recipients of message s [message list] file append messages to file t [message list] type messages (same as print) top [message list] show top lines of messages u [message list] undelete messages v [message list] edit messages with display editor w [message list] file append messages to file, without from line x quit, do not change system mailbox z [-] display next [previous] page of headers ! shell escape A [message list] consists of integers, ranges of same, or user names separated by spaces. If omitted, Mail uses the current message. &   在此,我们介绍三个最常用的命令:1. 储存(1-2-11),删除 (1-2-13) 和退出 mail (1-2-14) 1-2-10 信件的储存   在 mail 中,我们可以把看过的信存起来, 其储存方式有 3 种 (1) 存入 mail 程式内定之信箱 (mailbox) (2) 存成一般的档案 (3) 或是一个 folder, 其实这三者在 UNIX 底下皆为一般的档案, 只是对 mail 程式而言有不同的意义,而这三者的储存规则皆是用( APPEND) 的方式,因此你可以将你的信加以分类,如某某人寄来的信 摆在某个档,另外一个人寄来的信,存到另一个档,或者通通不管,将 所有信件丢入 mailbox 里面去,而你也可以用 folder 的方式来储 存信件,所谓一个 folder 其实也是一个 text 档,你可以把它 cat 出来看只不过它在储存时,会把 folder 档存放在有一个叫作 fol- der directory 的目录下, 亦即所有的 folder 档都存在 folder directory 里面,这个 directory 可以在" ~/.mailrc "内设定其 路径,使用 folder 的好处是 : 你可以不必每次都键入一长串的档 案路径名,你只要键入 folder name,你的信就自动存在你所指定的 folder directory 内的 folder 档中。 1-2-11 一般信件的储存 要将信件储存到档案中,请使用下列指令 & s [letter-number] [filename] 其中 letter-number 是指定所要被储存的信件编而 filename 是欲储存的档名,这二者皆可省略,当省略 letter-number 时,则以 有'>'符号,表示目前动作的信件来储存,当 filename 省略时,则内 定储存至根目录 ~/mbox 的信箱内。例如: & s 3 batman 把第 3 封信存入一个叫 batman 的档中,(如果 batman 档本不存 在,则 mail 程式会 creat 它,若已存在,则把3封信的内容附加至 原 batman 档的档尾) & s 把目前作用的信件存入 ~/mbox 档中。 & s 4 把第4封信存入 ~/mbox档中。 1-2-12 把信存入卷宗中 (folder) 1-2-12-1 folder directory 的设定 欲使用此方式来储存信件,必须先指定 folder 是要存放在 何处 (即决定卷宗目录, folder directory 的 path), 欲建立 folder directory ,有二个步骤: 首先 creat 一个目录在你的 Home directory ,例如你要的 folder directory 叫做 letters,便可如下 □ mail% mkdir ~/letters (建立 letters 子目录) 再来:使用 vi 来 edit ~/.mailrc 档案,以便设定 folder directory, 修改 "set folder" 这一栏的值,使成为: □ set folder = letters 如此便完成了 folder directory 的设定 1-2-12-2 把信存入 folder 现在我们可以启用 mail,把信件存於 folder 与存入一般档案 的指令都一样只不过 filename 部份不大一样,只需在 filename 前 加上一个加号'+'即可,让 mail 程式辨别这是要存入 folder去的 (此时的 filename 即为 folder name) 还是存成一般的档案。 例如: & s 3 + lin 或 & s + robin 便会分别存入 ~/letters/lin ~/letters/robin 这二个 folder 内 1-2-13 信件的删除与救回 要删除一封信,则在 mail 的提示符号下,使用命令 & d〔letter-number〕 例如,要删除第二封信,可用如下的方式 & d 2 若欲删除第一封到第三封信,则可下如下的命令 & d 1-3 若要杀掉全部的信,则可以使用 & d * 以上删除的动作只有在你选择 q(quit)命令真正退出之後才真正删 除,在尚未退出之前,你都可以将刚作过的 delete 作用取消。要取 消 delete 可用'U'命令 (undelete) ,如: & u〔letter-number〕 其使用方法与 d 相同,例如 & u * 可救回刚才全部的信件 1-2-14 退出 mail 要退出 mail 的命令模式,可打入'x'或'q',x 是指 exit 而 q 是指 quit ,两者的差别在於 x 完全不更动 mail 的任何状态,而 q 则使 mail 的状态改变 (如 deldete 信後,必须用 q 退回,才真 的删除掉。例如: & x 或 & q 皆可回到 UNIX 的 shell 1-2-15 信件的列印 在 mail 程式的提示符号下,我们可以将信件的内容转向给别 的程式处理,其形式为: |[letter-number] prog-name 其中 prog-name 为欲处理的程式名,letter-number 与前述的用法 相同,例如我们可将信件 pipe 到印表机来列印信件 &| 2 1pr 或 pipe 给别的程式如 wc &| wc 1-2-16 在 mail 内使用 shell 命令 我们可以在 mail 的提示符号内,执行 shell 的命令,例如 &! ls (ls) 或 &! csh 便可暂时离开 mail 程式,打入 exit 又回到 mail 程式内。 1-2-17 其他 mail 的命令 在 mail 中,还有许多的命令,在此简单的介绍其用法。 1. cd [目录名] 可在 mail 内改变工作目录,若不指定目 录名,则回到根目录。 2. e [letter-number] 编辑某一信的内容,使用的 editor 为 ex 3. f [letter-number] 显示信件从何而来。 4. h       列出所有的信件资讯 5. m EMAIL-ADDRESS   在命令模式内寄信。 6. n    显示下一封信 7. p [letter-nuber] 显示信件内容 8. pre [letter-number]保留指定的信件在系统的 incoming           mialbox,这在当你设定 mail 在读过 或储存信件後,自动将信件删除时,使 用此命令可使自动删除的功能不作用。 9. r [letter-num] 回信   10.R [letter-num] 跟上面相同, 只是如果当初是同时寄给 很多的人话,(在Cc: 内指定)用 R 回信 ,亦可将信回给这一些人,这在作 group 的讨论时,十分方便。 11.v [letter-num] 用 vi 来编辑信件 12.w [letter-num]file 只存信件内容到一个档案去。 13.z [-] 显示下一页〔前一页〕的信件标题,这            在当你查看 folder 或~/mbox 时很有 用,因为信件数量太多,你可以用此命令 显示其他的信件标题。 1-2-18 mail 的写作技巧   我们在这一节来讨论在 mail 当编辑信件时,如何插入另一封 信内容,或另一个外部档案,以及其他一系列常用的 ~ 指令。 1-2-18-1 mail 的编辑命令格式   所有在 mail 的编辑模式时,在行首键入 ~ ,(其中表示 编辑的命令),如欲插入信件可用 ~m,而欲插入外部档 案可用 ~r 。 另外其他还有指令如下:( '~' 念作 tilde),键入~? 可得此 help ~? -------------------- ~ ESCAPES ---------------------------- ~~ Quote a single tilde ~a,~A Autograph (insert 'sign' variable) ~b users Add users to Bcc list ~c users Add users to Cc list ~d Read in dead.letter file ~e Edit the message buffer ~m messages Read in messages, right-shifted by a tab ~f messages Read in messages, do not right-shift ~h Prompt for To list, Subject and Cc list ~p Print the message buffer ~q,~Q Quit, save letter in $HOME/dead.letter ~x Quit, do not save letter ~r file Read a file into the message buffer ~s subject Set subject ~t users Add users to To list ~v Invoke display editor on message ~w file Write message onto file ~. End of input ~? Print this message ~!command Run a shell command ~|command Pipe the message through the command ~:command Execute regular Mail command ----------------------------------------------------------- 1-2-18-2 插入信件   你经常有机会在回信时,必须引述对方所说的话,这时你可以 将对方的信件加入你的信件内容,其命令如下(在新的一行首键入)    ~m [letter-number]  (当在 reply 时,若 letter-number 不设,只设 ~m ,则会插入目 前正在 reply 的信件内容)例如: ~m 2 可插入第 2 封信之内容,在插入之後, mail 会显示下列讯息  Interpolating:2 (continue) 这时第二封信已插入了编辑区的缓冲区内,同时 mail 提示你继续 键入信件随後的内容,注意 : 因为信件是插入缓冲区内,故你目前 并看不到,我们可以打入 ~p 命令来显示目前整个编辑缓冲区的内 容。最後记得打逗号 '.' ,来结束信件的编辑 在你的终端机前,整个信件插入的程序如下: mail% mail Mail version SMI 4.0 Wed Jan 8 10:17:07 PST 1992 Type ? for help. "/usr/spool/mail/lin": 10 messages 2 unread 1 u431573@im.mgt.ncu.edu.tw Mon Jun 15 22:50 51/1974 Re: What is the twili ght 2 jou Tue Jun 16 17:15 21/547 setup problem? 3 s7731037 Fri Jun 26 14:49 23/534 Re: Mail Address problem 6 ncl Fri Aug 7 11:02 18/485 from ncl 7 s9771017 Fri Aug 7 11:13 28/700 Help ! U 8 zschen Mon Aug 10 17:59 37/841 proj 4 9 s8801030 Thu Aug 13 10:28 23/800 Is the network closed at 10 admin@supernet.ans.net Sat Aug 22 03:47 79/3760 SUPERNET INT'L &m root Subject: News Client for PC setup problems Dear Root: The following letters was came from my friends, Please help him ~m 2 Interpolating: 2 (continue) ~p ------- Message contains: To: root Subject: News Client for PC setup problem Dear Root: The following letters was came from my friends, Please help him > From jou Tue Jun 16 17:15:00 1992 > To: lin@mail.ncku.edu.tw > Subject: setup problem? > > Dear lin > When I setup the News Client on My pc. > The computer'error show "The packet driver is not load" > But I finish all the work about the setup step, > Please tell me why? > Thank You! > See YOU! > yohu hain ,Shu > 16/6/1993 pm:5:05:00 > (continue) Please help him Thanks . Cc: & 1-2-18-3 插入外部档案 如果你不善於使用 vi,在写信时,可能会觉得十分不方便,一 个解决的方法就是利用这边介绍的方法,先在你的 PC 上,用 PE2 或你常用的编辑器把信件内容打好,然後使用 ftp 把信件内容传上 工作站来,存成一个档,然後在编辑信件内容时,把该档叫进来,当作 信件内容寄出去。 欲使用上述的功能,请在写信时,键入下列的命令 ~r file-name 例如:假设由 PC 传上来的档其档名叫 text,则可用下面的命令来插入 ~r text 1-2-18-4 利用转向来把档案寄出 在上面的方法中,使用者尚须进入 mail 程式,在写信时来下 命令,在这里介绍另一个更简单的方式,就是利用转向的方式把档 案内容作为信件内容寄出,其命令格式如下: mail -s "This is the Subject" user@whereU 7 zschen Mon Aug 10 17:59 37/841 proj 4 8 s8801030 Thu Aug 13 10:28 23/800 Is the network closed at 9 admin@supernet.ans.net Sat Aug 22 03:47 79/3760 SUPERNET INT'L & folders hanling moers2 os_name relay ycy kckai@cc.nthu msc osname thanks &folders +msc (切换至 msc 卷宗) Held 10 messages in /usr/spool/mail/lin "+msc": 2 messages 2 new & h >N 1 msc@sun7.ncku.edu.tw Sat Mar 28 12:49 24/640 N 2 msc@sun7.ncku.edu.tw Sat Mar 28 12:49 24/640 & folder % (切换至系统设定的邮件信箱) "/home/user/lin/letters/msc" complete "/usr/spool/mail/lin": 9 messages 1 unread & h 1 u431573@im.mgt.ncu.edu.tw Mon Jun 15 22:50 51/1974 Re: What is the twil ight 2 jou Tue Jun 16 17:15 21/547 setup problem? 3 s7731037 Fri Jun 26 14:49 23/534 Re: Mail Address problem 4 jgl@sun8 Fri Jun 26 17:06 18/433 test from old mail 5 ncl Fri Aug 7 11:02 18/485 from ncl 6 s9771017 Fri Aug 7 11:13 28/700 Help ! >U 7 zschen Mon Aug 10 17:59 37/841 proj 4 8 s8801030 Thu Aug 13 10:28 23/800 Is the network closed at 9 admin@supernet.ans.net Sat Aug 22 03:47 79/3760 SUPERNET INT'L & 1-2-21 Cc: 的补充说明 许多 use 对信尾的 Cc: 提示常常感到困惑,在此我们对此做 个说明。 Cc (Carbon Copy 复写功能) 的主要用途是在信尾编辑结束後,询 问使用者此信是否要顺便寄送给其他人 (可以包括自己),如果是的 话,就把一串收信人的 E-MAIL Address 彼此以逗号 ','隔开,在此 输入,否则就直接按 Enter 即可,例如: Cc: user1@where1,user2@where2 或   Cc: 另外关於 Cc 还有一些细部的说明: 1. 寄信时,可将欲寄的内容拷背一份存成档案或 folder,其方法为 在 Cc: 提示下,键入档案的全路径名或 folder-name ,如 Cc : ~/text.doc ('~' 表示 Home directory) 或 Cc: +text.folder 注意: 若不是全路径名,则此时 mail 会把档名当作是欲寄送的 收信人姓名,而寄出去,然後被退回。 2. 欲寄给一群人时,可在 mail 的提示符号下指定,如: mail% mail user1@where1,user2@where2,user3@where3 亦可在 Cc 中指定其串列,各 user 之间须以逗号 ','分开,但两 者的差别为收信人使用 R 命令(不是r) 时,只会 reply 给在 Cc 中的收信人串列,而不会回信给在 shell 命令中指定的其他 收件人。 3. Bcc: 与 Cc: 的差别   上面提到 Cc: 是记录这一封同时也寄送给那些人,如果寄信 人不想让收信人知道他所收到的信,有那些人也收到的话,可以使 用 Bcc (Blind Carbon Copy) 来设定收件人串列,这可在编辑信 件时,加入~h 命令来修改。亦即 mail 程式会把 Cc 的讯息,连 同信件内容寄出 (而不会把 Bcc: 的讯息寄出)。 1-2-22 寄信给一群人 (group) 欲寄信给一群人时,除了上面 Cc 的补充说明方法外,亦可由下列 方式寄出。 首先用 vi 来编辑 ~/.mailrc 档案,然後加入下面这句话。 alias user1@where1,user2@where2,user3@where3 例如: alias ct lin@dec1 jou@mail yang@dec6 rlwu@mail (其中 ct 代表 lin@dec1 jou@mail yang@dec6 rlwu@mail 的别名) 以後如用 mail ct 即代表寄给 ct 所包括的那一群人。 若在 Cc: 中用 ct 即副本寄给 ct 所包括的那一群人。 相对的 Bcc: 亦可用别名来寄给一群人。 如果有任何问题请洽成功大学电算中心谘询室, 电话: 61010。 -- 寄信人: guest.bbs@hgluo.hust.edu.cn 标 题: ◇ elm 的使用方法 发信站: 华南理工大学 BBS木棉站 日 期: Thu Feb 20 13:13:08 1997 ┌————————————————————————————————————┐ │ 1. 读取信件: │ │ 当你读完该信件後,只要按 [i] 键就可以跳回到 ELM 主选 │ │ 单,继续选择下一封未阅读的信件. │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │2. 回信: │ │ 在Command (在 ELM 下命令的位置 ) 键入 r (reply)後,表示你要对目前光 │ │ 棒或箭号所在的信件作回信,此时命令区会出现下列的讯息 : │ │ │ │ ┌—————————————————————————————┐│ │ STEP 1 │Command: Reply to message Copy message? (y/n) ││ │ └—————————————————————————————┘│ │ (此时回答 y : 表示要加上前一封信件的内容) │ │ n : 则表示不加前一封信件的内容) │ │ │ │ 键入[y]选项之後 系统出现下列讯息: │ │ │ │ ( ELM 下命令的位置区 :) │ │ ┌—————————————————————————————┐│ │ STEP 2 │ Command: Reply to message To: xxxxxxx ││ │ │ Subject: Re:testing <------ 回信的标题 ││ │ │ Copies to: [输入其他人的位址] ││ │ │ (若只写给一个人,则按[Return]跳过) ││ │ └—————————————————————————————┘│ │ (xxxxxxx 是指回信的地址 ) │ │ │ │ 进入编辑器编辑你的信件,此时已经有前一封信的内容,你可以在任意 │ │ 删除/增减信件的内容 │ │ 编辑好你的信件後 , 先储存再离开编辑器. │ │ │ │ STEP 3 此时系统出现下列讯息 │ │ ┌—————————————————————————————┐│ │ │Please choose one of the following options by parentesized││ │ │ letter: _ ││ │ │e)dit message, edit h)eaders, s)end it ,or f)orget it. ││ │ │ ││ │ │这时你还有机会编辑信件 ,因为当你的信件送出去之後 ,反悔 ││ │ │就来不及了 !! ││ │ │键入 e [edit] -------> 重新编辑信件内容 ││ │ │ h [headers] -------> 重新编辑标头内容 ││ │ │ s [send] -------> 寄信 ││ │ │ f [forget] -------> 放弃寄信并跳回主选单 ││ │ │ ││ │ │当你确定要把这封信寄出去时 ,按 [s] (send it )选项即可!! ││ │ └—————————————————————————————┘│ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │3. 寄信 : 在Command (ELM 下命令的位置 ) 键入 m (mail a message) ,表示 │ │ 你要寄信 !! │ │ │ │ 当键入[m]後,系统出现下列讯息: │ │ STEP 1 │ │ ┌——————————————————————————————┐ │ │ │ Send the message to: 输入 友人的位址 │ │ │ │ (如 boy@china3.chpi.edu.tw) │ │ │ │ Subject of message : 输入信件标题 │ │ │ │ Copies to : 输入其他人的位址 │ │ │ │ (若没有则按 [RETRUN]跳过) │ │ │ └——————————————————————————————┘ │ │ 进入一个编辑环境(vi),接著就可以开始 │ │ 输入你信件的内容,写好信之後,先存档後跳离 编辑器 . │ │ │ │ STEP 2 此时系统出现下列讯息 │ │ ┌——————————————————————————————┐ │ │ │Please choose one of the following options by parentesized │ │ │ │ letter: _ │ │ │ │ e)dit message, edit h)eaders, s)end it ,or f)orget it. │ │ │ │ │ │ │ │同回信一样 ! 这时你还有机会编辑信件,因为当你的信件送出去之後│ │ │ │想要反悔是不可能的 ! (寄出去的信如泼出去的水!!) │ │ │ │此时键入 e [edit] -------> 重新编辑信件内容 │ │ │ │ h [headers] -------> 重新编辑标头内容 │ │ │ │ s [send] -------> 寄信 │ │ │ │ f [forget] -------> 放弃寄信并跳回主选单 │ │ │ │ │ │ │ │当你确定要把这封信寄出去时 ,按 [s] (send it )选项即可!! │ │ │ └——————————————————————————————┘ │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │4.删信 : │ │ 你只需要利用键盘的上下键移动 ELM 主选单上的光棒或箭号选取 │ │ [ 信件区 ] 的信件, 键入 [d] (delete), │ │ 信件的标头会有 "D" 符号,该信件将会在离开 elm 後被删除. │ │ 当然了! 在quit elm 时 系统会再一次的叮咛,询问你是否真的确 │ │ 定要删除信件!! │ │ * 键入 [u] (undelete mail) 则会去除被取消的记号│ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │5.储存信件到档案 : │ │ 在Command ( ELM 下命令的位置 ) 键入 [s] (save) 表示要将目前光棒或 │ │ 箭号,所指的信件,储存到一个指定的信件档案中. │ │ │ │ │ │ STEP 1 此时系统出现下列讯息: │ │ ┌——————————————————————————————┐ │ │ │ Command: Save to folder (Use '?' for help) │ │ │ │ Save message to: mailer-daemon <或键入你要的档名> │ │ │ └——————————————————————————————┘ │ │ mailer-daemon 为系统自订 ,你可以键入你想要的档名 │ │ │ │ STEP 2 当出现下列讯息时 表示附加成功 │ │ ┌—————————————————————┐ * 指的是信件编号 │ │ │ Message * appended to folder xxxxxxxx │ xx 指的是位址 │ │ └—————————————————————┘ │ │ 键入 [i] 即跳回 ELM 主选单 │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │6. option (初学者 & 专家 环境选项): │ │ 在 Command (ELM 下命令的位置 ) 键入 [o](option), 在本功能选项中有许│ │ 多重要的 │ │ 设定. │ │ │ │ │ │ 此时系统出现下列讯息: │ │ -- ELM Options Editor -- │ │ │ │ C)alendar file : /home/china16/users/student│ │ /cs82/cs82135/calendar │ │读信程式 -->D)isplay mail using : builtin+ │ │编辑信件的编辑器 -->E)ditor (primary) : /usr/local/bin/cvi │ │储存信件的路径 -->F)older directory : /home/china16/users/student│ │ /cs82/cs82135/Mail │ │排序方式 -->S)orting criteria : Reverse-Sent │ │送出的信件存入档案 -->O)utbound mail saved : =sent │ │印出信件的命令 -->P)rint mail using : /bin/cat %s | /bin/lp │ │你的姓名 -->Y)our full name : cs82135 │ │ V)isual Editor (v) : /bin/vi (v) │ │ │ │切换为箭头式(ON) ;光棒式(OFF): │ │ A)rrow cursor : OFF │ │主选单显示 --> M)enu display : ON │ │ │ │使用者等级 --> U)ser level : Expert User │ │ N)ames only : ON │ │ │ │ │ │ Select letter of option line, '>' to save, or 'i' to return to index.│ │ │ │ Command: <---- 命令输入区 │ │ ┌—————————————————————┐ │ │ │ 说明: │ │ │ │ 1. 键入每个选项字首,以编辑适当的值 │ │ │ │ 2. 键入 '>' 储存 │ │ │ │ 3. 键入 'i' 回到主选单 │ │ │ └—————————————————————┘ │ │ 值得一提的是 U)ser level 选项:共有三种等级 Beginning (初学者) │ │ Intermeditate (熟练者) , Expert (专家) . 建议是先从初学者模式学习 │ │ 一些基本的电子邮件传收基础, 等到你对系统了解後在往更高的等级发展. │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │7.辅助: │ │ 当你发现你不会用的指令时,别担心!! elm 辅助系统会给你必要的协助, │ │ 键入 [?] ,即进入ELM 辅助系统中 │ │ 此时系统出现下列讯息: │ │ ┌———————————————————————————————┐│ │ │ Press the key you want help for, '?' for a key list , ││ │ │ or '.' to exit help ││ │ │ Help for key: <---- 命令输入区 ││ │ │ = Display the current mesage ││ │ └———————————————————————————————┘│ │ 键入ELM 的指令区中不懂命令的字首,即可获得说明或者键入 '?'获得更多 │ │ 有关elm 系统指令的资讯. │ │ 若你想知道有关elm 其它资讯, 也可以用 man elm 来取得. │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │8.改变信件档: │ │ 当你的信件档信件太多时,可能造成你读信和选项的不方便. │ │ 此时你就可以使用改变信件档选项,换一个新的档案来接收信 │ │ 件,当然啦! 你想看以前的信件时,只要利用此选项改回来就好 │ │ 了. │ │ 在 Command (ELM 下命令的位置 ) 键入 [c] (change folder) │ │ │ │ 此时系统出现下列讯息: │ │ ┌——————————————————————————————┐ │ │ │ Command:Change folder (Use '?' for help) │ │ │ │ Change to which folder: <---- 命令输入区 │ │ │ └——————————————————————————————┘ │ │ 用法: 在[命令输入区]输入 " filename" 或者 " *" . 注意: "*"的功能类 │ │ 似DOS的万用字元. │ │ │ │ 例子: 若我在[命令输入区]输入 " *" ,则系统会自动列出folder目录中所有│ │ 的folder & files │ │ │ │ Folders which match '*' │ │ 信件档 --> aa ambrosia cccc mailer-daemon │ │ drafts: │ │ │ │ inbox: │ │ │ │ wastebasket: │ │ Change to which folder: 选上面任一项folder filename即可 │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │9.备份到信件档: │ │ 当你阅读的信件多了,就会遇到一些非常重要的信,而目前的信件档 │ │ 内又有一大堆杂信,有必要把重要信件备份到重要的信件档去,此时 │ │ Copy to 功能选项就有用了! 她能把信件档内单一信件备份到另一 │ │ 信件档中. │ │ │ │ 方法: │ │ 在 Command (ELM 下命令的位置 ) 键入 [C] (Copy) 表示要将 │ │ 目前光棒或 箭号所指的信件 储存到一个指定的信件档案中 . │ │ * 注意 : C (Copy to) 必须大写 │ │ │ │ 此时系统出现下列讯息: │ │ ┌————————————————————————————┐ │ │STEP 1 │ Command: Copy to folder (Use '?' for help) │ │ │ │ Copy message to: <---- 命令输入区 │ │ │ └————————————————————————————┘ │ │ 用法同第8项 │ │ │ │ 当此时系统出现下列讯息: │ │ ┌————————————————————————┐ │ │STEP 2 │ Message & appended to folder xxxxxxxxxxxxx │ │ │ └————————————————————————┘ │ │ 表示附加成功 !! & 表示信件编号 │ │ x 表示信件档路径 │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │10.编辑信件档: elm 允许你直接编辑信件档 │ │ 方法: 在 Command ( ELM 下命令的位置 ) 键入 [e] edit, │ └————————————————————————————————————┘ ┌————————————————————————————————————┐ │11.离开 ELM 系统: 在 Command ( ELM 下命令的位置 ) 键入 [q] (quit) │ │ │ │ 若你先前有设定删除信件,则此时会有下列讯息: │ │ ┌———————————————————————————————┐ │ │ │ Command: Quit Delete message? (y/n) │ │ │ └———————————————————————————————┘ │ │ 按 y 则删除有删除记号的信件 │ └————————————————————————————————————┘ 注. 另一种使用 ELM 的方法: 寄信 ┌————————————————————————————————————┐ │ 1. elm -s 信件标题 位址: 键入之後,会出现下列字: │ │ │ │ STEP 1 │ │ ┌——————————————————————┐ │ │ │ To: 位址 │ │ │ │ Subject of message: 信件标题 │ │ │ │ Copies to: 输入其他人的位址 │ │ │ │ (若只写给一个人,则按[Return]跳过)│ │ │ └——————————————————————┘ │ │ │ │ 你就会进入一个编辑环境(vi),接著就 │ │ 输入你信件的内容,写好信之後,存挡并跳离 vi. │ │ STEP 2 此时银幕会出现下列字: │ │ ┌———————————————————————————————┐ │ │ │ [Please chose one of the following options by parentesized │ │ │ │ letter: │ │ │ │ e)dit message,edit h)eaders,s)end it ,or f)orget it. │ │ │ │ 此时键入 e -------> 重新编辑信件内容 │ │ │ │ h -------> 重新编辑标头内容 │ │ │ │ s -------> 寄信 │ │ │ │ f -------> 放弃寄信并跳回主选单 │ │ │ └———————————————————————————————┘ │ │ 例如: │ │ 寄信给一个人时: │ │ ┌———————————————————————————————┐ │ │ │我现在要寄信给china3的cs82135同学.如下键入 │ │ │ │┌————————————————————————┐ │ │ │ ││ elm -s 信件标题 cs82135@china3.chpi.edu.tw │ │ │ │ │└————————————————————————┘ │ │ │ └———————————————————————————————┘ │ │ 寄信给多个人时: │ │ ┌———————————————————————————————┐ │ │ │ 若我要寄信给china3的cs82135 ,china16的cm81101,china19的app │ │ │ │ 则: │ │ │ │ ┌————————————————————————————┐│ │ │ │ │ elm -s 信件标题 cs82135@china3.chpi.edu.tw [Return]│││ │ │ │ └————————————————————————————┘│ │ │ │ 出现 │ │ │ │ To: cs82135@china3.chpi.edu.tw │ │ │ │ Subject: testing │ │ │ │ Copies to: 键入 cm81101@china16.chpi.edu.tw │ │ │ │ app@china19.chpi.edu.tw │ │ │ └———————————————————————————————┘ │ └————————————————————————————————————┘ 寄档案 ┌————————————————————————————————————┐ │ 2. elm -s 信件标题 位址 < 文件档 │ │ 功能:将已编辑好的文件或档案寄给友人 │ │ │ │ 例如: 我现在要寄个名为file的档案给 china3 的 cs82135.如下键入 │ │ ┌———————————————————————————┐ │ │ │ elm -s 信件标题 cs82135@china3.chpi.edu.tw < file │ │ │ └———————————————————————————┘ │ │ cs82135就会正确的收到档案 !! │ └————————————————————————————————————┘ 注:系统内定编辑器为 VI. ELM 的特殊功能 a.双挂号: ┌————————————————————————————————————┐ │ 若你想使用双挂号功能时,即在路径 /.elm 中的 elmhearders这个档案中 │ │ 加入下列: │ │ Return-Receipt-To:你的帐号 ( 如: cs82135@china16.chpi.edu.tw) │ └————————————————————————————————————┘ b. 签名档: ┌————————————————————————————————————┐ │ 想加入签名档,即在路径 /.elm 中的 elmrc这个档案中加入下列两行: │ │ ┌——————————————————————————┐ │ │ │ 本地 localsignature = /.elm/.localsignature │ │ │ │ 远地 remotesignature = /.elm/.remotesignature│ │ │ └——————————————————————————┘ │ │ 你可以把你喜欢的签名放在 .localsignature 和 .remotesignature 中. │ │ │ │ 注意:签名档不要超过六行,以免造成浪费资源,这是我们│ │ 应有的公德心,毕竟一封信的内容才是最重要的!! │ └————————————————————————————————————┘ elm中文FAQ(Frequently Asked Questions) Version: 0.1 Editor: ydtsay@csie.nctu.edu.tw /* 版权没有,喜欢就好 */ /* Any comments, please mail to ydtsay@csie.nctu.edu.tw */ 1. 如何使elm去读除了"/usr/local/mail/"的mailbox呢? elm是根据"MAIL"这个环境变数来读取正确的mailbox,所以如果想 读取其它的mailbox只须type "setenv MAIL another-mailbox". 2. 如何存一个message而可以不用在save之後把它删除呢? 按 C)opy(大写的C)来存,而不要按 s)aving来存. 3. 如何造出签名档(signature)? 请在您的home directory造一个`.signature`的新档,编辑自己所 喜爱的signature,然後在edit .elm/elmrc这个file如下: # remote ".signature" file to append to appropriate messages... remotesignature = ~/.signature localsignature = ~/.signature sigdashes = ON 4. 如何同时寄信给一大群人? type "fastmail -b `cat recipients` -s "subject" messages" recipients里放收信人的 full email addresses. 5. 如何确定寄出的信件是否被对方收到? 请在$HOME/.elm底下造`elmheaders`这个file,并放进以下的内容: Return-Receipt-To: your email address 这样所寄出的信件被对方系统收到以後,就会送一封回函给您. 6. 如何设定自动回信(Autoreplying)? 执行`vacation`这个程式即可(这是一个interactive program), 取消自动回信只须把`$HOME/.forward`这个file拿掉即可. 7. include他人的信件时,系统设定是前面会加上">",如何改成其它的字元? 修改`$HOME/.elm/elmrc`中"prefix"这个变数即可. 8. 在reply信件时,可否加上一小段引言让收信人晓得原信是由发出的呢? 修改`$HOME/.elm/elmrc`,加上: # attribution string for replies ('%s' is the author of original # message) attribution = In our previous episode, %s said: 9. 如何造出/使用"alias"? 9.1 User Aliases 编辑"$HOME/.elm/aliases.text"这个file,档案内容由三个部份 组成: aliasname = user real name = email address e.g. # Mail aliases for Tsay Yuh Dean sycheng = Cheng Hsiao Yang = sycheng@netnews.ntu.edu.tw ching = Li Ching = u8125012@cc.nctu.edu.tw 9.2 Group Aliases 编辑"$HOME/.elm/aliases.text"这个file,档案内容由三个部份 组成: aliasname = group name = email addresses (以","分隔) e.g. ta = TAs of CSIE = skhuang, chenjl, cmwang, jjyang 9.3 Installing New Aliases 当"$HOME/.elm/aliases.text"这个file编辑完成之後,请 下"newalias"来安装它. 9.4 Using Aliases 在elm的主功能表底下按 a)lias, 然後再按 m)ail to alias 即可. 10. 习惯使用"mail"的我,是否能把".mailrc"转成".elm/aliases.text", 然後改用"elm"而不必重建alias呢? 有的,提供您以下的程式: An awk Script for Translating Aliases from a Berkeley Mail .mailrc File to an Elm .elm/aliases.text File BEGIN { print "# Elm .elm/aliases.text file, from a .mailrc file..." print "" } next_line == 1 { next_line = 0; group = "" for (i = 1; i <= NF; i++) { if (i == NF && $i == "\\") sep = "" else sep = ", " if ($i == "\\") { group = sprintf("%s,", group) next_line = 1; } else if (length(group) > 0) group = sprintf("%s%s%s", group, sep, $i); else group = $i; } print "\t" group } $1 ~ /[Aa]lias | [Gg]roup/ { if ( NF == 3) print $2 " = user alias = " $3; else { group = "" for (i = 3; i <= NF; i++) { if (i == NF && $i == "\\") sep = "" else sep = ", " if ($i == "\\") { group = sprintf("%s,", group) next_line = 1; } else if (length(group) > 0) group = sprintf("%s%s%s", group, sep, $i); else group = $i; } print $2 " = group alias = " group; } } -- Yuh-Dean Tsay ( 蔡 育 典 ) -------------------------- Email: ydtsay@csie.nctu.edu.tw Phone: 886-035-712121 ext:3707,3708,3709(office) 3745454545(lab) 886-08-8322997(home) ------------------------------------------------ === == === == === == === == === == === == === == === == === == === == === == 发信人: Olies@phoenix (吉尔菲艾斯), 信区: Unix 标 题: Re: ELM 问题 发信站: 交大资工凤凰城资讯站 (Sep 24 19:39:57 1993) 转信站: phoenix dragon cis_nctu ==> 在 soonly 的文章内提到 ... : : 各位网友: : : 最近刚知道有ELM 这东西,好奇之下试了一试,可是原来在MAIL下可以 : 显示中文的,到了ELM 下却无法显示,我该如何做才能显示中文?另外那里 : 可以找到ELM 的USER GUIDE? : : SOONLY 你可以在ELM中,将display mode 由内建改为 more ,方法进入ELM,再按 "o" 之後就按照它的提示去修改。若你的shell为tcsh,则set 你的环境变数 setenv LC_CTYPE iso_8859_1 即可,因为ELM有支援8 bits === == === == === == === == === == === == === == === == === == === == === == 发信人: u8114524@cc.nctu.edu.tw (), 信区: Unix 标 题: Re: elm and joe 发信站: 交大资工天龙新闻社 (Dec 29 21:47:03 1993) 转信站: bbsnews dragon cis_nctu Jason Lien (u7912060@cc.nctu.edu.tw) wrote: : 我在elm下用joe编辑一封信,信会寄出去,可是收信人却没办法看到信的 : 内容。如果我把ediotr改程vi的话,就没问题。请问要如何更改joe才能使 : 信件的内容让收信人才能看的到。 使用 joe 时,信件的最後一列要额外加一列空白,就可以了。 === == === == === == === == === == === == === == === == === == === == === == 发信人: junlin@cis_nctu (陈俊麟), 信区: Unix 标 题: Re: Where get the elm guide 发信站: 交大资科系_BBS (Nov 6 14:31:12 1993) 转信站: cis_nctu ==>[Author]: "daniel" on board 'Unix' > 发信站: 交大资工天龙新闻社 (Nov 2 11:32:08 1993) > > : I need elm guide for study. Where I can get it? > dsinc.dsi.com:/elm/elm.ps.tar.Z 嗨, CCCA 有一份 mirror, 在 /packages/mail/elm 下. 我想这对 TANET 使用者会方便一点. J.L. Chen === == === == === == === == === == === == === == === == === == === == === == 发信人: daniel@info4.csie.nctu.edu.tw (Shung-I You), 信区: Unix 标 题: Re: 有关 elm ????? 发信站: 交大资工 News Server (Wed Mar 2 12:03:14 1994) 转信站: daniel info4 news.csie bbsgate bbsnews dragon cis_nctu 樱木花道 (Fucc@nctu_csie_bbs) wrote: : 我在看完 elm 的信後,不小心按错,把所有的信放入了 received ...:~~~ : 有没有办法再 load 回来 ???? elm -f received === == === == === == === == === == === == === == === == === == === == === == 发信人: u7913039@cc.nctu.edu.tw (Jackie Yeh), 信区: Unix 标 题: [Q]elm problem 发信站: 交大资工天龙新闻社 (Nov 26 20:42:36 1993) 转信站: bbsnews dragon cis_nctu 当我在elm □寄信出去的时後,总会多收到一封信,抬头为: (Whenever I send a e-mail in elm, I always received one more mail subjected : ) Returned mail:Service unaviliable 内容的一部份为: (Part of the mail are:) ----- Transcript of session follows ----- Cannot exec '/bin/sh' errno=13 554 "|/usr/ucb/vacation u7913039"... Service unavailable ----- Unsent message follows ----- Return-Path: Received: from ccsun33.cc.nctu.edu.tw by cc.nctu.edu.tw (4.1/SMI-4.1) (以下略) (skiped) 请问我是不是那□设定错了? (Would you tell me what's wrong with my set-up in elm?) === == === == === == === == === == === == === == === == === == === == === == 发信人: skhuang@csie.nctu.edu.tw (Shih-Kun Huang), 信区: Unix 标 题: Re: [Q]elm problem 发信站: 交大资工天龙新闻社 (Nov 26 23:40:55 1993) 转信站: bbsnews dragon cis_nctu It's because CC disable "/bin/sh" in sendmail.cf to solve the recent sendmail security hole. You can't use any command sequence for pipe or redirection in your .forward. It's not your problem but the changing of CC 's sendmail configuration. Before the sendmail patch released and CC enabling /bin/sh function for sendmail, you can't use vacation any more. === == === == === == === == === == === == === == === == === == === == === == 发信人: sycheng@csie.nctu.edu.tw (Hsiao-Yang Cheng), 信区: Unix 标 题: Re: [Q]elm problem 发信站: 交大资工天龙新闻社 (Nov 27 01:16:45 1993) 转信站: bbsnews dragon cis_nctu Elm has a good utility like "vacation", but it won't use pipe. Please man "autoreply" for detail. The disadvantage is that system should run a daemon "arepdaemon" in advance (in rc ?!). === == === == === == === == === == === == === == === == === == === == === == 发信人: ming@cis_nctu (郑宗明), 信区: Unix 标 题: Re: ELM 2.4? 发信站: 交大资科系_BBS (Nov 4 05:45:40 1993) 转信站: cis_nctu ==>[Author]: "Martin" on board 'Unix' > 发信站: 交大资工凤凰城资讯站 (Nov 2 19:00:27 1993) > > 请问 elm 2.4 可否使用中文标题(Subject)? elm2.3pl11 可以吗? ^^^^^^^^^^^^^^^^^^^^^!! > 谢谢! > -- > Name : 黄俊杰(Jyun4-jieh2 Huang2) > E-mail: u8213006@cc.nctu.edu.tw > 交大电信系八六级B班 若从 source code 下手的话, 答案是 [可以], 交大资科计中的 Sun workstations 上的 "cissunXX:/usr/local/bin/elm" 就是修改过的, 使 use 不必做什麽设定, 中文自然可用. 要修改的地方也不是很多, 在 elm source directory 的 src/builtin.c src/curses.c src/in_utils.c 这三个档案. 以下就以 [ELM 2.4 PL23] 做示□: (PS: 若有不当修改的地方, 请让我也知道.) (1)********* src/builtin.c *************************************************** 在 function "int next_line(....)" 的尾端: ................ } else if(isprint(*iptr & 0xff)) { ------------------------------------> 这列改为 "} else {" 将 if statement 拿掉. *optr++ = *iptr++; chars_output++; --ilen; /------------ 这段全数删除 -------------------------------------------\ | } else { | | if(chars_output + 2 <= width) { | | *optr++ = '^'; | | *optr++ = (*iptr == '\177' ? '?' : (*iptr&0177) + 'A' - 1); | | iptr++; --ilen; | | chars_output += 2; | | } else { | | break; | | } | \---------------------------------------------------------------------/ } } *optr = '\0'; *inputptr = iptr; *inputlenptr = ilen; *outputlenptr = chars_output; return(ret_val); } (2)******* src/curses.c *************************************************** 在 function "Writechar(ch)" 的 "#ifdef ASCII_CTYPE" 的地方: ...................... else { /* <-------------------------------- 加上这个 comment #ifdef ASCII_CTYPE if(!isascii(ch) || !isprint(ch)) #else if(!isprint(ch)) #endif */ <-------------------------------- 加上这个 comment /------------ 再加上这一段 -----------------------------------\ | if ((ch < 0x07) || ((ch >= 0x10) && (ch < 0x1b)) || | | ((ch > 0x1b) && (ch < 0x20))) | \------------------------------------------------------------ ch = '?'; if (_col == COLUMNS - 1) { putchar(ch); if (!_automargin || _eatnewlineglitch) { putchar('\r'); putchar('\n'); ...................... (3)******* src/in_utils.c **************************************************** 将这个程式内的仅有的两个 "Writechar('\007');" 以下面的 codes 取代: /---------------------------------------------------------\ | ch &= 0x00ff; | | if ((ch < 0x07) || ((ch >= 0x10) && (ch < 0x20))) | | Writechar('\007'); | | else { | | escaped = OFF; | | Writechar(ch); | | string[iindex++] = ch; | | } | \---------------------------------------------------------/ ============================== END ========================================== -- T.M. Jeng === == === == === == === == === == === == === == === == === == === == === == 发信人: skhuang@csie.nctu.edu.tw (Shih-Kun Huang), 信区: Unix 标 题: Re: ELM 2.4? 发信站: 交大资工天龙新闻社 (Nov 5 21:56:26 1993) 转信站: bbsnews dragon cis_nctu 郑宗 (ming@cis_nctu) wrote: : ==>[Author]: "Martin" on board 'Unix' : > 发信站: 交大资工凤凰城资讯站 (Nov 2 19:00:27 1993) : > : > 请问 elm 2.4 可否使用中文标题(Subject)? elm2.3pl11 可以吗? : ^^^^^^^^^^^^^^^^^^^^^!! : 若从 source code 下手的话, 答案是 [可以], 交大资科计中的 : Sun workstations 上的 "cissunXX:/usr/local/bin/elm" : 就是修改过的, 使 use 不必做什麽设定, 中文自然可用. Since you are using SUN and elm2.4, why not only add the following lines in the source of "main()" function: #include .. main() { setlocale(LC_CTYPE,"iso_8859_1"); ..... } Then chars in the range 0x20 - 0xFE is printable by isprint test. Since no BIG5 in the range of 0-0x20, isprint test won't lost. === == === == === == === == === == === == === == === == === == === == === == 发信人: sycheng@csie.nctu.edu.tw (Hsiao-Yang Cheng), 信区: Unix 标 题: Re: ELM 2.4? 发信站: 交大资工天龙新闻社 (Nov 7 12:04:15 1993) 转信站: bbsnews dragon cis_nctu ming@cis_nctu wrote: > My original method can work on different platforms of some unix vendors. > But "setlocale(LC_CTYPE,"iso_8859_1");" is an easy and nice approach on ^^^^^^^^^^^ 只要针对不同的 OS 设对此参数即可, 用不著改 source 那麽大费周章. 这样出 新版时也能轻易的处理. LOCALE function, 几乎所有 unix 都有 support. > Sun workstations. Thanks for your information. === == === == === == === == === == === == === == === == === == === == === == -- 红 尘 有 爱 □□□□□□□□□□□□□□□□□□□□□□□□□□ □□ 美 丽 的 梦 □□ □ 留 下 美 丽 的 忧 伤 □□ □□ □人 间 天 上 、 代 代 相 传 □□ □□□□□□□□□□□□□□□□□□□□□□□□□□ -- ☆ [Origin: ◎椰林风情◎] [From: woju.g1.ntu.edu.tw ] [Login: **] [Post: **]