File: Colour-ls-NL.sgml

package info (click to toggle)
doc-linux-nl 20051127-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 16,408 kB
  • ctags: 94
  • sloc: xml: 47,403; makefile: 312; perl: 193; sh: 116; ansic: 12; csh: 9
file content (416 lines) | stat: -rw-r--r-- 14,301 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
<!doctype linuxdoc system>
<linuxdoc>
<article>
<titlepag>
<title>Kleuren met Linux terminals</title>
<author><name>Thorbj&oslash;rn Ravn Andersen, <tt/ravn@dit.ou.dk/<newline>
Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org
</name></author>
<date>v1.4, 7 augustus 1997</date>
<abstract>

De meeste Linux distributies hebben een '<tt>ls</tt>' opdracht voor het
weergeven van de inhoud van een directory. Hiermee kan de uitvoer visueel
worden versterkt door van verschillende kleuren gebruik te maken,
maar het configureren om 't uit te proberen zou weleens niet zo'n
alledaagse taak kunnen zijn. Dit document legt de diverse aspecten uit en
de eerste stappen in het wijzigen van de setup door het configureren
van bestaande software. Het geeft de lokaties van alternatieve software, 
die in het algemeen niet mee worden geleverd met Slackware of RedHat en die
met de meeste versies van Unix kunnen worden gebruikt.

De HTML versie is ook beschikbaar vanaf mijn eigen bron op
<url url="http://www.mip.ou.dk/~ravn/colour-ls">.
</abstract>
</titlepag>
<toc>

<!--  -->

<sect><heading>Introductie</heading>
<p>In de afgelopen jaren zijn kleurenschermen zeer gewoon geworden,
en gebruikers beginnen dit uit te buiten door programma's te gebruiken
die kleuren aanwenden om een snelle visuele terugkoppeling te geven op
b.v. gereserveerde sleutelwoorden in programmeertalen, of directe
kennisgeving van onjuist gespelde woorden.</p>
<p>
Aangezien de Linux tekstconsole kleur ondersteunt, werd de GNU ls
snel gewijzigd om kleurenuitvoer te ondersteunen en werd dit
aan Slackware rond versie 2.0 toegevoegd. Verbeterde versies van 
deze patches zijn nu verhuisd naar de standaard GNU-distributie 
van ls, en zouden daarom nu onderhand onderdeel van alle nieuwe 
Linux-distributies moeten zijn.</p>
<p>
Deze revisie is een update van een belangrijk herschrijven van
de initi&euml;le release, inclusief informatie over xterms en
het patchen van de kernel.</p>
<p>
De informatie in dit document is bevestigd voor Redhat 4.1, en is
van origine gecompileerd met de 2.0.2 release van Slackware, en de
1.1.54 kernel. De informatie over de kernel-patch werd verkregen met
slackware 2.2.0 met de 1.2.13 kernel, met tcsh als de standaard-shell,
en later bevestigd met een 2.0.27 kernel. Als je een andere configuratie
of unix versie gebruikt, zou ik een notitie met vermelding van je
besturingssysteem en versie, en of kleurenondersteuning standaard wordt
ondersteund, waarderen.</p>
</sect>

<sect><heading>Snelle start voor de ongeduldigen</heading>
<p>
Wijzig de volgende bestanden in je home-directory, als je 
een <em>nieuwe</em> Linux-distributie hebt.
Ze hebben na de volgende login effect.

<tscreen><verb>
~/.bashrc:
    alias ls="ls &hyphen;&hyphen;color"

~/.cshrc:
    alias ls 'ls &hyphen;&hyphen;color'
    
</verb></tscreen>
</p>
<p>Dat is het!</p>

<p>Het kan zijn dat je ook een ``<tt>eval `dircolors
&dollar;HOME/.colourrc`</tt>'' wilt doen, om je eigen kleuren te krijgen.
Dit bestand is aangemaakt met ``<tt>dircolors -p >&dollar;HOME/.colourrc
</tt>'' en is rijk van commentaar voorzien voor verdere wijziging.</p>  
</sect>

<sect><heading>Heb ik het allemaal?</heading>
<p>
Als eerste moet je weten of je een <tt>ls</tt> versie hebt die weet
hoe het op de juiste wijze kleuren toe moet kennen.
Probeer de volgende opdracht in een Linux tekstconsole
(alhoewel ook een xterm voldoet):

<tscreen><verb>
% ls &hyphen;&hyphen;color
</verb></tscreen>
</p>

