Linux ²×ºÝ¾÷¤Uªº±m¦âÅã¥Ü §@ªÌ: Thorbjørn Ravn Andersen, ravn@dit.ou.dk ĶªÌ: Chou-Kai Wang, stylon@ms2.hinet.net v1.4, 7 August 1997 _________________________________________________________________ ÁöµM¤j³¡¥÷ªº Linux µo¦æª©¥»³£ªþ¦³¤@­Ó¥Î¨Ó§â¥Ø¿ýªº¤º®e¦C¥X¨Ó¡A¦Ó¥B¥i¥H§Q ¥Î±m¦â¨Ó¼W±j¿é¥X¦bµøı¤Wªº®ÄªGªº'ls'«ü¥O¡A¤£¹L­n§â¥L³]©wªº¦X§A·N«o¤£¬O ¥ó®e©öªº¨Æ¡C³o¥÷¤å¥ó»¡©ú¤F³]©w¤@¨Ç¤w¸g¤ºªþ¦b§Aªº Linux µo¦æª©¥»ªº³nÅé¡A ¨Ó¹F¨ì³o­Ó¥Ø¦aªº¦n´XºØ¤£¦Pªº¤èªk¡AÁÙ¦³¦b¨ºùØ¥i¥H§ä¨ì¤@¨Ç¦b¤j³¡¥÷ª©¥»ªº Unix ùس£·|¥Î¨ì¡A¦ý¬O«o±`±`¤£³Qªþ¦b Slackware ©Î RedHat Linux ùتº³nÅé ¡C³o¥÷¤å¥óªº HTML ª©¥»¤]¥i¥H¦b§Úªº­ì©lÀɮ׳oùØ [1]http://www.mip.ou.dk/~ravn/colour-ls §äªº¨ì¡C _________________________________________________________________ 1. ²¤¶ 2. §Ö³t¤Jªù¡Gµ¹¨S¦³¨º»ò¦h­@¤ßªºÅªªÌ 3. ³o¼Ë´N¦n¤F¶Ü? 4. ¦³¨º¨ÇÃC¦â¥i¥H¿ï¾Ü©O? 5. ¦p¦ó³]©w ls ªº±m¦â¿é¥X 6. ¦p¦ó§ïÅܨt²Îªº¹w³]­È: «e´º¥Õ¦â¦Ó­I´º¬O¶Â¦â * 6.1 Xterm * 6.2 µêÀÀ¥D±±¥x * 6.3 »·ºÝµn¤J 7. ³nÅé _________________________________________________________________ 1. ²¤¶ ³o¨Ç¦~¨Ó±m¦âªºÅã¥Ü¾¹¤w¸g¬Û·í´¶¹M¡A¨Ï¥ÎªÌ¤]¶}©l¨Ï¥Î¤@¨Ç¥H±m¦â¨Óªí¥Ü¨Ò¦p ¡Gµ{¦¡»y¨¥ùتº«O¯d¦r¡A©Î¬O«÷¿ùªº¦r¡A¨Óµ¹¨Ï¥ÎªÌ¤@¨Çµøı¤Wªº¦^õX¡C ¦Û±q Linux ªº¤å¦r¼Ò¦¡±±¨î¥x¤ä´©±m¦â«á¡A­ì¨Óªº GNU ls ¤]«Ü§Öªº³Q­×§ï¦¨¤ä ´©¿é¥X±m¦âªº°T®§¦Ó¥B³Qªþ¦b Slackware 2.0 ª©ùØ¡C ³o¨Ç§ï¨}­ì¨Óª©¥»ªººó¸É Àɮפw¸g³Q¾ã¦X¨ì¼Ð·Çª©ªº GNU ls ¸Ì¡A²{¦b¤]À³¸Ó¬O©Ò¦³·sªº Linux µo¦æª©¥» ªº¤@³¡¥÷¤F¡C ²{¦b³oª©¥»ªº¤å¥ó¬O§â³Ìªìªºª©¥»§ï¼g¤F³\¦h³¡¥÷«á§ó·s¦Ó¨Óªº¡A¥]¬A¤F¤@¨ÇÃö ©ó xterm ©M ¦p¦ó§Q¥Îºó¸ÉÀɨӧó·s®Ö¤ßªº¸ê°T¡C ³o¥÷¤å¥ó¸Ìªº¸ê°T³£¦b Redhat 4.1 ùØÅçµý¹L¡A¦Ó¥B¥D­n¬O¦bSlackware 2.0.2 ª©¤Î®Ö¤ßª©¥» 1.1.54 ªºÀô¹ÒùØ·j¶°¦Ó¨Óªº¡C ®Ö¤ßªººó¸ÉÀɪº¸ê°T¬O¦b slackware 2.2.0¡A1.2.13 ª©ªº®Ö¤ß¡A¨Ã¥B¥H tcsh ¬°¹w³]ªº shellªºÀô¹Òùبú ±oªº¡A ¦Ó«á¨Ó¤]¦b 2.0.27 ªº®Ö¤ßùØÅçµý¹L¡C¦pªG§A¨Ï¥Î¨ä¥¦ªº³]©w©Î¬O unix ª©¥»¡A§Ú·|«Ü·P¿E§A§i¶D§Ú§Aªº§@·~¨t²Î¤Îª©¥»¡A ÁÙ¦³¥¦¬O§_¤ä´©±m¦âªºÅã¥Ü¡C 2. §Ö³t¤Jªù¡Gµ¹¨S¦³¨º»ò¦h­@¤ßªºÅªªÌ ¦pªG§A¦³­Ó ·sª©ªº Linux¡A¹ï§A¨Ï¥ÎªÌ¥Ø¿ý¤Uªº³o¨ÇÀɮק@³o¨Ç­×§ï¡A¤U¦¸§Aµn ¤Jªº®É­Ô´N·|¥Í®Ä¤F¡C ~/.bashrc: alias ls="ls --color" ~/.cshrc: alias ls 'ls --color' ³o¼Ë´N¦n°Õ¡I §A¤]³\ÁÙ·|·Q­n§@¡G``eval `dircolors $HOME/.colourrc`''¡A ¨Ó³]©w§A¦Û¤v·Q ­nªºÃC¦â¡C³o­ÓÀÉ®×¥i¥H¥Î ``dircolors -p >$HOME/.colourrc'' ¨Ó»s³y¥X¨Ó¡A ¦Ó¥BùØ­±¦³³\¦hªºµù¸Ñ¤è«K§A§ó§ï³]©w¡C 3. ³o¼Ë´N¦n¤F¶Ü? ­º¥ý§A»Ý­nª¾¹D§A¨Ï¥Îªº ls ¬O¤£¬O¥i¥H¾A·íªº³B²z±m¦â¿é¥X¡C¦b Linux ªº¤å¦r ¼Ò¦¡±±¨î¥x¸Õ¸Õ¬Ý³o­Ó«ü¥O(¦b xterm ùؤ]¥i¥H): % ls --color (³oùتº % ¬O shell ªº´£¥Ü²Å¸¹): ¦pªG§A¬Ý¨ì¤Fªí¥Ü§Aªº ls ¤£¯à±µ¨ü³o­Ó¿ï¶µªº¿ù»~°T®§¡A¨º§AÀ³¸Ó¦w¸Ë·sª©¥» ªº GNU fileutils ³nÅé¡C¦pªG§A¨Ï¥Îªºµo¦æª©¥»¨S¦³´£¨Ñ·sªº¤É¯Å³nÅé¡A¨º»ò´N ±q GNU ªº¬M®g¯¸¥x¨ú±o³o­Ó³nÅé¨Ã¥Bª½±µ±q­ì©l½X¦w¸Ë¡C ¦pªG§A¨Ã¨S¦³¬Ý¨ì¿ù»~°T®§¡A¨º»ò§A¨Ï¥Îªº ls «K¥i¥H±µ¨ü³o­Ó¿ï¶µ¡C¦ý«Ü¤£©¯ ªº¡A¦³¤@¨Ç¦b Slackware (¨ä¥¦ªºµo¦æª©¥»¤]¦³¥i¯à) ùتþªº¦­´Áª©¥»¬O¦³¯äÂÎ ªº¡C¦b Redhat 4.1 ùØ­±ªþªº 3.13 ª©ªº ls ´N¨S¦³°ÝÃD¡C % ls --version ls - GNU fileutils-3.13 ¦pªG§A¦b Linux ªº¤å¦r¼Ò¦¡²×ºÝ¾÷ùØ°õ¦æ ``ls --color''¡A¨º»ò¥¦ªº¿é¥XÀ³¸Ó ¨Ì·Ó¨t²Îªº¹w³]­È¦Ó¦³¾A·íªº±m¦â¡A¦Ó¥B§A²{¦b¥i¥H¶}©l¨M©w¬O¤£¬O»Ý­n§ïÅÜ¥ô ¦óªº³]©w¡C ¦pªG§A¦b xterm ùØ°õ¦æ¤W­±ªº¹Lµ{¡A¤]³\§AÁÙ¬O¨S¿ìªk¬Ý¨ì¿é¥XÅܦ¨±m¦â¡C´N¸ò ls ¤@¼Ë¡A­ì¨Óªº xterm ¨Ã¤£¤ä´©À³¥Îµ{¦¡ªº±m¦â¿é¥X¡A¦Ó¸û·sªºª©¥»¦³¤ä´©¡C ¦pªG§Aªº xterm ¤£¤ä´©±m¦â¡A¨º»ò½Ð°Ñ¦Ò³o­Ó¤å¥óªºµ²§À®³¨ì¸û·sª©¥»ªº xterm¡A¦P®É§A¤]¥u¦n¤Á´«¨ì¤å¦r¼Ò¦¡¨Ã¥BÄ~Äò¤U­±ªº¨BÆJ¡C 4. ¦³¨º¨ÇÃC¦â¥i¥H¿ï¾Ü©O? ¤U­±ªº shell ©R¥O½Z(·PÁ³\¦h§â bash ªºª©¥»±Hµ¹§Úªº¤H)Åã¥Ü¥X²{¦b¨Ï¥Îªº¥D ±±¥x¯à°÷¤ä´©ªº¦UºØÃC¦â²Õ¦X¡C¦pªG¨S¦³ÃC¦â¥X²{¡A¨º»ò§Aªº¥D±±¥x´N¤£¤ä´© ANSI ªºÃC¦â¿ï¾Ü¡C #!/bin/bash # Åã¥Ü ANSI ªº±m¦â # esc="\033[" echo -n " _ _ _ _ _40 _ _ _ 41_ _ _ _42 _ _ _ 43" echo "_ _ _ 44_ _ _ _45 _ _ _ 46_ _ _ _47 _" for fore in 30 31 32 33 34 35 36 37; do line1="$fore " line2=" " for back in 40 41 42 43 44 45 46 47; do line1="${line1}${esc}${back};${fore}m Normal ${esc}0m" line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m" done echo -e "$line1\n$line2" done «e´ºªºÃC¦â¸¹½X¬O¦b¥ªÃ䨺¤@±Æ¡A­I´ºªº«h¬O¦b¤W¤è¡C¦pªG§A­n²ÊÅ骺¦r¤¸©M°ª «G«×´N¦b°Ñ¼ÆùØ¥[¤@­Ó "1"¡A©Ò¥H«e´º¬O¥Õ¦â¦Ó­I´º¬OÂŦâ´N¦¨¤F "37;44;1"¡C ¾ã­Óªº ANSI ÃC¦â¿ï¾Ü§Ç¦C´N¬O ESC [ 3 7 ; 4 4 ; 1 m ¡C µù: ­I´º¤£¥i¥H¬O°ª«G«×¡A©Ò¥H¶À¦â(°ª«G«×ªº´Ä¦â)¥u¯à¥Î¨Ó§@«e´º¡C³o¬OµwÅé ¤Wªº­­¨î¡C ÃC¦â¥N½X: 0 - ¶Â¦â 4 - ÂŦâ 3# ¬O­I´ºÃC¦â 1 - ¬õ¦â 5 - ¯»¬õ¦â 4# ¬O«e´ºÃC¦â 2 - ºñ¦â 6 - «C¦â 3 - ¶À¦â 7 - ¥Õ¦â ;1 ¬O²ÊÅé©M°ª«G«× 5. ¦p¦ó³]©w ls ªº±m¦â¿é¥X ¦pªG§A·Q­n­×§ï ls ¤º©wªº¼Ð·ÇÃC¦â¡A§A»Ý­n¥Î¤U­±ªº«ü¥O¦b§Aªº HOME ¥Ø¿ý¤U »s³y³o¤@­ÓÀÉ®× cd ; dircolors -p > .coloursrc ¦b§A½s¿è§¹³o­Óµù¸Ñªº«Ü¸Ô²ÓªºÀÉ®×¥H«á¡A§A¥²»Ý­n§â¥¦Åª¶i§AªºÀô¹ÒÅÜ¼Æ LS_COLORS ùØ¡A³q±`³£¬O³o¼Ë§@ªº eval `dircolors .colourrc` µM«á§A­n§â«e­±³o¤@¦æ©ñ¶i§Aªº .bashrc ©Î .cshrc ©Î .tcshrc (¨Ì·Ó§A¨Ï¥Îªº shell ¦Ó©w)ùØ¡C§ó¸Ô²Óªº¥Îªk½Ð¬Ý dircolors(1) ªº¨Ï¥Î»¡©ú¡C 6. ¦p¦ó§ïÅܨt²Îªº¹w³]­È: «e´º¥Õ¦â¦Ó­I´º¬O¶Â¦â §A»Ý­n§i¶D§Aªº²×ºÝ¾÷ÅX°Êµ{¦¡§A·Q­nªº¥t¤@­Ó¹w³]­È¡C­n¦p¦ó§@¨Ã¨S¦³¤@­Ó¼Ð ·Çªº¤èªk¡A¤£¹L¦pªG§A¬O¥Î Linux ªº¸Ü¡A§A¦³ setterm ³o­Óµ{¦¡¥i¥H¥Î¡C "setterm" ¨Ï¥Î²×ºÝ¾÷¸ê®Æ®wùتº¸ê®Æ¨Ó³]©wÄÝ©Ê¡C­n¿ï¾ÜÄݩʪº¸Ü­n³o¼Ë§@ setterm -foreground black -background white -store "-store" °Ñ¼Æ§â²{¦b©Ò§@ªº§ïÅܳ]©w¦¨¹w³]­È¡C³o»Ý­n§A²{¦b¨Ï¥Îªºªº²×ºÝ¾÷ºØ Ãþ(¦b TERM Àô¹ÒÅܼÆùØ)¦b termcap ¸ê®Æ®wùئ³¨¬°÷¸Ô²Óªº¬ö¿ý¡C¦pªG setterm ¦]¬°¬YºØ¦]¯À¤£¯à¥¿±`ªº¤u§@¡A§AÁÙ¦³¨ä¥¦ªº¿ï¾Ü¡C 6.1 Xterm §A­n¦³¦Ü¤Ö¤@ºØ¤U¦Cªº xterm¡A¦Ó¥B­n¤ä´©±m¦â¡C xterm -fg white -bg blue4 color_xterm -fg white -bg blue4 color-xterm -fg white -bg blue4 nxterm -fg white -bg blue4 ³oùتº 'color_xterm' ¤ä´©±m¦âª©ªº 'ls'¡C³oùتºÃC¦â¿ï¾Ü¬O¼Ò§Ï SGI ¤W­±¨Ï ¥ÎªºÃC¦â¡C 6.2 µêÀÀ¥D±±¥x §A¤]¥i¥H­×§ï®Ö¤ß¡A³o¼Ë´N¥i¥H¤@³Ò¥Ã¶hªº¥Î±±¨î½X¨Ó§ïÅܵêÀÀ¥D±±¥xªº¹w³]­È ¡C¦pªG§A¦Û¤v½sĶ®Ö¤ßªº¸Ü¡A§Ú«Øij§Q¥Î kernel ªººó¸ÉÀÉ¡C ®Ö¤ßªº­ì©l½X¬O¦b /usr/src/linux/drivers/char/console.c ¡A¤j·§¦b 1940 ¦æ ¡A³o¬O§AÀ³¸Ó­×§ïªº¦a¤è def_color = 0x07; /* white */ ulcolor = 0x0f; /* bold white */ halfcolor = 0x08; /* grey */ def_color = 0x17; /* white */ ulcolor = 0x1f; /* bold white */ halfcolor = 0x18; /* grey */ ³oÃ䪺¤Q¤»¶i¦ì¼Æ¦r¬Oµ¹Åã¥Ü¥d¥Îªº: ³Ì¥ªÃ䪺¦ì¤¸(¤W­±½d¨Òªº "1")¬O­I´º ; ³Ì¥kÃ䪺¦ì¤¸¬O«e´º¡C0 = ¶Â¦â¡A1 = ÂŦâ¡A2 = ºñ¦â¡A3 = «C¦â, 4 = ¬õ¦â, 5 = µµ¦â¡A6 = ´Ä¦â/¶À¦â¡A7 = ¥Õ¦â¡C§â¼Æ¦r¥[ 8 ¥i¥H±o¨ì°ª«G«×ªºÃC¦â¡C¦b ¤j³¡¥÷ªº±¡ªp¤U¡A°ª«G«×ªº­I´º¦â == °{Ã{ªº¦r¥[¤W´¶³qªº­I´º¡C ¥Ñ [2]sjlam1@mda023.cc.monash.edu.au ©Ò´£¨Ñ §A¤]¥i¥H¨Ï¥Î¤U­±ªº ANSI ±±¨î½X´£¨Ñ¤@­Ó°õ¦æ®É´Áªº¥D±±¥x¹w³]­È¡C(¦b®Ö¤ß­ì ©l½Xùاä¨ìªº) ESC [ 8 ] ³o­Ó±±¨î½X§â¹w³]­È³]¦¨¥Ø«eªº«e´º¤Î­I´ºÃC¦â¡CµM«á­«³]Äݩʪº±±¨î½X(ESC [ m)Åý³o¹w³]­È°¨¤W´N¨ú¥N¶Â¥Õ¦â¦¨¬°¨Ï¥Î¤¤ªºÃC¦â¡C ¨C¦¸§A­«¶}¾÷ªº®É«J§A³£»Ý­n¦A§â³o¨Ç¦r¦ê°eµ¹¥D±±¥x¡C¨Ì·Ó§Aªº Linux ¥D¾÷¥Î ³~¤£¦P¡A¦³¦n´X­ÓÀÉ®×¥i¥H¹F¦¨³o­Ó¥Øªº¡C /etc/issue ¦b Slackware ùسo´N¬O "Welcome to Linux xx.yy" °T®§©Ò¦bªºÀɮסA¦pªG§Aªº ¥D¾÷¬O­Ó¤H¨Ï¥Îªº¸Ü¡A±q³o­ÓÀɮפU¤â¬O¤£¿ùªº¿ï¾Ü(¦ý¹ï©ó¥Î telnet »·ºÝµn¤J ¨Ï¥Î¨t²Îªº¤H´N¥i¯à¦³ÂI°Q¹½)¡C ³o­ÓÀɮצb¨C¦¸¶}¾÷ªº®É«J³£·|³Q»s³y¥X¨Ó¡A ­ì¨Óªº¤º®e«h³QÂл\¡A©Ò¥H§A¥²»Ý­n­×§ï¶}¾÷ÀÉ®×(¦b Slackware ùجO /etc/rc.d/rc.S¡ARedhatùجO /etc/rc.d/rc.local)ùØ­±ªº¤U¦C´X¦æ: echo ""> /etc/issue echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue §ï¦¨ ESCAPE="¦b³oùØ©ñ¤J ESC ½X" echo "${ESCAPE}[H${ESCAPE}[37;44m${ESCAPE}[8]${ESCAPE}[2J"> /etc/issue echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue ³oùتº±±¨î½X·|§â¹C¼ÐÂk¦ì¡B³]©wÃC¦â(¦b³oùتº«e´º¬O¥Õ¦â¦Ó­I´º¬OÂŦâ)¡B§â ³o­Ó³]©w¦s°_¨Ó¨Ã¥B§â¿Ã¹õ¤W¨ä¥¦³¡¥÷²M°£±¼¡C ³oùتº§ïÅÜ·|¦b¤U¦¸­«¶}¾÷®É¥Í ®Ä¡C§O§Ñ¤F¦b emacs ­n¥´¤J ESC ¦r¤¸­n«ö C-q Áä¦Ó¦b vi ùØ­n«ö control-v¡A ¦]¬°«ÜÅãµMªº°õ¦æ¥H¤Wµ{¦¡ªº sh ¨Ã¤£¤F¸Ñ /033 ³oºØ¥Îªk¡C /etc/profile ©Î .profile if [ "$TERM" = "console" ]; then echo "\033[37;44m\033[8]" # # ©Î¨Ï¥Î setterm¡C setterm -foreground white -background blue -store fi /etc/login ©Î .login if ( "$TERM" == "console" ) then echo "\033[37;44m\033[8]" # ©Î¨Ï¥Î setterm¡C setterm -foreground white -background blue -store endif [ ĶªÌª`: Linux ªº¥D±±¥x¤Uªº $TERM Àô¹ÒÅܼƤw¸g¬O "linux" ¦Ó¤£¬O "console" ¤F ] 6.3 »·ºÝµn¤J §AÀ³¸Ó¥i¥H¥Î¤W­±¥Ü½d¹Lªº setterm µ{¦¡¡C·íµM¡A»·ºÝªº¾÷¾¹¥²»Ý­n¯à°÷±o¨ì¨¬ °÷ªº¸ê°T¨Ó¾Þ§@§Aªº²×ºÝ¾÷¡A¦Ó¥B§Aªº²×ºÝ¾÷¼ÒÀÀµ{¦¡­n¯à°÷¤ä´©±m¦â¡C ¦b§Úªº ¸gÅçùب䥦¥­¥x¤W³Ì¦nªº vt100 ²×ºÝ¾÷¼ÒÀÀµ{¦¡¦³¤U¦C´XºØ: * MS-DOS: MS-Kermit (§K¶O, ¤£¬O Microsoft ªº²£«~) * Windows 95/NT: Kermit/95 (¦@¨É³nÅé) * OS/2: Kermit/95 (¦@¨É³nÅé)¡C ½Ðª`·N¼Ð·Çªº telnet ¤ä´©±m¦â¦Ó¥B¥i¥H¦b ¥»¦aºÝ³]©w¡C Ãö©ó kermit ªº²Ó¸`½Ð¬Ý [3]http://www.columbia.edu/kermit/ 7. ³nÅé ¥H¤W©Ò¦³ªº¥Îªk³£°²³]§A¨Ï¥Îªº¬O GNU/Linux¡C¦pªG§A¬O¨Ï¥Î¨ä¥¦ªº§@·~Àô¹Ò(¤ñ ¦p»¡¬O°õ¦æ X ªº Sun ¤u§@¯¸µ¥µ¥)§AÁÙ¬O¥i¥H®³¨ì¨Ã¥B¦Û¤v½sĶ³o¨Ç³nÅé¡C ±m¦âª©ªº xterm ¬O±q¼Ð·Çªº xterm ­ì©l½X¦Óµo®i¨Óªº¡A¦Ó¥Î¨Ó­×§ï¼Ð·Ç xterm ªººó¸ÉÀÉ¥i¥H±q¥ô¦ó¤@­Ó X11R6 ªº¯¸¥xÀò±o¡C Å¥»¡ R6.3 ¤ºªþªº xterm ¦³¤ä´© ±m¦â¡A¤£¹L§Ú¨S¦³´ú¸Õ¹L¡C ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz ¦pªG§A¬O¥Îª©ªº X ªº¸Ü½Ð¬Ý¤ºªþªº¤å¥ó¡Cª`·N: §Ú¦Û¤v¨Ã¨S¦³´ú¸Õ¹L! 'ls' ¬O¤ºªþ¦b GNU ªº fileutils ³nÅéùئӧA¥i¥H±q prep.mit.edu ©Î¨ä¥¦ªº¬M ®g¯¸¥x®³¨ì¡C½Ð®³³Ì·sªº 3.13 ª©¥»¡C ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz §Ú¦Û¤v´¿¸g¦b Solaris¡ASunOS¡AIrix ¤W¦¨¥\½sĶ¹L color-ls¡C §Ú«ÜÅwªï¹ï©ó³o½g¤å³¹ªº¦^À³¡C§Úªº¹q¤l¶l¥ó¦a§}¬O [4]ravn@dit.ou.dk -- Thorbjørn Ravn Andersen References 1. http://www.mip.ou.dk/~ravn/colour-ls 2. mailto:sjlam1@mda023.cc.monash.edu.au 3. http://www.columbia.edu/kermit/ 4. mailto:ravn@dit.ou.dk