File: Xterm-Title-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 (655 lines) | stat: -rw-r--r-- 20,405 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
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
<!doctype linuxdoc system>
<linuxdoc>
<!-- $Id: Xterm-Title-NL.sgml,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $ -->

<article>
<titlepag>
<title>De titel van een xterm wijzigen</title>
<author><name>Ric Lister, <tt>ric@giccs.georgetown.edu</tt>,<newline>
Vertaald door: Ellen Bokhorst <tt>bokkie@nl.linux.org</tt></name></author>
<date>v2.0, 27 oktober 1999</date>

<abstract>
In dit document wordt uitgelegd hoe escape sequences kunnen worden gebruikt
om dynamisch de titel van een xterm-venster en een ikoon te wijzigen.
Voor verscheidene shells wordt voorzien in voorbeelden, en in de appendix
zijn escape sequences gegeven voor een aantal andere typen terminals.
</abstract>
</titlepag>

<toc>


<sect><heading>Waar dit document is te vinden</heading>

<p>
Dit document maakt nu onderdeel uit van de
<url name="Linux HOWTO Index" url="http://sunsite.unc.edu/LDP/HOWTO/">
en het is te vinden op
<url url="http://sunsite.unc.edu/LDP/HOWTO/mini/Xterm-Title.html">.
</p>

<p>
De laatste versie is altijd in verscheidene formaten te vinden op
<url url="http://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/">.
</p>

<p>
Dit document overvleugelt de oorspronkelijke howto geschreven door
Winfried Tr&uuml;mper.
</p>
</sect>

<sect><heading>Statische titels</heading>

<p>
Een statische titel kan voor ieder van de terminals <tt>xterm</tt>,
<tt>color-xterm</tt> of <tt>rxvt</tt> worden ingesteld, door gebruik te
maken van de opties <tt>-T</tt> en <tt>-n</tt>:
<tscreen>
xterm -T "Mijn XTerm Titel" -n "Mijn XTerm Ikoon Titel"
</tscreen>
</p>
</sect>

<sect><heading>Dynamische titels</heading>

<p>
Veel mensen vinden het handig om de titel van een terminal zo in
te stellen dat het dynamisch informatie weergeeft, zoals de hostnaam
waarop de gebruiker is ingelogd of de huidige werkdirectory, enz.
</p>

<sect1><heading>xterm escape sequences</heading>

<p>
Ikoon- en venstertitels van een draaiende xterm kunnen worden gewijzigd
door gebruik te maken van XTerm escape sequences. In deze zin zijn 
de volgende sequences nuttig:
<itemize>
  <item><tt>ESC]0;<bf>string</bf>BEL</tt> -- Stel de naam van het ikoon en
  de venstertitel in op <bf>string</bf></item>

  <item><tt>ESC]1;<bf>string</bf>BEL</tt> -- Stel de naam van het ikoon in op
  <bf>string</bf></item>

  <item><tt>ESC]2;<bf>string</bf>BEL</tt> -- Stel de venstertitel in op
  <bf>string</bf></item>
</itemize>

<tt>ESC</tt> is hier het <bf>escape</bf>-teken (\033), en <tt>BEL</tt> is
het <bf>bell</bf> teken (\007).
</p>

<p>
Het afdrukken van &eacute;&eacute;n van deze sequences zorgt dat
de titel van het venster of de ikoon wordt gewijzigd.
</p>

<p>
<bf>Opmerking</bf>: deze sequences zijn van toepassing op de meeste
afgeleiden van xterm, zoals <tt>nxterm</tt>, <tt>color-xterm</tt> en
<tt>rxvt</tt>. Andere typen terminals maken vaak gebruik van andere
escapes; zie de appendix voor voorbeelden.
Zie het bestand
<url name="ctlseq2.txt"
url="http://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/ctlseq2.txt">,
Voor een volledige lijst met xterm escape sequences, welke met de xterm
distributie wordt meegeleverd, of
<url url="http://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/xterm.seq"
name="xterm.seq">, welke wordt meegeleverd met de 
<url url="http://www.rxvt.org/" name="rxvt"> distributie.
</p>
</sect1>

<sect1><heading>Afdrukken van escape sequences</heading>