<p>(de <tt>%</tt> is een shell-prompt):</p>

<p>Als je een foutmelding krijgt die aangeeft dat <tt>ls</tt> de
optie niet begrijpt, zul je een nieuwe versie van het GNU fileutils
package moeten installeren.
Als je geen geschikt upgrade package voor je distributie hebt, 
dan kun je de laatste versie gewoon bij je GNU
mirror ophalen en deze direct van de bron installeren.</p>

<p>Als je <em>geen</em> foutmelding krijgt, heb je een <tt>ls</tt>
die de opdracht begrijpt. Helaas bevatten een aantal van de eerdere
versies, waaronder de bij Slackware (en mogelijk anderen) geleverde
versies, fouten. De <tt>ls</tt> geleverd bij Redhat 4.1 is versie 
3.13 en deze is okay.

<tscreen><verb>
% ls &hyphen;&hyphen;version
ls - GNU fileutils-3.13
</verb></tscreen>
</p>

<p>Als je de opdracht ``<tt>ls &hyphen;&hyphen; color</tt>'' onder
Linux op een op tekst gebaseerde console uitvoerde, zou de uitvoer van kleuren
moeten zijn voorzien, overeenkomstig de standaardwaarden op het systeem,
en kun je nu beslissen of er iets is dat je wilt veranderen.</p>
<p>
Als je het in een xterm uitvoerde, kan het zijn dat je wel of geen 
kleurwijzigingen zag. Net als met <tt>ls</tt> zelf, gaf het originele
xterm-programma geen enkele ondersteuning voor kleur voor de
programma's die daaronder draaide, maar recente versies doen dit wel.
Als je xterm geen kleuren ondersteunt, zou je een nieuwe versie zoals
beschreven aan het einde van dit document, op moeten halen.
Schakel in de tussentijd gewoon naar tekstmode en ga van daaruit verder.
</p>
</sect>

<sect><heading>Uit welke kleuren kun je kiezen?</heading>
<p>
Dit shell-script (met dank aan de velen die me bash versies opstuurden) toont
alle standaard kleurencombinaties op de huidige console. Als er geen
kleuren tevoorschijn komen, ondersteunt je console geen ANSI kleuren
selecties.</p>
<p>
<tscreen>
<verb>
#!/bin/bash
# Toon ANSI kleuren.
#
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="&dollar;fore  " 
  line2="    "
  for back in 40 41 42 43 44 45 46 47; do
    line1="&dollar;{line1}&dollar;{esc}&dollar;{back};&dollar;{fore}m Normal  &dollar;{esc}0m"
    line2="&dollar;{line2}&dollar;{esc}&dollar;{back};&dollar;{fore};1m Bold    &dollar;{esc}0m"
  done
  echo -e "&dollar;line1\n&dollar;line2"
done
</verb>
</tscreen>
</p>

