ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产aⅴ精品一区二区三区黄,国内成人精品,国产视频第一区http://www.aygfsteel.com/ThinkingTalking/category/22680.htmlFollow my heart!zh-cnSun, 22 Aug 2010 12:18:07 GMTSun, 22 Aug 2010 12:18:07 GMT60ubuntu9.10升çñ”Qt版本åˆ?.6的方æ³?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2010/07/12/325900.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Mon, 12 Jul 2010 11:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2010/07/12/325900.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/325900.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2010/07/12/325900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/325900.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/325900.html</trackback:ping><description><![CDATA[https://launchpad.net/~mapopa/+archive/qt4.6<br /> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/325900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2010-07-12 19:16 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2010/07/12/325900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu下SVN服务器的安装å?qi¨¢ng)ä‹É用xinetd˜q›è¡Œ½Ž¡ç†http://www.aygfsteel.com/ThinkingTalking/archive/2010/04/21/319022.htmlDavid.KoDavid.KoWed, 21 Apr 2010 12:55:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2010/04/21/319022.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/319022.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2010/04/21/319022.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/319022.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/319022.html # apt-get install subversion
# apt-get install xinetd
2.配置
#svnadmin create /home/project1Repo
#gedit /home/project1Repo/conf/svnserve.conf
使下面的三项配置生效åQ?br /> anon-access = read
auth-access = write
password-db = passwd
æ·ÕdŠ ç”¨æˆ·å?qi¨¢ng)密码ï¼?x¨¬)
#gedit /home/project1Repo/conf/passwd
æ·ÕdŠ ™å¹ç›®:
#svn import -m "clean kernel" /home/hufsh/programs/android-kernel file:///home/project1Repo
3.xinetd
#gedit /ect/xinetd.conf
service svn
{
    disable = no
    port = 3690
    socket_type = stream
    protocol = tcp
    wait = no
    user = hufsh
    server = /usr/local/bin/svnserve
    server_args = -i -r /home/svn

}

#/etc/init.d/xinetd restart
启动:
#svnserve -d -r /home/ --listen-host 192.168.1.100
停止:
#killall svnserve


