; TeX output 2003.11.26:1337_2 ~?ՁZݺIqqecss2074Comefcambiawmreiltitolodiunaxterm cG 1 ecrm1000RicU Lister,qL ectt1000ric@giccs.georgetown.edu v2.0,27ottobre1999&6 ecss1000QuestodoGcumentospiegacomeutilizzarelesequenzediescapepermodicaredinamicamenteititolidellanestraedell'iconadiunaxterm.SonofornitiesempipGerdiverseshellel'appendiceforniscelesequenzediescapeperaltriU tipiditerminale.qT*raduzioneacuradiLorenzaRomano(titti@dei.unipGd.it)settembre2000.(&Lt$ffffecbx1440Indice]f ecbx10001Do>vetrov\|arequestodoQcumento!22Titolistatici23TitolidinamicivT2ؼ3.1%SequenzeU diescapGextermc.荍.....................................w23.2%RiproGdurreU lesequenzediescapeM.荍.................................w34EsempipQershelldiv>erseFF34.1%zshύ.荍..................................................w34.2%tcsheg.荍.................................................w44.3%bash,.荍.................................................w54.4%ksh.荍..................................................w54.5%cshύ.荍..................................................w65Stampareilnomedeljobcorren>te"65.1%zshύ.荍..................................................w65.2%AltreU shell4.荍..............................................w76AppQendice: escapeperaltritipiditerminale@U76.1%IBMU aixterm..荍............................................w76.2%SGIU wsh,xwshewinterm.荍.....................................w76.3%SunU cmdtooleshelltoolw?.荍.....................................w76.4%CDEU dtterm.荍............................................w86.5%HPterm.荍...............................................w87AppQendice: esempiinaltrilinguaggi 87.1%Cs_.荍...................................................w87.2%Perl.荍.................................................w98Ringraziamen>titB 9*_2 ~?G1.8Do>vetrov\|arequestodoQcumento᰹2ՁV1DocveG\trovarequestodopcumento:QuestoU doGcumentofaorapartedelؼHЃ ecti1000LinuxHOWTOIndexU http://sunsite.unc.edu/LDP/HOWTO/eU puesseretrovqatoall'indirizzohttp://sunsite.unc.edu/LDP/HOWTO/mini/Xterm-Title.htmlU .L'ultimaU versionepusempreesseretrovqataindiversiformatiall'indirizzohttp://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/U .QuestoU doGcumentoprendeilpostodell'howtooriginarioscrittodaWinfriedT*rmper.(2TitoliG\staticiPuG?essereimpGostatountitolostaticoperqualsiasiterminalexterm,Ǻcolor-xtermorxvtutilizzandole opzioniU dirigadicomando(switch)-Te-n:ؼqL ectt0900xtermN-TIlproprioTitolodellaXTerm-nIlproprioTitolodell'IconadellaXTerm3TitoliG\dinamiciMolte$XpGersoneritengonoutileimpostareiltitolodiunterminaleanchriettainformazionidinamiche,.ad esempioU ilnomedell'hostacuicollegatol'utente,l'attualedirectorydilavoro,ecc.#Í!N ecbx12003.1Sequenzediescap_extermMItitoli/dellanestraedell'iconadiunaxterminesecuzionepGossonoesseremodicatiutilizzandolesequenzediU escapGeXterm.qAlriguardosonoutilileseguentisequenze:ؼ !", cmsy10ESC]0;stringaBELU ImpGostailnomedell'iconaeiltitolodellanestraastringaESC]1;stringaBELU ImpGostailnomedell'iconaastringaESC]2;stringaBELU ImpGostailtitolodellanestraastringadoveU ESCilcarattereescapQe(n033)eBELilcaratterebell(n007).ؼLariproGduzionediunadiquestesequenzeentrolaxtermprovoGcalamodicadeltitolodellanestrao dell'icona.Nota:EIquestesequenzesiapplicanoallamaggiorpartedeiderivqatixterm,badesempionxterm,color-xtermerxvt.\^AltritipiditerminalespGessousanosequenzediescapediverse;*sivedal'appGendiceperdegliesempi.PerplalistacompletadellesequenzediescapGextermsivedaillectlse}/q2.txthttp://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/ctlseq2.txtU ,inclusonelladistribuzionexterm,oppurexterm.se}/q %http://www.giccs.georgetown.edu/~ric/howto/Xterm-Title/xterm.seqfornitoconladistribuzionerxvtU http://www.rxvt.org/.$H_2 ~?G4.8EsempipQershelldiv>erseDlڹ3ՁV3.2Ripro_durrelesequenzediescapeMPerhleinformazionicherimangonocostantipGertuttaladuratadellavitadellashell,adesempiol'hostelo username,U bastersemplicementefarel'echodellastringadiescapGenellercdellashell:yechoN-n"\033]0;${USER}@${HOST}\007"OdovrebbGeprodurreuntitolodeltipousername@hostnameassumendochelevqariabilidellashell$USERe$HOST>siano`impGostatecorrettamente.DLeopzioninecessariealcomandoechopossonovqariaredashellashell(siU vedanogliesempicheseguono).ؼPer!leinformazionichepGossonocambiareduranteilcorsodellavitadellashell,Tadesempiol'attualedirectorydi@'lavoro,DYnecessarioapplicarequestesequenzeogniqualvoltailpromptcambia.jInquestomoGdolastringaviene~aggiornataconognicomandochesiimmetteeputeneretracciadiinformazionitipGol'attualedirectorydilavoro,lousername,l'hostnameecc.*AquestoscopGo,alcuneshellmettonoadispGosizionedellefunzionispGeciali,altreDnoesidevonoinserirelesequenzedeltitolodirettamentenellastringadelprompt.@Ci莡chiaritoU nellaprossimasezione.(g4EsempiG\ppershelldivcerse:Di'seguitoforniamounaseriediesempipGeralcunedelleshellpicomuni.$Iniziamoconlazshdatochefornisce>parecchiefacilitazionicherendonopiagevoleilnostrolavoro.jProseguiremopGoiattraversoesempidiU dicoltcrescente.InTtuttigliesempiesaminiamolavqariabilediambienteTƺ$TERMTpGerassicurarcidiapplicarelesequenzediescapGesoloallexterm.IV*erichiamoche$TERM=xterm*;A:laragionedellapresenzadelmetacaratterechealcuneU vqarianti(adesempiorxvt)pGossonoimpostare$TERM=xterm-color.ȑ=necessariogfareunaosservqazioneaggiuntivasuiderivatidelleshellC,tipGotcshecsh.[VNelleshellC,levqariabili3indeniteprovoGcano3unerrorefatale(fatalerror). Perciprimadiesaminarelavariabile$TERMLnecessariovericarelasuaesistenzacosdanoninterrompGereshellnoninterattive.XPerottenereci莡necessarioU includeregliesempisottostantiinqualcosatipGo:y"rifN($?TERM)then =5W..."rendifO(A#nostro@avvisoquestapropriounadellemolteragionipGernonusareleshellC.SivedaCshProgramming ConsideredU Harmfulhttp://language.perl.com/versus/csh.whynotйpGerunadiscussioneprocua).GliesempicheseguonodovrebbGeroessereutilizzatiinserendolinell'appositolediinizializzazionedellashell;cioGYunledicuileshellinterattiveYfannoilsourceall'avvio.Nellamaggiorpartedeicasiilnomedelle莡qualcosaU tipGo.qL ecit1000shellVrc(peresempio.zshrc,.tcshrc,ecc).#4.1zshMLaU zshforniscealcunefunzioniedespansionicheutilizzeremo:yprecmdN()+funzionechevieneeseguitaappenaprimadiogniprompt =chpwdN()8funzionechevieneeseguitaogniqualvoltaladirectoryQvieneNmodificata\e/= sequenzaNdiescapeperescape(ESC)\a/= sequenzaNdiescapeperbell(BEL)/'_2 ~?G4.8EsempipQershelldiv>erseDlڹ4ՁV%n/= vieneNespansain$USERNAME =%m/= vieneNespansanell'hostnamefinoalprimo'.'%~/= vieneNespansanelladirectory,sostituendo$HOMEcon'~'ؼSonoU dispGonibilimoltealtreespansioni:qsivedalapaginadimanualezshmisc.ؼQuantoU segueimpGostaperciiltitolodellaxterma:qusernameV@hostname: Xdirectory:卑caseN$TERMin+:xterm*)>rprecmdN(){print-Pn"\e]0;%n@%m:%~\a"}>r;;esacCi pGotrebbeancheessereottenutoutilizzandochpwd()alpGostodiprecmd(). ?Laprimitivqaprintsi compGortaU comeecho,macidlapossibilitdiusarelesequenzediescapedelprompt%.#Í4.2tcshMLaU tcshhadellefunzioniedespansionisimiliaquelledellazsh:卑precmdN()+funzionechevieneeseguitaappenaprimadiognipromptcwdcmdN()+funzionechevieneeseguitaogniqualvoltaladirectoryQvieneNmodificata%n/= vieneNespansainusername%m/= vieneNespansain rhostname%~/= vieneNespansanelladirectory,sostituendo$HOMEcon'~'%#/= vieneNespansain'>'pergliutentinormali,'#'pergliQutentiNroot%{...%}includeNunastringasottoformadisequenzadiescapeQcostanteSfortunatamente[nonc'uncomandoequivqalentealcomandoprintdellazshchepGermettadiusarele sequenze-diescapGedelpromptnellastringadeltitolo,5tpercilacosamigliorechesipossafareutilizzarelevqariabiliU dellashell(in/.tcshrc):卑switchN($TERM) =+:caseN"xterm*":>raliasNprecmd'echo-n"\033]0;${HOST}:$cwd\007"'>rbreakswendswInDognimoGdociforniscel'interopercorsodelladirectoryalpostodifarusodi.@Inalternativqasipu inserireU lastringanelprompt:卑switchN($TERM)+:caseN"xterm*":>rsetNprompt="%{\033]0;%n@%m:%~\007%}tcsh%#">rbreaksw+:default:>rsetNprompt="tcsh%#">rbreakswendsw=_2 ~?G4.8EsempipQershelldiv>erseDlڹ5ՁVcheKimpGostaunpromptpariatcsh%eduntitolodixtermeiconapariausernameV@hostname:directory. Si6notiche%f...%gdeveconteneresequenzediescapGe(enonpuesserel'ultimavoGcenelprompt:߬sivedalaU paginadimanualetcshpGeridettagli).#Í4.3bashMLarbashmetteadispGosizioneunavqariabile$PROMPT_COMMAND^checontieneuncomandodaeseguirsiprimadelU prompt.qQuestoesempioimpGostailtitoloausernameV@hostname: Xdirectory:卑PROMPT_COMMAND='echoN-ne"\033]0;${USER}@${HOSTNAME}:${PWD}\007"'ؼdoveU n033ilcoGdicecarattereperESCen007quelloperBEL.ؼSi3notichequiimpGortantel'usodellevirgolette:`levqariabilivengonosviluppate,:espansesesonotra...fnenonVvengonoespansesesonotra'...'.OPerci$PROMPT_COMMANDrPS1="\[\033]0;\u@\h:N\w\007\]bash\\$">r;;+:*)>rPS1="bash\\$N">r;;esacؼSi!notil'usodin[...n],Tchediceallabashdiignorareicaratteridicontrollononstampabilinelcalcolo della3lunghezzadelprompt.f\Diversamente3icomandipGerl'editordilineasiconfonderebberonelposizionareilU cursore.#Í4.4kshMLa"kshforniscepGoco"dalpuntodivistadellefunzioniedespansioni,pGercisideveinserirelastringadi3escapGenelpromptanchvengaaggiornatadinamicamente. QuestoesempioproGduceuntitolousername@hostname: XdirectoryU eunpromptksh$?.caseN$TERMin =+:xterm*)>rHOST=`hostname`>rPS1='^[]0;${USER}@${HOST}:N${PWD}^Gksh$'>r;;F_2 ~?G5.8Stampareilnomedeljobcorren>tek6ՁV+:*) =>rPS1='ksh$N'>r;;esac&AdyognimoGdo, $PWDxŹforniscel'interopGercorsodelladirectory*.PSipurimuovereilpresso$HOME/dalla directoryU usandoilcostrutto$f...##...g.qSipuancheusare$f...%%...gpGertroncarel'hostname:|PHOST=`hostname`HOST=${HOST%%.*}PS1='^[]0;${USER}@${HOST}:N${PWD##${HOME}/}^Gksh$'SiYenotiche,Zvnellastringadelprompt,[eGYdsonosingolicaratteripGerESCeBEL(pGossonoessereinseritiin emacsU utilizzandoC-q?ESCeC-qC-g)."}4.5cshMT*uttoU cidavveroU moltodicileincshesiniscepGerfarequalcosadeltipo:|PswitchN($TERM)+:caseN"xterm*":>rsetNhost=`hostname`>raliasNcd'cd\!*;echo-n"^[]0;${user}@${host}:${cwd}^Gcsh%"'>rbreaksw+:default:>rsetNprompt='csh%'>rbreakswendswdoveqsidovutodenireunaliaspGerilcomandocdpersvolgerelafunzionediinviodellesequenzediescapGe. SiYenotiche,Zvnellastringadelprompt,[eGYdsonosingolicaratteripGerESCeBEL(pGossonoessereinseritiinemacsU utilizzandoC-q?ESCeC-qC-g).ؼNote:sugalcunisistemisipuutilizzarehostname?-spGerottenereunhostnamebreveanzichinteramentespGecicato. ~Alcuniuutenti, concollegamentisimbGoliciadirectory*, possonoscoprireche`pwd`(apicipereseguireU ilcomandopwd)fornisceunpGercorsopiaccuratodi$cwd.(}V5StampareG\ilnomedeljobcorrencte:SpGessoIeunutenteavviaunjobinprimopiano(inforeground)dilungaduratatipGotop,Kuneditor,unclientemail,ecc9edesideracheilnomedeljobsiamostratoneltitolo.AQuestounproblemapispinosoesirisolvefacilmenteU solonellazsh."}5.1zshMLaU zshfornisceunafunzioneprimitivqaidealepGerquestoscopo:|Ppreexec()+funzioneNchevieneeseguitaesattamenteprimacheun =QcomandoNvengaeseguito$*,$1,...+argomentiNpassatiapreexec()PerciU sipuinserireneltitoloilnomedeljobnelseguentemoGdo:R _2 ~?G6.8AppQendice: escapeperaltritipiditerminale7ՁVcaseN$TERMin =+:xterm*)5WpreexecN(){>rprintN-Pn"\e]0;$*\a"5W}+:;;esacؼNota:akla4funzionepreexec()apparsaattornoallaversione3.1.2dellazsh,;epGerciunaversioneprecedente dovrU essereaggiornata.#Í5.2AltreshellMCianonfacileconaltreshellchesonoprivediunafunzioneequivqalenteallapreexec().SequalcunodispGoneU diesempiperfavoreU lispediscaall'autore.(6Apppendice: escapeG\peraltritipiditerminale:MoltitterminalimoGdernisonodiscendentidixtermorxvtesupportanolesequenzediescapecheabbiamoutilizzato|noaquestopunto.AlcuniterminaliproprietariforniticontipidiversidiunixusanolepropriesequenzeU diescapGe.6.1IBMD7` ectt1200aixtermMaixtermU riconoscelesequenzediescape?xterm.6.2SGIwsh,xwshewintermQuestiU terminaliimpGostano$TERM=iris-ansieusanoiseguentiescape:ؼESCP1.ystringaVESCn?ImpostailtitolodellafinestraastringaESCP3.ystringaVESCn?Impostailtitolodell'iconaastringaPerU l'interalistadegliescapGedixwshsivedalapaginadimanualexwsh(1G).ؼITterminalivIrixsuppGortanogliescapextermperimpostareseparatamenteiltitolodellanestraeiltitolo dell'iconaU manonl'escapGeperimpostareentrambi.6.3SuncmdtooleshelltoolMcmdtoolU eshelltoolimpGostanoentrambiU $TERM=sun-cmdeusanoiseguentiescape:ESC]lstringaVESCn?ImpostailtitolodellafinestraastringaESC]LstringaVESCn?Impostailtitolodell'iconaastringaSonoU davveroprogrammipGessimi:qsiusiqualcos'altro.[_2 ~?G7.8AppQendice: esempiinaltrilinguaggizC8ՁV6.4CDEdttermMdttermimpGosta$TERM=dttermesembrariconosceresialesequenzediescapextermstandardchelesequenze diU escapGecmdtooldellaSun(vericatosuSolaris2.5.1,DigitalUnix4.0,HP-UX10.20).#Í6.5HPtermhptermU impGosta$TERM=hptermeutilizzaiseguentiescape:ؼESC&f0klunghezzaVDstringaImposta?iltitolodellafinestraastringadilunghezzalunghezzaESC&f-1klunghezzaVDstringaImposta?iltitolodell'iconaastringadilunghezzalunghezzaUnU programmaCbasepGercalcolarelalunghezzaefarel'echodellastringapuesserequesto:卑#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);}ؼPossiamoWscrivereunoshell-scriptsimileutilizzandol'espansione$f#stringag(zsh,@bash,ksh)ol'espansione$f%stringagU (tcsh)pGertrovqarelalunghezzadellastringa.qQuantoseguepGerzsh:卑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(7Apppendice: esempiG\inaltrilinguaggi:PuV8essereutilescrivereunpiccoloprogrammapGerstampareunargomentoneltitoloutilizzandogliescapGexterm.qSottoU fornitoqualcheesempio.#Í7.1C+#includeNintNmain(intargc,char*argv[]){"rprintf("%c]0;%s%c",N'\033',argv[1],'\007');"rreturn(0);} dZ_2 ~?G8.8Ringraziamen>tir9ՁV7.2Perl+#!/usr/bin/perl =printN"\033]0;@ARGV\007";(8Ringraziamencti:UnringraziamentoalleseguentipGersonechehannofornitoconsigli,erratacorrigeedesempipGerquesto doGcumento.ؼPaulD.Smith b> cmmi10eChristopheMartinhannoen-trambifattonotarecheavevolevirgolettenelmoGdosbagliatonella$PROMPT_COMMANDdellabash.w'AverlecapiteU esattamentesignicachelevqariabilivengonoespansedinamicamente.Paul%wD.Smithhasuggeritol'usodin[...n]nelpromptdellabashpGerincludereU caratterinonstampabili.ChristopheU MartinhaprovvedutoU allasoluzionepGerksh.KeithU T*urnerhafornitolesequenzediescapGepercmdtooleshelltooldellaSun.Jean-AlbGertZF*errezhamessoinevidenzaalcuneincoerenzenell'usodiPWDZe$PWDeU nell'usodininoppGosizioneann.BobEllisoneJimSearlehannovericatodttermsuU HP-UX.T*eng-FongCSeakhasuggeritol'opzione-spGerhostname,Ll'usodi`pwd`el'usodiU echonellacsh.T*riliaU hasuggeritogliesempiinaltrilinguaggi.BrianU MillerhafornitolesequenzediescapGeegliesempiperhpterm.LennyUMastrototarohaspiegatol'usoneiterminaliIrixdellesequenzediescapGexterm.PaoloU Supinohasuggeritol'usodinn$nelpromptdellabash.l;_2G D7` ectt1200qL ecit1000!N ecbx1200qL ectt0900HЃ ecti1000]f ecbx1000&Lt$ffffecbx14406 ecss1000Iqqecss2074qL ectt1000 1 ecrm1000 !", cmsy10 b> cmmi10s