<p>Het nummer van de voorgrondkleur wordt links getoond, 
en het nummer van de achtergrond in de omlijning.
Als je benadrukte tekens wilt, voeg je een "1" toe aan de
parameters, dus helder blauw op wit is dan "37;44;1". De hele ANSI
selectie reeks is dan <verb>ESC [ 3 7 ; 4 4 ; 1 m</verb></p>

<p>Opmerking: De achtergrond kan thans niet benadrukt zijn, dus je kunt geel
alleen als voorgrondkleur hebben.
(benadrukt bruin). Dit is een beperking van de hardware.

<verb>De kleuren zijn:
        0 - zwart    4 - blauw         3# is voorgrond
	1 - rood     5 - magenta       4# is achtergrond
	2 - groen    6 - cyan
	3 - geel     7 - wit           ;1 is benadrukt
</verb>
</p>
</sect>

<sect><heading>Hoe kleuren te configureren met ls</heading>
<p>

Als je de in <tt>ls</tt> ingebouwde standaardkleurenset wilt wijzigen,
heb je een persoonlijke kopie ervan in je home-directory nodig, die je
kunt krijgen met
<tscreen><verb>
cd ; dircolors -p > .coloursrc 
</verb></tscreen>
</p>

<p>Na het wijzigen van dit goed-becommentarieerde bestand
zul je het in de omgevingsstring LS_COLORS moeten laten lezen,
wat gewoonlijk wordt bewerkstelligd met
<tscreen><verb>
eval `dircolors .colourrc`
</verb></tscreen>
</p>

<p>Je moet deze regel in je
.bashrc/.cshrc/.tcshrc (afhankelijk van je shell) plaatsen, om dit bij 
iedere login te laten doen.  
Zie de dircolors(1) manual page voor details.
</p>
</sect>


<sect><heading>Hoe de standaard wit-op-zwart tekstmode te wijzigen
</heading>

<p>Je zult de terminal driver code moeten laten weten dat je een andere
standaard wilt. Er bestaat geen standaard manier waarop je dit kunt
doen, maar onder Linux heb je het setterm programma.</p>


<p>"setterm" gebruikt de informatie in de terminal database om de 
kenmerken in te stellen.
Selecties maak je bijvoorbeeld als volgt 
<tscreen><verb>
setterm -foreground black -background white -store
</verb></tscreen>
</p>

<p>waar "-store" naast de feitelijke wijzigingen ervoor zorgt dat het 
ook de standaard wordt voor de huidige console.
Dit vereist dat de huidige terminal
(TERM omgevingsvariabele) "goed genoeg" is beschreven in de termcap
database. Als setterm om wat voor reden dan ook niet werkt, zijn hier
een aantal alternatieven:</p>


<sect1><heading>Xterm</heading>

<p>E&eacute;n van deze xterms zou beschikbaar moeten zijn
en tenminste &eacute;&eacute;n daarvan ondersteunt kleur.

<tscreen><verb>
xterm -fg white -bg blue4
color_xterm -fg white -bg blue4
color-xterm -fg white -bg blue4
nxterm -fg white -bg blue4
</verb></tscreen>
</p>

<p>waar 'color_xterm' de kleurenversie van 'ls' ondersteund. Deze bepaalde
keuze lijkt op de kleuren die op een SGI worden gebruikt.</p>
</sect1>

<sect1><heading>Virtuele console</heading>

<p>Je kunt de kernel voor eens en voor altijd wijzigen, als ook in een
runtime standaard voorzien voor de virtuele consoles met een escape
sequence. Ik raad je de kernelpatch aan als je je eigen kernel hebt
gecompileerd.</p>
<p>
Het kernel bronbestand is <tt>/usr/src/linux/drivers/char/console.c</tt>
zo ongeveer bij regel 1940 zou je het volgende moeten wijzigen

<tscreen><verb>
 	def_color       = 0x07;   /* white */
 	ulcolor		= 0x0f;   /* bold white */
 	halfcolor       = 0x08;   /* grey */
</verb></tscreen>
</p>
<p>Ik gebruik wit op blauw met
<tscreen><verb>
 	def_color       = 0x17;   /* white */
 	ulcolor		= 0x1f;   /* bold white */
 	halfcolor       = 0x18;   /* grey */

</verb></tscreen>
</p>

<p>De nummers zijn de attribuutcodes die door de videokaart in
hexadecimaal worden gebruikt: het meest significante cijfer 
(de "1" in de voorbeeldkleuren hierboven) is de achtergrond; 
het minst significant de
voorgrond. 0 = black, 1 = blue, 2 = green, 3 = cyan, 4 = red, 5 =
purple, 6 = bruin/geel, 7 = wit. Voeg 8 toe om "heldere"
kleuren te krijgen. Merk op dat in de meeste gevallen een heldere
achtergrond == knipperende tekens, matte achtergrond. (Van
<url url="mailto:sjlam1@mda023.cc.monash.edu.au" 
name="sjlam1@mda023.cc.monash.edu.au">).</p>

<p>Je kunt ook een nieuwe run-time standaard voor een virtueel console
aanvullen, op een per-display basis met de niet-standaard ANSI sequence
(gevonden door het bladeren door de kernelbronnen)
<tscreen><verb>
	ESC [ 8 ]
</verb></tscreen>
</p>

<p>waarmee de standaardwaarden op de huidige voor- en achtergrondkleuren wordt
ingesteld. Vervolgens selecteert de Reset Attribuut string
(ESC &#91; m) deze kleuren in plaats van wit op zwart.
</p>

<p>Je zult in feite, iedere keer dat je reboot, deze string naar de console 
moeten echo&euml;n. Afhankelijk van waar je je Linux box voor gebruikt,
kunnen verscheidene plaatsen hier geschikt voor zijn:</p>

<sect2><heading>/etc/issue</heading>
<p>
Dit is waar "Welcome to Linux xx.yy" onder Slackware wordt getoond, en
het is een goede keuze voor een stand-alone uitrusting.
(en waarschijnlijk verderfelijk voor gebruikers die met telnet inloggen)
Dit bestand wordt tijdens het booten aangemaakt
(Slackware in /etc/rc.d/rc.S; Redhat in /etc/rc.d/rc.local),
en je zou de regels moeten wijzigen waarin zoiets staat als

<tscreen><verb>
  echo ""> /etc/issue
  echo Welcome to Linux `/bin/uname -a | /bin/cut -d\  -f3`. >> /etc/issue
</verb></tscreen>
</p>
<p>in
<tscreen><verb>
  ESCAPE="<vervang dit door een enkel escape-teken>"
  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
</verb></tscreen>
</p>

<p>Deze code zal de cursor linksboven op het scherm plaatsen, 
de kleur instellen (hier wit op blauw),
deze selectie opslaan en de rest van het scherm wissen. De wijziging
heeft na de volgende opstart effect. Denk eraan de _literal_
escape-teken in het bestand in te voegen met C-q in emacs of 
control-v in vi, aangezien sh, die voor het uitvoeren 
van het script wordt gebruikt, de <tt>/033</tt> syntax blijkbaar niet begrijpt.
</p>
</sect2>

<sect2><heading>/etc/profile of .profile</heading>
<p>
<tscreen><verb>
  if [ "$TERM" = "console" ]; then
      echo "\033[37;44m\033[8]" #
# of gebruik setterm.
      setterm -foreground white -background blue -store
  fi
</verb></tscreen>
</p>
</sect2>

<sect2><heading>/etc/login of .login</heading>
<p>
<tscreen><verb>
  if ( "$TERM" == "console" ) then
    echo "\033[37;44m\033[8]"  
# of gebruik setterm.
      setterm -foreground white -background blue -store
  endif
</verb></tscreen>
</p>
</sect2>
</sect1>

<sect1><heading>Remote login</heading>
<p>Je zou het programma setterm zoals hierboven moeten kunnen gebruiken.
Nogmaals, dit vereist dat de remote machine genoeg bekend is met je
terminal, en dat de terminal-emulator die in de login voorziet kleuren
ondersteunt.</p>

<p>In mijn ervaring zijn de beste vt100 emulaties die op dit moment 
voor andere platformen beschikbaar zijn:
<itemize>
<item>MS-DOS:         MS-Kermit (vrij, geen Microsoft product)</item>
<item>Windows 95/NT:  Kermit/95 (shareware)</item>
<item>OS/2:           Kermit/95 (shareware).  Merk op dat de
standaard telnet kleuren begrijpt en lokaal kan worden aangepast.</item>
</itemize>
</p>

<p>Zie <url url="http://www.columbia.edu/kermit/"> voor details over
Kermit.</p>
</sect1>
</sect>

<sect><heading>Software</heading>

<p>Bij alle informatie die hier is beschreven werd uitgegaan van een GNU/Linux
installatie. Als je iets anders hebt (zoals b.v. een Sun draaiende onder X
of zo) kun je de feitelijke software zelf verkrijgen en compileren.</p>

<p>De kleurenversie van 'xterm' is gebaseerd op de standaard xterm source
met een patch die vanaf elke X11R6 site beschikbaar is.
Het gerucht gaat dat de xterm gedistribueerd met R6.3 
intern kleurenondersteuning biedt, maar dat is niet door mij getest.

<tscreen>
<verb>
ftp://ftp.denet.dk/pub/X11/contrib/utilities/color-xterm-R6pl5-patch.gz
</verb>
</tscreen>
</p>

<p>Zie de documentatie als je een oudere versie van X gebruikt.
<em>Opmerking:</em> Ik heb dit zelf niet uitgeprobeerd!
</p>

<p>'ls' is in de GNU fileutils package beschikbaar vanaf prep.mit.edu of 
&eacute;&eacute;n van de verscheidene mirrors. Haal tenminste versie 3.13 op.
<tscreen>
<verb>
ftp://ftp.denet.dk/pub/gnu/fileutils-3.XX.tar.gz
</verb>
</tscreen>
</p>

<p>Ik heb zelf color-ls succesvol gecompileerd op Solaris, SunOS en Irix.</p>

<p>
Ik zou feedback over deze tekst waarderen.
Mijn e-mailadres is <url url="mailto:ravn@dit.ou.dk" name="ravn@dit.ou.dk">.

&hyphen;&hyphen;</p>
<p>Thorbj&oslash;rn Ravn Andersen</p>
</sect>
</article>
</linuxdoc>