<p>
Voor informatie die gedurende de levensduur van deze shell gelijk blijft,
zoals de host- en gebruikersnaam, volstaat een echo-commando door 
eenvoudigweg de escape string in het rc bestand van de shell te plaatsen:
<tscreen><verb>
echo -n "\033]0;${USER}@${HOST}\007"
</verb></tscreen>
zal een titel produceren zoals <tt>username@hostname</tt>, in de
veronderstelling dat de shellvariabelen
<tt>$USER</tt> en <tt>$HOST</tt> correct zijn ingesteld.
De benodigde opties voor <tt>echo</tt> kunnen per shell vari&euml;ren
(zie de voorbeelden verderop).
</p>

<p>
Voor informatie die tijdens de levensduur kan wijzigen, zoals de
huidige werkdirectory, moeten deze escapes echt, iedere keer dat de
prompt wijzigt, worden aangepast.
Zo wordt bij iedere opdracht die je aanroept de string
gewijzigd en kan informatie worden bijgehouden zoals de huidige
werkdirectory, naam van de gebruikers, hostnaam, enz. Een aantal shells
voorziet in speciale functies voor dit doel, een aantal doet dit niet en
we moeten de titel sequences direct in de promptstring voegen.
Dit wordt in de volgende sectie ge&iuml;llustreerd.
</p>
</sect1>
</sect>

<sect><heading>Voorbeelden voor verschillende shells</heading>

<p>
Hieronder wordt een set voorbeelden gegeven voor de wat meer gebruikelijke
shells. We beginnen met <tt>zsh</tt> aangezien het diverse mogelijkheden
biedt die onze taak er veel eenvoudiger op maken.
We zullen vervolgens steeds moeilijkere voorbeelden doorwerken.
</p>

<p>
In alle voorbeelden testen we de omgevingsvariabele <tt>$TERM</tt>
om er zeker van te zijn dat we de escapes alleen toepassen op xterms. 
We testen op <tt>$TERM=xterm*</tt>; het jokerteken wordt gebruikt omdat
een aantal varianten (zoals rxvt) deze omgevingsvariabele in kan
stellen op <tt>$TERM=xterm-color</tt>.
</p>

<p>
We zouden een extra opmerking over C-shellafgeleiden, zoals
<tt>tcsh</tt> en <tt>csh</tt> moeten maken. In C shells, worden
ongedefinieerde variabelen als fatale fouten beschouwd.
Daarom is het nodig voor het testen van de variabele <tt>$TERM</tt>, 
te testen op het bestaan ervan. Om dit te bereiken moet je de voorbeelden
hieronder wijzigen in zoiets als:
<tscreen><verb>
  if ($?TERM) then
      ...
  endif
</verb></tscreen>
(Wij vinden dit &eacute;&eacute;n van de vele redenen om geen gebruik te
maken van C-shells. Zie
<it><url name="Csh Programming Considered Harmful"
url="http://language.perl.com/versus/csh.whynot"></it> voor een
nuttige bespreking).
</p>

<p>
De voorbeelden hierna zouden kunnen worden gebruikt door ze te plaatsen
in het van toepassing zijnde shell-initialisatiebestand; d.w.z. 
&eacute;&eacute;n die bij het opstarten door interactieve shells wordt
ingelezen. In de meeste gevallen heeft deze een naam zoals in
<tt>.<it>shell</it>rc</tt> (b.v. <tt>.zshrc</tt>, <tt>.tcshrc</tt>, enz).
</p>


<sect1><heading>zsh</heading>

<p>
<tt>zsh</tt> biedt de volgende functies en uitbreidingen, waar
we gebruik van zullen maken:
<tscreen><verb>
precmd ()   een functie die v&oacute;&oacute;r iedere prompt wordt uitgevoerd
chpwd ()    een functie die wordt uitgevoerd wanneer de directory wijzigt
\e          escape sequence voor escape (ESC)
\a          escape sequence voor bell (BEL)
%n          extraheert naar $USERNAME
%m          extraheert naar hostnaam tot aan de eerste '.'
%~          extraheert naar directory, $HOME wordt vervangen door '~'
</verb></tscreen>
Er zijn nog heel wat meer uitbreidingen beschikbaar: zie de 
<tt>zshmisc</tt> man page.
</p>

<p>
Dus het volgende zal de xterm titel instellen op
"<tt><it>gebruikersnaam</it>@<it>hostnaam</it>: <it>directory</it></tt>":
<tscreen><verb>
case $TERM in
    xterm*)
        precmd () {print -Pn "\e]0;%n@%m: %~\a"}
        ;;
