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ü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 éé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ë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ï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 éé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.
éé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óó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óó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ëxtraheerd
naar <tt>"..."</tt>, en niet naar <tt>'...'</tt>.
Dus<tt>$PROMPT_COMMAND</tt> wordt op een niet geëxtraheerde waarde
ingesteld, en de variabelen binnen de <tt>"..."</tt> worden geë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&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&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&f0k%dD%s", strlen(argv[1]), argv[1]);
printf("\033&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&f0k${#str}D${str}"}
precmd () {print -Pn "\e&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><psmith@BayNetworks.COM></tt> en
Christophe Martin <tt><cmartin@ipnl.in2p3.fr></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ëxtraheerd.
</p>
<p>
Paul D. Smith <tt><psmith@BayNetworks.COM></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><cmartin@ipnl.in2p3.fr></tt>
leverde de oplossing voor <tt>ksh</tt>.
</p>
<p>
Keith Turner <tt><keith@silvaco.com></tt>
leverde de escape sequences voor Sun <tt>cmdtool</tt> en
<tt>shelltool</tt>.
</p>
<p>
Jean-Albert Ferrez <tt><ferrez@dma.epfl.ch></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><papillo@hpellis.fc.hp.com></tt> en
Jim Searle <tt><jims@broadcom.com></tt> testte <tt>dtterm</tt>
onder HP-UX.
</p>
<p>
Teng-Fong Seak <tt><seak@drfc.cad.cea.fr></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><trilia@nmia.com></tt> deed de suggestie voor voorbeelden
in andere talen.
</p>
<p>
Brian Miller <tt><bmiller@telstra.com.au></tt> leverde de
escape sequences en voorbeelden aan voor <tt>hpterm</tt>.
</p>
<p>
Lenny Mastrototaro <tt><lenny@click3x.com></tt> gaf een
uitleg van Irix terminal's gebruik van xterm escape sequences.
</p>
<p>
Paolo Supino <tt><paolo@init.co.il></tt> deed de suggestie voor het
gebruik van <tt>\\$</tt> in de <tt>bash</tt> prompt.
</p>
</sect>
</article>
</linuxdoc>
|