Colours with Linux terminals ú{êÅ Thorbjoern Ravn Andersen, ravn@dit.ou.dk v1.4, 7 August 1997 ²¡ºê, GFG02131@niftyserve.or.jp, àV áÁv, JCD00743@niftyserve.or.jp ¤ó 13 March 1999 Linux fBXgr [VÌÙÆñÇÉÍAfBNgÌàeð\¦· é 'ls' R}hª¯«³êĢܷBlXÈFðg¤±ÆÅ ls R}hÌ oÍð©â··é±ÆªÅ«éÌÅ·ªADÝÌÝèÉ·éÌÍÈPÅÍÈ ¢©àµêܹñB±Ì¶ÅÍAls ÌJ[ÝèÌÏXÉ¢ÄlXÈp x©çðàµÄ¨èApbP[WÉÜÜêé ls ÌÝèÏX̼A Slackware â RedHat ÉÍÜÜêĢȢ ls \tgEFA(±êçÍåïÌo[W ÌUnix Åàg¦Ü·)Ì è©àLµÜµ½B{¶Ì HTML ÅÍMÒÌ WWW y[W <http://www.mip.ou.dk/~ravn/colour-ls> ©çàüèÅ«Ü·B ______________________________________________________________________ Ú 1. ͶßÉ 2. ¹Á©¿Èl̽ßÌA·®Ég¦éû@ 3. KvÈàÌð©ªÍÁÄ¢éÌ? 4. ÇñÈFªg¦é©? 5. ls ÌJ[Ýè@ 6. eLXg[hÌftHg\¦ðÈOÉÝè·éÉÍ 6.1 xterm 6.2 ¼zR\[ 6.2.1 /etc/issue 6.2.2 /etc/profile Ü½Í .profile 6.2.3 /etc/login Ü½Í .login 6.3 [gOC 7. \tgEFA ______________________________________________________________________ 1. ͶßÉ ßNÍJ[fBXvCªñíÉyµA[Uà±ê𶩵ÄFðp ·évOðg¤æ¤ÉÈènßܵ½B±Ìæ¤ÈvOðg¦ ÎAá¦ÎvO~O¾êÌ\ñêð©Ä·®ª©éæ¤Éµ½èAÔè Ôá¢Ì éPêð·®Émé±ÆªÅ«Ü·B Linux ÌeLXgR\[ªJ[\¦ðT|[gµÄ¢½ÌÅA·®É GNU ls ªJ[îñðoÍ·éæ¤ÉÏX³êAo[W 2.0 ½èÌ Slackware ÉÜÜêéæ¤ÉÈèܵ½B±êçÌpb`ÌüÇÅÍ ls Ì GNU WzzÉgÝÜê½ÌÅA»ÝÅÍVµ¢ Linux fBXgr [ VSÄÉJ[ÎÌ ls ªüÁÄ¢é͸ŷB ±ÌüùÅÍAÅðSÊIÉüeµ½àÌÅAxterm ÌîñâAJ[lÖ Ìpb`ÌîñàüêÄ èÜ·B ±Ì¶É©êÄ¢éîñÍ RedHat 4.1 Å®ìmFµÜµ½BܽA±ê ͳXASlackware Ì[X 2.0.2 ÆJ[l 1.1.54 ÅRpCµÄ ¢Üµ½BJ[lpb`ÌîñÍ Slackware 2.2.0 ÆJ[l 1.2.13A ftHgÌVFª tcsh Æ¢¤g¹É¢IJ׽îñÅ èAãÅJ [l 2.0.27 ÅàmFµÜµ½BÇÒÌF³ñª¼ÌÝèâ¼Ìo[W Ì UNIX ðgÁĨçêéêÉÍA¨g¢ÌIy[eBOVXeÆ» Ìo[WAWÅJ[\¦ªT|[g³êÄ¢é©Ç¤©ðmç¹Ä¢ ½¾¯éÆK¢Å·B 2. ¹Á©¿Èl̽ßÌA·®Ég¦éû@ ÇÒÌF³ñªÅßÌ Linux fBXgr [VðgÁĨçêéÈ çAz[fBNgÉ éȺÌt@CÉεÄȺɦ·ÏXðÁ¦ ܵå¤B±ÌÏXÍñÌOC©çLøÉÈèÜ·B ~/.bashrc: alias ls="ls --color" ~/.cshrc: alias ls 'ls --color' ±ê¾¯Å·! ©ªêpÌFÌÝèðs¤½ßÉA``eval `dircolors $HOME/.colourrc`'' às¨¤Ævíêé©àµêܹñB±Ìt@CÍ ``dircolors -p >$HOME/.colourrc'' Ŷ¬³êAãÅÒWÅ«éæ¤É\ªÈRgªt ¢Ä¢Ü·B 3. KvÈàÌð©ªÍÁÄ¢éÌ? ܸÅÉA³µFðt¯é±ÆªÅ«é ls ðÁĢ驲×éKvª èÜ·BLinux ÌeLXgR\[űÌR}hðµÄ¾³ ¢(xterm ÅàåävÅ·ª): % ls --color (% ÍVFÌvvgÅ·): ls ª±ÌIvVðF¯Å«È¢Æ¢¤G[bZ[Wªo½ÈçÎA Vµ¢o[WÌ GNU fileutils pbP[WðCXg[·éKvª èÜ·B¨g¢ÌfBXgr [VpÌKÈAbvO[hppbP [Wª³¢êÉÍAGNU Ì~[TCg©çÅVo[WðüèµA\[ X©ç¼ÚCXg[µÜµå¤B G[bZ[WªoȯêÎA±ÌR}hðF¯·é ls ðÁÄ¢éÆ ¢¤±ÆÅ·Bµ©µcOȱÆÉAÈO Slackware(¼ÌfBXgr [ VÅàÂ\«ª èÜ·)ÉüÁÄ¢½Ã¢o[WÉÍA®ìª¨© µ¢àÌà èÜ·BRedHat 4.1 ÉüÁÄ¢é ls Íâè̳¢o[W 3.13 Å·B % ls --version ls - GNU fileutils-3.13 Linux ÌeLXgR\[Å ``ls -- color'' R}hðÀsµ½çAV XeÌftHglɵ½ªÁÄFªt¢½Í¸Å·B±±ÅÏXµ½¢à ̪ é©Ç¤©ðßé±ÆªÅ«Ü·B ±ÌR}hð xterm ÅÀsµ½êAFÍÏíÁ½©àµêܹñµAÏ íÁĢȢ©àµêܹñBls ÌêƯlÉAIWiÌ xterm v OÍàÅ®ì·évOÉηéJ[\¦ðT|[gµÄ¢È ©Á½ÌÅ·ªAÅßÌo[WÌ xterm ͱêðT|[gµÄ¢Ü·B ¨g¢Ì xterm ªJ[\¦ðT|[gµÄ¢È¯êÎA±Ì¶ÌÅãÅ à¾É]ÁÄVµ¢o[WðüèµÈ¯êÎÈèܹñB±ÌêÍÆè ¦¸eLXg[hÉØèÖ¦ÄAæÉiñž³¢B 4. ÇñÈFªg¦é©? ȺÌXNvgÍ(bash pÌXNvgðtµÄ¾³Á½½ÌûXÉ ´ÓµÜ·)AgpÌR\[ª\¦Å«éFðSÄ\¦·é½ßÌàÌ Å·BFªoÈ¢êA¨g¢ÌR\[Í ANSI ÌJ[Ið@\ðT| [gµÄ¢Ü¹ñB #!/bin/bash # Display ANSI colours. # 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 æÊ̶¤ÉOiF(¶ÌF)ÔªAgOãÉwiFÔª\¦³êÜ·B ¶ð{[h(Px)Å\¦µ½¢êAp[^É "1" ðt¯Á¦Ü ·BÂÜèA¢wiɾé¢Â̶ð\¦·éêAp[^Í "33;47;1m" ÆÈèÜ·BANSI IðSÌƵÄÍ ESC [ 3 7 ; 4 4 ; 1 m ÆÈèÜ·B Ó: ¡ÌƱëAwiðPxÉ·é±ÆÍūܹñB±êÉæèA ( PxÌFÅ é)©FÍAOiFÈOÅÍg¦Ü¹ñB±êÍn[hEFA ̧ñÅ·B FðȺɦµÜ·: 0 - 4 -  3# ÍOiF 1 - Ô 5 - }[^ 4# ÍwiF 2 - Î 6 - VA 3 - © 7 - ;1 Í{[h 5. ls ÌJ[Ýè@ ls ÉWÅgÝÜêÄ¢éFÌÝèðC³µ½¯êÎAz[fBNg ÉÂlpÌÝèðRs[·éKvª èÜ·B±êÍ cd ; dircolors -p > .coloursrc Ås¤±ÆªÅ«Ü·BRgªÚµt¢Ä¢é±Ìt@CðÏXµ½ ãÍAÂ«Ï LS_COLORS ɱÌàeðÇÝÞKvª èÜ·B±êÍ ÌR}hÅs¢Ü·: eval `dircolors .colourrc` OC·éxɱÌR}hðÀs³¹é½ßÉÍA±Ìsð .bashrc/.cshrc/.tcshrc (¨g¢ÌVFÉæÁÄÏíèÜ·)ÉÇÁ·éK vª èÜ·BÚµÍIC}j AÌ dircolors(1) ð²¾³ ¢B 6. eLXg[hÌftHg\¦ðÈOÉÝè·éÉÍ g¢½¢V½ÈftHglð[hCoɳ¦ÄâéKvª èÜ·B± êðs¤½ßÌWÌû@ͶݵȢÌÅ·ªALinux ÈçÎvO setterm ª èÜ·B "setterm" ÍA[f[^x[XÉ éîñðg¢A[Ì®«ðÝèµÜ ·BIðÍȺÌæ¤És¢Ü·: setterm -foreground black -background white -store ±±ÅÍAÀÛÌÏXÉÁ¦Ä "-store" ðwè·é±ÆÉæèA±êð»Ý ÌR\[ÌftHglƵÄàÝèµÄ¢Ü·B±Ì@\ðp·é½ ßÉÍA»ÝÌ[(Â«Ï TERM)ª termcap f[^x[XÉ«¿ñÆLq ³êÄ¢éKvª èÜ·Bsetterm ª½ç©ÌRÅ®ìµÈ¢êÉÍA ÊÌû@à èÜ·: 6.1. xterm ÈºÌ xterm Ì¢¸ê©ªpÅ«é͸ÅAÈÆà±êçÌ¢¸ê© ÍJ[\¦ðT|[gµÄ¢Ü·B xterm -fg white -bg blue4 color_xterm -fg white -bg blue4 color-xterm -fg white -bg blue4 nxterm -fg white -bg blue4 ±Ì¤¿A'color_xterm' ÍJ[ÎÌ 'ls' ðT|[gµÄ¢Ü·B±± Ŧµ½áÅÍASGI ݽ¢ÈJ[ÝèɵĢܷB 6.2. ¼zR\[ J[lðLbp«·¦é±ÆàÅ«Ü·µA¯ÉGXP[vV[P XðgÁļzR\[ÌÀsftHglð^¦é±ÆàÅ«Ü·BJ [lðRpCµ½±Æª éûÉÍAJ[lpb`ð¨©ßµÜ·B J[l\[XÌt@CÍ /usr/src/linux/drivers/char/console.c Å ·B±Ìt@CÌ 1940 sÚ ½èÉA def_color = 0x07; /* white */ ulcolor = 0x0f; /* bold white */ halfcolor = 0x08; /* grey */ Æ éÌÅA±êðKÉÏX·éí¯Å·BÍA def_color = 0x17; /* white */ ulcolor = 0x1f; /* bold white */ halfcolor = 0x18; /* grey */ ƵÄAÂnɶÌÝèÉµÄ èÜ·B ãLÌ(16i)ÍrfIJ[hªg¤®«R[hÅ·BãÌP^Ì (ÌÝèÅÍ 1)ÍwiFAºÌP^ÌÍOiF(¶F)Å·B0=, 1= Â, 2=Î, 3=VA, 4=Ô, 5=, 6=F/©F, 7=ÆÈÁĢܷBu¾ é¢vFðg¤êÍÉ 8 ðÁ¦Ä¾³¢B½¢Ä¢ÌêÍ Px Ìwi == ¶ª©É¢ ÈÌÅAÇÈ¢wiÆ¢¤±ÆÅ· (sjlam1@mda023.cc.monash.edu.au <mailto:sjlam1@mda023.cc.monash.edu.au> ³ñæè)B²ÓðB WÅÈ¢GXP[vV[PX(J[l\[XðßĢĩµÜµ½) ðgÁÄAfBXvC²ÆɼzR\[ÉηéÀsÌftHgl ðÝè·é±ÆªÅ«Ü·B±ÌV[PXÍ ESC [ 8 ] Å èA»ÝÌOiFÆwiFÌftHglðÝèµÜ·B»ê©ç®«Ä Ýè¶ñ(ESC [ m)ðgÁÄEÈOÌFðIðµÜ·B ÀÛÉÍ}VðÄN®·éxÉA±ÌV[PXðR\[É echo ·é Kvª èÜ·BLinux }VðÇÌæ¤ÉgÁÄ¢é©ÉæèA¢ë¢ëÆ âèûª èÜ·: 6.2.1. /etc/issue Slackware ª "Welcome to Linux xx.yy" Ì\¦ðs¤ªÅ·BX^hA [Ì}VÈçA±±Å echo ð·éÌàǢŵå¤(telnet Å login ·é[U[ÉÍLQ©àµêܹñª)B±Ìt@CÍu[gÉ©®I ɶ¬³êé(Slackware Èç /etc/rc.d/rc.S ÅARedHat Èç /etc/rc.d/rc.local)t@CÅAȺÌæ¤Èªð echo ""> /etc/issue echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue ©ç ESCAPE="<replace with a single escape character here>" 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 ÉÏXµÜµå¤B ±Ì½ßÍAJ[\ðz[|WVÉu«AJ[(Ânɶ)ðÝ èµÄZ[uµAXN[Ìcè̪ðNAµÜ·B±ÌÏXÍAÄN ®ãÉLøÉÈèÜ·B±ÌXNvgðÀs·é sh ÍA\033 Æ¢¤« ûðÅ«È¢æ¤ÈÌÅAÀÛÌGXP[vLN^[ð}ü·éÌð YêÈ¢æ¤ÉµÄ¾³¢Bemacs Èç C-qAvi Èç C-v ÅüÍÅ«Ü ·B 6.2.2. /etc/profile Ü½Í .profile if [ "$TERM" = "console" ]; then echo "\033[37;44m\033[8]" # # or use setterm. setterm -foreground white -background blue -store fi 6.2.3. /etc/login Ü½Í .login if ( "$TERM" == "console" ) then echo "\033[37;44m\033[8]" # or use setterm. setterm -foreground white -background blue -store endif 6.3. [gOC æɦµ½æ¤É setterm ªg¦é͸ŷBJèԵܷªA Ƚª gÁÄ¢é[̱ÆðAOCæÌ}Vª\ªÉmÁÄ¢éKvª è Ü·BܽAOCÉg¤[G~ [^àAJ[@\ðT|[gµÄ ¢é±ÆªKvÅ·BMÒÌo±ðîÉALinux ÈOÌvbgtH[Å» ÝÌƱëàÁÆà¤Ü VT100 G~ [VªÅ«Ä¢éàÌ𦵠ܷ: o MS-DOS: MS-Kermit (t[AMicrosoft »iÅÍ èܹñ) o Windows 95/NT: Kermit/95 (VFAEFA) o OS/2: Kermit/95 (VFAEFA)B½¾µAWÌ telnet Í Fðg¤±ÆªÅ«A[JÅJX^}CYÅ«é±ÆÉӵľ ³¢B Kermit ÌÚµ¢îñÉ¢ÄÍA <http://www.columbia.edu/kermit/> ð² ¾³¢B 7. \tgEFA ±±ÉLµ½îñÍA·×Ä GNU/Linux ðCXg[µ½}Vðzèµ Ä¢Ü·BÊÌàÌ(»¤Å·Ë¥Aá¦Î X ªÁÄé Sun Æ©)ðgÁÄ ¢éêÅàA©ªÅ»êÈèÌ\tgEFAðüèµARpC·êÎæ ¢Åµå¤B J[ÅÌ 'xterm' ÍWIÈ xterm Ì\[XÉpb`ðĽàÌÅ·B pb`Í»±çÌ X11R6 TCg©çæêÜ·BR6.3 ÉüÁÄ¢é xterm Í lCeBuÅJ[\¦ðT|[gµÄ¢éƾíêĢܷªAMÒÍeX gµÄ¢Ü¹ñB ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz âo[WÌ X ðgÁÄ¢éûÍAt®Ì¶ðQƵľ³¢B Ó:ÍeXgµÄÈ¢àñB `ls' ÍAGNU Ì fileutils pbP[WÉüÁĢܷB±ÌpbP[WÍA prep.mit.edu âA»Ì~[TCg©çæêÜ·BÈÆà 3.13 ðüè µÄ¾³¢B ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz MÒÍ Solaris, SunOS, Irix ÅJ[Å ls ÌRpCɬ÷µÄ¢Ü ·B ±Ì¶Éηé²wEA´zA»Ì¼ðå½}µÜ·BÇñ¾ûͺкР[º³¢BàVáÁvA JCD00743@niftyserve.or.jp <mailto:JCD00743@niftyserve.or.jp> ÆA²¡ºêA GFG02131@niftyserve.or.jp <mailto:GFG02131@niftyserve.or.jp> ª[ AhXÅ·B pêŶÖÌtB[hobNð½}µÜ·Be-mailAhXÍ ravn@dit.ou.dk <mailto:ravn@dit.ou.dk>Å·B -- Thorbjoern Ravn Andersen, ²¡ºêAàVáÁv (´¶ÌXVÉí¹A¡´Pà fujiwara@linux.or.jp <mailto:fujiwara@linux.or.jp> ªú{êóðXVµÜµ½B)