esac
</verb></tscreen>
Dit zou ook bewerkstelligd kunnen worden door gebruik te maken van
<tt>chpwd()</tt> in plaats van <tt>precmd()</tt>. 
De ingebouwde opdracht <tt>print</tt> werkt net als
<tt>echo</tt>, maar geeft ons ook nog eens toegang tot de <tt>%</tt>
prompt escapes.
</p>
</sect1>

<sect1><heading>tcsh</heading>

<p>
<tt>tcsh</tt> heeft een aantal functies en uitbreidingen die vergelijkbaar
zijn met die van <tt>zsh</tt>:
<tscreen><verb>
precmd ()   een functie die voor iedere prompt wordt uitgevoerd
cwdcmd ()   een functie die wordt uitgevoerd wanneer de directory wijzigt
%n          extraheert naar gebruikersnaam
%m          extraheert naar hostnaam
%~          extraheert naar directory, $HOME wordt vervangen door '~'
%#	        breidt uit naar '>' voor gewone gebruikers, '#' voor
%root-gebruikers
%{...%}     voegt een string in als een letterlijke escape sequence
</verb></tscreen>
</p>

<p>
Helaas is er geen equivalente voor de opdracht <tt>print</tt> van <tt>zsh</tt>
die het ons toestaat prompt escapes in de titelstring te gebruiken,
dus het beste wat we kunnen doen is gebruik te maken van
shellvariabelen (in <tt>~/.tcshrc</tt>):
<tscreen><verb>
switch ($TERM)
    case "xterm*":
        alias precmd 'echo -n "\033]0;${HOST}:$cwd\007"'
        breaksw
endsw
</verb></tscreen>
Hierdoor krijg je echter het volledige pad van de directory in plaats
dat er gebruik wordt gemaakt van <tt>~</tt>.
In plaats daarvan kun je de string in de prompt plaatsen:
<tscreen><verb>
switch ($TERM)
    case "xterm*":
        set prompt="%{\033]0;%n@%m:%~\007%}tcsh%# "
        breaksw
    default:
        set prompt="tcsh%# "
        breaksw
endsw
</verb></tscreen>
hiermee wordt de prompt ingesteld op "<tt>tcsh% </tt>", en een xterm-titel
en ikoon "<tt><it>gebruikersnaam</it>@<it>hostnaam</it>: <it>directory</it>
</tt>". Houd in de gaten dat de "<tt>%{...%}</tt>" tussen escape sequences
moet worden geplaatst (en niet het laatste item in de prompt kan zijn:
zie de manpage van <tt>tcsh</tt> voor details).
</p>
</sect1>

<sect1><heading>bash</heading>

<p>
<tt>bash</tt> voorziet in de variabele <tt>$PROMPT_COMMAND</tt> waaraan
de opdracht is toegekend welke v&oacute;&oacute;r de weergave van de
prompt wordt uitgevoerd. Dit voorbeeld stelt de titel in op
<tt>gebruikersnaam@hostnaam: directory</tt>:
<tscreen><verb>
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
</verb></tscreen>
<tt>\033</tt> is hier de tekencode voor <tt>ESC</tt>,
en <tt>\007</tt> voor <tt>BEL</tt>.
</p>

<p>
De aanhalingstekens zijn hier belangrijk: variabelen worden ge&euml;xtraheerd
naar <tt>"..."</tt>, en niet naar <tt>'...'</tt>. 
Dus<tt>$PROMPT_COMMAND</tt> wordt op een niet ge&euml;xtraheerde waarde
ingesteld, en de variabelen binnen de <tt>"..."</tt> worden ge&euml;xtraheerd
wanneer <tt>$PROMPT_COMMAND</tt> wordt gebruikt.
</p>

<p>
<tt>$PWD</tt> produceert echter het volledige pad van de directory. 
Als we de verkorte vorm
<tt>~</tt> willen, moet we de escape string in de prompt opnemen,
wat maakt dat we voordeel kunnen hebben van de door in de shell voorziene
uitbreidingen op de prompt:
<tscreen><verb>
\u          extraheert naar $USERNAME
\h          extraheert naar hostnaam tot aan de eerste '.'
\w          extraheert naar directory, $HOME wordt vervangen door '~'
\$	        extraheert voor gewone gebruikers naar '$', '#' voor root
\[...\]     sluit een reeks in met niet afdrukbare tekens
</verb></tscreen>
</p>

