; TeX output 2003.04.16:1312_2 ~?ՁZݺIqqecss2074Deftitelvaneenxtermwijzigen cG 1 ecrm1000RicU Lister,qL ectt1000ric@giccs.georgetown.edu,V*ertaaldU doGor:qEllenBokhorstbokkie@nl.linux.org#v2.0,27oktober1999&6 ecss1000InditdoGcumentwordtuitgelegdhoeescapesequenceskunnenwordengebruiktomdynamischdetitelvaneenxterm-venstereneenikoGontewijzigen.I&VoGorverscheideneshellswordtvoGorzieninvoGorbeelden,GenindeappGendixzijnU escapGesequencesgegevenvooreenaantalanderetypGenterminals.(&Lt$ffffecbx1440Inhoudsopgacve]f ecbx10001W aarditdoQcumen>tistevinden s^22Statisc>hetitelsv23Dynamisc>hetitelsgl2ؼ3.1%xtermU escapGesequences;.荍......................................w23.2%AfdrukkenU vqanescapGesequencesb.荍.................................w24V oQorbeeldenv>oorv>erschillendeshells34.1%zshύ.荍..................................................w34.2%tcsheg.荍.................................................w44.3%bash,.荍.................................................w54.4%ksh.荍..................................................w54.5%cshύ.荍..................................................w65Afdrukk>env\|andehuidigejobnaamb65.1%zshύ.荍..................................................w65.2%AndereU shells.荍............................................w76AppQendix: escapesv>ooranderet>ypenterminalsA76.1%IBMU aixterm..荍............................................w76.2%SGIU wsh,xwshenwintermɍ.荍.....................................w76.3%SunU cmdtoolenshelltoolG.荍....................................w76.4%CDEU dtterm.荍............................................w86.5%HPterm.荍...............................................w87AppQendix: v>oorbeeldeninanderetalen4F87.1%Cs_.荍...................................................w87.2%Perl.荍.................................................w9*_2 ~?G1.8W aarditdoQcumen>tistevindenO2ՁV8Krediet9(1W(aarG\ditdopcumenctistevinden:DitldoGcumentmaaktnuonderdeeluitvqandeHЃ ecti1000LinuxHOWTOKIndexU enhetistevindenop@.ؼDeIflaatsteversieisaltijdinverscheideneformatentevindenop̼.DitU doGcumentovervleugeltdeoGorspronkelijkehowtogeschrevendoGorWinfriedT*rmper.(2StatisccheG\titels:Een~statischetitelkqanvoGoriedervqandeterminalsxterm,@color-xtermofrxvtwordeningesteld,@doGorgebruikU temakenvqandeopties-Ten-n:ؼqL ectt0900xtermN-T"MijnXTermTitel-n"MijnXTermIkoonTitel"3DynamisccheG\titels:V*eelmensenvindenhethandigomdetitelvqaneenterminalzointestellendathetdynamischinformatieweergeeft,U zoalsdehostnaamwaaropdegebruikerisingelogdofdehuidigewerkdirectory*,enz.#Í!N ecbx12003.1xtermescap_esequencesMIkoGon-envenstertitelsvqaneendraaiendextermkunnenwordengewijzigddoGorgebruiktemakenvqanXT*ermescapGeU sequences.qIndezezinzijndevolgendesequencesnuttig:ؼ !", cmsy10ESC]0;stringBELU SteldenaamvqanhetikoGonendevenstertitelinopstringESC]1;stringBELU SteldenaamvqanhetikoGoninopstringESC]2;stringBELU SteldevenstertitelinopstringESCU ishierhetescapQe-teken(n033),enBELishetbellteken(n007).ؼHetU afdrukkenvqannvandezesequenceszorgtdatdetitelvanhetvensterofdeikoGonwordtgewijzigd.Opmerking: )dezeusequenceszijnvqantoGepassingopdemeesteafgeleidenvanxterm,Jzoalsnxterm, color-xtermenrxvt.2AnderetypGenterminalsmakenvqaakgebruikvanandereescapGes;עziedeappendixvoorvoGorbeelden.RZiehetbGestandctlse}/q2.txt,?V*oGor8eenvolledigelijstmetxtermescapesequences,?welke8metdextermdistributiewordtmeegeleverd,ofMxterm.se}/q,welkeU wordtmeegeleverdmetderxvtdistributie.#Í3.2Afdrukkenv@ anescap_esequencesMV*oGorainformatiediegedurendedelevensduurvqandezeshellgelijkblijft,qzoalsdehost-engebruikersnaam,volstaat? eenecho-commandodoGoreenvoudigwegdeescapGestringinhetrcbestandvqandeshellteplaatsen:$_2 ~?G4.8V oQorbeeldenv>oorv>erschillendeshellsԂ3ՁVechoN-n"\033]0;${USER}@${HOST}\007"ؼzal eentitelproGducerenzoalsusername@hostname,indeveronderstellingdatdeshellvqariabelen$USERen $HOSTʹcorrectzijningesteld.NDebGenodigdeoptiesvoGorechokunnenpershellvqariren(ziedevoorbeeldenverderop).ؼV*oGor5finformatiedietijdensdelevensduurkqanwijzigen,;zoalsdehuidigewerkdirectory*,;moGetendezeescapesecht,Liedere'keerdatdepromptwijzigt,Lwordenaangepast.ÖZowordtbijiedereopGdrachtdiejeaanroGeptdestringgewijzigdenkqaninformatiewordenbijgehoudenzoalsdehuidigewerkdirectory*,naamvqandegebruikers,Nhostnaam,enz.EenxaantalshellsvoGorzietinspecialefunctiesvoorditdoel,NeenaantaldoetditnietZkenwemoGetendetitelsequencesdirectindepromptstringvoGegen.`Ditwordtindevolgendesectiegellustreerd.(4V(oporbeeldenG\vcoorvcerschillendeshells:HieronderpwordteensetvoGorbeeldenpgegevenvoGordewatmeergebruikelijkeshells.MqW*ebGeginnenmetzshaangezienhetdiversemogelijkhedenbiedtdieonzetaakerveeleenvoudigeropmaken.NVW*ezullenvervolgenssteedsU moGeilijkerevoGorbeeldenU doorwerken.InHallevoGorbeeldenHtestenwedeomgevingsvqariabGele$TERMHomerzekervqantezijndatwedeescapGesalleentoGepassenopxterms.2|W*etestenop$TERM=xterm*;hetjokertekenwordtgebruiktomdateenaantalvqarianten(zoalsU rxvt)dezeomgevingsvqariabGeleinkanstellenop$TERM=xterm-color.W*ezoudeneenextraopmerkingoverC-shellafgeleiden,zoalstcshencshmoGetenmaken.3InCoshells,wordenongedenieerdevqariabGelenalsfatalefoutenbeschouwd.=DaaromishetnodigvoorhettestenvqandevariabGele$TERM,0tetestenophetbGestaanervqan.OmdittebereikenmoetjedevoorbeeldenhieronderwijzigeninzoietsU als:卑"rifN($?TERM)then =5W..."rendifؼ(Wij5vindenditnvqandeveleredenenomgeengebruiktemakenvqanC-shells.^ZieCshProgramming ConsideredU HarmfulvoGoreennuttigebGespreking).DegvoGorbeeldenhiernazoudenkunnenwordengebruiktdoorzeteplaatseninhetvqantoepassingzijndeshell-initialisatiebGestand;Td.w.z.KnHdiebijhetopstartendoorinteractieveHshellswordtingelezen.KIndemeesteU gevqallenheeftdezeeennaamzoalsin.qL ecit1000shellVrc(b.v.q.zshrc,.tcshrc,enz).#Í4.1zshMzshU biedtdevolgendefunctiesenuitbreidingen,waarwegebruikvqanzullenmaken:卑precmdN()+eenfunctiedievriederepromptwordtuitgevoerd =chpwdN()8eenfunctiediewordtuitgevoerdwanneerdedirectorywijzigt\e/= escapeNsequencevoorescape(ESC)\a/= escapeNsequencevoorbell(BEL)%n/= extraheertNnaar$USERNAME%m/= extraheertNnaarhostnaamtotaandeeerste'.'%~/= extraheertNnaardirectory,$HOMEwordtvervangendoor'~'ؼErU zijnnogheelwatmeeruitbreidingenbGeschikbaar:qziedezshmiscmanpage.1_2 ~?G4.8V oQorbeeldenv>oorv>erschillendeshellsԂ4ՁVDus G hetvolgendezaldextermtitelinstellenopgebruikersnaamU@hostnaam:dir}/ec- toryn@"gebruikersnaamV@hostnaam: Xdirectory":卑caseN$TERMin =+:xterm*)>rprecmdN(){print-Pn"\e]0;%n@%m:%~\a"}>r;;esacؼDit?zouookbewerkstelligdkunnenwordendoorgebruiktemakenvanchpwd()inplaatsvanprecmd(). XDe?ingebouwdeopdrachtprintwerktnetalsecho,maargeeftonsooknogeenstoegang?totde%promptescapes.#Í4.2tcshMtcsh?heefteenaantalfunctiesenuitbreidingendievergelijkbaarzijnmetdievanzsh:卑precmdN()+eenfunctiedievooriederepromptwordtuitgevoerdcwdcmdN()+eenfunctiediewordtuitgevoerdwanneerdedirectorywijzigt%n/= extraheertNnaargebruikersnaam%m/= extraheertNnaarhostnaam%~/= extraheertNnaardirectory,$HOMEwordtvervangendoor'~'%#B"DbreidtNuitnaar'>'voorgewonegebruikers,'#'voor%root-gebruikers%{...%}voegtNeenstringinalseenletterlijkeescapesequenceؼHelaas?isergeenequivalentevoordeopdrachtprintvanzshdiehetonstoestaatpromptescapes?indetitelstringtegebruiken,dushetbestewatwekunnendoenisgebruiktemaken?vanshellvariabelen(in/.tcshrc):卑switchN($TERM)+:caseN"xterm*":>raliasNprecmd'echo-n"\033]0;${HOST}:$cwd\007"'>rbreakswendswؼHierdoor?krijgjeechterhetvolledigepadvandedirectoryinplaatsdatergebruikwordt?gemaaktvan. XInplaatsdaarvankunjedestringindepromptplaatsen:卑switchN($TERM)+:caseN"xterm*":>rsetNprompt="%{\033]0;%n@%m:%~\007%}tcsh%#">rbreaksw+:default:>rsetNprompt="tcsh%#">rbreakswendswؼhiermee?wordtdepromptingesteldop%@",eneenxterm-titelenikoongebruikersnaamV@hostnaam: Xdirectory@"gebruikersnaam@hostnaam:directory".Houd?indegaten?datde%f...%g@"tussenescapesequencesmoetwordengeplaatst(enniethetlaatsteitem?indepromptkanzijn: Xziedemanpagevantcshvoordetails).?_2 ~?G4.8V oQorbeeldenv>oorv>erschillendeshellsԂ5ՁV4.3bashMbash?voorzietindevariabele$PROMPT_COMMANDwaaraandeopdrachtistoegekendwelke vr?deweergavevandepromptwordtuitgevoerd. XDitvoorbeeldsteltdetitelinopgebruikersnaam@hostnaam: Xdirectory:1PROMPT_COMMAND='echoN-ne"\033]0;${USER}@${HOSTNAME}:${PWD}\007"'n033?ishierdetekencodevoorESC,enn007voorBEL.ؼDe?aanhalingstekenszijnhierbelangrijk: Xvariabelenwordengextraheerdnaar"...",?ennietnaar'...'. XDus$PROMPT_COMMANDwordtopeennietgextraheerdewaarde ingesteld,?endevariabelenbinnende"..."worden?gextraheerdwanneer$PROMPT_COMMANDwordtgebruikt.$PWD?produceertechterhetvolledigepadvandedirectory. XAlswedeverkortevormwillen,?moetwedeescapestringindepromptopnemen,watmaaktdatwevoordeelkunnenhebben?vandedoorindeshellvoorzieneuitbreidingenopdeprompt:1\u/= extraheertNnaar$USERNAME =\h/= extraheertNnaarhostnaamtotaandeeerste'.'\w/= extraheertNnaardirectory,$HOMEwordtvervangendoor'~'\$B"DextraheertNvoorgewonegebruikersnaar'$','#'voorroot\[...\]sluitNeenreeksinmetnietafdrukbaretekensDus?hetvolgendeproduceerteenpromptbash$,eneenxtermtitelgebruikersnaam@hostnaam: Xdirectory:1caseN$TERMin+:xterm*)>rPS1="\[\033]0;\u@\h:N\w\007\]bash\\$">r;;+:*)>rPS1="bash\\$N">r;;esacLet?ophetgebruikvann[...n],waarmeeaanbashwordtaangegevendenietafdrukbarecontroletekens?tenegeren,wanneerdebreedtevandepromptwordtberekend. XAndersonstaat?erverwarringbijhetplaatsenvandecursorbijregeleditingopdrachten.#4.4kshMksh?voorzietinweinigfunctiesenuitbreidingen,dusmoetenwedeescapestringindeprompt?voegen,omhetdynamischtelatenbijwerken. XDitvoorbeeldproduceerteentitelmet?gebruikersnaam@hostnaam: Xdirectoryeneenpromptksh$.1caseN$TERMin+:xterm*)>rHOST=`hostname`>rPS1='^[]0;${USER}@${HOST}:N${PWD}^Gksh$'>r;;+:*)H_2 ~?G5.8Afdrukk>env\|andehuidigejobnaam?6ՁV>rPS1='ksh$N' =>r;;esacؼ$PWD?produceertechterhetvolledigepadvandedirectory. XWekunnenhetvoorvoegsel $HOME/?vandedirectoryverwijderendoorgebruiktemakenvandeconstructie$f...##...g.We?kunnenookgebruikmakenvan$f...%%...gomdehostnaaamaftekappen:卑HOST=`hostname` =HOST=${HOST%%.*}PS1='^[]0;${USER}@${HOST}:N${PWD##${HOME}/}^Gksh$'De?[enGindepromptstringzijnenkeletekensvoorESCenBEL(kaninemacsdoorhet invoeren?vanC-qESCenC-qC-g).#Í4.5cshMDit?isincshinderdaadergmoeilijk,enwekomenongeveerhieropuit:卑switchN($TERM)+:caseN"xterm*":>rsetNhost=`hostname`>raliasNcd'cd\!*;echo-n"^[]0;${user}@${host}:${cwd}^Gcsh%"'>rbreaksw+:default:>rsetNprompt='csh%'>rbreakswendswwaarbij?weeenaliasvoordeopdrachtcdopdrachtgebruikenomdeescapesequencete sturen. XDe?[enGindestringzijnenkeletekensvoorESCenBEL(kunneninemacsworden?ingevoerdmetC-qESCenC-qC-g).ؼOpmerkingen: Xop?eenaantalsystemenkanhostname-swordengebruiktomeenafgekorteversie,?inplaatsvandefully-qualifiedhostnaamteverkrijgen. XEenaantalgebruikersmet?symlinkeddirectory'sbemerkenmogelijkdat`pwd`(achterwaartseaanhalingstekensvoor?hetuitvoerenvandeopdrachtpwd)eenaccuraterpadteruggeeftdan$pwd.(5AfdrukkcenG\vandehuidigejobnaam:Vaak?zaleengebruikereenvoorgrondtaakopstartenzoalstop,eeneditor,eenemailclient,?enz,enwillendatdenaamvandejobindetitelwordtweergegeven. XDitis?eenwatneteligerprobleemenkanalleeneenvoudigwordenbewerkstelligdmetzsh.#Í5.1zshMzsh?voorzietineenidealeingebouwdefunctievoorditdoel:卑preexec()+eenNfunctiedienetvooruitvoeringvaneenopdrachtwordt =uitgevoerd$*,$1,...+argumentenNdoorgegevenaanpreexec()RQ_2 ~?G6.8AppQendix: escapesv>ooranderet>ypenterminalsͧչ7ՁVDus?wekunnenalsvolgtdejobnaamindetitelvoegen:卑caseN$TERMin =+:xterm*)5WpreexecN(){>rprintN-Pn"\e]0;$*\a"5W}+:;;esacؼOpmerking: Xde?preexec()functieverscheenzorondversie3.1.2vanzsh,duswellicht moet?jeeeneerdereversieupgraden.#Í5.2AndereshellsMDit?isinandereshellsnieteenvoudigdoorhetontbrekenvaneenequivalenteopdrachtals?depreexec()functie. XAlsiemandandersvoorbeeldenheeft,emaildezedanalsjeblieft?naardeauteur.(6Apppendix: escapesG\vcooranderetcypenterminals:Veel?moderneterminalszijnafgeleidvanxtermofrxvtenondersteunendetotnutoegebruikte?escapesequences. XEenaantaleigenterminalsdiemetdiversevariantenvanunix?wordenmeegeleverdmakengebruikvaneigenescapesequences.6.1IBMD7` ectt1200aixtermMaixterm?herkentdextermescapesequences.6.2SGIwsh,xwshenwintermDeze?terminalszettendetermvariabeleinals$TERM=iris-ansiengebruikendevolgende escapes:ؼESCP1.ystringVESCn?SteldevenstertitelinopstringESCP3.ystringVESCn?SteldeikoontitelinopstringZie?demanpagevanxwsh(1G)vooreenvolledigelijstmetxwshescapes.ؼDe?Irixterminalsondersteunenookdextermescapesomafzonderlijktevenstertitelenikoontitel?intestellen,maarnietdeescapeomzebeidenintestellen.#Í6.3SuncmdtoolenshelltoolMcmdtool?enshelltoolstellenstellendetermvariabelebeideninals$TERM=sun-cmdenmaken?gebruikvandevolgendeescapes:ESC]lstringVESCn?Steldevenstertitelinopstring[_2 ~?G7.8AppQendix: v>oorbeeldeninanderetalenڹ8ՁVESC]LstringVESCn?SteldetitelvanhetikooninopstringؼDit?zijnwerkelijkafgrijselijkeprogramma's: Xgebruikietsanders.#Í6.4CDEdttermMdtterm?steltdetermvariabeleinop$TERM=dtterm,enblijktstandaardzoweldestandaard xterm?alsdeSuncmdtoolsequencesteherkennen(getestonderSolaris2.5.1,DigitalUnix4.0,?HP-UX10.20).6.5HPtermMhpterm?steltdetermvariabeleinals$TERM=hptermengebruiktdevolgendeescapes:ؼESC&f0klengthVDstringStel?venstertitelinopstringvanlengtelengthESC&f-1klengthVDstringStel?ikoontitelinopstringmetdelengtelengthEen?basisC-programmaomdelengtevandestringteberekenenendezeterugtegeven, ziet?erongeveerzouit:卑#includeN =intNmain(intargc,char*argv[]){+:printf("\033&f0k%dD%s",Nstrlen(argv[1]),argv[1]);+:printf("\033&f-1k%dD%s",Nstrlen(argv[1]),argv[1]);+:return(0);}ؼWe?kunneneenvergelijkbaarscriptschrijvendoorgebruiktemakenvande$f#stringg(zsh,?bash,ksh)of$f%stringg(tcsh)'suitbreidingomdelengtevandestringteachterhalen. XHet?volgendegeldtvoorzsh:卑caseN$TERMin+:hpterm)>rstr="\e]0;%n@%m:N%~\a">rprecmdN(){print-Pn"\e&f0k${#str}D${str}"}>rprecmdN(){print-Pn"\e&f-1k${#str}D${str}"}>r;;esac(7Apppendix: vcoorbeeldenG\inanderetalen:Het?kanhandigzijneenkleinprogrammateschrijvenwaarbijeenargumentnaardetitelwordt?afgedruktdoorgebruiktemakenvandextermescapes. XHiernawordteenaantalvoorbeelden?gegeven.#Í7.1C+#includeN b_2 ~?G8.8Krediet9ՁV =intNmain(intargc,char*argv[]){"rprintf("%c]0;%s%c",N'\033',argv[1],'\007');"rreturn(0);}#Í7.2Perl+#!/usr/bin/perlprintN"\033]0;@ARGV\007";(8Krediet:Met?dankaandevolgendemensendievoorzageninadvies,correctiesopfoutenen voorbeelden?voorditdocument.ؼPaul?D.Smith b> cmmi10enChristopheMartinwezen?erbeidenopdatikdeaanhalingstekensverkeerdomhadin$PROMPT_COMMANDvanbash. XZe?juistplaatsenbetekentdatvariabelendynamischwordengextraheerd.Paul?D.Smithdeeddesuggestievoorhetgebruikvann[...n]inde?bashpromptvoorhetopnemenvannietafdrukbaretekens.Christophe?Martinleverdedeoplossingvoorksh.Keith?TurnerleverdedeescapesequencesvoorSuncmdtoolenshelltool.Jean-Albert?Ferrezweesopeenaantalinconsequentiesinhetgebruik?van"PWDn$PWD@"$PWD",eninhetgebruikvann@"vsnn@".Bob?EllisonenJimSearletesttedttermonder?HP-UX.Teng-Fong?Seakdeeddesuggestievoorhetgebruikvande-soptievoor?hostname,hetgebruikvan`pwd`,enechoondercsh.Trilia?deeddesuggestievoorvoorbeeldeninanderetalen.Brian?Millerleverdedeescapesequencesenvoorbeeldenaanvoor?hpterm.Lenny?MastrototarogafeenuitlegvanIrixterminal'sgebruikvanxterm?escapesequences.Paolo?Supinodeeddesuggestievoorhetgebruikvannn$indebashprompt.j;_2G D7` ectt1200qL ecit1000!N ecbx1200qL ectt0900HЃ ecti1000]f ecbx1000&Lt$ffffecbx14406 ecss1000qL ectt1000Iqqecss2074 1 ecrm1000 !", cmsy10 b> cmmi10r