假设你必™åÀL·»åŠ äº†ä¸€ä¸ªç‰¹æ€§è‡³ä¸€ä¸ªé¡¹ç›®ï¼Œä¸”è¿™ä¸ªé¡¹ç›®æ˜¯å—ç‰ˆæœ¬æŽ§åˆ¶çš„åQŒä½ å·®ä¸å¤šéœ€è¦å®Œæˆå¦‚下几个步骤:(x¨¬)

  1. 使用SVN checkout或者SVN switch从这个项目的trunk获得一个新的工作拷贝(branchåQ?/div>
  2. 使用SVN切换è‡Ïx–°çš„branch
  3. 完成新特性的开发(当然åQŒè¦åšèƒö够的‹¹‹è¯•åQŒåŒ…括在开始编码前åQ?/div>
  4. ä¸€æ—¦è¿™ä¸ªç‰¹æ€§å®ŒæˆåÆˆä¸”ç¨³å®šï¼ˆå·²æäº¤ï¼‰åQŒåƈ¾lè¿‡ä½ çš„同事们确认,切换至trunk
  5. åˆåÆˆä½ çš„åˆ†æ”¯è‡³ä½ çš„å·¥ä½œæ‹·è´ï¼ˆtrunkåQ‰ï¼Œòq¶ä¸”解决一¾pÕdˆ—的冲½H?/div>
  6. 重新‹‚€(g¨¨)查合òq¶åŽçš„代ç ?/div>
  7. 如果可能的话åQŒéº»çƒ¦ä½ çš„同事对你所¾~–写、更改的代码˜q›è¡Œä¸€‹Æ¡å¤æŸ¥ï¼ˆreviewåQ?/div>
  8. æäº¤åˆåÆˆåŽçš„å·¥ä½œæ‹¯‚´è‡³trunk
  9. 如果某些部çÖv需要特ŒDŠçš„环境åQˆç”ŸæˆçŽ¯å¢ƒç­‰½{‰ï¼‰åQŒè¯·æ›´æ–°ç›¸å…³çš„tag至你刚刚提交到trunk的修订版æœ?/div>
  10. 使用SVN update部çÖv至相关环å¢?/div>



David.Ko 2010-04-21 20:55 发表评论
]]>
linux下淘宝安全控仉™—®é¢?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/21/295912.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Mon, 21 Sep 2009 13:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/21/295912.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/295912.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/21/295912.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/295912.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/295912.html</trackback:ping><description><![CDATA[我的环境åQšubuntu9.04 firefox3.0.14<br /> <br /> 下蝲压羃包http://blog.alipay.com/wp-content/2008/10/aliedit.tar.gz<br /> 解压åQštar -zxvf aliedit.tar.gz<br /> 验证MD5:md5sum aliedit.tar.gz<br /> 复制到指定目å½?cp aliedit.so aliedit.xpt ~/.mozilla/plugins<br /> 重启firefox.<br /> OK!<br /> <br /> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/295912.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2009-09-21 21:17 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/21/295912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu多媒体问题解å†?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/20/295749.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Sun, 20 Sep 2009 06:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/20/295749.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/295749.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/20/295749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/295749.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/295749.html</trackback:ping><description><![CDATA[1、mp3ä¹Þq :<br /> Rhythmbox播放mp3时有时会(x¨¬)æœ‰äØ•ç å‡ºçŽŽÍ¼Œæ­¤æ—¶å¯ä»¥cd到mp3所在的文äšg夹,使用下面的命令解å†?<br /> mid3iconv -e GBK *.mp3<br /> 2、mplayer Error:<br /> 报错信息: could not open required directshow codec drvc.dll<br /> 解决步骤:<br /> 到http://www.mplayerhq.hu/MPlayer/releases/codecs/下蝲all-20071007.tar.bz2包,解压到usr/lib/codecs目录ä¸?br /> # find /usr/lib -name drvc*<br /> /usr/lib/codecs/drvc.so<br /> # ldd /usr/lib/codecs/drvc.so<br /> libstdc++.so.5 => not found<br /> ˜q™æ ·å¯ä»¥çœ‹å‡º, libstdc++.so.5需要安è£?br /> # apt-get install libstdc++5<br /> <br /> PS:通过修改配置文äšg可以优化mplayer,命ä×o(h¨´)如下:<br /> <pre>sudo cp /etc/mplayer/mplayer.conf /etc/mplayer/mplayer.conf_backup<br /> sudo gedit /etc/mplayer/mplayer.conf<br /> 如果觉得界面不好看,可以使用SMplayeråQŒå®ƒæ˜¯mplayer的前台图形界面,åŸÞZºŽQt4åQ?br /> sudo apt-get install smplayer<br /> <br /> </pre> <br /> <br /> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/295749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2009-09-20 14:55 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2009/09/20/295749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bash的内部命ä»?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156794.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Mon, 29 Oct 2007 14:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156794.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/156794.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156794.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/156794.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/156794.html</trackback:ping><description><![CDATA[     摘要:   <a href='http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156794.html'>阅读全文</a><img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/156794.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2007-10-29 22:17 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156794.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>˜qè¡ŒShell½E‹åºçš„æ–¹æ³?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156793.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Mon, 29 Oct 2007 14:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156793.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/156793.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/156793.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/156793.html</trackback:ping><description><![CDATA[˜qè¡ŒShell½E‹åºçš„æ–¹æ³? <p>  用户可以用ä“Q何编辑程序来¾~–写Shell½E‹åºã€‚因为Shell½E‹åºæ˜¯è§£é‡Šæ‰§è¡Œçš„åQŒæ‰€ä»¥ä¸éœ€è¦ç¼–译成目的½E‹åºã€‚按照Shell¾~–程的惯例,以bashä¸ÞZ¾‹åQŒç¨‹åºçš„½W¬ä¸€è¡Œä¸€èˆ¬äØ“(f¨´)“#åQ?bin/bash”åQŒå…¶ä¸?# 表示该行是注释,叹号 åQ?告诉Shell˜qè¡Œå¹å·ä¹‹åŽçš„å‘½ä»¤åÆˆç”¨æ–‡æ¡£çš„å…¶ä½™éƒ¨åˆ†ä½œäØ“(f¨´)输入åQŒä¹Ÿž®±æ˜¯˜qè¡Œ/bin/bashòq¶è®©/bin/bashåŽÀL‰§è¡ŒShell½E‹åºçš„内宏V€?/p> <p>  执行Shell½E‹åºçš„æ–¹æ³•有3¿Uã€?/p> <p>  1åQŽsh Shell½E‹åºæ–‡äšgå?/p> <p>  ˜q™ç§æ–ÒŽ(gu¨©)³•çš„å‘½ä»¤æ ¼å¼äØ“(f¨´)åQ?/p> <p>  bash Shell½E‹åºæ–‡äšgå?/p> <p>  ˜q™å®žé™…上是调用一个新的bash命ä×o(h¨´)解释½E‹åºåQŒè€ŒæŠŠShell½E‹åºæ–‡äšg名作为参æ•îC¼ é€’给它。新启动的Shellž®†åŽ»è¯ÀLŒ‡å®šçš„æ–‡äšgåQŒå¯æ‰§è¡Œæ–‡äšg中列出的命ä×o(h¨´)åQŒå½“所有的命ä×o(h¨´)都执行完后结束。该æ–ÒŽ(gu¨©)³•的优ç‚ÒŽ(gu¨©)˜¯å¯ä»¥åˆ©ç”¨Shell调试功能ã€?/p> <p>  2åQŽsh</p> <p>  格式为:(x¨¬)</p> <p>  bash< Shell½E‹åºå?/p> <p>  ˜q™ç§æ–¹å¼ž®±æ˜¯åˆ©ç”¨è¾“入重定向,使Shell命ä×o(h¨´)解释½E‹åºçš„输入取自指定的½E‹åºæ–‡äšgã€?/p> <p>  3åQŽç”¨chmod命ä×o(h¨´)使Shell½E‹åºæˆäØ“(f¨´)可执行的</p> <p>  一个文件能否运行取决于该文档的内容本èín可执行且该文件具有执行权。对于Shell½E‹åºåQŒå½“用编辑器生成一个文件时åQŒç³»¾lŸèµ‹äºˆçš„许可权都æ˜?44(rw-r-r--)åQŒå› æ­¤ï¼Œå½“用户需要运行这个文件时åQŒåªéœ€è¦ç›´æŽ¥é”®å…¥æ–‡ä»¶åå›_¯ã€?/p> <p>  在这3¿Uè¿è¡ŒShell½E‹åºçš„æ–¹æ³•中åQŒæœ€å¥½æŒ‰ä¸‹é¢çš„æ–¹å¼é€‰æ‹©åQšå½“刚创å»ÞZ¸€ä¸ªShell½E‹åºåQŒå¯¹å®ƒçš„æ­£ç¡®æ€§è¿˜æ²¡æœ‰æŠŠæ¡æ—Óž¼Œåº”当使用½W¬ä¸€¿Uæ–¹å¼è¿›è¡Œè°ƒè¯•。当一个Shell½E‹åºå·²ç»è°ƒè¯•好时åQŒåº”使用½W¬ä¸‰¿Uæ–¹å¼æŠŠå®ƒå›ºå®šä¸‹æ¥ï¼Œä»¥åŽåªè¦é”®å…¥ç›¸åº”的文件名卛_¯åQŒåƈ可被另一个程序所调用ã€?/p> <p>  4åQŽbash½E‹åºçš„è°ƒè¯?/p> <p>  在编½E‹è¿‡½E‹ä¸­éš‘Ö…ä¼?x¨¬)出错,有的时候,调试½E‹åºæ¯”编写程序花费的旉™—´˜q˜è¦å¤šï¼ŒShell½E‹åºåŒæ ·å¦‚æ­¤ã€?/p> <p>  Shell½E‹åºçš„调试主要是利用bash命ä×o(h¨´)解释½E‹åºçš„选择™åV€‚调用bashçš„åŞ式是åQ?/p> <p>  bash -选择™å¹Shell½E‹åºæ–‡äšgå?/p> <p>  几个常用的选择™åÒŽ(gu¨©)˜¯åQ?/p> <p>  -e 如果一个命令失败就立即退出ã€?/p> <p>  -n è¯Õd…¥å‘½ä×o(h¨´)但是不执行它们ã€?/p> <p>  -u ¾|®æ¢æ—¶æŠŠæœªè®¾¾|®çš„变量看做出错ã€?/p> <p>  -v 当读入Shell输入行时把它们显½Cºå‡ºæ¥ã€?/p> <p>  -x 执行命ä×o(h¨´)时把命ä×o(h¨´)和它们的参数昄¡¤ºå‡ºæ¥ã€?/p> <p>  上面的所有选项也可以在Shell½E‹åºå†…部ç”?#8220;set -选择™å?#8221;çš„åŞ式引用,è€?#8220;set +选择™å?#8221;则将¼›æ­¢è¯¥é€‰æ‹©™å¹è“v作用。如果只惛_¯¹½E‹åºçš„æŸä¸€éƒ¨åˆ†ä½¿ç”¨æŸäº›é€‰æ‹©™åÒŽ(gu¨©)—¶åQŒåˆ™å¯ä»¥ž®†è¯¥éƒ¨åˆ†ç”¨ä¸Šé¢ä¸¤ä¸ªè¯­å¥åŒ…å›´è“v来ã€?/p> <p>  åQ?åQ‰æœª¾|®å˜é‡é€€å‡ºå’Œç«‹å³é€€å‡?/p> <p>  未置变量退出特性允许用户对所有变量进行检查,如果引用了一个未赋值的变量ž®Þq»ˆæ­¢Shell½E‹åºçš„æ‰§è¡Œã€‚Shell通常允许未置变量的ä‹É用,在这¿Uæƒ…况下åQŒå˜é‡çš„å€égØ“(f¨´)½Iºã€‚如果设¾|®äº†æœªç½®å˜é‡é€€å‡ºé€‰æ‹©™å¹ï¼Œåˆ™ä¸€æ—¦ä‹É用了未置变量ž®±æ˜¾½Cºé”™è¯¯ä¿¡æ¯ï¼Œòq¶ç»ˆæ­¢ç¨‹åºçš„˜qè¡Œã€‚未¾|®å˜é‡é€€å‡ºé€‰æ‹©™å¹äØ“(f¨´)-uã€?/p> <p>  当Shell˜qè¡Œæ—Óž¼Œè‹¥é‡åˆîC¸å­˜åœ¨æˆ–不可执行的命ä×o(h¨´)、重定向å¤ÞpÓ|或命令非正常¾l“束½{‰æƒ…冉|—¶åQŒå¦‚果未¾lé‡æ–°å®šå‘,该出错信息会(x¨¬)昄¡¤ºåœ¨ç»ˆç«¯å±òq•上åQŒè€ŒShell½E‹åºä»å°†¾l§ç®‹æ‰§è¡Œã€‚要惛_œ¨é”™è¯¯å‘生时迫使Shell½E‹åºç«‹å³¾l“束åQŒå¯ä»¥ä‹Éç”?e选项ž®†Shell½E‹åºçš„æ‰§è¡Œç«‹å³ç»ˆæ­¢ã€?/p> <p>  åQ?åQ‰Shell½E‹åºçš„è·Ÿít?/p> <p>  调试Shell½E‹åºçš„主要方法是利用Shell命ä×o(h¨´)解释½E‹åºçš?væˆ?x选项来跟ítªç¨‹åºçš„æ‰§è¡Œã€?v选择™å¹ä‹ÉShell在执行程序的˜q‡ç¨‹ä¸­ï¼ŒæŠŠå®ƒè¯Õd…¥çš„æ¯ä¸€ä¸ªå‘½ä»¤è¡Œéƒ½æ˜¾½Cºå‡ºæ¥ï¼Œè€?x选择™å¹ä‹ÉShell在执行程序的˜q‡ç¨‹ä¸­æŠŠå®ƒæ‰§è¡Œçš„æ¯ä¸€ä¸ªå‘½ä»¤åœ¨è¡Œé¦–用一ä¸?加上命ä×o(h¨´)名显½Cºå‡ºæ¥ã€‚åÆˆæŠŠæ¯ä¸€ä¸ªå˜é‡å’Œè¯¥å˜é‡æ‰€å–çš„å€ég¹Ÿæ˜„¡¤ºå‡ºæ¥ã€‚因此,它们的主要区别在于:(x¨¬)在执行命令行之前æ—?våQŒåˆ™æ˜„¡¤ºå‡ºå‘½ä»¤è¡Œçš„原始内容,而有-v时则昄¡¤ºå‡ºç»˜q‡æ›¿æ¢åŽçš„命令行的内宏V€?/p> <p>  除了使用Shellçš?vå’?x选择™å¹ä»¥å¤–,˜q˜å¯ä»¥åœ¨Shell½E‹åºå†…部采取一些辅助调试的措施。例如,可以在Shell½E‹åºçš„一些关键地方ä‹É用echo命ä×o(h¨´)把必要的信息昄¡¤ºå‡ºæ¥åQŒå®ƒçš„作用相当于C语言中的printf语句åQŒè¿™æ ·å°±å¯ä»¥çŸ¥é“½E‹åº˜qè¡ŒåˆîC»€ä¹ˆåœ°æ–¹åŠ(qi¨¢ng)½E‹åºç›®å‰çš„状态ã€?/p> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/156793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2007-10-29 22:16 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Shell½E‹åºè®¾è®¡çš„æµ½E‹æŽ§åˆ?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156791.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Mon, 29 Oct 2007 14:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156791.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/156791.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/156791.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/156791.html</trackback:ping><description><![CDATA[和其他高¾U§ç¨‹åºè®¾è®¡è¯­­a€ä¸€æ øP¼ŒShell提供了用来控制程序执行流½E‹çš„命ä×o(h¨´)åQŒåŒ…括条件分支和循环¾l“æž„åQŒç”¨æˆ·å¯ä»¥ç”¨˜q™äº›å‘½ä×o(h¨´)创徏非常复杂的程序ã€? <p>  与传¾lŸè¯­­a€ä¸åŒçš„æ˜¯åQŒShell用于指定条äšg值的不是布尔˜qç®—式,而是命ä×o(h¨´)和字丌Ӏ?/p> <p>  1åQŽæµ‹è¯•命ä»?/p> <p>  test命ä×o(h¨´)用于‹‚€(g¨¨)查某个条件是否成立,它可以进行数倹{€å­—½W¦å’Œæ–‡äšg3个方面的‹¹‹è¯•åQŒå…¶‹¹‹è¯•½W¦å’Œç›¸åº”的功能分别如下ã€?/p> <p>  åQ?åQ‰æ•°å€¼æµ‹è¯•:(x¨¬)</p> <p>  -eq ½{‰äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  -ne 不等于则为真ã€?/p> <p>  -gt å¤§äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  -ge 大于½{‰äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  -lt ž®äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  -le ž®äºŽ½{‰äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  åQ?åQ‰å­—串测试:(x¨¬)</p> <p>  = ½{‰äºŽåˆ™äØ“(f¨´)真ã€?/p> <p>  != 不相½{‰åˆ™ä¸ºçœŸã€?/p> <p>  -z字串 字串长度伪则为真ã€?/p> <p>  -n字串 å­—ä¸²é•¿åº¦ä¸ä¼ªåˆ™äØ“(f¨´)真ã€?/p> <p>  åQ?åQ‰æ–‡ä»¶æµ‹è¯•:(x¨¬)</p> <p>  -eæ–‡äšgå?如果文äšgå­˜åœ¨åˆ™äØ“(f¨´)真ã€?/p> <p>  -ræ–‡äšgå?如果文äšg存在且可è¯Õdˆ™ä¸ºçœŸã€?/p> <p>  -wæ–‡äšgå?如果文äšg存在且可写则为真ã€?/p> <p>  -xæ–‡äšgå?如果文äšgå­˜åœ¨ä¸”å¯æ‰§è¡Œåˆ™äØ“(f¨´)真ã€?/p> <p>  -sæ–‡äšgå?如果文äšg存在且至ž®‘有一个字½W¦åˆ™ä¸ºçœŸã€?/p> <p>  -dæ–‡äšgå?如果文äšgå­˜åœ¨ä¸”äØ“(f¨´)ç›®å½•åˆ™äØ“(f¨´)真ã€?/p> <p>  -fæ–‡äšgå?如果文äšgå­˜åœ¨ä¸”äØ“(f¨´)普通文件则为真ã€?/p> <p>  -cæ–‡äšgå?如果文äšgå­˜åœ¨ä¸”äØ“(f¨´)字符型特ŒDŠæ–‡ä»¶åˆ™ä¸ºçœŸã€?/p> <p>  -bæ–‡äšgå?如果文äšgå­˜åœ¨ä¸”äØ“(f¨´)块特ŒDŠæ–‡ä»¶åˆ™ä¸ºçœŸã€?/p> <p>  另外åQŒLinux˜q˜æä¾›äº†ä¸Žï¼ˆåQï¼‰ã€æˆ–åQ?oåQ‰ã€éžåQ?aåQ‰ä¸‰ä¸ªé€»è¾‘操作½W¦ï¼Œç”¨äºŽž®†æµ‹è¯•条件连接è“væ¥ï¼Œå…¶ä¼˜å…ˆé¡ºåºäØ“(f¨´)åQšï¼æœ€é«˜ï¼Œ-a‹Æ¡ä¹‹åQ?o最低ã€?/p> <p>  同时åQŒbash也能完成½Ž€å•çš„½Ž—术˜qç®—åQŒæ ¼å¼å¦‚下:(x¨¬)</p> <p>  $[expression]</p> <p>  例如åQ?/p> <p>  var1=2</p> <p>  var2=$[var1*10+1]</p> <p>  则var2çš„å€égØ“(f¨´)21ã€?/p> <p>  2åQŽif条äšg语句</p> <p>  Shell½E‹åºä¸­çš„æ¡äšg分支是通过if条äšg语句来实现的åQŒå…¶ä¸€èˆ¬æ ¼å¼äØ“(f¨´)åQ?/p> <p>  if 条äšg命ä×o(h¨´)ä¸?/p> <p>  then</p> <p>  条äšg为真时的命ä×o(h¨´)ä¸?/p> <p>  else</p> <p>  条äšg为假时的命ä×o(h¨´)ä¸?/p> <p>  fi</p> <p>  3åQŽfor循环</p> <p>  for循环对一个变量的可能的值都执行一个命令序列。赋¾l™å˜é‡çš„几个数值既可以在程序内以数值列表的形式提供åQŒä¹Ÿå¯ä»¥åœ¨ç¨‹åºä»¥å¤–以位置参数的åŞ式提供。forå¾ªçŽ¯çš„ä¸€èˆ¬æ ¼å¼äØ“(f¨´)åQ?/p> <p>  for变量å?   [in数值列表]</p> <p>  do</p> <p>  若干个命令行</p> <p>  done</p> <p>  变量名可以是用户选择的ä“Q何字ä¸ÔŒ¼Œå¦‚果变量名是varåQŒåˆ™åœ¨in之后¾l™å‡ºçš„æ•°å€¼å°†™åºåºæ›¿æ¢å¾ªçޝ命ä×o(h¨´)列表中的$var。如果省略了inåQŒåˆ™å˜é‡var的取值将是位¾|®å‚数。对变量的每一个可能的赋值都ž®†æ‰§è¡Œdoå’Œdone之间的命令列表ã€?/p> <p>  4åQŽwhileå’Œuntil循环</p> <p>  whileå’Œuntil命ä×o(h¨´)都是用命令的˜q”回状态值来控制循环的。Whileå¾ªçŽ¯çš„ä¸€èˆ¬æ ¼å¼äØ“(f¨´)åQ?/p> <p>  while</p> <p>  若干个命令行1</p> <p>  do</p> <p>  若干个命令行2</p> <p>  done</p> <p>  只要whileçš?#8220;若干个命令行1”中最后一个命令的˜q”å›žçŠ¶æ€äØ“(f¨´)真,while循环ž®Þq‘ô¾l­æ‰§è¡Œdo...done之间çš?#8220;若干个命令行2”ã€?/p> <p>  until命ä×o(h¨´)是另一¿Uåó@环结构,它和while命ä×o(h¨´)ç›æ€¼¼åQŒå…¶æ ¼å¼å¦‚下åQ?/p> <p>  until</p> <p>   若干个命令行1</p> <p>  do</p> <p>   若干个命令行2</p> <p>  done</p> <p>  until循环和while循环的区别在于:(x¨¬)whileå¾ªçŽ¯åœ¨æ¡ä»¶äØ“(f¨´)真时¾l§ç®‹æ‰§è¡Œå¾ªçޝåQŒè€Œuntilåˆ™æ˜¯åœ¨æ¡ä»¶äØ“(f¨´)假时¾l§ç®‹æ‰§è¡Œå¾ªçޝã€?/p> <p>  Shell˜q˜æä¾›äº†trueå’Œfalse两条命ä×o(h¨´)用于创徏无限循环¾l“æž„åQŒå®ƒä»¬çš„˜q”回状态分别是æ€ÖMØ“(f¨´)0或æ€ÖMØ“(f¨´)é?ã€?/p> <p>  5åQŽcase条äšg选择</p> <p>  if条äšg语句用于在两个选项中选定一™å¹ï¼Œè€Œcase条äšg选择为用æˆähä¾›äº†æ ÒŽ(gu¨©)®å­—串或变量的å€ég»Žå¤šä¸ªé€‰é¡¹ä¸­é€‰æ‹©ä¸€™å¹çš„æ–ÒŽ(gu¨©)³•åQŒå…¶æ ¼å¼å¦‚下åQ?/p> <p>  case string in</p> <p>  exp-1)</p> <p>  若干个命令行1</p> <p>  åQ›ï¼›</p> <p>  exp-2)</p> <p>   若干个命令行2</p> <p>  åQ›ï¼›</p> <p>  ……</p> <p>  *)</p> <p>  其他命ä×o(h¨´)è¡?/p> <p>  esac</p> <p>  Shell通过计算字串stringçš„å€û|¼Œž®†å…¶¾l“果依次和运½Ž—式exp-1, exp-2½{‰è¿›è¡Œæ¯”较,直到扑ֈ°ä¸€ä¸ªåŒ¹é…çš„˜qç®—å¼äØ“(f¨´)止。如果找åˆîCº†åŒšw…™å¹ï¼Œåˆ™æ‰§è¡Œå®ƒä¸‹é¢çš„命令直到遇åˆîC¸€å¯¹åˆ†å?åQ›ï¼›)为止ã€?/p> <p>  在case˜qç®—式中也可以ä‹É用Shell的通配½W¦ï¼ˆ“*”ã€?#8220;åQ?#8221;ã€?#8220;[ ]”åQ‰ã€‚通常ç”?* ä½œäØ“(f¨´)case命ä×o(h¨´)的最后运½Ž—式以便在前面找不到ä»ÖM½•相应的匹配项时执è¡?#8220;其他命ä×o(h¨´)è¡?#8221;的命令ã€?/p> <p>  6åQŽæ— æ¡äšg控制语句breakå’Œcontinue</p> <p>  break用于立即¾lˆæ­¢å½“前循环的执行,而contiune用于不执行åó@环中后面的语句而立卛_¼€å§‹ä¸‹ä¸€ä¸ªåó@环的执行。这两个语句只有攑֜¨doå’Œdone之间才有效ã€?/p> <p>  7åQŽå‡½æ•°å®šä¹?/p> <p>  在Shell中还可以定义函数。函数实际上也是ç”Þp‹¥òq²æ¡Shell命ä×o(h¨´)¾l„成的,因此它与Shell½E‹åºå½¢å¼ä¸Šæ˜¯ç›æ€¼¼çš„,不同的是它不是一个单独的˜q›ç¨‹åQŒè€Œæ˜¯Shell½E‹åºçš„一部分。函数定义的基本格式为:(x¨¬)</p> <p>  functionname</p> <p>  {</p> <p>   若干命ä×o(h¨´)è¡?/p> <p>  }</p> <p>ã€€ã€€è°ƒç”¨å‡½æ•°çš„æ ¼å¼äØ“(f¨´)åQ?/p> <p>  functionname param1 param2…</p> <p>  Shell函数可以完成某些例行的工作,而且˜q˜å¯ä»¥æœ‰è‡ªå·±çš„退出状态,因此函数也可以作为if, while½{‰æŽ§åˆ¶ç»“构的条äšgã€?/p> <p>  在函数定义时不用带参数说明,但在调用函数时可以带有参敎ͼŒæ­¤æ—¶Shellž®†æŠŠ˜q™äº›å‚数分别赋予相应的位¾|®å‚æ•?1, $2, ...å?*ã€?/p> <p>  8åQŽå‘½ä»¤åˆ†¾l?/p> <p>  在Shell中有两种命ä×o(h¨´)分组的方法:(x¨¬)()å’Œ{}。前者当Shell执行()中的命ä×o(h¨´)时将再创å»ÞZ¸€ä¸ªæ–°çš„子˜q›ç¨‹åQŒç„¶åŽè¿™ä¸ªå­˜q›ç¨‹åŽÀL‰§è¡Œåœ†æ‹¬å¼§ä¸­çš„命ä×o(h¨´)。当用户在执行某个命令时不想让命令运行时对状态集合(如位¾|®å‚数、环境变量、当前工作目录等åQ‰çš„æ”¹å˜å½±å“åˆîC¸‹é¢è¯­å¥çš„æ‰§è¡Œæ—Óž¼Œž®±åº”该把˜q™äº›å‘½ä×o(h¨´)攑֜¨åœ†æ‹¬å¼§ä¸­åQŒè¿™æ ·å°±èƒ½ä¿è¯æ‰€æœ‰çš„æ”¹å˜åªå¯¹å­è¿›½E‹äñ”生媄响,而父˜q›ç¨‹ä¸å—ä»ÖM½•òq²æ‰°ã€‚{}用于ž®†é¡ºåºæ‰§è¡Œçš„命ä×o(h¨´)的输出结果用于另一个命令的输入åQˆç®¡é“方式)。当我们要真正ä‹É用圆括弧和花括弧æ—Óž¼ˆå¦‚计½Ž—运½Ž—式的优先顺序)åQŒåˆ™éœ€è¦åœ¨å…¶å‰é¢åŠ ä¸Šè{义符åQˆ\åQ‰ä»¥ä¾¿è®©Shell知道它们不是用于命ä×o(h¨´)执行的控制所用ã€?/p> <p>  9åQŽä¿¡å?/p> <p>  trap命ä×o(h¨´)用于在Shell½E‹åºä¸­æ•æ‰ä¿¡åøP¼Œä¹‹åŽå¯ä»¥æœ?¿Uååº”方式:(x¨¬)</p> <p>  åQ?åQ‰æ‰§è¡Œä¸€ŒD늨‹åºæ¥å¤„理˜q™ä¸€ä¿¡å·ã€?/p> <p>  åQ?åQ‰æŽ¥å—ä¿¡åïL(f¨¥ng)š„默认操作ã€?/p> <p>  åQ?åQ‰å¿½è§†è¿™ä¸€ä¿¡å·ã€?/p> <p>  trap对上é?¿Uæ–¹å¼æä¾›äº†3¿UåŸºæœ¬åŞ式:(x¨¬)</p> <p>  ½W¬ä¸€¿UåŞ式的trap命ä×o(h¨´)在Shell接收åˆîC¸Žsignal list清单中数值相同的信号æ—Óž¼Œž®†æ‰§è¡ŒåŒå¼•号中的命ä×o(h¨´)丌Ӏ?/p> <p>  trap 'commands' signal-list</p> <p>  trap "commands" signal-list</p> <p>  ä¸ÞZº†æ¢å¤ä¿¡å·çš„默认操作,使用½W¬äºŒ¿UåŞ式的trap命ä×o(h¨´)åQ?/p> <p>  trap signal-list</p> <p>  ½W¬ä¸‰¿UåŞ式的trap命ä×o(h¨´)允许忽略信号åQ?/p> <p>  trap " " signal-list</p> <p>  注意åQ?/p> <p>  åQ?åQ‰å¯¹ä¿¡å·11åQˆæ®µ˜qä¾‹åQ‰ä¸èƒ½æ•æ‰ï¼Œå› äØ“(f¨´)Shell本èín需要捕捉该信号去进行内存的转储ã€?/p> <p>  åQ?åQ‰åœ¨trap中可以定义对信号0çš„å¤„ç†ï¼ˆå®žé™…ä¸Šæ²¡æœ‰è¿™ä¸ªä¿¡åøP¼‰åQŒShell½E‹åºåœ¨å…¶¾lˆæ­¢åQˆå¦‚执行exit语句åQ‰æ—¶å‘出该信受÷€?/p> <p>  åQ?åQ‰åœ¨æ•捉到signal-list中指定的信号òq¶æ‰§è¡Œå®Œç›¸åº”的命令之后,如果˜q™äº›å‘½ä×o(h¨´)没有ž®†Shell½E‹åº¾lˆæ­¢çš„话åQŒShell½E‹åºž®†ç‘ô¾l­æ‰§è¡Œæ”¶åˆîC¿¡åäh—¶æ‰€æ‰§è¡Œçš„命令后面的命ä×o(h¨´)åQŒè¿™æ ·å°†å¾ˆå®¹æ˜“导致Shell½E‹åºæ— æ³•¾lˆæ­¢ã€?/p> <p>  另外åQŒåœ¨trap语句中,单引号和双引åäh˜¯ä¸åŒçš„。当Shell½E‹åº½W¬ä¸€‹Æ¡ç¢°åˆ°trap语句æ—Óž¼Œž®†æŠŠcommands中的命ä×o(h¨´)扫描一遍。此时若commands是用单引åäh‹¬èµäh¥çš„话åQŒé‚£ä¹ˆShell不会(x¨¬)对commands中的变量和命令进行替换,否则commands中的变量和命令将用当时具体的值来替换ã€?/p> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/156791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2007-10-29 22:13 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Shell¾~–程语法http://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156789.htmlDavid.KoDavid.KoMon, 29 Oct 2007 14:12:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156789.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/156789.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/10/29/156789.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/156789.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/156789.html   Shell基本语法

  像高¾U§ç¨‹åºè®¾è®¡è¯­­a€ä¸€æ øP¼ŒShell也提供说明和使用变量的功能。对Shell来讲åQŒæ‰€æœ‰å˜é‡çš„取值都是一个字ä¸ÔŒ¼ŒShell½E‹åºé‡‡ç”¨$varçš„åÅžå¼æ¥å¼•ç”¨åäØ“(f¨´)var的变量的倹{€?/p>

  Shell有以下几¿UåŸºæœ¬ç±»åž‹çš„变量ã€?/p>

  åQ?åQ‰Shell定义的环境变量:(x¨¬)

  Shell在开始执行时ž®±å·²¾lå®šä¹‰äº†ä¸€äº›å’Œ¾pȝ»Ÿçš„工作环境有关的变量åQŒç”¨æˆ¯‚¿˜å¯ä»¥é‡æ–°å®šä¹‰˜q™äº›å˜é‡åQŒå¸¸ç”¨çš„Shell环境变量有:(x¨¬)

  HOME 用于保存注册目录的完全èµ\径名ã€?/p>

  PATH 用于保存用冒号分隔的目录路径名,Shellž®†æŒ‰PATH变量中给出的™åºåºæœçƒ¦˜q™äº›ç›®å½•åQŒæ‰¾åˆ°çš„½W¬ä¸€ä¸ªä¸Žå‘½ä×o(h¨´)名称一致的可执行文件将被执行ã€?/p>

  TERM ¾lˆç«¯çš„类型ã€?/p>

  UID 当前用户的识别字åQŒå–值是由数位构成的字串ã€?/p>

  PWD 当前工作目录的绝对èµ\径名åQŒè¯¥å˜é‡çš„取值随cd命ä×o(h¨´)çš„ä‹É用而变化ã€?/p>

  PS1 ä¸ÀL½Cºç¬¦åQŒåœ¨ç‰ÒŽ(gu¨©)ƒç”¨æˆ·ä¸‹ï¼Œé»˜è®¤çš„主提示½W¦æ˜¯#åQŒåœ¨æ™®é€šç”¨æˆ·ä¸‹åQŒé»˜è®¤çš„ä¸ÀL½Cºç¬¦æ˜?ã€?/p>

  PS2 在Shell接收用户输入命ä×o(h¨´)的过½E‹ä¸­åQŒå¦‚果用户在输入行的末尾输入“\”然后回èžRåQŒæˆ–者当用户按回车键时Shell判断出用戯‚¾“入的命ä×o(h¨´)没有¾l“束æ—Óž¼Œž®±æ˜¾½Cø™¿™ä¸ªè¾…助提½Cºç¬¦åQŒæ½Cºç”¨æˆïL(f¨¥ng)‘ô¾l­è¾“入命令的其余部分åQŒé»˜è®¤çš„辅助提示½W¦æ˜¯>ã€?/p>

  åQ?åQ‰ç”¨æˆ·å®šä¹‰çš„变量åQ?/p>

  用户可以按照下面的语法规则定义自å·Þqš„变量åQ?/p>

  变量�变量�/p>

  要注意的一ç‚ÒŽ(gu¨©)˜¯åQŒåœ¨å®šä¹‰å˜é‡æ—Óž¼Œå˜é‡åå‰ä¸åº”加符å?åQŒåœ¨å¼•用变量的内å®ÒŽ(gu¨©)—¶åˆ™åº”在变量名前加$åQ›åœ¨¾l™å˜é‡èµ‹å€¼æ—¶åQŒç­‰å·ä¸¤è¾¹ä¸€å®šä¸èƒ½ç•™½Iºæ ¼åQŒè‹¥å˜é‡ä¸­æœ¬íw«å°±åŒ…含了空æ û|¼Œåˆ™æ•´ä¸ªå­—串都要用双引åäh‹¬èµäh¥ã€?/p>

  在编写Shell½E‹åºæ—Óž¼Œä¸ÞZº†ä½¿å˜é‡åå’Œå‘½ä»¤åç›¸åŒºåˆ«ï¼Œå»ø™®®æ‰€æœ‰çš„变量名都用大写字母来表示ã€?/p>

  有时我们惌™¦åœ¨è¯´æ˜Žä¸€ä¸ªå˜é‡åƈ对它讄¡½®ä¸ÞZ¸€ä¸ªç‰¹å®šå€¼åŽž®×ƒ¸åœ¨æ”¹å˜å®ƒçš„值时åQŒå¯ä»¥ç”¨ä¸‹é¢çš„命令来保证一个变量的只读性:(x¨¬)

  readonly 变量�/p>

  在ä“Q何时候,创徏的变量都只是当前Shell的局部变量,所以不能被Shell˜qè¡Œçš„其他命令或Shell½E‹åºæ‰€åˆ©ç”¨åQŒè€Œexport命ä×o(h¨´)可以ž®†ä¸€ä¸ªå±€éƒ¨å˜é‡æä¾›ç»™Shell执行的其他命令ä‹Éç”¨ï¼Œå…¶æ ¼å¼äØ“(f¨´)åQ?/p>

  export 变量�/p>

  也可以在¾l™å˜é‡èµ‹å€¼çš„同时使用export命ä×o(h¨´)åQ?/p>

  export 变量�变量�/p>

  使用export说明的变量,在Shell以后˜qè¡Œçš„æ‰€æœ‰å‘½ä»¤æˆ–½E‹åºä¸­éƒ½å¯ä»¥è®‰K—®åˆ°ã€?/p>

  åQ?åQ‰ä½¾|®å‚敎ͼš(x¨¬)

  位置参数是一¿Uåœ¨è°ƒç”¨Shell½E‹åºçš„命令行中按照各自的位置军_®šçš„变量,是在½E‹åºåä¹‹åŽè¾“入的参数。位¾|®å‚æ•îC¹‹é—´ç”¨½Iºæ ¼åˆ†éš”åQŒShell取第一个位¾|®å‚数替换程序文件中çš?1åQŒç¬¬äºŒä¸ªæ›¿æ¢$2åQŒä¾‹Æ¡ç±»æŽ¨ã€?0是一个特ŒDŠçš„变量åQŒå®ƒçš„内å®ÒŽ(gu¨©)˜¯å½“前˜q™ä¸ªShell½E‹åºçš„æ–‡ä»¶ååQŒæ‰€ä»¥ï¼Œ$0不是一个位¾|®å‚敎ͼŒåœ¨æ˜¾½Cºå½“前所有的位置参数时是不包æ‹?0çš„ã€?/p>

  åQ?åQ‰é¢„定义变量åQ?/p>

  预定义变量和环境变量相类ä¼û|¼Œä¹Ÿæ˜¯åœ¨Shell一开始时ž®±å®šä¹‰äº†çš„变量。所不同的是åQŒç”¨æˆ·åªèƒ½æ ¹æ®Shell的定义来使用˜q™äº›å˜é‡åQŒè€Œä¸èƒ½é‡å®šä¹‰å®ƒã€‚所有预定义变量都是ç”?½W¦å’Œå¦ä¸€ä¸ªç¬¦åïL(f¨¥ng)»„成的åQŒå¸¸ç”¨çš„Shell预定义变量有åQ?/p>

  $# 位置参数的数量�/p>

  $* 所有位¾|®å‚数的内容ã€?/p>

  $? 命ä×o(h¨´)执行后返回的状态ã€?/p>

  $$ 当前˜q›ç¨‹çš„è¿›½E‹å·ã€?/p>

  $! 后台˜qè¡Œçš„æœ€åŽä¸€ä¸ªè¿›½E‹å·ã€?/p>

  $0 当前执行的进½E‹åã€?/p>

  其中åQ??用于‹‚€(g¨¨)查上一个命令执行是否正¼‹®ã€‚(在Linux中,命ä×o(h¨´)é€€å‡ºçŠ¶æ€äØ“(f¨´)0表示该命令正¼‹®æ‰§è¡Œï¼Œä»ÖM½•é?倯D¡¨½Cºå‘½ä»¤å‡ºé”™ã€‚)

  $$变量最常见的用途是用做暂存文äšg的名字以保证暂存文äšg不会(x¨¬)重复ã€?/p>

  åQ?åQ‰å‚数置换的变量åQ?/p>

  Shell提供了参数置换功能以便用户可以根据不同的条äšg来给变量赋不同的倹{€‚参数置换的变量æœ?¿Uï¼Œ˜q™äº›å˜é‡é€šå¸¸ä¸ŽæŸä¸€ä¸ªä½¾|®å‚数相联系åQŒæ ¹æ®æŒ‡å®šçš„位置参数是否已经讄¡½®¾cÕd†³å®šå˜é‡çš„取å€û|¼Œå®ƒä»¬çš„语法和功能分别如下ã€?/p>

  a. 变量=${参数-word}åQšå¦‚果设¾|®äº†å‚æ•°åQŒåˆ™ç”¨å‚数的值置换变量的å€û|¼Œå¦åˆ™ç”¨word¾|®æ¢ã€‚即˜q™ç§å˜é‡çš„值等于某一个参数的å€û|¼Œå¦‚果该参数没有设¾|®ï¼Œåˆ™å˜é‡å°±½{‰äºŽword的倹{€?/p>

  b. 变量=${参数=word}åQšå¦‚果设¾|®äº†å‚æ•°åQŒåˆ™ç”¨å‚数的值置换变量的å€û|¼Œå¦åˆ™æŠŠå˜é‡è®¾¾|®æˆwordåQŒç„¶åŽå†ç”¨word替换参数的倹{€‚注意,位置参数不能用于˜q™ç§æ–¹å¼åQŒå› ä¸ºåœ¨Shell½E‹åºä¸­ä¸èƒ½äØ“(f¨´)位置参数赋倹{€?/p>

  c. 变量=${参数åQŸword}åQšå¦‚果设¾|®äº†å‚æ•°åQŒåˆ™ç”¨å‚数的值置换变量的å€û|¼Œå¦åˆ™ž®±æ˜¾½Cºwordòq¶ä»ŽShell中退出,如果省略了wordåQŒåˆ™æ˜„¡¤ºæ ‡å‡†ä¿¡æ¯ã€‚è¿™¿Uå˜é‡è¦æ±‚一定等于某一个参数的倹{€‚如果该参数没有讄¡½®åQŒå°±æ˜„¡¤ºä¸€ä¸ªä¿¡æ¯ï¼Œç„¶åŽé€€å‡ºï¼Œå› æ­¤˜q™ç§æ–¹å¼å¸¸ç”¨äºŽå‡ºé”™æŒ‡½Cºã€?/p>

  d. 变量=${参数+word}åQšå¦‚果设¾|®äº†å‚æ•°åQŒåˆ™ç”¨word¾|®æ¢å˜é‡åQŒå¦åˆ™ä¸˜q›è¡Œ¾|®æ¢ã€?/p>

  所有这4¿UåŞ式中çš?#8220;参数”既可以是位置参数åQŒä¹Ÿå¯ä»¥æ˜¯å¦ä¸€ä¸ªå˜é‡ï¼Œåªæ˜¯ç”¨ä½¾|®å‚数的情况比较多ã€?/p>

David.Ko 2007-10-29 22:12 发表评论
]]>
Emacs23 配置指南http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149537.htmlDavid.KoDavid.KoSat, 29 Sep 2007 04:49:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149537.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/149537.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149537.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/149537.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/149537.html 声明åQ?本äh在配¾|?emacs23 ˜q‡ç¨‹ä¸­å‚考了¾|‘上众多¾|‘友的帖子。因此,很多部分都不是原创,在此ž®±å½“作一个emacs23解决æ–ÒŽ(gu¨©)¡ˆæ”‰™›†å¸–把åQ^_^

首先有一个问题要说说åQŒå°±æ˜¯åœ¨ gnome环境下,使用utf8çš„local的时候,emacs无法调出scim/fcitx输入法,虽然emacs自带输入法,但是很不好用。据说这个问题是gnome的问题。因为我不用gnomeåQŒæ‰€ä»¥ä¹Ÿæ²¡æœ‰ä»€ä¹ˆè§£å†›_Šžæ³?
不过最新的cvs的代码已¾lè§£å†³äº†˜q™ä¸ªé—®é¢˜åQŒå¯ä»¥ä‹Éç”?xft 字体åQŒåœ¨ gnome 下面也能够调用输入法åQŒè®ºå›ä¸Šçš?karron 对这个问题很有研½IÓž¼Œž®×ƒ¸é‡å¤äº†ã€‚具体可以查找他的帖子。地址在这里:(x¨¬) http://forum.ubuntu.org.cn/viewtopic.php?t=29742

½W¬äºŒè¦è¯´çš„就是这个帖子有些日子了åQŒå½“时的链接ç”׃ºŽè®ºå›çš?ftp 需要用户名和密码后都不能直接用了,所以目前只¾l™å‡ºå…·ä½“çš?url(http方式ç™Õd½•的,ftp方式自己½Eä½œä¿®æ”¹å›_¯)åQŒå¯ä»¥ç›´æŽ¥ç™»å½•下载,关于用户名和密码的问题到下面的网™å‰|Ÿ¥çœ‹ã€?http://forum.ubuntu.org.cn/viewtopic.php?t=9685


1.下蝲源代�
可以用最新的 cvs版的åQŒè¿™æ ·éœ€è¦ä»Ž cvs上下代码了,此时需要做一些准备工ä½?
代码:
sudo apt-get install ssh cvs(˜q™ä¸ªæ˜¯äØ“(f¨´)了在 cvs上下载代码用çš?
sudo apt-get install texinfo(˜q™ä¸ªæ˜¯äØ“(f¨´)了方便后面的¾~–译manåŒ?

然后åˆ?cvs服务器上下蝲最新的代码åQŒå…ˆ˜q›å…¥è‡ªå·±å®¶ç›®å½?
代码:
export CVS_RSH="ssh"
cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/cvsroot/emacs co -r emacs-unicode-2 emacs

然后ž®Þq­‰å¾…把åQŒä¸€ŒD‰|—¶é—´åŽ cvsä¼?x¨¬)结束,此时会(x¨¬)在你的家目录下面徏立一个emacs的目录,˜q™ä¸ªç›®å½•下面ž®±æ˜¯ emacs çš?cvs代码åQŒæ•´ä¸ªå¤§æ¦‚需è¦?80M左右的文ä»Óž¼Œè€Œä¸”如果速度不是很好的话åQŒä¼š(x¨¬)很烦的ã€?
对于心急的朋友åQŒè¿˜æœ‰ä¸€ä¸ªåŠžæ³•ï¼Œæˆ‘å‡ ä¸ªæœˆå‰?cvs了一个源码,打包后放åˆ?å…׃ín ftp上了åQŒå¯ä»¥åˆ°é‚£é‡Œä¸‹è²ã€?
在目å½?"software/文本工具" 下面。需要注意的是这个包˜q˜ä¸æ”¯æŒ xft 字体åQŒå› æ­¤è¦ç”?xft 字体的朋友们最好还æ˜?cvsã€?
代码:
http://ftp.ubuntu.org.cn/software/文本工具/emacs23.tar.bz2


2.¾~–译
先配¾|®ä¸€äº›ç¼–译环境把åQŒå…·ä½“的我记不太请了
代码:
sudo apt-gt install build-essential
sudo apt-get build-dep emacs21
sudo apt-get install xserver-xorg-dev
sudo apt-get install xorg-dev
sudo apt-get install libncurses5
sudo apt-get install libncurses5-dev
(感谢å…Ïx³¨æœ¬å¸–的朋友们提供)

如果æ˜?cvs的包åQŒé‚£ä¹ˆç›´æŽ¥è¿›å…?家目录下面的emacs目录åQŒå¦‚果是从共äº?ftpä¸?wget 来的åQŒéœ€è¦å…ˆè§£åŽ‹

代码:
tar jxvf emacs23.tar.bz2

同样ä¼?x¨¬)生成一个emacs 的目录,然后用下面的æ–ÒŽ(gu¨©)³•¾~–译
代码:
./configure --prefix=/usr --with-x-toolkit=gtk
如果˜q™ä¸€æ­¥æŠ¥é”™ï¼Œå¾ˆå¯èƒ½æ˜¯å› äØ“(f¨´)没有安装 gtk2的开发包åQŒé‚£ž®±å®‰è£…吧ã€? sudo apt-get install libgtk2.0-dev)
同时æ ÒŽ(gu¨©)®æŠ¥é”™çš„æ½Cºæ¥å®‰è£…å…¶ä»–çš„dev包ã€?
make bootstrap
make info
sudo make install

如果提示¾~ºå°‘什么包åQŒé‚£ä¹ˆå°±å®‰è£…下相应的包把ã€?
¾~–译的过½E‹ä¸­å‡ºçŽ°äº†ä¸€äº›è­¦å‘Šï¼Œæˆ‘æ˜¯æ²¡æœ‰ç†ä¼š(x¨¬)他,呵呵åQŒåªè¦ä¸å‡ºçް error,问题ž®×ƒ¸å¤§ã€?
要是实在不想‹¹ªè´¹æ—‰™—´¾~–译也可以直接下载我上传的emacs23的包åQŒç›´æŽ¥è§£åŽ‹åŽ˜q›å…¥ç›®å½• sudo make install ž®±å¥½äº†ã€‚éƒé—øP¼Œä¸ä¼š(x¨¬)打deb包ã€?/span>
昨天刚刚打了一ä¸?deb包,‹¹‹è¯•了一下,˜q˜å¯ä»¥çš„说。需要的朋友们可以直接下è½?
代码:
http://ftp.ubuntu.org.cn/software/文本工具/emacs_23-1_i386.deb


æœ‰æœ‹å‹åæ˜ ä¸Šé¢çš„åœ°å€ä¸èƒ½ä¸‹è²äº†ï¼Œå› äØ“(f¨´)˜q™ä¸ªè‡ªä»Žæ‰”è¿›åŽÖM¹‹åŽæˆ‘一直没有管了,而且˜q™ä¸ªåŒ…很古老了åQŒè¿˜æ˜¯åœ¨æ²¡æœ‰ xft 支持的时候的东西,造成的不便先说声抱歉。后面我打了一个带äº?xft 支持的包åQŒå…·ä½“情å†ëŠœ‹ http://forum.ubuntu.org.cn/viewtopic.php?t=40210

3.初步配置
如果上面的编译安装没有ä“Q何问题的话,恭喜你,安装成功了。可以运行一下看看效果!当时的图片已¾lä¸åœ¨äº†åQŒå°±ä¸æˆªå›¾äº†~
此时是没有~/.emacs æ–‡äšg的。这个文件是 emacs 的初始化配置文äšg此时ž®±å¾ç«‹ä¸€ä¸ªæŠŠã€?
先来一些基本的配置吧。首先是中文字体åQŒubuntu下默认的 emacs 的字体太让äh不爽了,我们可以åœ?.Xresources中设定ã€?
ž®†ä¸‹é¢çš„代码攑ֈ°ä½ çš„ ~/.Xresources中,没有˜q™ä¸ªæ–‡äšg的话ž®±æ–°å»ÞZ¸€ä¸ªã€?
代码:
Emacs.Font:fontset-chinese
Emacs.Fontset-0:-*-fixed-medium-r-*-*-14-*-*-*-c-*-fontset-chinese,\
chinese-gb2312:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1,\
chinese-big5-1:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1,\
chinese-big5-2:-*-wenquanyi bitmap song-*-*-normal--*-*-*-*-*-*-iso10646-1

说明åQšæˆ‘˜q™é‡Œç”¨çš„æ˜¯æ–‡æ³‰é©¿å­—体昄¡¤ºä¸­æ–‡åQŒç”¨ fixed字体昄¡¤ºè‹±æ–‡åQŒè¿™æ ·å°±å¯ä»¥æ­£å¸¸çš„æ˜¾½Cºç»å¤§å¤šæ•°çš„字体了。但是有些繁体还是不正常åQŒæ¯”较郁é—ïL(f¨¥ng)š„说。另外,如果不想ç”?wqy 字体åQŒä¹Ÿå¯ä»¥ç”¨å…¶ä»–的字体åQŒæ¯”如ar pl new sung½{‰ç­‰çš„,只要åœ? xlsfonts的列表中能够看到åQŒå°±å¯ä»¥åœ¨è¿™é‡Œçš„冒号后面使用åQŒå¦‚果对其他的编码有要求的话åQŒä¹Ÿå¯ä»¥æŒ‡å®šå­—体。在emacs çš? Options->mule->describe language enviroment中可以看到对各个环境以的描述。要讄¡½®çš„话åQŒå¾ˆ½Ž€å•:(x¨¬)把相应的环境攑ֈ°å†’号前面åQŒæŠŠå­—体攑ֈ°å†’号后面ž®±å¥½ã€?
写好后用 xrdb -load ~/.Xresources 然后再启动,看看åQŒå­—体是不是漂亮多了~
然后可以讄¡½®ä¸€äº›å…¶ä»–的东西åQŒéœ€è¦çš„话,把下面的代码加入åˆ?~/.emacs中把(没有ž®±æ–°å»?
代码:
(setq default-major-mode 'text-mode);一打开ž®Þp“vç”?text 模式ã€?
(global-font-lock-mode t);语法高亮
(auto-image-file-mode t);打开囄¡‰‡æ˜„¡¤ºåŠŸèƒ½
(fset 'yes-or-no-p 'y-or-n-p);ä»?y/n代表 yes/noåQŒå¯èƒ½ä½ è§‰å¾—不需要,呵呵ã€?
(column-number-mode t);昄¡¤ºåˆ—号
(show-paren-mode t);昄¡¤ºæ‹¬å·åŒšw…
(display-time-mode 1);昄¡¤ºæ—‰™—´åQŒæ ¼å¼å¦‚ä¸?
(setq display-time-24hr-format t)
(setq display-time-day-and-date t)
(tool-bar-mode nil);åŽÀLŽ‰é‚£ä¸ªå¤§å¤§çš„å·¥å…äh 
(scroll-bar-mode nil);åŽÀLŽ‰æ»šåŠ¨æ¡ï¼Œå› äØ“(f¨´)可以使用鼠标滚轮äº?^_^
(mouse-avoidance-mode 'animate);光标靠近鼠标指针æ—Óž¼Œè®©é¼ æ ‡æŒ‡é’ˆè‡ªåŠ¨è®©å¼€åQŒåˆ«æŒ¡ä½è§†çº¿ã€‚很好玩阿,˜q™ä¸ªåŠŸèƒ½
(setq mouse-yank-at-point t);支持中键¾_˜è„“(chu¨¤ng)
(transient-mark-mode t);˜q™ä¸ªå¿˜äº†åQŒéƒé—øP¼
(setq x-select-enable-clipboard t);支持emacs和外部程序的¾_˜è„“(chu¨¤ng)
(setq frame-title-format "zhan@%b");在标题栏提示你目前在什么位¾|®ã€‚你要把zhanæ”ÒŽ(gu¨©)ˆè‡ªå·±çš„用户名
(setq default-fill-column 80);默认昄¡¤º 80列就换行

½{‰ç­‰½{‰ç­‰åQŒè¿˜æœ‰éžå¸¸å¤šçš„配¾|®ï¼Œž®×ƒ¸åœ¨è¿™é‡Œè„“(chu¨¤ng)出来了。网上也有很多,都有详细的解释的。各位朋友们可以自己åŽÀLŸ¥æ‰¾ã€?

4.高çñ”一些的配置
说高¾U§åªä¸è¿‡æ˜¯éœ€è¦ä¸€äº›elisp包的原因了。这些包在网上都能够扑ֈ°çš„ã€?
4.1、首先来改变 emacs的界面把åQŒé»˜è®¤çš„那个一点特色都没有。这个相关的文äšgæ˜?color-theme.el,其中包含äº?0多种颜色样式。已¾lä¸Šä¼ åˆ°ftp
代码:
http://ftp.ubuntu.org.cn/software/文本工具/color-theme.el

下蝲回来后放åˆîC¸€ä¸ªåœ°æ–¹ï¼Œ˜q™ä¸ªç›®å½•可以随意åQŒæˆ‘的放在~/myEmacs下面åQŒå¦‚果放在别处的参照讄¡½®ž®±å¥½äº?
把下面的代码加入�.emacs�
代码:
(load-file "/home/zhan/myEmacs/color-theme.el")
(color-theme-darkblue);选择 darkblue的配色方�

可以打开 emacs看看效果åQŒè¿™æ—Óž¼Œåœ?Tools->Color Themes中是可以选择的。这时出çŽîC¸€ä¸? buffer在其中有颜色列表的名字,在相应的 颜色上按鼠标中键ž®±å¯ä»¥é¢„览这¿Ué…è‰²æ–¹æ¡ˆï¼Œå¦‚果喜欢的话åQŒå°±å¯æŠŠ˜q™ç§æ–ÒŽ(gu¨©)¡ˆåŠ å…¥åˆ?.emacs中,替换 darkblue˜q™éƒ¨åˆ†ï¼Œæœ‰ç©ºæ ¼çš„中间用短横线˜qžè“v来ã€?ž®±æ˜¯å‡å·)

---------------发个帖子好篏阿,其余的部分明天再发了 Smile-------------------------------

¾l§ç®‹ ===============(˜q˜æ˜¯æ”‘Öˆ°ä¸€ä¸ªå¸–子里面,便于大家查阅和指炚w”™è¯?===================

4.2、编译环境的安装
可能不光æ˜?C/C++的环境,˜q™ä¸ªé…ç½®å¥½äº†æœ‰è®¸å¤šçš„æ–¹ä¾¿ä¹‹å¤„。主要ä‹Éç”?cedet的插ä»Óž¼Œ˜q™ä¸ªçš„官方网站在 http://cedet.sourceforge.net 同时我也上传åˆîCº† ftp
代码:
http://ftp.ubuntu.org.cn/software/文本工具/cedet-1.0beta3b.tar.gz

安装和配¾|®æ¯”较简单了åQŒå…¶ä¸­çš„INSTALL说的很清楚了ã€?
我是解压�~/myEmacs
然后 ˜q›å…¥ç›®å½•åQŒç”¨make ¾~–译åQŒå…¶ä»–的选项可以看看INSTALL
然后把如下的部分加入�emacs�
代码:
(add-hook 'texinfo-mode-hook (lambda () (require 'sb-texinfo)))
(load-file "/home/zhan/myEmacs/cedet-1.0beta3b/common/cedet.el")
(semantic-load-enable-code-helpers)
(autoload 'speedbar-frame-mode "speedbar" "Popup a speedbar frame" t)
(autoload 'speedbar-get-focus "speedbar" "Jump to speedbar frame" t)
(define-key-after (lookup-key global-map [menu-bar tools])
[speedbar]
'("Speedbar" .
speedbar-frame-mode)
[calendar])

˜q™æ ·é›†æˆäº?speedbar eieio semantic½{‰ç­‰çš„æ’件在¾~–程的时候很有用ã€?
然后可以下蝲ecb插äšgåQŒå°±æ˜¯emacs code browser,ž®±æ˜¯ä¸ªä»£ç é˜…览器
直接上官¾|‘下载或者到 ftp下蝲 官网也在cedet的那个地æ–?
同时可以
代码:
http://ftp.ubuntu.org.cn/software/文本工具/ecb-2.32.zip

然后直接解压�~/myEmacs下面
�.emacs中加�
代码:
(add-to-list 'load-path "/home/zhan/myEmacs/ecb-2.32")
(require 'ecb)

现在可以看看效果了,哈,可以看到在Tools的下拉菜单中æœ?start code browser å’Œspeedbar 的选项åQŒçœ‹çœ‹ï¼Œå¾ˆæœ‰æ„æ€çš„åQŒå¯ä»¥é€‰æ‹©æ‰“开一ä¸?c/c++æ–‡äšg½{‰ç­‰çš„看看效果ã€?值得注意的是必须弄好 cedet之后ecb才能正确的蝲å…?

4.3、emacsçš„tex插äšg auctex
使用auctex可以很方便的在emacs中方便的¾~–辑 tex文档
auctex的网站我忘记了,不好意思。不˜q‡æˆ‘也在 ftp上传äº?
代码:
http://ftp.ubuntu.org.cn/software/文本工具/auctex-11.82.tar.gz

下蝲回来后解压,然后˜q›å…¥ç›®å½• ./configure&&make&&sudo make installž®±å¥½äº?
然后�.emacs中加�
代码:
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(add-hook 'LaTeX-mode-hook 'LaTeX-install-toolbar)
(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)

˜q™æ ·åQŒåœ¨¾~–辑 texæ–‡äšgæ—Óž¼Œž®±å¯ä»¥ä‹É用这个了åQŒè¦æ˜¯å‰é¢æ‰“å¼€äº?囄¡‰‡æ”¯æŒçš„功能,˜q˜å¯ä»¥æ–¹ä¾¿çš„使用那个 preview的功能,˜q™ä¸ªåŠŸèƒ½å¯ä»¥ç›´æŽ¥é¢„è§ˆå½“æ—¶æ‰€å†™çš„ä¸€äº›å…¬å¼ï¼Œæ’å…¥çš„å›¾ç‰‡ï¼Œä»¥åŠ(qi¨¢ng)列表½{‰ç­‰åQŒè€Œä¸”速度也很快。大家可以试一下ã€?
基本的操作在菜单中都有,ž®×ƒ¸å¤šè¯´äº†ã€?

------------------------今天ž®±å†™åˆ°è¿™é‡Œå§åQŒæ˜Žå¤©ä»‹¾lä¸€ä¸‹ä¸€äº›æœ‰­‘£çš„æ’äšg以及(qi¨¢ng)配置------------------
4.4 tabbar 插äšg
˜q™ä¸ªæ’äšg比较好用åQŒå°±æ˜¯ä¸€ä¸ªæ ‡½{¾ï¼Œ˜q™æ ·åœ¨ç¼–½E‹æˆ–者干什么的时候开了多个窗口的话,可以在顶上显½Cºå‡ºæ ‡ç­¾
åQŒè€Œä¸”˜q™ä¸ªæ ‡ç­¾˜q˜å¯ä»¥è‡ªåŠ¨åˆ†¾l„,比较好用ã€?
插äšg不知道在什么地方弄来的了,好象是从王垠的网站上弄来的。上传到ftp上了
代码:
http://ftp.ubuntu.org.cn/software/文本工具/tabbar.el

我下回来后直接放åˆîCº† ~/myEmacs中,
把下面两句加�emacs�
代码:
(load-file "/home/zhan/myEmacs/tabbar.el")
(require 'tabbar)
(tabbar-mode)
;(global-set-key (kbd "C-=") 'tabbar-backward-group);;˜q™å‡ å¥çš„目的是绑定快捷键˜q™æ ·ž®±å¯ä»¥ç›´æŽ¥ç”¨å¿«æ·é”®æ¥æ“åšäº†ã€?
;(global-set-key (kbd "C--") 'tabbar-forward-group);;不过没有发现有很大用处,所以注释了�
;(global-set-key (kbd "C-0") 'tabbar-backward)
;(global-set-key (kbd "C-9") 'tabbar-forward)

现在打开多个文äšg看看åQŒåº”该发现有tab出现了ã€?

4.5 ido的配¾|?˜q™ä¸ªå¯ä»¥ä½¿ä½ åœ¨ç”¨C-x C-f打开文äšg的时候在后面有提½Cºï¼Œæœ‰å¾ˆå¤šå¯ä»¥é…¾|®çš„选项åQŒæ‡’了,ž®±æ²¡æœ‰é…¾|®ï¼Œå“ªä½å¯ä»¥è¡¥å……一下配¾|®æ–¹æ³•。我是直接打开了ido的支持,在emacs23中这个是自带的ã€?
代码:
(require 'ido)
(ido-mode t)


4.6配置一个字典服务器åQŒåœ¨emacs中直接支持英文查单词åQ?
首先做一点准备工�
代码:
sudo apt-get install dict-xdict //˜q™ä¸ªå¯ä»¥åœ¨æœ¬æœÞZ¸Šé…ç½®ä¸€ä¸ªå­—典服务器。装好后ç”?dict hello应该可以看到 hello的解释。^_^
http://ftp.ubuntu.org.cn/software/文本工具/dictionary-1.8.7.tar.gz //下蝲我上传的插äšg

然后解压 dictionary的那个压¾~©åŒ…。进入目å½?makeåQ?然后 cp *.elc /usr/share/emacs/site-lisp(其实˜q™äº›é‚£ä¸ªREADMEæ–‡äšg已经写过äº?
˜q™æ ·ž®Þp£…好了åQŒä¸‹é¢æ˜¯é…ç½®ã€?
代码:
(autoload 'dictionary-search "dictionary"
"Ask for a word and search it in all dictionaries" t)
(autoload 'dictionary-match-words "dictionary"
"Ask for a word and search all matching words in the dictionaries" t)
(autoload 'dictionary-lookup-definition "dictionary"
"Unconditionally lookup the word at point." t)
(autoload 'dictionary "dictionary"
"Create a new dictionary buffer" t)
(autoload 'dictionary-mouse-popup-matching-words "dictionary"
"Display entries matching the word at the cursor" t)
(autoload 'dictionary-popup-matching-words "dictionary"
"Display entries matching the word at the point" t)
(autoload 'dictionary-tooltip-mode "dictionary"
"Display tooltips for the current word" t)
(autoload 'global-dictionary-tooltip-mode "dictionary"
"Enable/disable dictionary-tooltip-mode for all buffers" t)
;;==========================上面是readme中写˜q‡çš„东西åQŒæ²¡æœ‰æ·±½IÓž¼Œç…§æŠ„了,下面是键讑֮š======================

(global-set-key [mouse-3] 'dictionary-mouse-popup-matching-words);;˜q™ä¸ªæ˜¯æœ€å¸¸ç”¨çš„,呵呵åQŒå³é”®å¼¹å‡ºæŸ¥æ‰„¡š„菜单
(global-set-key [(control c)(d)] 'dictionary-lookup-definition)
(global-set-key [(control c)(s)] 'dictionary-search)
(global-set-key [(control c)(m)] 'dictionary-match-words)

(setq dictionary-server "localhost") ;;è®‘Ö®šæœåŠ¡å™¨åœ¨æœ¬åœ°
(global-dictionary-tooltip-mode t)
(dictionary-tooltip-mode t)
;;基本没有什么难度,大家自己研究把�

配置好了以后åQŒåœ¨emacs中输入一个英文单词,点击右键看看。呵呵,知道怎么用了把~åQŒè¿™ä¸ªè¿˜å¯ä»¥å¢žåŠ è¯å…¸½{‰ç­‰çš„,只要改一æ”?dictd的设¾|®ï¼Œä¸Žemacs无关了,需要的话,我可写一点出来,也很½Ž€å•ã€?

4.7 emms的设¾|?
可能你觉得这个很变æ€?用emacs来听歌,但是其实是很方便的,可以自带歌词昄¡¤ºçš„!åQ?
需è¦?mpg321˜q™ä¸ªåŒ…,如果æœ?ogg的,˜q˜éœ€è¦?ogg123½{‰ç­‰åQŒç›´æŽ¥å®‰è£…把
首先下蝲我上传的emms的包
代码:
http://ftp.ubuntu.org.cn/software/文本工具/emms-2.0.tar.gz

解压åˆ?~/myEmacs中,然后æ·ÕdŠ é…ç½®
代码:
(add-to-list 'load-path "~/myEmacs/emms-2.0/")
(require 'emms-setup)
(emms-devel)

(setq emms-player-mplayer-command-name "mplayer"
emms-player-mplayer-parameters '("-slave")
emms-player-list '(emms-player-mpg321
emms-player-ogg123
emms-player-mplayer
emms-player-mplayer-playlist))
(setq emms-player-mpg321-parameters '("-o" "alsa"));;mpg321使用alsa输出
(setq emms-source-file-default-directory "~/Music" ;;歌曲目录
emms-lyrics-dir "~/Music/lyrics" );;歌词目录�

;; keys,键绑�
(global-set-key (kbd "<f3>") 'emms-playlist-mode-go-popup)
(global-set-key (kbd "C-c e t") 'emms-play-directory-tree)
(global-set-key (kbd "<f3>") 'emms-playlist-mode-go-popup)
(global-set-key (kbd "C-c e t") 'emms-play-directory-tree)
(global-set-key (kbd "C-c e x") 'emms-start)
(global-set-key (kbd "C-c e v") 'emms-stop)
(global-set-key (kbd "C-c e n") 'emms-next)
(global-set-key (kbd "C-c e p") 'emms-previous)
(global-set-key (kbd "C-c e o") 'emms-show)
(global-set-key (kbd "C-c e h") 'emms-shuffle)
(global-set-key (kbd "C-c e l") 'emms-play-playlist)
(global-set-key (kbd "C-c e SPC") 'emms-pause)
(global-set-key (kbd "C-c e a") 'emms-add-directory-tree)
(global-set-key (kbd "C-c e r") 'emms-toggle-repeat-track)
(global-set-key (kbd "C-c e R") 'emms-toggle-repeat-playlist)
(global-set-key (kbd "C-c e f") 'emms-play-file)
(global-set-key (kbd "C-c e d") 'emms-play-directory)
(global-set-key (kbd "C-c e m") 'emms-lyrics-toggle-display-on-minibuffer);;昄¡¤ºæ­Œè¯
(global-set-key (kbd "C-c e M") 'emms-lyrics-toggle-display-on-modeline);;昄¡¤ºæ­Œè¯

使用我就不多说了åQŒæ¯”较简单,摸烦一下很快就ä¼?x¨¬)了。还有歌词的我没有用˜q‡ï¼Œä¸çŸ¥é“会(x¨¬)不会(x¨¬)有问é¢?
其实可以看到åQŒå…¶ä¸­è®¾¾|®äº†æ’­æ”¾å™?mplayer因此播放一些视频文件也是可以的~~

4.8 gnus的配¾|?
先稍微介¾lä¸€ä¸?gnus能够òq²äº›ä»€ä¹ˆï¼Œgnus可以用来收发邮äšgåQŒå¯ä»¥ç”¨æ¥è®¢é˜…æ–°é—ȝ»„½{‰ç­‰çš„。新é—ȝ»„是个很不错的东西åQŒå’Œé‚®äšg列表很像的说åQŒä¸äº†è§£çš„可以看看这个文档ã€?http://news.yaako.com/data/whatisnewsgroup.pdf 其中è¯ß_(d¨¢)¼Œä¸æ‡‚上新é—ȝ»„的,ž®±æ˜¯èœé¸ŸåQå‘µå‘µï¼Œæˆ‘也弄不清什么的åQŒæ‰ä¸Šå‡ å¤©çš„ æ–°é—»¾l?发现一个问题,ž®±æ˜¯å¥½å¤šå®¢æˆ·ç«¯éƒ½æ˜?outlook什么的。上¾|‘翻了一下,扑ֈ°äº†ä¸€äº›æ–‡æ¡£ï¼Œæ•´ç†åœ¨è¿™é‡ŒæŠŠã€?
gnus是emacs自带的,功能很是强大åQŒæˆ‘才刚刚学用,˜q˜æœ‰å¾ˆå¤šä¸æ¸…楚的地方åQŒè¿˜è¯ïL(f¨¥ng)œ‹˜q™ç¯‡å¸–子的大哥们能够指点一二。ä‹Éç”? gnus的话åQŒä¸»è¦æ˜¯é…ç½®åQŒå¯ä»¥æŠŠé…ç½®å†™åœ¨ .emacsä¸­ï¼Œä¸è¿‡å»ø™®®å•独写在 .gnus.el中,˜q™æ ·çš„话不必每次开机都自动启用gnus,在按ä¸? M-x gnus的时候才ä¼?x¨¬)启动设¾|®ã€‚下面是½Ž€å•çš„.gnus.el的设¾|?
代码:
;;讑֮šä¸ªäh信息
(setq user-full-name "yourname");;名字
(setq user-mail-address "yourmail@***.com");邮箱地址
;讑֮šnntp服务器,现在国内很全的就是这两个äº?
(setq gnus-select-method '(nntp "south.newsfan.net"));全中文的新帆新闻¾l„,˜q™ä¸ªæ˜¯ç”µ(sh¨´)信的服务器,˜q˜æœ‰ä¸€ä¸ªåŒ—方的服务å™?news.newsfan.net.
(add-to-list 'gnus-secondary-select-methods '(nntp "news.yaako.com"));˜q™ä¸ªæœåŠ¡å™¨ä¸Šæœ‰å¾ˆå¤šä¸­æ–‡çš„¾l„,具体的上面的pdf有说明ã€?
(gnus-agentize);打开代理åQŒå…è®¸ç¦»¾U‰K˜…è¯?
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode) ;使用话题模式åQŒæ›´é€‚合阅读
(setq gnus-summary-show-article-charset-alist
'((1 . cn-gb-2312) (2 . big5) (3 . gbk) (4 . utf-8))) ;讑֮šè§£ç ™åºåº
(eval-after-load "mm-decode"
'(progn
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext")));阅读的时候把html的头部什么的åŽÀLމåQŒåªè¦text部分
;;========================é‚®äšg¾l„的讄¡½®å·²ç»å¯ä»¥äº†ï¼Œä¸‹é¢é…ç½®æ”¶å‘ä¿¡äšg========================================
;(setq pop3-leave-mail-on-server t);;˜q™ä¸€å¥æ˜¯è¯´ä¸è¦æŠŠæœåŠ¡å™¨ä¸Šçš„ä¿¡ä»¶åˆ é™¤ï¼Œä½†æ˜¯˜q™æ ·æ¯æ¬¡æŠŠæ²¡æœ‰åˆ é™¤çš„ä¿¡äšg又取回来一‹Æ¡ï¼Œå¾ˆçƒ¦åQŒæ‰€ä»¥æˆ‘åŽÀLŽ‰äº†ï¼Œé‚£ä½é«˜æ‰‹çŸ¥é“å¦‚ä½•ä¸åˆ é™¤ä¿¡ä»¶åˆä¸é‡å¤å–ä¿? 的方法,éºÈƒ¦å‘Šè¯‰æˆ‘一壎ͼŒè°¢è°¢
(setq mail-sources
'((pop :server "pop3服务�
:user "用户�
:port "pop3"
:password "密码")))
(setq gnus-secondary-select-methods '((nnfolder "")));使用nnfolder的方式存æ”ùN‚®ä»Óž¼Œ˜q™ä¸ªæ˜¯æœ€å¸¸ç”¨çš„æ–¹å¼?

;;===================配置 smtp服务其器发送信�===========================
(setq smtpmail-auth-credentials
'(("smtp服务�
25
"用户�
"密码")));;˜q™ä¸ªç”¨æˆ·åå’Œå¯†ç è¦å’Œ smtp服务器对åº?
(setq smtpmail-default-smtp-server "smtp服务�)
(setq smtpmail-smtp-server "smtp服务�)
(setq message-send-mail-function 'smtpmail-send-it)
˜q™é‡Œæœ‰ä¸ªå¯¹åº”gmail的配¾|®ï¼Œæ®è¯´gmail比较ç‰ÒŽ(gu¨©)®ŠåQŒpop3需要ssl, smtp也很怪。相应的讄¡½®åœ¨è¿™é‡Œï¼š(x¨¬)
;; Pop3
;;(setq mail-sources
;; '((pop :server "pop.gmail.com"
;; :port 995
;; :user "email.account"
;; :connection ssl
;; :leave t)))

;; Smtp
;;(setq message-send-mail-function 'smtpmail-send-it)
;;(setq smtpmail-default-smtp-server "smtp.gmail.com")
;;(setq smtpmail-smtp-service 587)
;;(setq smtpmail-starttls-credentials
;; '(("smtp.gmail.com"
;; 587
;; nil
;; nil)))
;;(setq smtpmail-auth-credentials
;; '(("smtp.gmail.com"
;; 587
;; "email.account"
;; nil)))

˜q™æ ·ž®±å¯ä»¥ä‹Éç”?gnus来æˆöæ–°é—»¾l„和收发邮äšg了,现在邮äšg应该在mail.misc˜q™ä¸ª¾l„里面,如果没有可以新徏 ã€?
具体使用和详¾l†çš„配置我是参考的 ˜q™é‡Œçš„æ–‡ç«? http://www.emacs.cn/Gnus/Gnus ˜q˜æœ‰ http://learn.tsinghua.edu.cn:8080/2005210329//document-backup/gnus.el.html 对gnus有兴­‘£çš„可以åŽÈœ‹çœ‹ã€?

---------------------------
ž®±å†™åˆ°è¿™é‡ŒæŠŠåQŒå·²¾læŠŠemacs的强大体çŽîCº†ä¸€ç‚¹äº†åQŒå…¶ä»–的东西我自å·×ƒ¹Ÿä¸çŸ¥é“,有兄弟熟æ‚(zh¨¨n)‰çš„的话可以帮助完善。呵å‘üc(di¨£n)€?/span> 代码:

]]>
Emacs 快速指å?/title><link>http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149535.html</link><dc:creator>David.Ko</dc:creator><author>David.Ko</author><pubDate>Sat, 29 Sep 2007 04:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149535.html</guid><wfw:comment>http://www.aygfsteel.com/ThinkingTalking/comments/149535.html</wfw:comment><comments>http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/149535.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/ThinkingTalking/services/trackbacks/149535.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="cnt"> <p>【注意:(x¨¬)位于【】之间的内容是译注,比如本行åQŒä¸‹åŒã€‚ã€?</p> <p>Emacs 键盘命ä×o(h¨´)通常包含 CONTROL 键(有时候以 CTRL æˆ?CTL 来标½Cºï¼‰å’?META 键(有时候用 EDIT æˆ?ALT 来标½Cºï¼‰ã€‚䨓(f¨´)了避免每‹Æ¡éƒ½è¦å†™å‡ºå…¨åï¼Œæˆ‘们 ¾U¦å®šä½¿ç”¨ä¸‹è¿°¾~©å†™åQ?</p> <pre> C-<chr> 表示当输入字½W?<chr> 时按ä½?CONTROL é”®ã€?br /> å› æ­¤ C-f ž®Þp¡¨½Cºï¼š(x¨¬)按住 CONTROL 键再输入 fã€?br /> <br /> M-<chr> 表示当输入字½W?<chr> 时按ä½?METAåQˆæˆ– EDIT æˆ?ALTåQ‰é”®ã€?br /> 如果你的键盘上没æœ?META 、EDIT æˆ?ALT 键,用下˜q°æ–¹æ³•也½{‰æ•ˆåQ?br /> 先按一ä¸?ESC 键然后放开åQŒå†è¾“å…¥ <chr>。我们用 <ESC> 来表½C?br /> ESC é”®ã€?br /> </pre> <p>重要提示åQšè¦é€€å‡?EmacsåQŒè¯·ç”?C-x C-cåQˆä¸¤ä¸ªè¿ž¾l­çš„¾l„合键)。下文中左边™å? 行的“>>”字样用来提示你尝试键盘命令。比如:(x¨¬) <<Blank lines inserted around following line by help-with-tutorial>> [本页当中ç‰ÒŽ(gu¨©)„ç•™å‡ºä¸€äº›ç©ºç™½æ˜¯å‡ÞZºŽæ•™å­¦ç›®çš„åQŒè¯·¾l§ç®‹å¾€åŽçœ‹] >> 现在输入 C-v åQˆæŸ¥çœ‹ä¸‹ä¸€å±æ–‡å­—)¿UÕdЍåˆîC¸‹ä¸€å±ã€?</p> <pre> åQˆåˆ«ç´§å¼ åQŒåœ¨è¾“入字符 v 的同时注意要按住 CONTROL 键)<br /> 从现在开始,每读完当前一屏你都需要这样做一‹Æ¡ã€?br /> </pre> <p>值得注意的是åQŒå½“你从上一屏滚åˆîC¸‹ä¸€å±æ—¶åQŒä¸­é—´ä¼š(x¨¬)有两行的重复åQ›è¿™æ ·åšæ˜¯äØ“(f¨´) 了维持滚屏的˜qžç®‹æ€§ï¼Œæ–¹ä¾¿ä½ é¡ºç•…、连¾l­åœ°é˜…读ã€?</p> <p>用编辑器åQŒå¼€é—¨ç¬¬ä¸€ä»¶äº‹ž®±æ˜¯å­¦ä¼š(x¨¬)在文字中¿UÕdŠ¨ã€‚ä½ å·²ç»çŸ¥é“äº?C-v 可以向下¿U?动一屏,要往上移åQŒè¯·ç”?M-v åQˆä¹Ÿž®±æ˜¯æŒ‰ä½ META 键,然后输入våQŒå¦‚果你没有 META、EDIT æˆ?ALT 键那么就先按 <ESC> 再按 våQ‰ã€?</p> <p>>> 试试 M-våQŒç„¶åŽå†è¯•试 C-våQŒæ¥å›žé›å‡ æ¬¡ã€?</p> <ul> <li>ž®ç»“åQˆSUMMARYåQ?</li> </ul> <hr /> <p>以下命ä×o(h¨´)在翻™å‰|µè§ˆæ—¶ç›¸å½“有用åQ?</p> <pre> C-v 向前¿UÕdЍ䏀å±?br /> M-v 向后¿UÕdЍ䏀å±?br /> C-l 重绘屏幕åQŒåƈž®†å…‰æ ‡æ‰€åœ¨è¡Œ¾|®äºŽå±å¹•的中å¤?br /> åQˆæ³¨æ„æ˜¯ CONTROL-LåQŒä¸æ˜?CONTROL-1åQ?br /> </pre> <p>>> 扑ֈ°å…‰æ ‡åQŒç•™æ„å…¶é™„近的文字,然后输入 C-lã€?</p> <pre> 找找光标在哪里,你会(x¨¬)发现光™™„˜q‘的文字òq¶æ²¡æœ‰å˜åŒ–ã€?br /> </pre> <p>如果你的键盘上有 <span id="wmqeeuq" class="wikiword">PageUp</span> å’?<span id="wmqeeuq" class="wikiword">PageDn</span>åQŒä¹Ÿå¯ä»¥ç”¨è¿™ä¸¤ä¸ªé”®æ¥æ»šå±ã€‚不˜q‡ä‹Éç”?C-v å’?M-v 的效率要更高一些ã€?</p> <ul> <li>基本的光标控åˆÓž¼ˆBASIC CURSOR CONTROLåQ?</li> </ul> <hr /> <p>整屏的移动很有用åQŒä½†æ˜¯å¦‚何在文字中精¼‹®å®šä½å‘¢åQ?</p> <p>有几¿Uæ–¹å¼å¯ä»¥é€‰æ‹©ã€‚用方向键当然可以,不过更有效率的方法是保持双手位于 主键盘区åQŒç„¶åŽä‹Éç”?C-p ã€?C-b ã€?C-f å’?C-n ˜q™å››ä¸ªå‘½ä»¤ã€‚它们的功能和方 向键是一æ ïL(f¨¥ng)š„åQŒå¦‚下图所½Cºï¼š(x¨¬) </p> <pre> 上一è¡?C-p<br /> :<br /> :<br /> 向左¿U?C-b .... 目前光标位置 .... 向右¿U?C-f<br /> :<br /> :<br /> 下一è¡?C-n<br /> </pre> <p>>> ç”?C-n æˆ?C-p ž®†å…‰æ ‡ç§»åˆîC¸Šå›„¡š„中央ã€?</p> <pre> æŒ?C-låQŒæ•´òq…图ä¼?x¨¬)被昄¡¤ºåœ¨å±òq•的中央ã€?br /> </pre> <p>“P N B F”四个字母分别代表了四个词åQŒç”¨˜q™å››ä¸ªè¯è®°å¿†˜q™äº›¾l„合键会(x¨¬)更容易:(x¨¬) P 代表 previousåQˆä¸Šä¸€è¡Œï¼‰åQŒN 代表 nextåQˆä¸‹ä¸€è¡Œï¼‰åQŒB 代表 backwardåQˆå›ž 退åQ‰ï¼Œè€?F 则代è¡?forwardåQˆå‰˜q›ï¼‰ã€‚这些组合键今后ž®†ä¸Žä½ åÅžå½×ƒ¸¼›…R€?</p> <p>>> 按几‹Æ?C-n 把光标往下挪到这里ã€?</p> <p>>> ç”?C-f 把光标移动到˜q™ä¸€è¡Œï¼Œç„¶åŽå†ç”¨ C-p 往上挪ã€?</p> <pre> 注意观察当光标在一行的中央æ—?C-p 命ä×o(h¨´)的行为ã€?br /> </pre> <p>每行文字都以一ä¸?#8220;换行½W?#8221;¾l“束åQ?#8220;换行½W?#8221;把行与行区分开来。文件的最å?一行也应该也有一个换行符åQˆä¸˜q?Emacs òq¶ä¸å¼ºåˆ¶è¦æ±‚˜q™ä¸€ç‚¹ï¼‰ã€?</p> <p>>> 在一行的行头输入 C-bã€?</p> <pre> 光标应该ä¼?x¨¬)移动到前一行的行尾åQŒå› ä¸ºå…‰æ ‡åœ¨å›žé€€˜q‡ç¨‹ä¸­è¶Š˜q‡äº†æ¢è¡Œ½W¦ã€?br /> </pre> <p>同样 C-f 也可以像 C-b 一栯‚¶Š˜q‡æ¢è¡Œç¬¦ã€?</p> <p>>> ˜qžæŒ‰å‡ æ¬¡ C-båQŒæ„Ÿå—一下光标的¿UÕdЍã€?</p> <pre> 然后按几‹Æ?C-f 回到本行的行ž®¾ã€?br /> 再按一‹Æ?C-fåQŒå…‰æ ‡ä¼š(x¨¬)¿UÕdЍåˆîC¸‹ä¸€è¡Œã€?br /> </pre> <p>当你¿UÕdŠ¨å…‰æ ‡½I¿è¶Šå±å¹•的上下边界时åQŒåœ¨è¾¹ç•Œå¤–的文字ä¼?x¨¬)移动到屏幕内,˜q™ç§°ä¸?“滚动”åQˆscrollingåQ‰ã€‚滚动ä‹É得光标可以被¿UÕdŠ¨åˆ°æ–‡å­—ä¸­çš„ä“Q何位¾|®ï¼Œòq¶ä¸”˜q?不会(x¨¬)让光标跑到屏òq•外边去ã€?</p> <p>>> ç”?C-n ž®†å…‰æ ‡ä¸‹¿U»ï¼Œä¸€ç›´è¶Š˜q‡å±òq•边界,同时观察发生了什么变化ã€?</p> <p>如果你嫌一个字½W¦ä¸€ä¸ªå­—½W¦åœ°æŒªå…‰æ ‡å¤ªæ…¢ï¼Œä½ è¿˜å¯ä»¥ä¸€ä¸ªè¯ä¸€ä¸ªè¯åœ°èŸ©ã€‚M-f (META-f) 可以ž®†å…‰æ ‡å¾€å‰ç§»åŠ¨ä¸€ä¸ªè¯åQŒè€?M-b 则是往后移。【这里的“è¯?#8221;æŒ?英文单词åQŒå¯¹ä¸­æ–‡æ¥è¯´åQŒåˆ™æ˜¯æŒ‡¿UÕdЍåˆîC¸‹ä¸€ä¸ªæ ‡ç‚¹ç¬¦å—÷€‚ã€?</p> <p>>> 试试 M-f å’?M-bã€?</p> <p>如果光标停在一个词的中é—ß_(d¨¢)¼ŒM-f ä¼?x¨¬)移动到˜q™ä¸ªè¯çš„æœ«å°¾ã€‚如果光标处于词与词 之间的空白处åQŒM-f ä¼?x¨¬)移动到下一个词的末ž®¾ã€‚M-b 的功能类ä¼û|¼Œåªæ˜¯æ–¹å‘相反ã€?</p> <p>>> 按几‹Æ?M-f å’?M-båQŒä¸­é—´å¤¹æ‚一äº?C-f å’?C-bã€?</p> <pre> 你可以观察到 M-f å’?M-b 在不同位¾|®ä¸Šæ‰€è¡¨çŽ°å‡ºæ¥çš„ä¸åŒè¡Œä¸ºã€?br /> </pre> <p>è¯äh³¨æ„?C-f 、C-b å’?M-f 、M-b 两对之间的类比关¾p…R€‚通常的惯例是åQšMETA ¾p?列组合键用来操作“ç”Þp¯­­a€å®šä¹‰çš„单位(比如词、句子、段落)”åQŒè€?CONTROL ¾pÕdˆ—¾l„合键用来操ä½?#8220;与语­a€æ— å…³çš„基本单位(比如字符、行½{‰ç­‰åQ?#8221;ã€?</p> <p>¾cÖM¼¼çš„æƒ¯ä¾‹åœ¨“è¡?#8221;ä¸?#8220;句子”之间也同样适用åQšC-a å’?C-e 可以ž®†å…‰æ ‡ç§»åŠ¨åˆ° “一è¡?#8221;的头部和ž®ùNƒ¨åQ›è€?M-a å’?M-e 则将光标¿UÕdЍåˆ?#8220;一å?#8221;的头部和ž®ùNƒ¨ã€?</p> <p>>> 按两‹Æ?C-aåQŒå†æŒ‰ä¸¤‹Æ?C-eã€?</p> <pre> 按两‹Æ?M-aåQŒå†æŒ‰ä¸¤‹Æ?M-eã€?br /> </pre> <p>æƒ³ä¸€æƒ³äØ“(f¨´)什么重复的 C-a 命ä×o(h¨´)ä¼?x¨¬)没有作用,而重复的 M-a 命ä×o(h¨´)则会(x¨¬)让光标不æ–?地回退åˆîC¸Šä¸€ä¸ªå¥å­ã€‚è™½ç„¶è¿™ä¸ªç±»æ¯”è§„å¾‹åÆˆä¸ä¸¥æ û|¼Œä½†æ˜¯å¾ˆè‡ªç„¶ã€?</p> <p>光标停留的位¾|®ä¹Ÿå¯ä»¥¿UîC½œ“点位”åQˆpointåQ‰ã€‚或者干脆说åQŒå…‰æ ‡æŒ‡½Cºå‡ºäº†å±òq?ä¸?#8220;点位”在文本中的位¾|®ã€?</p> <p>˜q™é‡Œå¯¹ç®€å•的光标¿UÕdЍ命ä×o(h¨´)做一个æ€È»“åQŒå…¶ä¸­ä¹ŸåŒ…括了整词和整句的移动:(x¨¬) </p> <pre> C-f 向右¿UÕdŠ¨ä¸€ä¸ªå­—½W?br /> C-b 向左¿UÕdŠ¨ä¸€ä¸ªå­—½W?br /> <br /> M-f 向右¿UÕdŠ¨ä¸€ä¸ªè¯ã€ä¸­æ–‡æ˜¯¿UÕdЍåˆîC¸‹ä¸€ä¸ªæ ‡ç‚¹ç¬¦å—÷€?br /> M-b 向左¿UÕdŠ¨ä¸€ä¸ªè¯ã€ä¸­æ–‡æ˜¯¿UÕdЍåˆîC¸Šä¸€ä¸ªæ ‡ç‚¹ç¬¦å—÷€?br /> <br /> C-n ¿UÕdЍåˆîC¸‹ä¸€è¡?br /> C-p ¿UÕdЍåˆîC¸Šä¸€è¡?br /> <br /> C-a ¿UÕdŠ¨åˆ°è¡Œé¦?br /> C-e ¿UÕdŠ¨åˆ°è¡Œž®?br /> <br /> M-a ¿UÕdŠ¨åˆ°å¥é¦?br /> M-e ¿UÕdŠ¨åˆ°å¥ž®?br /> </pre> <p>>> 把上面所有的命ä×o(h¨´)都练ä¹?f¨¤n)几‹Æ¡ï¼Œ˜q™äº›å¯éƒ½æ˜¯æœ€å¸¸ç”¨çš„命令ã€?</p> <p>˜q™é‡Œ˜q˜è¦ä»‹ç»ä¸¤ä¸ªé‡è¦çš„光标移动命令:(x¨¬)M-< åQˆMETA ž®äºŽåøP¼‰å¯ä»¥ž®†å…‰æ ‡ç§»åŠ¨åˆ° 所有文字的最开å¤ß_(d¨¢)¼›M-> åQˆMETA å¤§äºŽåøP¼‰å¯ä»¥ž®†å…‰æ ‡ç§»åŠ¨åˆ°æ‰€æœ‰æ–‡å­—çš„æœ€æœ«å°¾ã€?</p> <p>注意åQŒåœ¨å¤§éƒ¨åˆ†é”®ç›˜ä¸ŠåQŒå°äºŽå·åQ?lt;åQ‰éœ€è¦ç”¨ä¸Šæ¡£é”®ï¼ˆShiftåQ‰æ¥è¾“å…¥åQŒæ‰€ä»¥åœ¨˜q?些键盘上你应该用 Shift 键来输入 M-<åQŒå¦‚果不æŒ?Shift 键,你输入的ä¼?x¨¬)æ˜?M-commaåQˆMETA 逗号åQ‰ã€?</p> <p>>> 试一è¯?M-< åQŒç§»åˆ°æœ¬å¿«é€ŸæŒ‡å—的最开始ã€?</p> <pre> 然后再按几次 C-v 回到˜q™é‡Œã€?br /> </pre> <p>>> 试一è¯?M-> åQŒç§»åˆ°æœ¬å¿«é€ŸæŒ‡å—的最末尾ã€?</p> <pre> 然后再按几次 M-v 回到˜q™é‡Œã€?br /> </pre> <p>如果你的键盘上有方向键的话,也可以用它们来移动光标。不˜q‡æˆ‘们有三个理由 推荐你学ä¹?C-b 、C-f 、C-n 、和 C-påQšï¼ˆ1åQ‰å®ƒä»¬åœ¨ä»ÖM½•键盘上都能用。(2åQ?当你熟练使用 Emacs 之后åQŒä½ ä¼?x¨¬)发现用˜q™äº›¾l„合键比用方向键要快得多åQŒå› ä¸ÞZ½  的手不需要离开打字区。(3åQ‰ä¸€æ—¦ä½ ä¹?f¨¤n)惯了ä‹É用这些组合键åQŒä½ ä¹Ÿå¯ä»¥å¾ˆå®ÒŽ(gu¨©)˜“åœ?适应其它更高¾U§çš„光标¿UÕdЍ命ä×o(h¨´)ã€?</p> <p>大部分的 Emacs 命ä×o(h¨´)接受数字参数åQŒåƈ且对于多数命令而言åQŒè¿™äº›æ•°å­—参数的ä½? 用是指定命ä×o(h¨´)çš„é‡å¤æ¬¡æ•°ã€‚äØ“(f¨´)一个命令指定数字参敎ͼˆä¹Ÿå°±æ˜¯é‡å¤æ¬¡æ•ŽÍ¼‰çš„æ–¹æ³?是:(x¨¬)先输å…? C-uåQŒç„¶åŽè¾“入数字作为参敎ͼŒæœ€åŽå†è¾“入命ä×o(h¨´)。如果你有META åQˆæˆ– EDIT æˆ?ALTåQ‰é”®åQŒé‚£ä¹ˆè¿˜æœ‰å¦ä¸€¿UåŠžæ³•ï¼š(x¨¬)按住 META 键不动,然后输入数字。不 ˜q‡æˆ‘们还是徏议你ç”?C-uåQŒå› ä¸ºå®ƒåœ¨ä“Q何终端机上都能用。这¿Uæ•°å­—参æ•îC¹Ÿ¿UîCØ“(f¨´) “前缀参数”åQŒæ„æ€æ˜¯è¯´è¿™ä¸ªå‚数是先于使用它的命ä×o(h¨´)而输入的ã€?</p> <p>举例来说åQ?C-u 8 C-f ä¼?x¨¬)向前移å?8 个字½W¦ã€?</p> <p>>> ä¸?C-n 或è€?C-p 指定一个数字参敎ͼŒ˜q™æ ·ä½ å¯ä»¥åªç”¨ä¸€ä¸ªå‘½ä»¤å°±æŠŠå…‰æ ‡ç§»åŠ?</p> <pre> 到本行的附近ã€?br /> </pre> <p>虽然大部分命令用数字参数来作为其重复‹Æ¡æ•°åQŒä½†æ˜¯ä¹Ÿæœ‰äº›å‘½ä×o(h¨´)例外åQŒå®ƒä»¬å°†æ•?字参数另做它用。比如有些命令(目前˜q˜æ²¡å­¦åˆ°åQ‰ä»…ä»…å°†å‰ç¼€å‚æ•°ä½œäØ“(f¨´)一个标 志——只要有一个前¾~€å‚数出现åQŒä¸½Ž¡å…¶å€égØ“(f¨´)何,命ä×o(h¨´)的功能都ä¼?x¨¬)改变ã€?</p> <p>è€?C-v å’?M-v 则属于另一¿Uç±»åž‹çš„例外。当¾l™å®šä¸€ä¸ªå‚æ•°æ—¶åQŒå®ƒä»¬å°†æ»šåŠ¨ä½ æŒ‡ 定的“行数”åQŒè€Œä¸æ˜?#8220;屏数”。ä‹D例来è¯ß_(d¨¢)¼ŒC-u 8 C-v ž®†å±òq•向下滚åŠ?8 行, 而不æ˜?8 屏ã€?</p> <p>>> 现在试试看,输入 C-u 8 C-vã€?</p> <p>˜q™ä¸ªå‘½ä×o(h¨´)应该已经ž®†æ–‡å­—向上滚动了 8 行。如果你惛_°†å®ƒå†‹Æ¡åœ°å‘下滚动åQŒä½ å?以给定一个参数然后执è¡?M-vã€?</p> <p>如果你正在ä‹É用一个窗口系¾lŸï¼Œæ¯”如 X11 或者微软的 WindowsåQŒé‚£ä¹ˆåœ¨ Emacs ½H—口的左è¾ÒŽ(gu¨©)ˆ–者右边应该有一个长方åŞ的区域叫“滚动æ?#8221;åQŒä½ å¯ä»¥ç”¨é¼ æ ‡æ“¾U?滚动条来滚动文字ã€?</p> <p>>> 试着åœ?#8220;滚动条内的反白区åŸ?#8221;上按一下鼠标中键ã€?</p> <pre> 文字应该ä¼?x¨¬)滚动到鼠标所指示的位¾|®ã€?br /> </pre> <p>>> 当按住中键时åQŒè¯•着ž®†é¼ æ ‡ä¸Šä¸‹ç§»åЍã€?</p> <pre> 你会(x¨¬)看到文字随着鼠标的移动而上下滚动ã€?br /> 【Windows 版本½W¦åˆ Windows ½E‹åºçš„ä¼ ¾lŸæ“ä½œä¹ (f¨¤n)惯,上述操作不适用。ã€?br /> </pre> <ul> <li>åœ?EMACS 失去响应的时候(WHEN EMACS IS HUNGåQ?</li> </ul> <hr /> <p>如果 Emacs 对你的命令失åŽÕd“åº”,你可以很安全地用 C-g 来终止这个命令ã€?C-g 也可以被用来¾lˆæ­¢ä¸€ä¸ªæ‰§è¡Œè¿‡ä¹…的命ä×o(h¨´)ã€?</p> <p>C-g ˜q˜å¯ä»¥è¢«æ¥å–消数字参数和那些输入åˆîC¸€åŠçš„命ä×o(h¨´)ã€?</p> <p>>> 输入 C-u 100 讑֮šä¸€ä¸ªå€égØ“(f¨´) 100 的数字参敎ͼŒç„¶åŽæŒ?C-gã€?</p> <pre> 现在再按 C-fåQŒå…‰æ ‡åº”该只ä¼?x¨¬)移动一个字½W¦ï¼Œå› äØ“(f¨´)ä½ å·²¾lç”¨ C-g 取消了参数ã€?br /> </pre> <p>如果你不ž®å¿ƒæŒ‰äº†ä¸€ä¸?<ESC>åQŒä½ ä¹Ÿå¯ä»¥ç”¨ C-g 来取消它ã€?【这个说法似乎有问题åQŒå› ä¸ºæŒ‰ç…§è¿™ä¸ªæŒ‰é”®é¡ºåºè¾“入的应该æ˜?C-M-gã€?</p> <pre> 取消<ESC> 的正¼‹®åšæ³•是再连按两‹Æ?<ESC>。ã€?br /> </pre> <ul> <li>被禁用的命ä×o(h¨´)åQˆDISABLED COMMANDSåQ?</li> </ul> <hr /> <p>有一äº?Emacs 命ä×o(h¨´)è¢?#8220;¼›ç”¨”了,以避免初学者在不了解其¼‹®åˆ‡åŠŸèƒ½çš„æƒ…å†µä¸‹è¯?用这些命令,造成éºÈƒ¦ã€?</p> <p>如果你用åˆîCº†ä¸€ä¸ªè¢«¼›ç”¨çš„命令,Emacs ä¼?x¨¬)显½CÞZ¸€ä¸ªæ½Cºæ¶ˆæ¯ï¼Œå‘Šè¯‰ä½ è¿™ä¸ªå‘½ä»?到底是干什么的åQŒè¯¢é—®ä½ æ˜¯å¦è¦ç‘ô¾l­ï¼Œòq¶åœ¨å¾—到你的肯定之后再执行这命ä×o(h¨´)ã€?</p> <p>你要是真的想执行被禁用的命ä×o(h¨´)åQŒé‚£ä¹ˆåœ¨ Emacs 询问你的时候应该按½Iºæ ¼ã€‚一èˆ?来说åQŒå¦‚果你不想执行åQŒæŒ‰“n”ž®Þp¡Œäº†ã€?</p> <p>>> 试试 C-x C-l åQˆè¿™æ˜¯ä¸€ä¸ªè¢«¼›ç”¨çš„命令) </p> <pre> 然后ç”?n 来回½{”问题ã€?br /> </pre> <ul> <li>½H—æ ¼åQˆWINDOWSåQ?</li> </ul> <hr /> <p>Emacs 可以有多个窗æ û|¼Œæ¯ä¸ª½H—格都显½CÞZ¸åŒçš„æ–‡å­—。我们后面再介绍怎么对付 多个½H—æ ¼åQŒçŽ°åœ¨å…ˆè®©æˆ‘ä»¬å…ˆæžæ˜Žç™½å¦‚ä½•å…³æŽ‰å¤šä½™çš„½H—格。其实也很简单:(x¨¬) </p> <pre> C-x 1 只保留一个窗æ û|¼ˆä¹Ÿå°±æ˜¯å…³æŽ‰å…¶ä»–所有的½H—æ ¼åQ‰ã€?br /> </pre> <p>也就是先æŒ?CONTROL-x 然后再按 1。C-x 1 ä¼?x¨¬)保留光标所在的½H—æ ¼åQŒåƈž®†å…¶æ‰©å¤§ 到整个屏òq•,同时å…ÏxŽ‰æ‰€æœ‰å…¶å®ƒçš„½H—æ ¼ã€?</p> <p>>> 把光标移到本行然后输å…?C-u 0 C-lã€?</p> <p>>> 输入 CONTROL-h k CONTROL-f。观察当一个新½H—格出现时当前窗æ û|¼ˆç”¨æ¥æ˜„¡¤º </p> <pre> CONTROL-f 命ä×o(h¨´)的文档)是如何羃?y¨­u)®çš„ã€?br /> </pre> <p>>> 输入 C-x 1 å…ÏxŽ‰æ–‡æ¡£½H—æ ¼ã€?</p> <p>˜q™ä¸ªå‘½ä×o(h¨´)跟先前学到的命ä×o(h¨´)ä¸å¤ªä¸€æ øP¼Œå› äØ“(f¨´)它包含了两个字符åQŒä»¥ CONTROL-x å¼€ 始。有一¾pÕdˆ—命ä×o(h¨´)都是ä»?CONTROL-x 开始的åQŒè¿™äº›å‘½ä»¤è®¸å¤šéƒ½è·?#8220;½H—格、文件ã€?¾~“冲区【缓冲区åQˆbufferåQ‰ä¼š(x¨¬)在后文详¾l†ä»‹¾lã€?#8221;½{‰ç­‰è¯¸å¦‚此类的东西有养I¼Œå…?中有些命令可能有 2 个ã€? 个或è€?4 个字½W¦é•¿ã€?</p> <ul> <li>插入与删除(INSERTING AND DELETINGåQ?</li> </ul> <hr /> <p>插入文字很简单,敲键盘就行了。你能看到的字符åQŒæ¯”å¦?Aã€?ã€? ½{‰ç­‰åQŒéƒ½è¢?Emacs è§†äØ“(f¨´)文字òq¶ä¸”可以直接插入。敲 <Return>åQˆå›žè½¦é”®åQ‰ä¼š(x¨¬)插入一个换行符ã€?</p> <p>你可以用 <Delback> 来删除最后输入的的一个字½W¦ï¼Œ˜q™ä¸ªè·Ÿä½ åœ?Emacs 之外çš?用法应该一栗÷€‚一般来è¯? <Delback> ž®±æ˜¯ä½äºŽ <Return> 键上æ–ÒŽ(gu¨©)Ÿå¤„的一个大å? 键,通常被标½CÞZØ“(f¨´)“Delete”ã€?#8220;Del”或è€?#8220;Backspace”ã€?</p> <p>如果你找åˆîCº†æ ‡ç€“Backspace”的键åQŒé‚£ä¹ˆå®ƒåº”该ž®±æ˜¯ <Delback>åQ›å³ä¾¿ä½ åˆåœ¨ 键盘其它地方扑ֈ°äº†ä¸€ä¸ªæ ‡½CÞZØ“(f¨´)“Del”的键åQŒé‚£ä¹ˆå®ƒä¹Ÿåº”该不æ˜?<Delback>ã€?</p> <p>一¿Uæ›´é€šç”¨çš„说法是åQ?lt;Delback> ž®†ä½äºŽå…‰æ ‡å‰çš„一个字½W¦åˆ é™¤ã€?</p> <p>>> 现在ž®Þp¯•试——敲点字åQŒç„¶åŽæŒ‰å‡ ä¸‹ <Delback> 删除它们ã€?</p> <pre> 不用担心你会(x¨¬)修改文äšgåQŒä½ òq²ä»€ä¹ˆéƒ½æ²¡å…³¾p»ï¼Œ˜q™é‡Œž®±æ˜¯ä¸“给你练ä¹?f¨¤n)用的ã€?br /> </pre> <p>如果一行文字很é•ѝ€è¶…å‡ÞZº†½H—格的宽度,昄¡¤ºä¸ä¸‹çš„部分会(x¨¬)在紧é‚?c¨¨)š„下一行ç‘ô¾l?昄¡¤ºã€‚这时会(x¨¬)有一个反斜线åQˆæŽ§åˆ¶å°ä¸‹æ˜¯åæ–œ¾U¿ï¼Œå¦‚果你用囑ÖÅž½H—口¾pȝ»ŸåQŒåˆ™åº?该是一个小ž®çš„转弯½Ž­å¤´åQ‰æ˜¾½Cºåœ¨åŒ™¾¹æ²¿ï¼Œè¡¨æ˜Ž˜q™æ˜¯æŸä¸€è¡Œçš„æŽ¥ç®‹æ˜„¡¤ºã€?</p> <p>>> 输入文字åQŒä¸€ç›´åˆ°å±å¹•的右边界åQŒç„¶åŽç‘ô¾l­ï¼Œä½ ä¼š(x¨¬)看到一个接¾l­è¡Œå‡ºçްã€?</p> <p>>> ç”?<Delback> 删掉一些文字,直到此行长度ž®äºŽ½H—格宽度åQŒæŽ¥¾l­è¡Œž®±æ¶ˆå¤×ƒº†ã€?</p> <p>你可以像删除其他字符一样删除换行符。删除两行中间的换行½W¦ä¼š(x¨¬)ž®†ä¸¤è¡Œåˆòq¶æˆ 一行。如果合òq¶çš„¾l“果使这一行太长,­‘…出了窗格的宽度åQŒå®ƒ?y¨­u)®×ƒ¼?x¨¬)以一个接¾l­è¡Œ 来显½Cºã€?</p> <p>>> ¿UÕdŠ¨å…‰æ ‡åˆ°æœ¬è¡Œçš„å¼€å¤´åÆˆè¾“å…¥ <Delback>ã€?</p> <pre> ˜q™æ—¶æœ¬è¡Œä¸Žå…¶å‰ä¸€è¡Œå°†è¢«åˆòq¶äØ“(f¨´)一行ã€?br /> </pre> <p>>> 输入 <Return> 重新插入你刚才删除的换行½W¦ã€?</p> <p>前面说过åQŒå¤§éƒ¨åˆ†çš?Emacs 命ä×o(h¨´)都可以指定重复次敎ͼŒ˜q™å…¶ä¸­ä¹ŸåŒ…括输入字符çš?命ä×o(h¨´)。重复执行输入字½W¦çš„命ä×o(h¨´)实际上就是输入多个一æ ïL(f¨¥ng)š„字符ã€?</p> <p>>> 试试 C-u 8 *åQŒè¿™ž®†ä¼š(x¨¬)插入 ********ã€?</p> <p>好,现在你应该已¾læŽŒæ¡äº†æœ€åŸºæœ¬çš„的文本插入和修改功能,其实删除˜q˜å¯ä»?“以词为单ä½?#8221;˜q›è¡ŒåQŒä¸‹é¢æ˜¯ä¸€ä¸ªå…³äº?#8220;删除”操作的小¾l“:(x¨¬) </p> <pre> <Delback> 删除光标前的一个字½W?br /> C-d 删除光标后的一个字½W?br /> <br /> M-<Delback> ¿U»é™¤å…‰æ ‡å‰çš„一个词<br /> M-d ¿U»é™¤å…‰æ ‡åŽçš„一个词<br /> <br /> C-k ¿U»é™¤ä»Žå…‰æ ‡åˆ°“行尾”间的字符<br /> M-k ¿U»é™¤ä»Žå…‰æ ‡åˆ°“句尾”间的字符<br /> </pre> <p>【可能你已经注意åˆîCº†“删除åQˆdeleteåQ?#8221;å’?#8220;¿U»é™¤åQˆkillåQ?#8221;的用词区别,å?文会(x¨¬)有详¾l†è¯´æ˜Žã€‚ã€?</p> <p>注意“<Delback> å’?C-d”˜q˜æœ‰“M-<Delback> å’?M-d”是根据前˜q°æƒ¯ä¾‹ä»Ž C-f å’? M-f 衍生出来的(其实<Delback>不是控制字符åQŒæˆ‘们先忽略˜q™ä¸€ç‚¹ï¼‰ã€‚C-k å’?M-k 的关¾pÕdœ¨æŸç§½E‹åº¦ä¸Šä¸Ž C-e å’? M-e 一样——如果把“一è¡?#8221;å’?#8220;一å?#8221; 作一个类比的话ã€?</p> <p>你也可以用一¿Uç»Ÿä¸€çš„办法来¿U»é™¤¾~“冲区里的ä“Q何一部分åQšé¦–先把光标¿UÕdЍåˆîC½  惌™¦¿U»é™¤çš„区域的一端,然后æŒ?C-@ æˆ? C-SPCåQˆä“Q一卛_¯åQŒSPC指空æ û|¼‰ã€æ³¨æ„ï¼Œ C-SPC 往往被中文用戯‚®¾å®šæˆè¾“入法热键,如果˜q™æ ·åQŒC-SPC ž®Þp¢«¾pȝ»Ÿæ‹¦æˆªè€Œæ—  法输入给 Emacs 了,因此˜q™é‡Œ˜q˜æ˜¯æŽ¨èä½¿ç”¨C-@。】,然后再移动到另一端,å†?æŒ?C-w ž®±å¯ä»¥æŠŠä½äºŽ˜q™ä¸¤ç‚¹ä¹‹é—´çš„æ‰€æœ‰æ–‡å­—移除了ã€?</p> <p>>> ¿UÕdŠ¨å…‰æ ‡åˆîC¸Šä¸€ŒDµå¼€å¤´çš„“ä½?#8221;å­—ã€?>> 输入 C-@ 。Emacs 应该ä¼?x¨¬)在屏幕的下æ–Ò?gu¨©)˜¾½CÞZ¸€ä¸?#8220;Mark set”的消息ã€?>> ¿UÕdŠ¨å…‰æ ‡åˆ°ç¬¬äºŒè¡Œä¸­çš„“ç«?#8221;å­—ã€?>> 输入 C-wåQŒå°±ä¼?x¨¬)把ä?#8220;ä½?#8221;开始到“ç«?#8221;之前的文字全部移除ã€?</p> <p>注意,“¿U»é™¤åQˆkillåQ?#8221;å’?#8220;删除åQˆdeleteåQ?#8221;的不同在于被¿U»é™¤çš„东西可以找å›? 来,而被删除的就不行了。【实际上åQŒç§»é™¤æŽ‰çš„东西虽然看èµäh¥“消失”了,ä½?实际上被 Emacs 记录了下来,因此˜q˜å¯ä»¥æ‰¾å›žæ¥åQ›è€Œåˆ é™¤æŽ‰çš„东西虽然也可能˜q?在内存里åQŒä½†æ˜¯å·²¾lè¢«Emacs“抛弃”了,所以就找不回来了。】重新插入被¿U»é™¤ 的文字称ä¸?#8220;召回åQˆyankåQ?#8221;。一般而言åQŒé‚£äº›ä¼š(x¨¬)去除很多文字的命令会(x¨¬)把去é™? 掉的文字储存èµäh¥åQˆå®ƒä»¬è¢«è®‘Ö®šæˆäº†“可召å›?#8221;åQ‰ï¼Œè€Œé‚£äº›åªæ˜¯åŽ»é™¤ä¸€ä¸ªå­—½W¦æˆ– 者只是去除空白的命ä×o(h¨´)ž®×ƒ¸ä¼?x¨¬)储存那些被去除掉的东西åQˆå› æ­¤ä½ ž®±æ— æ³•召回)ã€? </p> <p>>> ¿UÕdŠ¨å…‰æ ‡åˆîC¸€éžç©ºç™½è¡Œçš„行å¤ß_(d¨¢)¼Œç„¶åŽè¾“å…¥ C-k ¿U»é™¤é‚£ä¸€è¡Œä¸Šçš„æ–‡å­—ã€?</p> <p>>> 再次 C-kåQŒä½ å¯ä»¥çœ‹åˆ°å®ƒç§»é™¤äº†è·Ÿåœ¨é‚£ä¸€è¡ŒåŽé¢çš„æ¢è¡Œ½W¦ã€?</p> <p>注意åQŒå•独的 C-k ä¼?x¨¬)把一行的内容¿U»é™¤åQŒè€Œç¬¬äºŒä¸ª C-k 则会(x¨¬)¿U»é™¤æ¢è¡Œ½W¦ï¼Œòq¶ä‹É 其后所有的行都向上¿UÕdŠ¨ã€‚C-k 处理数字参数的方式很特别åQŒå®ƒä¼?x¨¬)把参数指定ç?那么多行˜qžåŒå…¶åŽçš„æ¢è¡Œç¬¦ä¸€èµïL(f¨¥ng)§»é™¤ï¼Œè€Œä¸ä»…仅是重å¤?C-k 而已。比å¦?C-u 2 C-k ä¼?x¨¬)把两行以å?qi¨¢ng)它们的换行符¿U»é™¤åQ›è€Œå¦‚果只是输å…?C-k 两次昄¡„¶ä¸æ˜¯˜q™ä¸ª¾l?æžœã€?</p> <p>ž®†è¢«¿U»é™¤çš„æ–‡å­—恢复的动作¿UîCØ“(f¨´)“召回åQˆyankingåQ?#8221;。(ž®±å¥½åƒä½ æŠŠåˆ«äºÞZ»Žä½ èín 边移走的东西又猛力地拉回来。)你可以在你删除文字的地方召回åQŒä¹Ÿå¯ä»¥åœ¨åˆ« 的地方召回,˜q˜å¯ä»¥å¤š‹Æ¡å¬å›žåŒæ ïL(f¨¥ng)š„æ–‡å­—以得到它的多个拷贝ã€?</p> <p>召回的命令是 C-y。它ä¼?x¨¬)在光标所在处插入你最后移除的文字ã€?</p> <p>>> 试试看,输入 C-y ž®†æ–‡å­—召回ã€?</p> <p>如果你一‹Æ¡è¿žæŒ‰äº†å¥½å‡ ä¸?C-kåQŒé‚£ä¹ˆæ‰€æœ‰è¢«¿U»é™¤çš„行ä¼?x¨¬)è¢«å­˜å‚¨åœ¨ä¸€èµøP¼Œåªè¦ä¸€ä¸?C-y ž®±å¯ä»¥æŠŠå®ƒä»¬éƒ½å¬å›žã€?</p> <p>>> 在这里试试,˜qžç®‹æŒ‰å‡ ‹Æ?C-kã€?</p> <p>现在再来恢复刚刚被我们移除的文字åQ?</p> <p>>> æŒ?C-y。然后把光标往下移动几行,再按一‹Æ?C-yã€?</p> <pre> 现在你应该知道怎么复制文字了ã€?br /> </pre> <p>C-y 可以把最˜q‘移除的文字召回åQŒä½†å¦‚果你想召回的东西不是最˜q‘移除的åQŒè¯¥æ€?么办呢?它们当然没有丢,你可以用 M-y 来召回它们。在ç”? C-y 召回最˜q‘ç§»é™?的文字之后,紧接着再用 M-y ž®±å¯ä»¥å¬å›žå†å‰ä¸€‹Æ¡è¢«¿U»é™¤çš„æ–‡å­—,再按一‹Æ?M-y 又可以召回再上一‹Æ¡çš„åQŒå› æ­¤åªè¦å¤šæŒ‰å‡ ‹Æ? M-y ž®±å¯ä»¥æ‰¾åˆîC½ æƒŒ™¦å¬å›žçš„东 西了。找åˆîCº†ä¹‹åŽåQŒä½ ä»€ä¹ˆä¹Ÿä¸ç”¨åšï¼ŒæŠŠå®ƒä»¬æ™¾åœ¨é‚£é‡Œï¼Œ¾l§ç®‹ä½ çš„¾~–辑ž®Þp¡Œäº†ã€?</p> <p>如果你一‹Æ¡æŒ‰ M-y 按了很多下,你可能会(x¨¬)回到起始点,也就是最˜q‘移除的文字ã€?【看得出˜q™å®žé™…上是一个环。ã€?</p> <p>>> ¿U»é™¤ä¸€è¡Œï¼Œ¿UÕdŠ¨ä¸€ä¸‹å…‰æ ‡ï¼Œç„¶åŽå†ç§»é™¤å¦å¤–ä¸€è¡Œã€?</p> <pre> æŒ?C-y ž®†ç¬¬äºŒæ¬¡¿U»é™¤çš„那行召回来ã€?br /> 紧接着再按 M-yåQŒå®ƒ?y¨­u)®†ä¼?x¨¬)被第一‹Æ¡ç§»é™¤çš„那行取代ã€?br /> 试着再按几下 M-y 看看ä¼?x¨¬)发生什么ã€?br /> 再ç‘ô¾l­ï¼Œç›´åˆ°½W¬äºŒè¡Œè¢«å¬å›žæ¥ï¼Œç„¶åŽå†åšä¸ªå‡ ‹Æ¡ã€?br /> 如果你愿意,你可以试着¾l?M-y 指定一个正的或负的参数ã€?br /> </pre> <ul> <li>撤销åQˆUNDOåQ?</li> </ul> <hr /> <p>如果你修改了一ŒD‰|–‡å­—,又觉得改得不好,可以ç”?undo 命ä×o(h¨´)˜q›è¡Œæ’¤é”€åQ?C-x uã€?</p> <p>通常 C-x u ä¼?x¨¬)消除一个命令所造成的所有改变;如果你在一行中˜qžç®‹å¤šæ¬¡åœîC‹Éç”?C-x uåQŒä½ ä¼?x¨¬)把以前的命令也依次撤销ã€?</p> <p>但是有两个例外:(x¨¬) 1åQ?没有改变文字的命令不½Ž—(包括光标¿UÕdЍ命ä×o(h¨´)和滚动命令) 2åQ?从键盘输入的字符以组为单位——每¾l?20 个字½W¦â€”—来˜q›è¡Œå¤„理ã€?</p> <pre> åQˆè¿™æ˜¯äØ“(f¨´)了减ž®‘你在撤销“插入文字”动作旉™œ€è¦è¾“å…?C-x u 的次敎ͼ‰<br /> </pre> <p>>> ç”?C-k ž®†è¿™ä¸€è¡Œç§»é™¤ï¼Œç„¶åŽè¾“å…¥ C-x u åQŒå®ƒä¼?x¨¬)再‹Æ¡å‡ºçްã€?</p> <p>C-_ 也是撤销命ä×o(h¨´)åQ›å®ƒçš„作用跟 C-x u ä¸€æ øP¼Œä½†æ˜¯å®ƒæ¯”较容易多‹Æ¡è¾“入。C-_ çš?¾~ºç‚¹æ˜¯åœ¨æŸäº›é”®ç›˜ä¸Šå¯èƒ½ä¸å¤ªå®¹æ˜“按åQŒè¿™ä¹Ÿæ­£æ˜¯æˆ‘们同时提ä¾?C-x u 的原因。在 某些¾lˆç«¯ä¸Šï¼Œä½ å¯ä»¥æŒ‰ä½?CONTROL 再按“/”来输å…?C-_ã€?</p> <p>数字参数对于 C-_ å’?C-x u 的意义是执行撤销的重复次数ã€?</p> <ul> <li>æ–‡äšgåQˆF(tu¨¢n)ILEåQ?</li> </ul> <hr /> <p>想保存工作成果就要记得存盘,否则一旦退å‡?Emacs 你编辑的文字ž®±éƒ½ä¸¢äº†ã€‚要 存盘åQŒå°±è¦åœ¨¾~–辑å‰?#8220;å¯ÀL‰¾”åˆîC¸€ä¸ªå­˜ç›˜æ–‡ä»¶ã€‚(˜q™ä¸ª˜q‡ç¨‹é€šå¸¸ä¹Ÿè¢«¿UîCØ“(f¨´)“讉K—®” æ–‡äšg。) </p> <p>å¯ÀL‰¾åˆîC¸€ä¸ªæ–‡ä»¶æ„å‘³ç€ä½ å¯ä»¥åœ¨ Emacs 里查看这个文件的内容。从很多角度è®ÔŒ¼Œ ˜q™å°±½{‰äºŽä½ åœ¨ç›´æŽ¥¾~–辑˜q™ä¸ªæ–‡äšg。但是你所做的修改只有åœ?#8220;存盘”的时候才ä¼?被写入文件。也正因为如此,你可以丢弃一个改åˆîC¸€åŠçš„æ–‡äšg而不必把˜q™ä¸ªŒD‹åºŸ æ–‡äšg也保存到计算æœÞZ¸Šã€‚最后就½Ž—你真正存了盘,Emacs 也会(x¨¬)把存盘前的文仉™‡ 命名保存åQŒä»¥é˜²ä½ æ”¹å®Œä¹‹åŽåˆæƒ³åæ?zh¨¨n)”ã€?</p> <p>在屏òq•的下方åQŒä½ åº”该能够看到头尾都是短线“-”的一行,其开头通常都是诸如 “--:-- TUTORIAL.cn”˜q™æ ·çš„东西,˜q™äº›æ–‡å­—ž®×ƒ»£è¡¨äº†ä½ å½“前正在访问的文äšgã€? 现在你访问的文äšgå?#8220;TUTORIAL.cn”åQŒå®ƒåªæ˜¯¾l™ä½ ä¸ªäh临时使用的一个拷贝。只 要你ç”?Emacs å¯ÀL‰¾åˆîC¸€ä¸ªæ–‡ä»Óž¼Œæ–‡äšg名就ä¼?x¨¬)出现在上述位置ã€?</p> <p>å¯ÀL‰¾æ–‡äšg的命令有一个特别之处,那就是你必须¾l™å‡ºæ–‡äšg名。我们称˜q™ä¸ªå‘½ä×o(h¨´) “从终端读入了一个参æ•?#8221;åQˆåœ¨˜q™é‡ŒåQŒè¿™ä¸ªå‚数显然就是文件名åQ‰ã€‚当你输入了 ˜q™ä¸ªå‘½ä×o(h¨´)之后åQ?</p> <pre> C-x C-f å¯ÀL‰¾ä¸€ä¸ªæ–‡ä»?br /> </pre> <p>Emacs ä¼?x¨¬)提½CÞZ½ è¾“入文äšg名。你输入的文件名ä¼?x¨¬)出现在屏幕最底端的一行,˜q™ä¸€ 行被¿UîCØ“(f¨´)ž®ç¼“å†ÔŒ¼ˆminibufferåQ‰ï¼Œåœ¨å°¾~“冲里你可以使用通常çš?Emacs ¾~–辑命ä×o(h¨´) 来编辑文件名ã€?</p> <p>在小¾~“冲里输入文件名åQˆå…¶å®žè¾“å…¥åˆ«çš„ä¸œè¥¿ä¹Ÿä¸€æ øP¼‰æ—¶å¯ä»¥ç”¨ C-g 取消ã€?</p> <p>>> 输入 C-x C-fåQŒç„¶åŽè¾“å…?C-g </p> <pre> ˜q™ä¼š(x¨¬)å…Ïxމž®ç¼“å†ÔŒ¼ŒåŒæ—¶ä¹Ÿä¼š(x¨¬)取消使用ž®ç¼“冲的 C-x C-f 命ä×o(h¨´)ã€?br /> 当然了,你也没有找ä“Q何文件ã€?br /> </pre> <p>输入完文件名之后ç”?<Return> ¾l“束åQŒç„¶å?C-x C-f 命ä×o(h¨´)å¼€å§‹å·¥ä½œåÆˆæ‰‘Öˆ°ä½ æŒ‡å®?的文件。小¾~“冲åœ?C-x C-f 命ä×o(h¨´)¾l“束之后也会(x¨¬)消失ã€?</p> <p>眨眼间文件就ä¼?x¨¬)显½Cºåœ¨å±å¹•上,你可以开始编辑了。存盘用˜q™ä¸ªå‘½ä×o(h¨´)åQ?</p> <pre> C-x C-s 储存˜q™ä¸ªæ–‡äšg<br /> </pre> <p>˜q™ä¸ªå‘½ä×o(h¨´)æŠ?Emacs 中的文字存储到文件中。第一‹Æ¡å­˜ç›˜çš„æ—¶å€?Emacs ä¼?x¨¬)将原æ–?仉™‡å‘½åä»¥ä¿ç•™åŽŸæ–‡ã€‚é‡å‘½åçš„è§„åˆ™é€šå¸¸æ˜¯åœ¨åŽŸæ–‡ä»¶åä¹‹åŽæ·ÕdР䏀ä¸?#8220;~”字符ã€?</p> <p>存盘¾l“束后,Emacs ä¼?x¨¬)显½Cºå†™å…¥æ–‡ä»¶çš„æ–‡äšg名。你最好养成经常存盘的ä¹?f¨¤n)惯åQŒè¿™ 样在¾pȝ»Ÿå´©æºƒæˆ–者死机的时候你不会(x¨¬)损失太多ã€?</p> <p>>> 输入 C-x C-s 把本快速指南存下来ã€?</p> <pre> 你会(x¨¬)看到“Wrote ...TUTORIAL.cn”˜q™æ ·çš„æ¶ˆæ¯æ˜¾½Cºåœ¨å±å¹•的下斏V€?br /> </pre> <p>注意åQšä‹É用某些终端的时候,输入 C-x C-s ä¼?x¨¬)冻¾l“屏òq•【屏òq•没有ä“Q何输出】, ˜q™æ ·ä½ å°±çœ‹ä¸åˆ?Emacs çš„ä“Q何变化。其原因是操作系¾lŸçš„“‹¹é‡æŽ§åˆ¶”功能æŠ?C-s 拦截了,òq¶ä¸”å†È»“了屏òq•,Emacs 自然也就看不到这个输入了。用 C-q 可以 解除屏幕å†È»“。要解决˜q™ä¸ªé—®é¢˜åQŒè¯·å‚è€?Emacs 手册里的“Spontaneous Entry to Incremental Search”一节【Emacs 手册可能˜q˜æ²¡æœ‰ä¸­æ–‡ç¿»è¯‘】,那里可能æœ?ä¸€äº›æœ‰ç”¨çš„å»ø™®®ã€?</p> <p>你可以寻找一个已有的文äšg然后查看或者编辑,你还可以å¯ÀL‰¾ä¸€ä¸ªä¸å­˜åœ¨çš„æ–‡ä»¶ã€?实际上这正是ç”?Emacs 创徏新文件的æ–ÒŽ(gu¨©)³•åQ𿉾åˆîC¸å­˜åœ¨çš„æ–°æ–‡äšgåQŒç„¶åŽä»Žé›¶å¼€å§‹ã€?在存盘的时候,Emacs æ‰çœŸæ­£åˆ›å»ø™¿™ä¸ªæ–‡ä»¶ç„¶åŽå†å­˜ç›˜ã€‚在˜q™ä¹‹åŽä¸€åˆ‡å°±è·Ÿä½ ¾~? 辑一个已有文件一样了ã€?</p> <ul> <li>¾~“冲区(BUFFERåQ?</li> </ul> <hr /> <p>如果你用 C-x C-f 扑ֈ°½W¬äºŒä¸ªæ–‡ä»Óž¼Œ½W¬ä¸€ä¸ªæ–‡ä»¶ä»ç„¶ä¼š(x¨¬)åœ?Emacs 里。要切回½W?一个文ä»Óž¼Œä½ å¯ä»?C-x C-f 再次å¯ÀL‰¾å®ƒã€‚è¿™æ øP¼Œä½ å¯ä»¥åœ¨ Emacs 里同时打开å¾?多文件ã€?</p> <p>>> ç”?C-x C-f foo <Return> 的方式徏立一个名ä¸?#8220;foo”的文件ã€?</p> <pre> 然后敲入一些文字,再用 C-x C-s 保存文äšg“foo”ã€?br /> 最后,输入 C-x C-f TUTORIAL.cn <Return> 回到˜q™é‡Œã€?br /> </pre> <p>Emacs 把每个编辑中的文仉™ƒ½æ”‘Öœ¨ä¸€ä¸ªç§°ä¸?#8220;¾~“冲区(bufferåQ?#8221;的地斏V€‚每å¯?扑ֈ°ä¸€ä¸ªæ–‡ä»Óž¼ŒEmacs ž®±åœ¨å…¶å†…部开辟一个缓冲区。用下面的命令可以列出当å‰?所有的¾~“冲区:(x¨¬) </p> <pre> C-x C-b 列出¾~“冲åŒ?br /> </pre> <p>>> 现在ž®Þp¯•一ä¸?C-x C-b </p> <p>观察一下缓冲区是如何命名的åQŒå®ƒå¾ˆå¯èƒ½è·Ÿå…¶å¯¹åº”的文äšg同名。事实上åQŒä½ åœ¨ä¸€ ä¸?Emacs ½H—格里看到的ä»ÖM½•文字都是某个¾~“冲区的一部分ã€?</p> <p>>> 输入 C-x 1 ¼›Õd¼€¾~“冲区列è¡?</p> <p>不管存在多少¾~“冲区,ä»ÖM½•时候都只能有一个是“当前”¾~“冲区,也就是你正在 ¾~–辑的这个。如果你想编辑另外一个缓冲区åQŒé‚£ä¹ˆä½ å¿…é¡»“切换”˜q‡åŽ»ã€‚ä¸Šé¢è®² ˜q‡ï¼Œç”?C-x C-f 可以切换到某个文件对应的¾~“冲区。不˜q‡è¿˜æœ‰ä¸€ä¸ªæ›´½Ž€å•点的办 法,那就是用 C-x b。用˜q™ä¸ªå‘½ä×o(h¨´)åQŒä½ å¿…须输入¾~“冲区的名称ã€?</p> <p>>> 输入 C-x b foo <Return> 以回到文ä»?#8220;foo”的缓冲区ã€?</p> <pre> 然后输入 C-x b TUTORIAL.cn <Return> 回到˜q™é‡Œã€?br /> </pre> <p>大多数情况下åQŒç¼“冲区和与其对应的文äšg是同名的åQˆä¸åŒ…括目录名)åQŒä¸˜q‡è¿™ä¹?不是¾lå¯¹çš„。用 C-x C-b 得到的缓冲区列表中显½Cºçš„æ€ÀL˜¯¾~“冲区的名称ã€?</p> <p>你在 Emacs ½H—格里看到的“ä»ÖM½•”文字都一定是属于某个¾~“冲区的。也有些¾~“冲 åŒºåÆˆæ²¡æœ‰å¯¹åº”æ–‡äšgåQšæ¯”å¦‚æ˜¾½Cºç¼“冲区列表的缓冲区ž®±æ˜¯˜q™æ ·åQŒå†æ¯”如一个名å?“*Messages*”的缓冲区也没有对应的文äšgåQŒè¿™ä¸ªç¼“冲区里存攄¡š„都是åœ?Emacs 底部出现的消息ã€?</p> <p>>> 输入 C-x b *Messages* <Return> 瞅瞅消息¾~“冲区里都有什么东è¥Ñ€?</p> <pre> 然后再输å…?C-x b TUTORIAL.cn <Return> 回到˜q™é‡Œã€?br /> </pre> <p>如果你对文äšg做了修改åQŒç„¶åŽåˆ‡æ¢åˆ°å¦ä¸€ä¸ªæ–‡ä»Óž¼Œ˜q™ä¸ªåŠ¨ä½œòq¶ä¸ä¼?x¨¬)帮你把½W¬ä¸€ä¸?æ–‡äšg存盘åQŒå¯¹½W¬ä¸€ä¸ªæ–‡ä»¶çš„修改仍然仅限äº?Emacs 中,也就是在它对应的¾~“冲åŒ?里。同时对½W¬äºŒä¸ªæ–‡ä»¶çš„修改也不ä¼?x¨¬)媄响到½W¬ä¸€ä¸ªæ–‡ä»¶ã€‚这很有用,但是也挺éº? çƒ¦ï¼Œå› äØ“(f¨´)如果你又惌™¦å­˜å‚¨½W¬ä¸€ä¸ªæ–‡ä»Óž¼Œä½ è¿˜éœ€è¦å…ˆç”?C-x C-f 切换回去åQŒç„¶å?再用 C-x C-s 存盘åQŒè¿™æ˜„¡„¶å¤ªéº»çƒ¦äº†ã€‚你需要一个更½Ž€ä¾¿çš„æ–ÒŽ(gu¨©)³•åQŒè€?Emacs å½?ç„¶å·²¾læ›¿ä½ æƒ³åˆîCº†åQ?</p> <pre> C-x s 保存多个¾~“冲åŒ?br /> </pre> <p>C-x s ä¼?x¨¬)找到所有已被修改但ž®šæœªå­˜ç›˜çš„缓冲区åQŒç„¶åŽå‘你逐个询问åQŒæ˜¯å¦éœ€è¦?存盘åQ?</p> <p>>> 插入一行文字,然后输入 C-x sã€?</p> <pre> 它应该会(x¨¬)问你åQŒæ˜¯å¦è¦å‚¨å­˜åäØ“(f¨´) TUTORIAL.cn 的缓冲区åQ?br /> æŒ?#8220;y”告诉它你惛_­˜ç›˜ã€?br /> </pre> <ul> <li>命ä×o(h¨´)集扩展(EXTENDING THE COMMAND SETåQ?</li> </ul> <hr /> <p>Emacs 的命令就像天上的星星åQŒæ•°ä¹Ÿæ•°ä¸æ¸…。把它们都对应到 CONTROL å’?META ¾l„合键上昄¡„¶æ˜¯ä¸å¯èƒ½çš„事情。Emacs 用扩展(eXtendåQ‰å‘½ä»¤æ¥è§£å†³˜q™ä¸ªé—®é¢˜åQ?扩展命ä×o(h¨´)有两¿Ué£Žæ û|¼š(x¨¬) </p> <pre> C-x 字符扩展ã€? C-x 之后输入另一个字½W¦æˆ–者组合键ã€?br /> M-x 命ä×o(h¨´)名扩展。M-x 之后输入一个命令名ã€?br /> </pre> <p>很多扩展命ä×o(h¨´)都很有用åQŒè™½ç„¶ä¸Žä½ å·²¾lå­¦˜q‡çš„命ä×o(h¨´)比è“v来,他们可能不那么常用ã€?你应该已¾lè§˜q‡ä¸€äº›æ‰©å±•命令了åQŒæ¯”如用 C-x C-f å¯ÀL‰¾æ–‡äšg和用 C-x C-s 保存 æ–‡äšg。退å‡?Emacs 用的 C-x C-c 也是扩展命ä×o(h¨´)。(不用担心退å‡?Emacs ä¼?x¨¬)ç»™ä? 带来什么损失,Emacs ä¼?x¨¬)在退å‡ÞZ¹‹å‰æé†’你保存文äšg的) </p> <p>在控制台下,C-z 可以暂时¼›Õd¼€ Emacs——当ç„Óž¼Œä½ è¿˜å¯ä»¥å†å›žæ¥ã€?</p> <p>在允è®?C-z 的系¾lŸä¸­åQŒC-z ä¼?x¨¬)æŠ?Emacs“挂è“v”åQŒä¹Ÿž®±æ˜¯è¯ß_(d¨¢)¼Œå®ƒä¼š(x¨¬)回到 shell 但不退å‡?Emacs。在那些最常用çš?shell 中,通常可以ç”?#8220;fg”或è€?#8220;%emacs” 命ä×o(h¨´)再次回到 Emacs 中ã€?</p> <p>在没有提供挂起功能的¾pȝ»Ÿä¸­ï¼ŒC-z ä¼?x¨¬)åœ?Emacs 之下创徏一个子 shell 来让ä½?˜qè¡Œå…¶å®ƒ½E‹åºåQŒåƈ且再‹Æ?#8220;回到” Emacs ä¸­â€”â€”è™½ç„¶æˆ‘ä»¬åÆˆæ²¡æœ‰çœŸæ­£¼›Õd¼€˜q‡ã€‚è¿™ ¿Uæƒ…况下åQŒé€šå¸¸ç”¨shell 命ä×o(h¨´)“exit”从子 shell 回到 Emacsã€?</p> <p>C-x C-c 最好在你打½Ž—退出登陆的时候再用。在 Emacs 被诸如邮件处理程序之¾c?的外部程序调用之后,也可以用 C-x C-c 退出。不˜q‡ä¸€èˆ¬æ¥è®ÔŒ¼Œå¦‚果你不想退å‡?ç™Õd½•åQŒæœ€å¥½è¿˜æ˜¯æŠŠ Emacs 挂è“v而不是退出ã€?</p> <p>C-x 的扩展命令有很多åQŒä¸‹é¢åˆ—出的是你已经学过的:(x¨¬) </p> <pre> C-x C-f å¯ÀL‰¾æ–‡äšgã€?br /> C-x C-s 保存文äšgã€?br /> C-x C-b 列出¾~“冲区ã€?br /> C-x C-c ¼›Õd¼€ Emacsã€?br /> C-x 1 å…ÏxŽ‰å…¶å®ƒæ‰€æœ‰çª—æ û|¼Œåªä¿ç•™ä¸€ä¸ªã€?br /> C-x u 撤销ã€?br /> </pre> <p>用命令名扩展的命令一般都不太常用åQŒæˆ–者只在部分模式下被用到。比å¦? replace-stringåQˆå­—½W¦ä¸²æ›¿æ¢åQ‰è¿™ä¸ªå‘½ä»¤ï¼Œå®ƒä¼š(x¨¬)在全文范围内把一个字½W¦ä¸²æ›¿æ¢ 成另一个。在你输å…?M-x 的时候,Emacs ä¼?x¨¬)在屏幕底端向你询问åQŒç„¶åŽä½ åº”该è¾?入命令名。如果你惌™¾“å…?#8220;replace-string”åQŒå…¶å®žåªéœ€è¦æ•²“repl s<TAB>”ž®?行了åQŒEmacs ä¼?x¨¬)帮你自动补齐的。输入完之后æŒ?<Return> ã€?</p> <p>字符串替换命令需要两个参数——被替换的字½W¦ä¸²å’Œç”¨æ¥æ›¿æ¢å®ƒçš„å­—½W¦ä¸²ã€‚每ä¸?参数的输入用换行½W¦æ¥¾l“束ã€?</p> <p>>> ž®†å…‰æ ‡ç§»åˆ°æœ¬è¡Œçš„下两行空白,然后输入 </p> <pre> M-x repl s<Return>changed<Return>altered<Return>ã€?br /> <br /> ã€äØ“(f¨´)了ç‘ô¾l­ç»ƒä¹?f¨¤n),保留一行原文如下:(x¨¬)<br /> Notice how this line has changed: you've replaced... ã€?br /> </pre> <p>è¯äh³¨æ„è¿™ä¸€è¡Œæ˜¯æ€Žä¹ˆæ”¹å˜çš„:(x¨¬)在光标之后的范围内,你已¾lå°†“changed”˜q™ä¸ª 词——不½Ž¡å®ƒåœ¨å“ªé‡Œå‡ºçŽ°â€”â€”å…¨éƒ¨ç”¨“altered”替换掉了ã€?</p> <ul> <li>自动保存åQˆAUTO SAVEåQ?</li> </ul> <hr /> <p>如果你修改了一个文件但是还没来得及(qi¨¢ng)存盘åQŒç„¶åŽä½ çš„计½Ž—机¾|¢å·¥äº†ï¼Œé‚£ä¹ˆä½ ç¼– è¾‘çš„ä¸œè¥¿å¾ˆå¯èƒ½å°±æ‰¾ä¸å›žæ¥äº†ã€‚äØ“(f¨´)了避免这æ ïL(f¨¥ng)š„不幸一再发生,Emacs ä¼?x¨¬)定期å°? 你正在编辑的文äšg存入一ä¸?#8220;自动保存”æ–‡äšg中。自动保存的文äšg名的头尾各有 一ä¸?#8220;#”字符åQŒæ¯”如你正在¾~–辑“hello.c”åQŒé‚£ä¹ˆå®ƒçš„自动保存文件就å?“#hello.c#”。在你正常存盘之后,Emacs ä¼?x¨¬)删除自动保存文件ã€?</p> <p>假如不幸真的发生了,你大可以从容的打开原来的文ä»Óž¼ˆæ³¨æ„ä¸æ˜¯è‡ªåŠ¨ä¿å­˜æ–‡äšgåQ?然后输入 M-x recover file<Return> 来恢复你的自动保存文件。在提示¼‹®è®¤çš?时候,输入 yes<Return> ž®Þp¡Œäº†ã€?</p> <ul> <li>回显区(ECHO AREAåQ?</li> </ul> <hr /> <p>如果 Emacs 发现你输入多字符命ä×o(h¨´)的节奏很慢,它会(x¨¬)在窗格的下方¿UîCØ“(f¨´)“回显åŒ?#8221; 的地方给你提½Cºã€‚回昑֌ºä½äºŽå±å¹•的最后一行ã€?</p> <ul> <li>状态栏åQˆMODE LINEåQ?</li> </ul> <hr /> <p>位于回显区的正上方的一行被¿UîCØ“(f¨´)“状态栏”。状态栏上会(x¨¬)昄¡¤ºä¸€äº›ä¿¡æ¯ï¼Œæ¯”如åQ?</p> <p>--:** TUTORIAL.cn (Fundamental)--L670--54%---------------- </p> <p>状态栏昄¡¤ºäº?Emacs 的状态和你正在编辑的文字的一些信息ã€?</p> <p>你应该知道文件名的意思吧åQŸå°±æ˜¯ä½ æ‰‘Öˆ°çš„那个文件嘛ã€?NN%-- 昄¡¤ºçš„æ˜¯å…‰æ ‡åœ?全文中的位置。如果位于文件的开å¤ß_(d¨¢)¼Œé‚£ä¹ˆž®±æ˜¾½C? --Top-- 而不æ˜?--00%--åQ›å¦‚ 果位于文件的末尾åQŒå°±æ˜„¡¤º --Bot--。如果文件很ž®ï¼Œä¸€å±å°±­‘³ä»¥æ˜„¡¤ºå…¨éƒ¨å†…容åQ?那么状态栏ä¼?x¨¬)显½C? --All--ã€?</p> <p>L 和其后的数字¾l™å‡ºäº†å…‰æ ‡æ‰€åœ¨è¡Œçš„行受÷€?</p> <p>最开头的星号åQ?åQ‰è¡¨½CÞZ½ å·²ç»å¯ÒŽ(gu¨©)–‡å­—做˜q‡æ”¹åŠ¨ã€‚åˆšåˆšæ‰“å¼€çš„æ–‡ä»¶è‚¯å®šæ²¡æœ‰è¢«æ”¹åŠ¨ ˜q‡ï¼Œæ‰€ä»¥çŠ¶æ€æ ä¸Šæ˜¾½Cºçš„不是星号而是短线åQ?åQ‰ã€?</p> <p>状态栏上小括号里的内容告诉你当前正在ä‹É用的¾~–辑模式。缺省的模式æ˜?FundamentalåQŒå°±æ˜¯ä½ çŽ°åœ¨æ­£åœ¨ä½¿ç”¨çš„è¿™ä¸ªã€‚å®ƒæ˜¯ä¸€¿U?#8220;ä¸ÀL¨¡å¼?#8221;ã€?</p> <p>Emacs 的主模式林林æ€ÀL€…R€‚有用来¾~–辑½E‹åºä»£ç çš„——比å¦?Lisp 模式åQ›ä¹Ÿæœ‰ç”¨ 来编辑各¿Uè‡ªç„¶è¯­­a€æ–‡æœ¬çš„——比å¦?Text 模式。ä“Q何情况下只能应用一个主æ¨?式,其名¿UîC¼š(x¨¬)昄¡¤ºåœ¨çŠ¶æ€æ ä¸Šï¼Œž®±åœ¨çŽ°åœ¨æ˜„¡¤º“Fundamental”的地斏V€?</p> <p>ä¸ÀL¨¡å¼æœ‰æ—¶ä¼š(x¨¬)æ”¹å˜ä¸€äº›å‘½ä»¤çš„è¡ŒäØ“(f¨´)。比如说åQŒä¸½Ž¡ç¼–辑什么样的程序代码,你都 可以用一个统一的命令来æ·ÕdŠ æ³¨é‡ŠåQŒä½†æ˜¯åœ¨ä¸åŒçš„语­a€ä¸­æ³¨é‡Šçš„语法往往是不å?的,˜q™æ—¶ç›¸åº”的主模式ž®×ƒ¼š(x¨¬)分别用各自的语法规则来添加注释。主模式都是可以 ç”?M-x 启动的命令,所ä»?M-x fundamental-mode ž®±å¯ä»¥åˆ‡æ¢åˆ° Fundamental 模式ã€?</p> <p>如果你要¾~–辑自然语言文本——比如现在——你应该ç”?Text 模式ã€?</p> <p>>> 输入 M-x text mode<Return>ã€?</p> <p>别害怕,没有什么命令会(x¨¬)改变功能。不˜q‡ä½ å¯ä»¥å‘现åQŒM-f å’?M-b 现在把单引号 åQ?åQ‰è§†ä¸ø™¯çš„一部分了。而在先前åQŒåœ¨ Fundamental 模式中,M-f å’?M-b 都将 单引可‚§†ä¸ºåˆ†éš”单词的½W¦å·ã€?</p> <p>ä¸ÀL¨¡å¼é€šå¸¸éƒ½ä¼š(x¨¬)搞一些类似的ž®åŠ¨ä½œï¼Œå› äØ“(f¨´)很多命ä×o(h¨´)其实完成的是“相同的工 ä½?#8221;åQŒåªæ˜¯åœ¨ä¸åŒæƒ…况下会(x¨¬)有不同的工作方式而已。【所è°?#8220;求同存异”åQŒåœ¨ Emacs 里得åˆîCº†å¾ˆå¥½çš„体现ã€?</p> <p>ç”?C-h m 可以查看当前ä¸ÀL¨¡å¼çš„æ–‡æ¡£ã€?</p> <p>>> ç”?C-u C-v ž®†æœ¬è¡Œå¸¦åˆ°é ˜q‘屏òq•的上方ã€?>> 输入 C-h måQŒçœ‹çœ?Text 模式ä¸?Fundamental 模式有哪些不同ã€?>> 输入 C-x 1 å…ÏxŽ‰æ–‡æ¡£½H—æ ¼ã€?</p> <p>ä¸ÀL¨¡å¼ä¹‹æ‰€ä»¥ç§°ä¹‹äØ“(f¨´)“主(majoråQ?#8221;模式åQŒæ˜¯å› äØ“(f¨´)同时˜q˜æœ‰“辅模å¼?#8221;åQˆminor modeåQ‰å­˜åœ¨ã€‚辅模式òq¶ä¸èƒ½æ›¿ä»£ä¸»æ¨¡å¼åQŒè€Œæ˜¯åœ¨ä¸»æ¨¡å¼ä¹‹å¤–再做一些辅助的修改ã€? 每个辅模式都可以独立地开启和关闭åQŒè·Ÿå…¶å®ƒè¾…模式无养I¼Œè·Ÿä¸»æ¨¡å¼ä¹Ÿæ— å…Ÿë€‚所 以你可以不用辅模式,也可以用一个或者多个辅模式ã€?</p> <p>有一个叫做自动折行(Auto FillåQ‰çš„辅模式用处很大,特别是在¾~–辑自然语言æ–?本的时候。这个辅模式启动后,Emacs ä¼?x¨¬)在你打字超å‡ÞZ¸€è¡Œè¾¹ç•Œæ—¶è‡ªåŠ¨æ›¿ä½ æ¢è¡Œã€?</p> <p>ç”?M-x auto fill mode<Return> 启动自动折行模式。启动之后,如果我们再用 一‹Æ?M-x auto fill mode<Return>åQŒè‡ªåŠ¨æŠ˜è¡Œæ¨¡å¼å°±è¢«å…³é—­äº†ã€‚ä¹Ÿž®±æ˜¯è¯ß_(d¨¢)¼Œå¦‚æžœ 自动折行模式没有开启,˜q™ä¸ªå‘½ä×o(h¨´)ä¼?x¨¬)开启它åQ›è€Œå¦‚果已¾lå¼€å¯äº†åQŒè¿™ä¸ªå‘½ä»¤ä¼š(x¨¬)å…?闭它。我们说˜q™ä¸ªå‘½ä×o(h¨´)用来“开养I¼ˆtoggleåQ?#8221;模式ã€?</p> <p>>> 现在输入 M-x auto fill mode<Return>。然后随便敲点什么,直到你看到它 </p> <pre> 分成两行。必™åÀL•²ä¸€äº›ç©ºæ û|¼Œå› äØ“(f¨´) Auto Fill 只在½Iºç™½å¤„进行断行。【空æ ?br /> 对英文来说是必须的,而对中文则不必。ã€?br /> </pre> <p>è¡Œè¾¹ç•Œé€šå¸¸è¢«è®¾å®šäØ“(f¨´) 70 个字½W¦ã€è¿™é‡ŒæŒ‡è‹±æ–‡å­—符】,你可以用 C-x f 命ä×o(h¨´)来重 新设定之。指定新行边界可以用数字参数来进行传递ã€?</p> <p>>> 输入 C-x f òq¶ä¼ é€’参æ•?20åQ?C-u 2 0 C-x fã€?</p> <pre> 然后输入一些文字,观察 Emacs 的自动折行动ä½?br /> 最后再ç”?C-x f ž®†è¾¹ç•Œè®¾å›?70ã€?br /> </pre> <p>如果你在ŒDµè½çš„中间做了一些修改,那么自动折行模式不会(x¨¬)替你把整个段落重æ–?折行。重新自动折行用 M-qåQŒæ³¨æ„ä‹É用的时候光标必™åÖM½äºŽä½ æƒÏxŠ˜è¡Œçš„é‚£ä¸€ŒDµé‡Œã€?</p> <p>>> ¿UÕdŠ¨å…‰æ ‡åˆ°å‰ä¸€ŒDµä¸­åQŒç„¶åŽè¾“å…?M-qã€?</p> <ul> <li>搜烦åQˆSEARCHINGåQ?</li> </ul> <hr /> <p>Emacs 可以向前或者向后搜索字½W¦ä¸²ã€‚搜索命令是一个移动光标的命ä×o(h¨´)åQšæœç´¢æˆ 功后åQŒå…‰æ ‡ä¼š(x¨¬)停留在搜索目标出现的地方ã€?</p> <p>Emacs 的搜索命令的独特之处在于åQŒå®ƒæ˜?#8220;渐进的(incrementalåQ?#8221;åQŒæ„æ€æ˜¯æ?索与输入同时˜q›è¡ŒåQšä½ åœ¨è¿™è¾¹ä¸€ä¸ªå­—一个字地输入你æƒÏxœç´¢çš„东西åQŒåŒæ—?Emacs 在那边就替你搜烦了ã€?</p> <p>C-s 是向前搜索,C-r 是向后搜索。不˜q‡æ‰‹åˆ«è¿™ä¹ˆå¿«åQå…ˆ½{‰ç­‰åˆ«ç€æ€¥è¯•ã€?</p> <p>在你按下 C-s 之后åQŒä½ ä¼?x¨¬)发现回昑֌ºé‡Œæœ?#8220;I-search”字样出现åQŒè¿™æ˜¯åœ¨æç¤º ä½ ç›®å‰?Emacs 正处äº?#8220;渐进搜烦”状态,正在½{‰å¾…你输入搜索字丌Ӏ?lt;Return> ä¼?x¨¬)结束搜索ã€?</p> <p>>> 输入 C-s 开始一个搜索。注意敲慢一点,一‹Æ¡è¾“入一个字½W¦ã€?</p> <pre> 慢慢输入“cursor”整个词,每敲一个字ž®±æš‚停一下,注意观察光标ã€?br /> 现在你应该已曄¡»æ‰‘Öˆ°“cursor”˜q™ä¸ªè¯äº†ã€?br /> </pre> <p>>> 再按一‹Æ?C-såQŒæœç´¢ä¸‹ä¸€ä¸?#8220;cursor”出现的位¾|®ã€?>> </p> </div> <img src ="http://www.aygfsteel.com/ThinkingTalking/aggbug/149535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/ThinkingTalking/" target="_blank">David.Ko</a> 2007-09-29 12:48 <a href="http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu Linux实务操作(4)http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149533.htmlDavid.KoDavid.KoSat, 29 Sep 2007 04:46:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149533.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/149533.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149533.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/149533.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/149533.htmlGNU/Linux目錄的结æž?/strong>

在GNU/Linux里面åQŒæ‰€æœ‰çš„目錄都是ä»?/(root)根目錄所扩展的树(w¨¨i)状结构。也许有些朋友会(x¨¬)问,如果有很多颗¼‹¬ç›˜åQŒé‚£ä¸å°±æœ‰å¾ˆå¤šæ ¹ç›®å½•å? 事实不是˜q™æ ·çš„!那些¼‹¬ç›˜çš„æŸä¸ªåˆ†å‰²åŒºä¸ä¼š(x¨¬)像MS Windows一樣,分割成C槽、D槽和E槽等½{‰ï¼Œè€Œéƒ½æ˜¯åœ¨é‚£ä¸ªæ ¹ç›®éŒ„或底下的某个子目錄åQŒåªæ˜¯æŠŠæŸä¸ªåˆ†å‰²åŒºæŽ›è½?mount)到那个目錄çŞ了,也就是說 在Microsoft Windowsçš„X槽对应到GNU/Linux的话åQŒå°±æ˜¯æŽ›è½½åœ¨æŸä¸€ä¸ªç›®éŒ„底下ã€?br />
如果˜q™æ¨£çš„æŽ›æ¥æŽ›åŽ»ï¼Œæ€»è¦æœ‰ä¸ªåˆå§‹åŒ–æºå¤´è®©æˆ‘ä»¬æŽ›å§? 所以至ž®‘要有一块分割区¾l™æ ¹ç›®éŒ„/(root)åQŒå…¶å®ƒçš„目錄ž®×ƒ¼š(x¨¬)以此为基¼‹€¾l­æŽ›åœ¨æ ¹ç›®éŒ„的某个子目錄下。如此就ä¼?x¨¬)åŞ成一个如下图4-1的树(w¨¨i)状结构ã€?br />
GNU/Linux的发行版太多了,在早期每个发行版都有自己首选的目錄分配方式åQŒä¸åŒçš„版本有不一æ ïL(f¨¥ng)š„目录分配åQŒå› æ­¤è€Œé€ æˆå¾ˆå¤šä½¿ç”¨è€…çš„å›°æ‰°ã€‚äØ“(f¨´)了åã^æ? ˜q™æ¨£çš„䨕局åQŒFilesystem Hierarchy Standard(FHSåQšhttp://www.pathname.com/fhs/)ž®±å‡ºé¢åˆ¶å®šäº†ä¸€äº›æ ‡æº–,让各个发行版有个¾U²è¦å¯ä»¥çŸ¥é“哪个目錄è¦? 放什麼樣的东è¥Ñ€‚当前FHS定义的是每个目錄的大¾UÔŒ¼Œæ‰€ä»¥å¾ˆå¤šç»†éƒ¨é…¾|®æ–‡ä»¶çš„æ–‡äšg名或许还是有所不同åQŒä½†æ˜¯å‡ ä¹Žéƒ½æ”‘Öœ¨åŒä¸€ä¸ªç›®éŒ„底下了。这樣用户在å¯ÀL‰¾çš? 时候,应该是容易许多了。所以Ubuntu也遵循这樣的命名¾l“æž„åQŒå›¾4-1在別的发行版也适用ã€?br />
我们了解了上面的內容之后åQŒçŸ¥é“在安装时必需有一ä¸?(root)根目錄,其它目錄是依附在它下面。这些其它的目錄所使用的实体硬盘空间可以是独立出来åœ? 另外一颗硬盘或同一颗的其它分割区或者甚至不用独立出来。如果沒有独立出来的话,ž®±æ˜¯ä½¿ç”¨ /(root)根目錄分割区的空间或者在上一层的实体分割区空间ã€?br />





æ ÒŽ(gu¨©)®è¡?-1读者可以自行评估哪一个目錄比较重要,然后決定是否独立出来åQŒè¿™æ¨£å­å¯ä»¥æ‹¿æ¥å½“成损害控管之用。后面也ä¼?x¨¬)有一些比较容易看懂的实际例子ã€?br />



¼‹¬äšg讑֤‡çš„代å?/strong>

在GNU/Linux裡面有个很好玩的特色åQŒå°±æ˜¯æ‰€æœ‰ç¡¬ä»¶è®¾å¤‡éƒ½æ˜¯å¯ä»¥çœ‹æˆæ˜¯æŸä¸ªæ–‡äšg来操作。这樣有个好处是åQŒåº”用èÊY件只要管好对那个文äšg要如何操作,è€? 不必要管实际上硬件的˜qä½œã€‚其中代表设备的文äšg和实际运作的¼‹¬äšg中间的关˜qžï¼Œž®±æ˜¯GNU/Linux kernel所需要负责的ã€?br />
å¯ÒŽ(gu¨©)–¼IDE¼‹¬ç›˜æ¥èªªåQŒå¸¸å¸¸ç»„装计½Ž—机的äh应该都知道主机板上最多只有两个IDE插槽åQŒè€Œæ¯ä¸ªæ’槽都可以通过排線接两个硬盘。主机板上第一个插槽就æ˜? IDEl (Primary)åQŒç¬¬äºŒä¸ªæ’æ§½ž®±æ˜¯IDE2 (Secondary)åQŒæ¯ä¸ªæ’槽上可以接的两颗¼‹¬ç›˜å…¶ä¸­ä¸€é¢—是MasteråQŒå¦å¤–一颗就是SlaveåQŒè‡³æ–¼æ€Žæ¨£åˆ¤æ–­å¯ä»¥é€šè¿‡¼‹¬ç›˜ä¸Šçš„jumper来得 知。若是硬盘上的jumper插在cable selection的话åQŒé‚£éºég»ŽæŽ’線前端数过来第一颗就是MasteråQŒå¦‚è¡?-3åQŒæˆ‘们可以得知插在第一个插槽的Master¼‹¬ç›˜åQŒå®ƒçš„æ–‡ä»¶åˆ«åä½¾|®å°± æ˜?dev/hdaåQŒè‹¥å…‰ç›˜æœºæ˜¯è£…在½W¬äºŒä¸ªæ’槽且jumper预设是Slave的话åQŒè¿™æ—¶å€™å…‰ç›˜æœºçš„æ–‡ä»¶ä»£åïL(f¨¥ng)š„位置ž®±åœ¨ /dev/hdbã€?br />
å¯ÒŽ(gu¨©)–¼SCSIåQŒSATA和随íw«ç¢Ÿåˆ™éƒ½æ˜?/dev/sd [a-z]åQŒä½†æ˜¯å®ƒä»¬ä¼š(x¨¬)依照™åºåºæŽ’下去,理论上会(x¨¬)先排SCSIåQŒç„¶åŽæ˜¯SATAåQŒæœ€åŽæ‰æ˜¯éšíw«ç¢ŸåQŒä¸ä¼?x¨¬)有重疊的部份。因为现在很多新的计½Ž—机都採ç”? SATA¼‹¬ç›˜åQŒæ‰€ä»¥è¯·è®°å¾—˜q™äº›SATA¼‹¬ç›˜çš„别名都是和SCSI用一樣的。ä‹D例来說,若你有两台SATA¼‹¬ç›˜åQŒä½†æ˜¯æ²’有SCSI讑֤‡åQŒé‚£éº¼ç¬¬ä¸€é¢—SATA ¼‹¬ç›˜çš„æ–‡ä»¶ä½¾|®åˆ«åå°±æ˜?dev/sdaåQŒç¬¬äºŒé¢—ž®±æ˜¯ /dev/sdbåQŒå°±æ˜¯è¿™ä¹ˆç®€å•ã€?br />




分割区概˜q?Partition)

前面已经提到了,在MicroSoft Windows中同一颗硬盘的各个槽其实就代表了不同的分割区。一般äh通常都喜‹Æ¢æŠŠ¼‹¬ç›˜åˆ†å‰²æˆC区和D区,若需要重新安装系¾lŸçš„æ—¶å€™ï¼Œž®×ƒ¼š(x¨¬)把所有数据和æ–? 仉™ƒ½æ”‘Öœ¨D区,只要把系¾lŸç¢ŸC区格式化刪除åQŒå†é‡è£…¾pȝ»ŸåQŒå¦‚此数据就不用备䆾出来åQŒå¯ä»¥å¾ˆå®ÒŽ(gu¨©)˜“完成重装且保存数据。同樣地åQŒåœ¨GNU/Linux也是一 樣,我们喜欢把重要的目錄分別攑֜¨ä¸åŒçš„分割区åQŒè¿™æ¨£å­¾pȝ»Ÿå‡ÞZº†é—®é¢˜ä¹Ÿèƒ½å¾ˆå®¹æ˜“来救援ã€?br />

我们来一个比喻,我们把硬盘想像成是一间很大的办公室,如图4-2所½Cºï¼Œé—¨å£éƒ¨ä†¾æœ‰ä¸€ä¸ªæŸœå­è®©ä½ æ”¾åŠžå…¬å®¤ç›¸å…³çš„æ¶ˆæ¯ã€‚é‚£ä¸ªæŸœå­å°±å«ä½œä¸»è¦å¼€æœºæ‰‡åŒ? (MBRåQŒMaster Boot Recorder) åQŒè€ŒæŸœå­è£¡é¢æœ‰ä¸¤ä¸ªæŠ½å±œåQŒä¸€ä¸ªæ˜¯æ”„¡½®å¼€æœºç®¡ç†ç¨‹åº?boot loader)åQŒå¦å¤–一个就是放¾|®ç£ç›˜åˆ†å‰²è¡¨(partition table)åQŒè¿™ä¸ªç£ç›˜åˆ†å‰²è¡¨ž®±æ˜¯¾UªéŒ„整个办公室隔间隔局的地斏V€?br />




因䨓(f¨´)¼‚ç›˜åˆ†å‰²è¡¨çš„½Iºé—´æœ‰é™åQŒæ‰€ä»¥æˆ‘们只能存储最多四间隔间的信息åQŒè‹¥ä½ æ²’有在˜q™å››ä¸ªéš”间把整个坪数划分完,那麼多出来的½Iºé—´ž®×ƒ¸èƒ½ä‹É用的。而整间办公室èƒ? 隔成的房间æ€Õd…±æœ‰ä¸¤¿Uï¼Œä¸€¿Uæ˜¯ä¸Õdˆ†å‰²åŒº(Primary) åQŒå¦å¤–一¿Uæ˜¯æ‰©å±•分割åŒ?Extended)åQŒä¸”规定扩展分割区最多只能有一间。那麼扩展分割区是要拿来做什麼用的呢?其实扩展分割区是不能直接使用的, 可以看成它是另外一¿Uæˆ¿é—ß_(d¨¢)¼Œå‰é¢ä¹Ÿæœ‰æŸœå­å­˜å‚¨æ‰©å±•分割区底下的信息åQŒä½†æ˜¯å› ä¸ø™£¡é¢æ²’有家俱,所以沒办法直接使用。所以扩展分割区˜q˜è¦å†åˆ†å‰²æˆé€»è¾‘分割åŒ? (Logical)åQŒä»Žæ‰©å±•分割区再分割的逻辑分割区最多可以分割到12个,故最后可用的最多分割区æ•îC¼š(x¨¬)æœ?个主分割åŒ?12个逻辑分割åŒ?15个分å‰? 区,那就满èƒö使用了ã€?br />




每个分割区在GNU/Linux都有它的讑֤‡æ–‡äšg别名åQŒå®ƒçš„别名就是硬盘设备代号后面加上数字。例如我们把4个分割区都分割成主要分割区,那麼ž®×ƒ¼š(x¨¬)如图4 -3所½Cºï¼Œ¾l™çš„分割区别名分別是hdal到hda4。但是这个时候如果想要超˜q?个分割区å‘? 那就得要使用扩展分割区。我们可以把å›?-3最后一个主分割区換成扩展分割区åQŒå†æŠŠé‚£ä¸ªæ‰©å±•分割区分割æˆ?个逻辑分割区,最后会(x¨¬)如图4-4åQŒä¼š(x¨¬)æœ?个分å‰? 区可以用ã€?br />
逻辑分割åŒÞZ¸€å®šæ˜¯ä»Žhda5开始,而前面刚好有hdal到hda4˜q?个别名,ž®±æ˜¯¾l™ä¸»åˆ†å‰²åŒºå’Œæ‰©å±•分割区瓜分的åQŒè‡³æ–¼æ‰©å±•分割区是不能直接用的,最多也只有一个,要扩展分割区裡面的逻辑分割区才可以直接被ä‹É用ã€?br />




当然我们也可以用一个主分割区配上一个扩展分割区åQŒå¦‚å›?-5来达到和å›?-4一樣有6个分割区的效果,但是我们实务上比较喜‹Æ¢å…ˆæŠŠä¸»è¦åˆ†å‰²åŒºç”¨å®ŒåQŒå†æ¥æ­é…æ‰©å±•分割区使用。不½Ž¡æ€Žæ¨£åQŒåªè¦è®°å¾—一个规则,主要分割区加扩展分割区最多只能有4个,其它的都随ä‹É用者来发挥ã€?br />




在linux中一定要被独立划分出来的分割区有 /(root)å’ŒswapåQŒè‹¥ä½ åªè¦è¿™æ¨£åŸºæœ¬çš„分割法,那麼安装的时候选自动分割就是採用这¿Uä½œæ³•,但是å¯ÒŽ(gu¨©)–¼æœ‰ç‰¹ŒDŠéœ€æ±‚的人,可以使用手动规划方式ã€?br />

â—?/(root)分割区:(x¨¬)所有的目录都是根目录的子目录,所以这个分割区一定要有ã€?br />
â—?swap分割区:(x¨¬)swap分割区是做什麼用的呢?其实它可大可ž®ï¼Œž®¤å…¶æ˜¯åœ¨å†…存大家都装768MBæˆ? GB的年代。它的功能类似微软Windows XP的虚存,不过在Windows XP裡面虚存是单独一个文件存攑֜¨C区,但是在GNU/Linux內则是独立成ä¸ÞZ¸€ä¸ªåˆ†å‰²åŒºã€‚通常swap是在跑大½E‹åºæ—¶å€™ï¼Œè‹¥éœ€è¦ç”¨åˆ°çš„内存比系¾lŸæ‹¥æœ? 的主­a˜æ†¶å­˜è¿˜å¤§æ—¶åQŒæ‰ä¼?x¨¬)先把一些不常用的数据放到虚存裡面,然后½{‰è¦ç”¨åˆ°æ—Óž¼Œå†æŠŠå®ƒå«å‡ºæ¥ã€‚而依照一般旧制经验法则,swap是主­a˜æ†¶å­˜çš„两倍,但是½W”è€? 廸™®®æ˜¯å’Œä¸»è¨˜æ†¶å­˜ä¸€æ¨£å¤§ž®±å¥½æˆ–者干è„?12 Mbçš„swapž®±å¾ˆå¤ ç”¨äº†ã€?br />

æ–‡äšg¾pȝ»Ÿæ ¼å¼æ¦‚è¿°

在Microsoft Winsows的世界,¼‹¬ç›˜å¯ä»¥æ ¼å¼åŒ–成NTFS、FAT32、FATl6½{‰ç­‰ä¸åŒçš„æ ¼å¼ã€‚同樣地åQŒåœ¨GNU/Linux底下也是有很多不同的文äšg¾pȝ»Ÿæ ? 式可供选择。当前在GNU/Linux底下åQŒæ¯”较常用的有这几种格式åQšExt2åQExt3、ReiserFS、XFSå’ŒJFS½{‰æ•°¿Uã€‚当然各¿Uæ ¼å¼éƒ½æœ‰å…¶ 优缺点,所以我们将做一些简单的介绍ã€?br />
除了Ext2以外åQŒå…¶å®ƒå‡ ¿Uéƒ½æ˜¯æ—¥èªŒåž‹æ–‡äšg¾pȝ»Ÿã€‚那什麼是日誌型文件系¾lŸå‘¢? ž®±æ˜¯¾pȝ»Ÿä¼?x¨¬)多用一些额外的½Iºé—´¾UªéŒ„¼‹¬ç›˜çš„æ•°æ®çŠ¶æ€ï¼Œå› è€Œåœ¨ä¸æ­£å¸¸å¼€å…ÏxœºåŽï¼Œä¸éœ€æ•´ä¸ª¼‹¬ç›˜é‡æ–°æ‰«ææ¥æ¢å¤æ­£å¸¸çš„¾pȝ»ŸçŠ¶æ€ã€?br />
â—?Ext2åQšæ­¤ä¸ÞZ¸€éžå¸¸è€æ—§ä¸”不支持日誌¾pȝ»Ÿçš„æ–‡ä»¶ç³»¾lŸæ ¼å¼ï¼Œæ—©æœŸçš„Linux玩家应该˜q˜è®°å¾—吧åQŒåœ¨æ¯æ¬¡ä¸æ­£å¸¸å…³æœºåŽåQŒé‡æ–°å¼€æœºæ—¶é”™è¯¯‹‚€(g¨¨)查会(x¨¬)需要很久,而且在不正常å…Ïxœºä¸‹ï¼Œå¸¸å¸¸ä¼?x¨¬)让你一‹Æ¡ä¸è§å¾ˆå¤šæ–‡ä»Óž¼ŒçŽ°åœ¨å·²ç»å¾ˆå°‘äºÞZ‹É用这¾cÀL–‡ä»¶ç³»¾lŸäº†ã€?br />
â—? Ext3åQšäØ“(f¨´)Ext2个改良版åQŒæ‰€ä»¥Ext2可以直接升çñ”æˆäØ“(f¨´)Ext3而不必重新格式化åQŒè¿™ä¹Ÿå¯ä»¥è®©æ—§çš„Ext2¾pȝ»Ÿæ›´åŠ ½E›_®šã€‚而主要和Ext2的差別是 增加了日誌系¾l?metadata)åQŒæ‰€ä»¥åœ¨ä¸æ­£å¸¸å¼€å…ÏxœºåŽï¼Œå¯ä»¥˜q…速ä‹É¾pȝ»Ÿæ¢å¤ã€‚而因为它与旧有的文äšg¾pȝ»Ÿå…¼å®¹åQŒå› æ­¤å¾ˆå¤šå‘行版都缺省ä‹É用Ext3。但 是在实际‹¹‹è¯•上,它的¼‹¬ç›˜ä½¿ç”¨çŽ‡å…¶å®žä¸ä½»I¼Œå¤§æ¦‚只有真正½Iºé—´çš?3åQ…会(x¨¬)被ä‹É用到åQŒè‡³æ–¼å…¶å®ƒæ€§èƒ½‹¹‹è¯•è¡¨çŽ°åˆ™äØ“(f¨´)中等。在格式化与创徏文äšg¾pȝ»Ÿçš„æ—¶é—´ä¹Ÿæ˜¯å…¶å®ƒæ–‡ ä»¶ç³»¾lŸçš„æ•°åå€ã€?br />
â—?ReiserFSåQšhttp://www.namesys.comåQšæŽ¡ç”¨æ—¥èªŒåž‹çš„æ–‡ä»¶ç³»¾lŸï¼Œä¸ºHans Reiser所创,因此以他的名字来命名。技术上使用的是B*-tree为基¼‹€çš„æ–‡ä»¶ç³»¾lŸï¼Œå…¶ç‰¹è‰²äØ“(f¨´)ä»Žå¤„ç†å¤§åž‹æ–‡ä»¶åˆ°çœ‘Ö¤šž®æ–‡ä»‰™ƒ½å¯ä»¥ç”¨å¾ˆé«˜çš„æ•ˆçŽ‡å¤„ç†ã€? 实务上ReiserFS 在处理文件小æ–?k的小文äšgæ—Óž¼Œæ•ˆçŽ‡ç”šè‡³å¯ä»¥æ¯”Ext3å¿«ç´„10倍,所以ReiserFS专长是在处理很多ž®æ–‡ä»¶ã€‚而在一般操作上åQŒå®ƒçš„æ€§èƒ½è¡¨çŽ°ä¹Ÿæœ‰ä¸­ä¸Š 的程度ã€?br />
â—? XFSåQšhttp://oss.sgi.com/projects/xfs/åQšç»˜å›‘Ö·¥ä½œç«™å…¬å¸SGIä¸ÞZº†é«˜çñ”¾l˜å›¾å¤„理器系¾lŸIRIX所设计的文件格式,ä¹? 是属於日誌型文äšg¾pȝ»Ÿã€‚而SGI亦将其移植到GNU/Linux上。因为原本是针对高性能¾l˜å›¾è®¾è®¡åQŒä¸”为高阶工作站所使用åQŒæ‰€ä»¥åœ¨½E›_®šæ€§å’Œæ•ˆçŽ‡ä¸Šæ˜¯æ— é›¾|? 疑的。论其在实务上的表现åQŒå®ƒåœ¨å¤„理各¿Uæ–‡ä»¶å°ºå¯¸æØœåˆçš„æƒ…況下效率最好,並且在一般ä‹É用上æœ?br /> 不错的表现ã€?br />
â—? JFSåQšhttp://jfs.sourceforge.netåQšäØ“(f¨´)全球最大计½Ž—机供应商IBM为AIX¾pÕdˆ—设计的日誌型文äšg¾pȝ»ŸåQŒæŠ€æœ¯ä¸Šä½¿ç”¨çš„æ˜¯B+- tree为基¼‹€çš„æ–‡ä»¶ç³»¾lŸå’ŒReiserFS使用B*-tree不同。IBM AIX服务器在很多金融机构上ä‹É用,所以稳定性是沒话說的。而它最重要的特色是在处理文件I/O的时候是所有文件系¾lŸé‡Œé¢æœ€ä¸ä½”CPU资源的,也就æ˜? CPU使用率最低。而且在这樣节省ä‹É用CPU的情況下åQŒå®ƒçš„æ•ˆçŽ‡è¡¨çŽ°è¿˜æœ‰ä¸­ä¸Šä»¥ä¸Šçš„½E‹åº¦ã€?br />
虽然Ext3性能不好(在日誌型文äšg¾pȝ»Ÿä¸­æ•ˆçŽ‡ä¸Š½Ž—是最¾pŸç³•çš? åQŒé‚£ä¸ÞZ½•˜q˜æœ‰é‚£éº¼å¤šäh使用?é‚£æ˜¯å› äØ“(f¨´)当时Ext3可以直接从Ext2升çñ”åQŒè€Œä¸éœ€è¦å…ˆå¤‡ä†¾æ•°æ®åQŒç„¶åŽæ ¼å¼åŒ–后再把文件复制回去,所以ä‹É用äh数最多。但˜q™ä¹Ÿ 不能全然怪它åQŒå› ä¸ºå®ƒä¸ÞZº†å’ŒExt2兼容åQŒæ‰€ä»¥èƒŒè´Ÿäº†å¾ˆå¤šçš„历史包袱。因此我推荐新的ç”?sh¨´)脑考虑使用ReiserFX、XFS或JFSã€‚è‹¥æ˜¯ä»¥æ€§èƒ½ä¸ø™€ƒè™‘åQ? 则可以选择ReiserFS或XFS。若是系¾lŸèµ„源不多,要ä‹É用最低的CPU使用率,那麼可以选择JFSåQŒå› ä¸ºå®ƒæœ‰è‘—最好的性能资源比ã€?br />
在网¾lœä¸Šæœ‰ä¸€äº›æ–‡ä»¶ç³»¾lŸæ€§èƒ½è¯„ä¼°åQŒè¿™è£¡åˆ—出来¾l™å¤§å®¶å‚考一下:(x¨¬)

�http://www.debian-administration.org/articles/388

�http://fsbench.netnation.com/

�http://linuxgazette.net/122/TWDT.html

�http://linuxgazette.net/102/piszcz.html


开始规划你的硬�/strong>

随著ä»ÕdŠ¡çš„ä¸åŒï¼Œä½ å¯ä»¥æœ‰å„ç§ä¸åŒçš„ç¡¬ç›˜è§„åˆ’ã€‚ç¬”è€…å‡è®¾ä½ ä½¿ç”¨80 GBçš„IDE¼‹¬ç›˜åQŒå†…å­?12 MBåQŒå› æ­¤è§„划swapæ˜?12 MBåQŒç¡¬ç›˜è®¾å¤‡åˆ«åæ˜¯hdaã€?br />

以下是几¿Uä¸åŒçš„¼‹¬ç›˜è§„划åQŒåˆ†åˆ¥æ˜¯é€‚合入门åQŒé«˜¾U§å’ŒæœåŠ¡å™¨æ‰€éœ€è¦ï¼Œå¤§å®¶å¯ä»¥è§†éœ€æ±‚è‡ªè¡Œå‚è€ƒã€‚ä¸˜q‡ä½ åœ¨è¿›è¡Œåˆ†å‰²ä¹‹åŽï¼Œæœ‰å¯èƒ½ä¼š(x¨¬)因䨓(f¨´)換算的关¾p»ï¼Œž®‘了个几MBåQŒé‚£æ˜¯æ²’有关¾pȝš„åQŒåªè¦ä¸è¦å¤ª¼›»è°±åQŒéƒ½åº”该是沒问题的ã€?br />




每个分割区都是可以存攄¡‹¬ç«‹çš„æ–‡äšg¾pȝ»ŸåQŒäº’ç›æ€¸å½±å“åQŒæ‰€ä»¥å¤§å®¶ä¹Ÿå¯ä»¥åœ¨hdal安装Windows XPåQŒç„¶åŽhda2安装GNU/LinuxåQŒå†é€šè¿‡MBR上的bootloader来选择要用哪个分割区来开机。如果读者真的想要ä‹É用双¾pȝ»Ÿçš„话åQŒæŽ¨èæ˜¯ 先安装Windows XPåQŒä¸¦ä¸”在安装时留下剩下的½Iºé—´æ¥åšé¢å¤–的分割区¾l™Ubuntu使用åQŒå¦‚此在安装Ubuntu以后åQŒUbuntuçš„bootloader-GRUBž®†ä¼š(x¨¬) 自动讄¡½®æˆå¯åŠ¨çš„æ—¶å€™å¯ä»¥æœ‰åŒç³»¾lŸä¾›ä½ é€‰æ‹©ã€‚请记得最好不要先安装Ubuntu再安装Windows XPåQŒè¿™æ¨£GRUB的设¾|®ä¼š(x¨¬)被Windows XP‹z—掉åQŒé‚£ä½ å°±å¾—要手动重新安装GRUB到MBR了ã€?br />
若是你真的不想重装Windows XPåQŒå¯ä»¥å…ˆé‡æ•´¼‹¬ç›˜åQŒç„¶åŽç”¨SPFDISK˜q™ä¸ªå·¥å…·½E‹åºæŠŠç¡¬ç›˜çš„分割表更改尺寸,˜q™æ¨£ž®±å¯ä»¥æŒ¤å‡ºç©ºé—´æ¥è£…UbuntuåQŒä½†˜q™ä¸ªæ–ÒŽ(gu¨©)³•特別留意åQŒä¸¦ä¸ä¸€å®šä¼š(x¨¬)成功åQŒè€Œä¸”也许ä¼?x¨¬)造成你的数据遗失ã€?br />



]]>
ubuntu¾pȝ»Ÿç›®å½•¾l“æž„ http://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149532.htmlDavid.KoDavid.KoSat, 29 Sep 2007 04:43:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149532.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/149532.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/09/29/149532.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/149532.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/149532.html

]]>
¾lˆç«¯èŠå¤©http://www.aygfsteel.com/ThinkingTalking/archive/2007/06/09/123002.htmlDavid.KoDavid.KoSat, 09 Jun 2007 04:22:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/06/09/123002.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/123002.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/06/09/123002.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/123002.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/123002.html
irssi命ä×o(h¨´):
rssi is an IRC client program with a text-mode user interface. Written in the C programming language for Unix-like operating systems, it is licensed under the terms of the GNU General Public License. Irssi also runs under Microsoft Windows with the aid of Cygwin, and may acquire a graphical front-end sometime in the future. Additionally, irssi is available on Mac OS X with Fink or natively with MacIrssi or the Cocoa-client Colloquy.



]]>
Install Ubentu7.04http://www.aygfsteel.com/ThinkingTalking/archive/2007/05/22/119049.htmlDavid.KoDavid.KoTue, 22 May 2007 01:53:00 GMThttp://www.aygfsteel.com/ThinkingTalking/archive/2007/05/22/119049.htmlhttp://www.aygfsteel.com/ThinkingTalking/comments/119049.htmlhttp://www.aygfsteel.com/ThinkingTalking/archive/2007/05/22/119049.html#Feedback0http://www.aygfsteel.com/ThinkingTalking/comments/commentRss/119049.htmlhttp://www.aygfsteel.com/ThinkingTalking/services/trackbacks/119049.html2.按照引导文äšg里的配置步骤配置åQŒåœ¨˜q™é‡Œå¼ø™°ƒISOæ–‡äšg要放到fat32格式的磁盘下åQŒntfs目前不支æŒ?
3.重启机器åQŒé€‰ä¸­Ubuntu linux一行,回èžR,˜q›å…¥å®‰è£…目录åQŒå’Œwindows安装差不å¤?ã€?br>4.¼‚ç›˜åˆ†åŒº,我分了两个。一个是ä¸Õdˆ†åŒ?12GB)åQŒä¸€ä¸ªæ˜¯äº¤æ¢åˆ†åŒºswapåQˆå†…存大ž®çš„两倍).
5.½{‰å¾…安装完毕。重å?
6.按照下面的网址里的配置方式配置你的¾pȝ»ŸåQ?br>http://wiki.ubuntu.org.cn/index.php?title=%E5%BF%AB%E9%80%9F%E8%AE%BE%E7%BD%AE%E6%8C%87%E5%8D%97/FeistyFawn&variant=zh-cn
˜q™é‡Œå¼ø™°ƒçš„æ˜¯è½¯äšg源的配置很关键,不好的话下东西是很慢的。我用的是n99和清华的æº?
7.配置完毕åQŒé‡å?br>8.好了åQŒç³»¾lŸå°±é…åˆ°˜q™äº†ã€?br>下面写Java开源套装的环境配置
jdk+tomcat+eclipse+mysql
˜q™é‡Œå»ø™®®ä¸è¦ç”¨èÊY件管理器安装jdk因䨓(f¨´)你要配置你的JAVA_HOME
¾~–辑\etc\bash.bashrc
sudo gedit  \etc\bash.bashrc
在末ž®‘ÖŠ å…?br>export JAVA_HOME=ä½ çš„JDK安装目录
export JRE_HOME=
export CLASSPATH=.;$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存
配置默认JVM
sudo update-alternatives --config java
输入 有包å?"sun" 的行的前面的数字。然後回车确定ã€?br>JDKž®±é…¾|®å¥½äº?.



]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÂÔÑôÏØ| äÒÔ´ÏØ| µ¤ÑôÊÐ| ÌÆÉ½ÊÐ| Ì©ºÍÏØ| ÆÖ¶«ÐÂÇø| Ñ×ÁêÏØ| ³à³ÇÏØ| ÓݳÇÏØ| °×ÀÊÏØ| ÖÐÄ²ÏØ| ÕýÑôÏØ| ÆÑ½­ÏØ| Ìì×£| ÓÊÏä| Ð˰²ÃË| ¾¸°²ÏØ| ÎåÁ«ÏØ| ÄôÀ­Ä¾ÏØ| ÁêË®| ³þÐÛÊÐ| ÉîÛÚÊÐ| ÆëÆë¹þ¶ûÊÐ| ºÍÁÖ¸ñ¶ûÏØ| ÁÙãðÏØ| ½»¿ÚÏØ| Èô¶û¸ÇÏØ| Îİ²ÏØ| ÁÖÖÜÏØ| ¾¸½­ÊÐ| Îä¶¨ÏØ| ĵµ¤½­ÊÐ| Çຣʡ| ±±º£ÊÐ| ÓñÁÖÊÐ| ºÏÑôÏØ| ½¨µÂÊÐ| ³²ºþÊÐ| ÔæÑôÊÐ| ºÏ½­ÏØ| ¹ÛÌÁÇø|