<p>
Dus het volgende produceert een prompt <tt>bash$ </tt>, en een xterm
titel <tt>gebruikersnaam@hostnaam: directory</tt>:
<tscreen><verb>
case $TERM in
    xterm*)
        PS1="\[\033]0;\u@\h: \w\007\]bash\\$ "
        ;;
    *)
        PS1="bash\\$ "
        ;;
esac
</verb></tscreen>
Let op het gebruik van <tt>\[...\]</tt>, waarmee aan <tt>bash</tt> wordt
aangegeven de niet afdrukbare controletekens te negeren, wanneer de breedte
van de prompt wordt berekend. Anders onstaat er verwarring bij het plaatsen
van de cursor bij regelediting opdrachten.
</p>
</sect1>

<sect1><heading>ksh</heading>

<p>
<tt>ksh</tt> voorziet in weinig functies en uitbreidingen, dus moeten
we de escapestring in de prompt voegen, om het dynamisch te laten
bijwerken. Dit voorbeeld produceert een titel met
<tt>gebruikersnaam@hostnaam: directory</tt> en een prompt <tt>ksh$ </tt>.
<tscreen><verb>
case $TERM in
    xterm*)
        HOST=`hostname`
        PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ '
        ;;
    *)
        PS1='ksh$ '
        ;;
esac
</verb></tscreen>
<tt>$PWD</tt> produceert echter het volledige pad van de directory. 
We kunnen het voorvoegsel
<tt>$HOME/</tt> van de directory verwijderen door gebruik te maken van
de constructie <tt>${...##...}</tt>.
We kunnen ook gebruik maken van <tt>${...%%...}</tt> om de hostnaaam
af te kappen:
<tscreen><verb>
HOST=`hostname`
HOST=${HOST%%.*}
PS1='^[]0;${USER}@${HOST}: ${PWD##${HOME}/}^Gksh$ '
</verb></tscreen>
De <tt>^[</tt> en <tt>^G</tt> in de promptstring zijn enkele tekens voor
<tt>ESC</tt> en <tt>BEL</tt> (kan in emacs door het invoeren
van <tt>C-q ESC</tt> en <tt>C-q C-g</tt>).
</p>
</sect1>

<sect1><heading>csh</heading>

<p>
Dit is in <tt>csh</tt> inderdaad erg moeilijk, en we komen ongeveer hierop
uit:
<tscreen><verb>
switch ($TERM)
    case "xterm*":
        set host=`hostname`
        alias cd 'cd \!*; echo -n "^[]0;${user}@${host}: ${cwd}^Gcsh% "'
        breaksw
    default:
        set prompt='csh% '
        breaksw
endsw
</verb></tscreen>
waarbij we een alias voor de opdracht <tt>cd</tt> opdracht gebruiken om
de escape sequence te sturen.
De <tt>^[</tt> en <tt>^G</tt> in de string zijn enkele tekens voor
<tt>ESC</tt> en <tt>BEL</tt>
(kunnen in emacs worden ingevoerd met <tt>C-q ESC</tt> en <tt>C-q C-g</tt>).
</p>

<p>
Opmerkingen: op een aantal systemen kan <tt>hostname -s</tt> worden
gebruikt om een afgekorte versie, in plaats van de fully-qualified
hostnaam te verkrijgen. Een aantal gebruikers met symlinked directory's
bemerken mogelijk dat <tt>`pwd`</tt> (achterwaartse aanhalingstekens voor
het uitvoeren van de opdracht <tt>pwd</tt>) een accurater pad teruggeeft dan
<tt>$pwd</tt>.
</p>
</sect1>
</sect>


<sect><heading>Afdrukken van de huidige jobnaam</heading>

<p>
Vaak zal een gebruiker een voorgrondtaak opstarten zoals <tt>top</tt>,
een editor, een emailclient, enz, en willen dat de naam van de job in
de titel wordt weergegeven. Dit is een wat neteliger probleem en kan alleen
eenvoudig worden bewerkstelligd met <tt>zsh</tt>.
</p>

<sect1><heading>zsh</heading>

<p>
<tt>zsh</tt> voorziet in een ideale ingebouwde functie voor dit doel:
<tscreen><verb>
preexec()   een functie die net voor uitvoering van een opdracht wordt
uitgevoerd
$*,$1,...   argumenten doorgegeven aan preexec()
</verb></tscreen>
Dus we kunnen als volgt de jobnaam in de titel voegen:
<tscreen><verb>
case $TERM in
    xterm*)
      preexec () {
        print -Pn "\e]0;$*\a"
      }
    ;;
esac
</verb></tscreen>
Opmerking: de <tt>preexec()</tt> functie verscheen zo rond versie 3.1.2
van <tt>zsh</tt>, dus wellicht moet je een eerdere versie upgraden.
</p>
</sect1>

<sect1><heading>Andere shells</heading>

<p>
Dit is in andere shells niet eenvoudig door het ontbreken van een
equivalente opdracht als de
<tt>preexec()</tt> functie. Als iemand anders voorbeelden heeft, email 
deze dan alsjeblieft naar de auteur.
</p>
</sect1>
</sect>

<sect><heading>Appendix: escapes voor andere typen terminals</heading>

<p>
Veel moderne terminals zijn afgeleid van <tt>xterm</tt> of <tt>rxvt</tt>
en ondersteunen de tot nu toe gebruikte escape sequences. 
Een aantal eigen terminals die met diverse varianten van unix worden
meegeleverd maken gebruik van eigen escape sequences.
</p>

<sect1><heading>IBM <tt>aixterm</tt></heading>

<p>
<tt>aixterm</tt> herkent de <tt>xterm escape</tt> sequences.
</p>
</sect1>

<sect1><heading>SGI <tt>wsh</tt>, <tt>xwsh</tt> en <tt>winterm</tt></heading>

<p>
Deze terminals zetten de termvariabele in als <tt>$TERM=iris-ansi</tt> 
en gebruiken de volgende escapes:
<itemize>
<item><tt>ESCP1.y<it>string</it>ESC\      Stel de venstertitel in op
                                          <it>string</it></tt></item>
<item><tt>ESCP3.y<it>string</it>ESC\      Stel de ikoontitel in op
                                          <it>string</it></tt></item>
</itemize>
Zie de manpage van <tt>xwsh(1G)</tt> voor een volledige lijst met <tt>xwsh</tt>
escapes.</p>

<p>
De Irix terminals ondersteunen ook de <tt>xterm</tt> escapes om afzonderlijk
te venstertitel en ikoontitel in te stellen, maar niet de escape om ze beiden
in te stellen.
</p>
</sect1>

<sect1><heading>Sun <tt>cmdtool</tt> en <tt>shelltool</tt></heading>

<p>
<tt>cmdtool</tt> en <tt>shelltool</tt> stellen stellen de termvariabele
beiden in als <tt>$TERM=sun-cmd</tt> en maken gebruik van de volgende
escapes:
<itemize>
<item><tt>ESC]l<it>string</it>ESC\    Stel de venster titel in op <it>string</it></tt>
</item>
<item><tt>ESC]L<it>string</it>ESC\    Stel de titel van het ikoon in op <it>string</it></tt>
</item>
</itemize>
Dit zijn werkelijk afgrijselijke programma's: gebruik iets anders.
</p>
</sect1>

