F�rger p� Linux-terminaler
Thorbj�rn Ravn Andersen,
[email protected] Svensk �vers�ttning
av Bj�rn Lindblom
[email protected], November -98
v1.4, 7 August 1997
De flesta Linux-distributioner har ett 'ls' kommando f�r att lista
inneh�llet i en katalog och presentera det p� ett visuellt b�ttre s�tt
genom att anv�nda f�rger - att konfigurera det p� ett bra s�tt, �r
dock inte alltid s� l�tt. Det h�r dokumentet f�rklarar de olika aspek�
terna och metoderna f�r att �ndra inst�llningarna genom att konfigur�
era existerande mjukvara, och ange platser f�r alternativ mjukvara som
vanligtvis inte inkluderas i Slackware eller Redhat och som kan
anv�ndas i de flesta versioner av Unix. HTML-versionen finns ocks�
tillg�nglig p� min egen hemsida p� <
http://www.mip.ou.dk/~ravn/colour-
ls>.
______________________________________________________________________
Inneh�llsf�rteckning
1. Introduktion
2. Snabbstart f�r de ot�liga
3. Har jag allt jag beh�ver?
4. Vilka f�rger finns det att v�lja p�?
5. Hur man konfigurerar f�rger med ls
6. Hur man �ndrar standardf�rgerna vit-p�-svart i textl�ge
6.1 Xterm
6.2 Virtuell konsol.
6.2.1 /etc/issue
6.2.2 /etc/profile eller .profile
6.2.3 /etc/login or .login
6.3 "Remote login"
7. Mjukvara
______________________________________________________________________
1. Introduktion
P� senare �r har f�rgsatta displayer blivit mycket vanliga, och
anv�ndare har b�rjat utveckla den h�r m�jligheten med hj�lp av program
som ger f�rger f�r att p� detta s�tt f� en visuell effekt p� t.ex.
reserverade ord i programmeringsspr�k, eller direkt p�minnelse om
felstavade ord.
Eftersom konsolen i Linux st�der f�rger, modifierades GNU:s ls-
kommando snabbt f�r att visa f�rger och detta inkluderades i Slackware
fr.o.m version 2.0. F�rb�ttrade versioner av dessa patchar har nu
blivit standard i GNU:s distributioner av ls, och numer b�r detta
finnas i alla nya versioner av Linux.
Den h�r texten �r en uppdatering av det ursprungliga dokumentet, och
inkluderar information om x-terminaler och hur man "patchar" k�rnan.
Informationen i det h�r dokumentet har kontrollerats mot Redhat -
utg�va 4.1 och kompilerades ursprungligen med hj�lp av version 2.0.2
av Slackware med k�rna 1.1.54. Informationen om "patchning" av k�rnan
gjordes p� en maskin med Slackware 2.2.0 och k�rnan 1.2.13, med tcsh
som standard-skal, och har senare kollats mot en 2.0.27-k�rna. Om du
anv�nder n�gon annan konfiguration, eller annan Unix-version, skulle
jag uppskatta att du h�r av dig med upplysning om ditt operativsystem
och version, och om st�d f�r f�rger till ls- kommandot finns som
standard.
2. Snabbstart f�r de ot�liga
Om du har en ny distribution av Linux, g�r f�ljande f�r�ndringar till
dessa filer i din hemkatalog. De fungerar efter n�sta inloggning.
~/.bashrc:
alias ls="ls --color"
~/.cshrc:
alias ls 'ls --color'
Klart!
Du kanske ocks� vill g�ra en ``eval `dircolors $HOME/.colourrc`'', f�r
att f� dina egna f�rger. Den h�r filen skapas med ``dircolors -p
>$HOME/.colourrc'' och �r bra kommenterad s� att det �r l�tt att veta
hur man sj�lv kan �ndra i filen.
3. Har jag allt jag beh�ver?
F�rst av allt m�ste du k�nna till om du har en version avls som kan
utf�ra f�rgs�ttning p� ett riktigt s�tt. Testa det h�r kommandot i en
Linux text-konsol (funkar �ven i xterm):
% ls --color
(% �r prompten i ditt skal) Om du f�r ett felmeddelande som indikerar
att ls inte k�nner till v�xeln, beh�ver du installera en nyare version
av GNU:s filtillbeh�rs-paket. Om du inte har en l�mplig uppgraderings-
version tillhanda, h�mta hem den senaste versionen fr�n din Linux-sida
och installera.
Om du inte f�r ett felmeddelande, har du ett ls som f�rst�r kommandot.
Oturligt nog var programmen som medf�ljde tidiga versioner av
Slackware buggiga.ls som medf�ljer Redhat 4.1, �r version 3.13 och den
�r bra.
% ls --version
ls - GNU fileutils-3.13
Om du k�r kommandot ``ls -- color'' p� en textbaserad konsol i Linux,
skall det ge f�rgs�ttning som standard p� ditt system, och du kan nu
best�mma dig f�r om du vill �ndra p� n�gonting.
Om du k�r kommandot i xterm, kanske du inte f�r n�gon f�rgs�ttning.
Som med ls i sig sj�lv, st�der inte xterm-programmet f�rger f�r
program som k�rs i xterm-f�nster - senare versioner av xterm st�der
dock f�rger. Om ditt xterm inte st�der f�rger, b�r du ladda hem en
nyare version - se beskrivning i slutet av det h�r dokumentet. Under
tiden kan du v�xla till textl�ge och forts�tta d�rifr�n.
4. Vilka f�rger finns det att v�lja p�?
Det h�r skriptet (tack till alla som s�nt mig bash-versioner) visar
standard upps�ttning p� f�rgkombinationer i konsolen. Om inga f�rger
syns, st�der inte konsolen ANSI-f�rgval.
#!/bin/bash
# Visa ANSI-f�rger.
#
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
F�rgrundsf�rgens nummer listas till v�nster och bakgrundsf�rgen i
rutan. Om du vill ha fetstil, l�gger du till "1" till parametrarna, s�
klarbl� p� vit bakgrund blir "37;44;1". Hela ANSI-sekvensen blir d�
ESC [ 3 7 ; 4 4 ; 1 m
Observera: Bakgrunden kan inte vara i fetstil, s� du kan inte ha gul
(bold brown) som n�got annat �n f�rgrund. Detta �r en h�rdvaru-
begr�nsning.
F�rgerna �r:
0 - svart 4 - bl� 3# �r f�rgrunden
1 - r�d 5 - magenta 4# �r bakgrunden
2 - gr�n 6 - cyan
3 - gul 7 - vit ;1 �r fetstil
5. Hur man konfigurerar f�rger med ls
Om du vill modifiera standardupps�ttningen av f�rger till ls, beh�ver
du en personlig kopia i din hemkatalog, som du f�r med kommandot:
cd ; dircolors -p > .coloursrc
Efter att ha modifierat denna v�lkommenterade fil, beh�ver du f� den
l�st till omgivningsstr�ngen LS_COLORS. Detta g�rs vanligtvis med:
eval `dircolors .colourrc`
Du m�ste l�gga till den h�r raden i din .bashrc/ .cshrc/ .tcshrc
(beroende p� vilket skal du k�r), f�r att det skall laddas vid inlog�
gningen. Se manual-sidan f�r dircolors(1) f�r detaljer.
6. Hur man �ndrar standardf�rgerna vit-p�-svart i textl�ge
Du beh�ver "tala om f�r" koden till terminalen att du vill ha en annan
default. Det finns inget standardiserat s�tt att g�ra detta p�, men i
Linux har du setterm-programmet.
"setterm" anv�nder sig av information fr�n terminalens databas f�r att
s�tta attributen. Valet g�rs som
setterm -foreground black -background white -store
d�r "-store", f�rutom att �ndra f�rgen g�r den nya inst�llningen till
default f�r nuvarande konsol. Det beh�vs d� att den nuvarande konsolen
(TERM enviroment-variabeln) beskrivs "bra nog" i termcap:s databas. Om
setterm av n�gon anledning inte fungerar - h�r kommer n�gra alterna�
tiv:
6.1. Xterm
En av dessa xterms b�r finnas tillg�nglig och �tminstone en av dem b�r
st�da f�rger.
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4
d�r 'color_xterm' st�der f�rgversionen av 'ls'. Detta speciella val
liknar f�rgerna som anv�nds p� en SGI.
6.2. Virtuell konsol.
Du kan modifiera k�rnan en g�ng f�r alla, likv�l som att anv�nda en
"run-time default" f�r den virtuella konsolen med en escape-sekvens.
Jag rekommenderar att modifiera k�rnan om du tidigare har kompilerat
din egen k�rna.
K�llfilen till k�rnan �r /usr/src/linux/drivers/char/console.c p� rad
1940, d�r du skall �ndra:
def_color = 0x07; /* white */
ulcolor = 0x0f; /* bold white */
halfcolor = 0x08; /* grey */
Jag anv�nder bl� p� vit med:
def_color = 0x17; /* white */
ulcolor = 0x1f; /* bold white */
halfcolor = 0x18; /* grey */
Siffrorna �r attributkoderna angivna hexadecimalt och som anv�nds av
grafik-kortet: viktigaste siffran (1:an i exemplet ovan) �r bakgrunden
- den minst signifikativa �r f�rgrunden. 0 = svart, 1 = bl�, 2 = gr�n,
3 = cyan, 4 = r�d, 5 = lila, 6 = brun/gul, 7 = vit. L�gg till 8 f�r
att f� "skarpa" f�rger. L�gg m�rke till att, f�r det mesta, en ljus
bakgrund == blinkande bokst�ver, dovt f�rgad bakgrund. (Fr�n
[email protected]
<mailto:
[email protected]>).
Du kan ocks� fixa s� att du k�r en viss display p� valfri konsol, med
en ickestandard-ANSI-sekvens (som du kan hitta om du tittar i koden
till k�rnan):
ESC [ 8 ]
som g�r att du f�r standardf�rger p� f�r- och bakgrund. Reset
Attributes"-str�ngen (ESC [ m) v�ljer dessa f�rger ist�llet f�r vita
bokst�ver p� svart bakgrund.
Du �r tvungen att "eka" den h�r str�ngen till konsolen varje g�ng du
startar om. Beroende p� vad du anv�nder din Linux-burk till, kan m�nga
olika platser vara l�mpliga.
6.2.1. /etc/issue
Det �r h�r som "Welcome to Linux xx.yy" visas i Slackware, och det h�r
�r en bra plats f�r frist�ende utrustning (och blir troligtvis en pest
f�r anv�ndare som loggar in med telnet). Den h�r filen skapas vid
uppstart (slackware i /etc/rc.d/rc:s - Redhat i /etc/rc.d/rc.local),
och du kan modifiera filen med raderna
echo ""> /etc/issue
echo Welcome to Linux `/bin/uname -a | /bin/cut -d\ -f3`. >> /etc/issue
till
ESCAPE="<Ers�tt med ett escape-tecken h�r>"
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
Den h�r koden l�gger prompten l�ngst upp till v�nster p� sk�rmen,
byter sk�rmf�rgen (h�r vit text p� bl� bakgrund), sparar det h�r valet
och rensar sk�rmen fr�n allt �vrigt. Modifieringen b�rjar fungera
efter n�sta uppstart. Kom ih�g att s�tta in escape-tecknet i filen med
C-q i Emacs eller Ctrl-v i vi, eftersom skalet som exekverar skriptet
inte f�rst�r /033 syntaxen.
6.2.2. /etc/profile eller .profile
if [ "$TERM" = "console" ]; then
echo "\033[37;44m\033[8]" #
# eller anv�nd setterm.
setterm -foreground white -background blue -store
fi
6.2.3. /etc/login or .login
if ( "$TERM" == "console" ) then
echo "\033[37;44m\033[8]"
# eller anv�nd setterm.
setterm -foreground white -background blue -store
endif
6.3. "Remote login"
Du b�r kunna anv�nda setterm-programmet som visas h�r ovan. �ter igen,
det h�r kr�ver att fj�rrmaskinen k�nner till din terminal, och att
terminalemulatorn som sk�ter inloggningen st�der f�rg. Enligt min
erfarenhet �r den b�sta vt100-emulatorn som finns tillg�nglig f�r
olika plattformar:
� MS-DOS: MS-Kermit (gratis, inte en Microsoft-produkt)
� Windows 95/NT: Kermit/95 (shareware)
� OS/2: Kermit/95 (shareware).L�gg dock m�rke till att
standard-telnet f�rst�r f�rger och kan modifieras lokalt.
Se <
http://www.columbia.edu/kermit/> f�r detaljer om Kermit.
7. Mjukvara
All information h�r ovan f�ruts�tter en GNU/Linux-installation. Om du
har n�gon annan (som t.ex. en Sun-maskin som k�r X), f�r du h�mta hem
och kompilera mjukvaran sj�lv.
"F�rgversionen" av xterm baseras p� standard-xterm-kod med patchar
tillg�ngliga p� alla X11R6-siter. Xterm som distribueras med R6.3
skall enligt ryktet inneh�lla st�d f�r f�rger, men jag har inte testat
den versionen.
ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz
Se dokumentation om du anv�nder en �ldre version av X. Obs: Jag har
sj�lv inte testat den h�r.
fr�n prep.ai.mit.edu eller p� en av mirror-siterna. Ta hem �tminstone
version 3.13.
ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz
Jag har sj�lv lyckats kompilera color-ls p� Solaris, SunOS och Irix.
Jag tar g�rna emot feedback p� den h�r texten. Min epost-adress �r
[email protected] <mailto:
[email protected]>
--
Thorbj�rn Ravn Andersen