<sect1><heading>CDE <tt>dtterm</tt></heading>

<p>
<tt>dtterm</tt> stelt de termvariabele in op <tt>$TERM=dtterm</tt>, 
en blijkt standaard zowel de standaard
<tt>xterm</tt> als de Sun <tt>cmdtool</tt>
sequences te herkennen (getest onder Solaris 2.5.1, Digital Unix 4.0, HP-UX 10.20).
</p>
</sect1>

<sect1><heading>HPterm</heading>

<p>
<tt>hpterm</tt> stelt de termvariabele in als <tt>$TERM=hpterm</tt> en
gebruikt de volgende escapes:
<itemize>
<item><tt>ESC&amp;f0k<it>length</it>D<it>string</it>   Stel venstertitel in op 
<it>string</it> van lengte <it>length</it></tt>
</item>
<item><tt>ESC&amp;f-1k<it>length</it>D<it>string</it>  
Stel ikoontitel in op <it>string</it> met de lengte <it>length</it></tt>
</item>
</itemize>
</p>

<p>
Een basis C-programma om de lengte van de string te berekenen en deze
terug te geven, ziet er ongeveer zo uit:
<tscreen><verb>
#include <string.h>
int main(int argc, char *argv[])
{
    printf("\033&amp;f0k%dD%s", strlen(argv[1]), argv[1]);
    printf("\033&amp;f-1k%dD%s", strlen(argv[1]), argv[1]);
    return(0);
}
</verb></tscreen>
</p>

<p>
We kunnen een vergelijkbaar script schrijven door gebruik te maken van
de <tt>${#string}</tt>
(<tt>zsh</tt>, <tt>bash</tt>, <tt>ksh</tt>) of <tt>${%string}</tt>
(<tt>tcsh)</tt>'s uitbreiding om de lengte van de string te achterhalen. 
Het volgende geldt voor <tt>zsh</tt>:
<tscreen><verb>
case $TERM in
    hpterm)
        str="\e]0;%n@%m: %~\a"
	precmd () {print -Pn "\e&amp;f0k${#str}D${str}"}
   	precmd () {print -Pn "\e&amp;f-1k${#str}D${str}"}
	;;
esac
</verb></tscreen>
</p>
</sect1>
</sect>


<sect><heading>Appendix: voorbeelden in andere talen</heading>

<p>
Het kan handig zijn een klein programma te schrijven waarbij een argument
naar de titel wordt afgedrukt door gebruik te maken van
de <tt>xterm</tt> escapes. Hierna wordt een aantal voorbeelden gegeven.
</p>

<sect1><heading>C</heading>

<p>
<tscreen><verb>
#include <stdio.h>

int main (int argc, char *argv[]) {
  printf("%c]0;%s%c", '\033', argv[1], '\007');
  return(0);
}
</verb></tscreen>
</p>
</sect1>

<sect1><heading>Perl</heading>

<p>
<tscreen><verb>
#!/usr/bin/perl
print "\033]0;@ARGV\007";
</verb></tscreen>
</p>
</sect1>
</sect>


<sect><heading>Krediet</heading>

<p>
Met dank aan de volgende mensen die voorzagen in advies, correcties op
fouten en voorbeelden voor dit document.
</p>

<p>
Paul D. Smith <tt>&lt;psmith@BayNetworks.COM&gt;</tt> en
Christophe Martin <tt>&lt;cmartin@ipnl.in2p3.fr&gt;</tt>
wezen er beiden op dat ik de aanhalingstekens verkeerd om had in 
<tt>$PROMPT_COMMAND</tt> van <tt>bash</tt>. Ze juist plaatsen betekent
dat variabelen dynamisch <it>worden</it> ge&euml;xtraheerd.
</p>

<p>
Paul D. Smith <tt>&lt;psmith@BayNetworks.COM&gt;</tt>
deed de suggestie voor het gebruik van <tt>\[...\]</tt> in de <tt>bash</tt>
prompt voor het opnemen van niet afdrukbare tekens.
</p>

<p>
Christophe Martin <tt>&lt;cmartin@ipnl.in2p3.fr&gt;</tt>
leverde de oplossing voor <tt>ksh</tt>.
</p>

<p>
Keith Turner <tt>&lt;keith@silvaco.com&gt;</tt>
leverde de escape sequences voor Sun <tt>cmdtool</tt> en
<tt>shelltool</tt>.
</p>

<p>
Jean-Albert Ferrez <tt>&lt;ferrez@dma.epfl.ch&gt;</tt>
wees op een aantal inconsequenties in het gebruik van "<tt>PWD</tt>"
en "<tt>$PWD</tt>", en in het gebruik van "<tt>\</tt>" vs "<tt>\\</tt>".
</p>

<p>
Bob Ellison <tt>&lt;papillo@hpellis.fc.hp.com&gt;</tt> en
Jim Searle <tt>&lt;jims@broadcom.com&gt;</tt> testte <tt>dtterm</tt>
onder HP-UX.
</p>

<p>
Teng-Fong Seak <tt>&lt;seak@drfc.cad.cea.fr&gt;</tt> deed de suggestie
voor het gebruik van de
<tt>-s</tt> optie voor <tt>hostname</tt>, het gebruik van <tt>`pwd`</tt>, en
<tt>echo</tt> onder <tt>csh</tt>.
</p>

<p>
Trilia <tt>&lt;trilia@nmia.com&gt;</tt> deed de suggestie voor voorbeelden
in andere talen.
</p>

<p>
Brian Miller <tt>&lt;bmiller@telstra.com.au&gt;</tt> leverde de
escape sequences en voorbeelden aan voor <tt>hpterm</tt>.
</p>

<p>
Lenny Mastrototaro <tt>&lt;lenny@click3x.com&gt;</tt> gaf een
uitleg van Irix terminal's gebruik van xterm escape sequences.
</p>

<p>
Paolo Supino <tt>&lt;paolo@init.co.il&gt;</tt> deed de suggestie voor het
gebruik van <tt>\\$</tt> in de <tt>bash</tt> prompt.
</p>
</sect>
</article>
</linuxdoc>