; TeX output 2003.11.22:1538_2 ~?ՁZݺIqqecss2074BashfPromptHOwmWTO cG 1 ecrm1000GilesU Orr,HЃ ecti1000giles@interlo}/g.com,U V*ertaalddoGor:qEllenBokhorst,bokkie@nl.linux.org8`"Revisie:q0.7631/12/1999U 23:20:55giles&6 ecss1000HetaanmakenenbGeherenvanterminalenxterm-promptswordtbGesproken,ύwaaronderdestandaardescapGese-quencesomeengebruikersnaam,dehuidigewerkdirectory*,tijd,enz..optenemen.VerderwordeneraanbGevelingengedaanoverhetaanpassenvandetitelbalkenvaneenxterm,lhetgebruikenvanexternefunctiesomtevoGorzieninU informatievoGordeprompt,enhoGejeANSI-kleurenkuntgebruiken.(&Lt$ffffecbx1440Inhoudsopgacve]f ecbx10001In>troQductieenAdministratievezaken3ؼ1.1%BenoGdigdheden.荍...........................................w31.2%HoGeU ditdocumenttegebruiken+.荍..................................w31.3%V*ertalingenQC.荍.............................................w31.4%Problemen.荍..............................................w41.5%StuurU meopmerkingenenaanbGevelingen@.荍.............................w41.6%KredietC.荍...............................................w51.7%CopyrightU enDisclaimeroˍ.荍......................................w52BashenBash-PromptsM(52.1%W*atU isBash?.荍............................................w52.2%W*atU KanhetFijnafstemmenvqanjeBash-PromptVoGorjeDoen? o.荍...............w52.3%W*aaromU zouje?R#.荍...........................................w62.4%DeU EersteStapk.荍...........................................w62.5%BashU PromptEscapGeSequences.荍..................................w72.6%PermanentU InstellenvqandePS?-Stringsg.荍.............................w83BashProgrammerenenShell-Scripts+83.1%V*ariabGelen&.荍..............................................w83.2%AanhalingstekensU enSpGecialeT*ekens?.荍...............................w93.3%CommandoU SubstitutieW.荍.......................................x?103.4%NietU AfdrukbareT*ekensinPrompts.荍...............................x?103.5%Commando'sU ineenBestandbS.荍....................................x?113.6%F*uncties,U Aliassen,endeOmgeving*.荍................................x?114ExterneCommando'sN124.1%PROMPT_COMMAND/.荍......................................x?124.2%ExterneU Commando'sindePrompt?獍.荍................................x?13*_2 ~?GINHOUDSOPGAVEh2ՁV4.3%W*atU injePrompttePlaatsen .荍...................................x?145XtermTitelbalkManipulaties$_156ANSIEscapQeSequences: KleurenenCursorv>erplaatsingl16ؼ6.1%KleurenP.荍...............................................x?166.2%Cursorverplaatsing [.荍.........................................x?206.3%V*erplaatsenU vqandeCursormettputӍ.荍...............................x?217SpQecialeT ek>ens: OctaleEscapeSequencesC228HetBashPromptP>ack\|age5(23ؼ8.1%Beschikbaarheid/.荍..........................................x?238.2%XtermU F*ontsύ.荍.............................................x?238.3%WijzigenU vqanhetXtermF*ontbGdftopcfg.荍..............................x?249Ladenv\|aneenAnderePromptV259.1%LadenU vqaneenAnderePrompt,Later.荍..............................x?259.2%LadenU vqaneenAnderePrompt,Onmiddellijk.荍..........................x?2510Dynamisc>hLadenv\|anPromptKleuren2510.1%EenU "ProGofofConcept"V*oorbeeld.荍................................x?2511PromptCoQdeF ragmen>ten7d2611.1%IngebGouwdeU EscapeSequencesb.荍...................................x?2711.2%DatumU enTijd5c.荍...........................................x?2711.3%T*ellenU vqanBestandenindeHuidigeDirectoryo.荍..........................x?2711.4%T*otaalU aantalBytesindeHuidigeDirectoryz.荍...........................x?2711.5%ControlerenU opHuidigeTTY.荍...................................x?2811.6%UitgesteldeU JobT*ellingD.荍.......................................x?2811.7%UptimeU enLoad.荍..........................................x?2811.8%AantalU ProGcessen w.荍..........................................x?2911.9%BeherenU vqandeBreedtevan$PWDN.荍................................x?2911.10%LaptopU Powerk.荍............................................x?2911.11%DeU PromptNegerenbijKnippGenenPlakken+.荍...........................x?2911.12%HetU ApartInstellenvqandeV*enstertitelenIkoGon-titel¯.荍......................x?3012V oQorbeeldprompts^M3012.1%V*oGorbeeldenU ophetWeb.荍......................................x?3012.2%EenU "Lichtgewicht"Prompt.荍....................................x?30(_2 ~?G1.8In>troQductieenAdministratievezaken3ՁV12.3%EliteU vqanBashpromptThemes).荍..................................x?31ؼ12.4%EenU "PowerUser"Prompt>?.荍.....................................x?3112.5%PromptU AfhankelijkvqanhetTypGeV*erbindingc.荍..........................x?3312.6%EenU PromptterBreedtevqanJeT*erm.荍..............................x?3512.7%DeU ElegantUselessCloGckPrompt.荍.................................x?37(1InctropductieG\enAdministratievezaken荍!N ecbx12001.1Beno_digdhedenMJe!hebtBashnoGdig.N+DestandaardversievoGordemeesteLinux-distributiesisf1.14.7,Tf2.0.x.N+V*ersie1.14.7 wasjarenlangdestandaard,&maardezewordtlangzamerhandvervqangen.^"IkhebBash2.0.xnualeenpGoosjegebruikt,KmaarI]bijnaallecoGdediehiergepresenteerdwordtzouoGokonder1.14.7moetenwerken.mAlsI]ikmebGewustDbenvqaneenprobleem,zalikhetvermelden.JekuntjouwBash-versiecontrolerendoGorachterdepromptU qL ectt1000echo?$BASH_VERSIONintetypGen.qOpmijncomputerantwoGordthetmet2.03.6(1)-release.ؼErvqaring~inhetprogrammerenmetdeshellzoujnzijn,maarditisnietessentieel.HoGemeerjeweet,hoGecomplexerjdepromptsdiejezultkunnenmaken.IndeloGopvqandezetutorialgaikuitvaneenbasiskennisinVohetprogrammerenvqandeshellenvandeUnix-utility's.ulMijneigenervaringeninhetprogrammerenvandewshellzijnechterwbGeperkt,adusikgeefveelvoGorbeeldenenuitleg,adievooreenervqarenshell-programmeuronnoGdigU kunnenblijken.#Í1.2Ho_editdocumenttegebruikenIklvoGegheelveelvoGorbeeldenlenuitlegtoGe. eDiverseonderdelenzullenvoGorverschillendemensenvqanvar-irende#bruikbaarheidzijn.]Hetiszo'nlangdoGcumentgewordendathetniettedoGenisomhetaannstukdoGorU telezen.qLeesgewoondiesectiesdiejenodighebtengazonodignaareenvorigdeel.#Í1.3VertalingenJap}/ans:http://www.jf.linux.or.jp/JF/JF-ftp/other-formats/Bash-Prompt/Bash-Prompt-HOWTO.html,ver-taaldU doGorAkiraEndo,akendo@t3.rim.or.jp.ؼDuits:paanU eenvertalingwordtgewerktdoGorThomasKeil,thomas@h-pr}/eissler.de.Italiaans:pdoGorU DanielDui,ddui@ie}/e.org,U beschikbaarophttp://www.crs4.it/dui/linux.html.Portuge}/es:pvertalingU inbGewerkingdoGorMrioGamito,mario.gamito@mail.telep}/ac.pt.Sp}/aans:Gaan  eenvertalingwordtgewerktdoGorIosuSanturtniosu@bigfo}/ot.com  op http://mip}/agina.euskaltel.es/iosus/linux/Bash-Prompt-HOWTO.html.Ne}/derlands:aanFeenvertalingwordtgewerktdoGorEllenBokhorstb}/okkie@nl.linux.org, enFhetzalbeschikbaarzijnU ophttp://www.nl.linux.or}/g/doc/HOWTO.Chine}/es:aanQWeenvertalingwordtgewerktdoGorAllenHuanglanc}/elot@tomail.com.tw.p=IkQWzaleenURLQVopne-menU wanneerikhetheb.V*eelU dankaaniedereen!qURL'szullenwordentoGegevoegdU zodrazebeschikbaarzijn.Alsjeaaneenvertalingwerkt,غlaatmeditdanalsjeblieftweten,غvoGoralalshetbeschikbaarisopeentelinkenURL.U Bedankt.S@_2 ~?G1.8In>troQductieenAdministratievezaken4ՁV1.4ProblemenMDitiseenlijstmetproblemendieiktegenkwamtijdenshetprogrammerenvqanprompts.hBeginniethier telezen,IenlaatdezelijstjenietontmoGedigen.{HetzijnvoGornamelijkzeerkleinedetails.{ControleerhetgewoGonU alsjeietsraarstegenkomt.ؼ !", cmsy10V*eelgvqandemogelijkhedenvanBash(zoalsonderanderemathbinnen$(()))zijnoptiesdietijdenshetcompilerenmaarikhebjeinbrengnoGdigomditdocumenttecorrigerenenteverbGeteren.qIkhebgeprobeerddedoormijgedaneaanbevelingentecontrolerenonderverschillendeversiesU vqanBash(2.0xen1.14.7),maarlaatmehetwetenalsjeenigeincompatibiliteitenvindt.ؼDelaatsteversievqanditdoGcumentzoualtijdbGeschikbaarmoGetenzijnophttp://www.interlo}/g.com/giles/bashprompt/. Controleer ditalsjeblieftenmailmegerustaanbGevelin-genU viagiles@interlo}/g.com.IkgebruikdeLinuxDoGcumentatiePro0jectHOWTO'sbijnauitsluitendinhetHTML-formaat, dusalsikditvqanuitcSGMLcconverteer(hetbronformaat),gisHTMLchetenigewatikdoGorendoorcontroleer.Alsermetandereformatenproblemenzijn,(>kqanikditnietwetenenzouikhetwaarderenalsjeermeldingvqanzoumaken.hB_2 ~?G2.8BashenBash-PromptsKT5ՁV1.6KredietMTijdenshetproGducerenvqanditdocumenthebikveelafgekekenvqanhetwerkvqanhetBashpromptpro0jectop http://b}/ash.current.nu/.LAndereTbronnendieikhebgebruiktbGestaanuitdexterm-Titlemini-HOWTO޹doorRicnLister,&bGeschikbaarophttp://sunsite.unc.e}/du/LDP/HOWTO/mini/Xterm-Title.html,AnsiPr}/omptsdoGorKeebler,beschikbaarophttp://www.nc}/al.verio.com/keebler/ansi.html,HowytomakeaBashPr}/omptThemedoGorterface.Hetmuntuitininteractiviteit,1on-dersteun>t)-hetbQewerkenv\|andecommandoregel,KaanvullenenherroQepen)-v\|ancommando's.Hetbiedt[oQokondersteuningv>oorhetcongurerenv\|anprompts.7Demeestemensenrealiserenzic>hditw>el,maarwetenniethoQeveelermeek\|anwordengedaan.#J2.2WatKanhetFijnafstemmenv@ anjeBash-PromptVo_orjeDoen?DemeesteLin>ux-systemenhebbQeneenstandaardpromptinnkleur(gewoQonlijkgrijs)welkeje%gebruik>ersnaam,9decomputernaamwaaropjeaanhetwerkenbQenteneenindicatiev\|anjeh>uidigelwerkdirectoryaangeeft. Ditisallemaalnuttigeinformatie,maarjekuntveelmeermetȄdeprompt.AllesoQorteninformatiek\|anw>ordengetoond(tt>y-nummer,tijd,datum,load,aan>talܣgebruikers,ކuptime...)2endepromptk\|angebruikmakenv\|anANSI-kleuren,ކfomhetin>teressant[QtedoQenlijk>en,sfombepaaldeinformatieeruittelatenspringen.Ookdetitelbalkv\|aneenXtermkunjemanipulerenomw>atvandezeinformatiew>eertegeven.yv_2 ~?G2.8BashenBash-PromptsKT6ՁV2.3Waaromzouje?Buiten+dathetergaafuitziet,Aishetv\|aakhandigomsysteeminformatiebijtehouden. Een idee,-w>aarv\|anrikweetdathetsommigemensenaanspreekt,-isdathetmogelijkisomdepromptop)v>erschillendecomputersinanderekleurentelatenverschijnen. (Alsjeopverscheidenev>erschillendecomputersdiv>erseXtermsopQenhebt,ofjeben>tgeneigdtevergetenopwelkecomputer*jeaanhetw>erkbQentendeverkeerdebQestandenverwijdert(ofdeserverafsluitinplaats]cv\|anhetw>erkstation),uTzuljediteengeweldigemaniervindenomjeeraanteherinnerenopw>elkecomputerjewerkt.ؼZelfڴvindikhethandigominformatieo>verڴmijncomputerenw>erkomgevingڴcontinubQeschik-baar1tehebbQen.2ZEnikhouv\|andeuitdaginguittezoek>enhoedemaximalehoev>eelheidaangegev>ensindekleinstmogelijkeruimteteplaatsenwaarbijdeleesbaarheidbQehoudenblijft.#J2.4DeEersteStapDeow>eergavev\|andepromptwordtdoQordeshell-v\|ariabelePS1geregeld.&Con>tinueringv\|ancommando'sE`w>ordtweergegevendoQordePS2-string,bwelkeopexactdezelfdewijzek\|anwordengewijzigdzzoalshierbQesprok>en. Aangezienhetbeherenerv\|anexacthetzelfdeis,Tenhetnietzozn>teressants,zalikvoQornamelijkdePS1-stringwijzigen.(ErzijnookPS3-enPS4-strings.Deze/Gw>ordendoQordegemiddeldegebruikernoQoitopgemerkt.*Ziedemanpagev\|anBashalsjeminh>undoQeleindenben>tgenteresseerd).; OmdewijzehoQedeprompteruitziettewijzigen,v>erander`jedePS1-v\|ariabQele.qJekuntdePS1-stringsdirectachterdepromptinvoQerenomermee8teexpQerimen>terenenderesultatenonmiddellijktezien(ditheeftalleeneectopjeh>uidige~Ysessieendewijzigingenwordenongedaangemaaktalsjeuitlogt).6Alsjeeenblijvendewijzigingv\|andepromptwilt,ikijkdanindesectieonder2.6(P>ermanentinstellenvandePS?-Strings).ؼV oQordat-w>egaanbeginnenishetbelangrijkeraantedenk>en,D2datdePS1-stringnetalselkeanderepomgevingsv\|ariabQeleindeomgevingisopgeslagen.Alsjehetac>hterpdecommandoregelwijzigt,zal0jepromptv>eranderen.V oQordatjeenigeveranderingenaanbrengt,kunjedehuidigepromptineenandereomgevingsv\|ariabQelebew>aren:卑qL ectt0900[giles@nikolaNgiles]$SAVE=$PS1 =[giles@nikolaNgiles]$ؼDeeen>voudigstepromptzouuiteenenkeltekenkunnenbQestaan,zoals:[giles@nikolaNgiles]$PS1=$$lsbin+mail$ؼDoQorzeopdecommandoregelintev>oeren,ԡwordtdebestemaniergetoondw>aaropjemet basisprompts>kun>texpQerimenteren.MerkopdatdetekstdiedoQordegebruikerwerdingetikt,onmiddellijkac>hterdepromptverschijnt. IkgeefdevoQorkeuraanhetgebruikv\|an:卑$PS1="$N"$Nlsbin+mail$_2 ~?G2.8BashenBash-PromptsKT7ՁVw>aardoQorĪeenspatieachterdepromptwordtgeforceerd,wathetbQeterleesbaarmaakt.Roep gew>oQondev\|ariabeleopdiejehebtopgeslagenomdeoorspronk>elijkepromptteherstellen:卑$NPS1=$SAVE =[giles@nikolaNgiles]$#J2.5BashPromptEscap_eSequencesEr w>ordendoQordeBash-shelleenheleboelescapesequencesgebodenomindepromptintev>oQegen. V anuitdemanpagev\|anBash2.02:WanneerNinteractiefuitgevoerd,toontbashdeprimairepromptPS1als =hetNgereediseencommandointelezen,endesecundairepromptPS2alshetNmeerinvoernodigheeftomhetcommandotecompleteren.MetNBashishetmogelijkdezeprompt-stringstewijzigendooreenaantalspecialeNtekensbeginnendmeteenescape-teken,debackslash,intevoegen,dieNalsvolgtzijngecodeerd::$\aeenNASCIIbellteken(07):$\ddeNdatum rin"DagvandeWeekMaandDatum"formaat["F(d.w.z.,N"TueMay26"):$\eeenNASCIIescapecharacter(033):$\hdeNhostnametotaandeeerste`.':$\HdeNhostname:$\nnieuweNregel:$\rcarriageNreturn:$\sdeNnaamvandeshell,de rbasenamevan$0["F(hetNdeelvolgendnadelaatsteslash):$\tdeNhuidigetijdinhet24-uursHH:MM:SSformaat:$\TdeNhuidigetijdinhet12-uursHH:MM:SSformaat:$\@deNhuidigetijdin12-uursam/pmformaat:$\udeNgebruikersnaamvandehuidigegebruiker:$\vdeNversievanbash(d.w.z.2.00):$\Vde rreleasevanbash,Nversie+patchlevel["F(d.w.z.N2.00.0):$\wdeNhuidigewerkdirectory:$\WdeNbasenamevandehuidigewerkdirectory:$\!hetNhistorienummervanditcommando:$\#hetNcommandonummervanditcommando:$\$alsNdeeffectieveUIDis0,een#,anderseen$:$\nnn+hetNtekencorresponderendmethetoctalenummernnn:$\\eenNbackslash:$\[beginNeenreeksniet-afdrukbaretekens,["FdieNkunnenwordengebruiktomeenterminalbesturingsreeks["FinNdepromptintesluiten:$\]eindigNeenreeksniet-afdrukbaretekensؼV erdergaanbijw>aarwewarengebleven:[giles@nikolaNgiles]$PS1="\u@\h\W>"giles@nikolaNgiles>lsbin+mailgiles@nikolaNgiles>-_2 ~?G3.8BashProgrammerenenShell-Scripts8ՁVDitmRlijktv>oQordemeesteLinux-distributiesopdestandaard.Ikwildedatheterietsanders uitzag,dusikwijzigdeditin:giles@nikolaNgiles>PS1="[\t][\u@\h:\w]\$" =[21:52:01][giles@nikola:~]$Nlsbin+mail[21:52:15][giles@nikola:~]$"2.6PermanentInstellenv@ andePS?-StringsMensenUendistributiesplaatsenh>unPS?-stringsopverschillendeloQcaties.Demeestgebruike-lijk>eloQcatieszijn/etc/prole,׹/etc/bashrc,/.bash_prole,en/.bashrc.JohanKullstam( ecbi1000johan19@idt.net)sc>hrijft:ؼdeJPS1-stringzouin.bashrcmoQetenw>ordeningesteld.Ditomdatniet-interactievebash'esbuitenMh>unbQoekjeMgaandoQorPS1teunsetten.Demanpagev\|anbashvertelthoQedeaan-w>ezigheid$ofafwezigheidv\|anPS1eengoQedemanierisomerachtertekomenofmenzichineenin>teractievedanwelniet-interactieve(b.v. script)bash-sessiebQevindt.de\manierw>aaropikditrealiseerdeis,tNdatstartxeenbash-scriptis.DitbQetekentdatstartxjepromptAzalwissen.alsjePS1in.prole(of.bash_prole)instelt,,lopdeconsoleinlogtenX viastartxopstart,w>ordtjePS1inhetproQcesgewistenblijfjeachtermetdestandaardprompt.noplossingisxtermsenrxvtsmetde-lsoptieoptestarten,omzetedwingen.proleintelezen.*'maar/elk>ekeerdatereenshellwordtaangeroQepen/viaeenniet-interactiefshell-scriptgaatEdetussenliggendePS1v>erloren.lsystem(3)gebruiktsh-cwelke,aindienshbashis,PS1zalkillen.TeenbQeteremanierisomdePS1denitiein.bashrcteplaatsen.dezew>ordtiederek>eergelezenalsbashstartenisdeplaatswaarininteractievezaken(bvPS1)zoudenmoQetenstaan.daarom@zoumoQetenw>ordenbenadruktdatPS1=..blah.._0in.bashrcbehoorttestaanennietin.prole.IkprobQeerdehetprobleemdathijuitlegdeteherhalenenikconstateerdeeenanderprob-leem:"wmijnCPR>OMPT_COMMANDv\|ariabQele(welkelaterzalwordengentroQduceerd)wasv>erdwenen. Mijnkennisopditgebiediswatzwak,dusikgaervoQorwatJohanzegt.(ҍ3BashG\ProgrammerenenShell-ScriptsX3.1Variab_elenIkgahiernietalledetailsbQetreendeBash-scriptsineensectiev\|andezeHO>WTOproberenuitmteleggen,omaaralleendedetailsdiebQetrekkinghebbenopprompts. Alsjemeerwiltw>etenovershell-programmerenenv\|anBashinhetalgemeen,1^bQeveelikjev\|anhartehetbQoeksLiHearningtheBashShellaan, v\|anCameronNewhamenBillRosen>blatt(O'Reilly ,1998).V reemdrgenoQegismijnk>opiev\|anhetboeknogalv>ersleten.-Nogmaals,.Hikgaerv\|anuitdatjealtamelijkw>atweetoverBash.JekuntdezesectieoverslaanalsjealleenopzoQekben>tnaardegrondbQeginselen,maaron>thoudhetenkomterugalsjewatverderbQentgekomen.V ariabQelenw>ordeninBashbijnanetalsiniedereandereprogrammeertaaltoegek>end:testvar=5 =foo=zenbar="bashNprompt" _2 ~?G3.8BashProgrammerenenShell-Scripts9ՁVAanhalingstek>ensfvzijnalleennoQdigineentoek>enningalseenspatie(ofspeciaaltek>en,|hetgeen bQeknoptw>ordtbesprok>en)onderdeeluitmaaktv\|andevariabQele.ؼErw>ordtietsandersnaarv\|ariabQelengerefereerddanhoezew>ordentoegek>end:卑>Necho$testvar =5>Necho$foozen>Necho${bar}bashNprompt>Necho$NietToegekend>ؼEr3k\|annaareenvariabQelew>ordengerefereerdals$barof$fbarg.qDeaccoladeszijnhandigals`hetonduidelijkisw>aarnaarzalwordengerefereerd.IAlsik$barleyschrijf,bQedoel`ikdaninw>erkelijkheid$fbargleyof$fbarleyg?TIMerkoQokopdatwanneerernaareenwaardewordtgerefereerd&dienietistoQegek>end,#ergeenfoutwordtgegenereerd.Inplaatsdaarv\|anwordternietsgeretourneerd.#J3.2AanhalingstekensenSp_ecialeTekensAlsc jespQecialetek>ensineenv\|ariabelewiltopnemen,Ɔzuljehetandersaanmoetenhalen(quoten):卑>Nnewvar=$testvar>Necho$newvar5>Nnewvar="$testvar">Necho$newvar5>Nnewvar='$testvar'>Necho$newvar$testvar>Nnewvar=\$testvar>Necho$newvar$testvar>ؼHetrhdollar-tek>enisniethetenigespQecialetekenvoQordeBash-shell,%maarhetiseeneenvoudigv>oQorbeeld.xEeninteressantestapdiewekunnennemenomgebruiktemakenv\|andetoQekenningv\|aneenvariabQelenaamaaneenanderevariabQelenaamisdoorev\|altegebruik>enomnaardeopgeslagenv\|ariabQelenaamtev>erwijzen:卑>Necho$testvar5>Necho$newvar$testvar>Nevalecho$newvar5> _2 ~?G3.8BashProgrammerenenShell-Scripts10ՁVNormaalgesprok>enmaaktdeshellslechtsnsubstituties-slagindeuitdrukkingwelkehij ev\|alueert. GAlssjezegtec>ho$newvar,~zaldeshellslec>htsszovergaandathetv\|aststeltdat$newv\|argelijkisaandetekststring$testvar.Hijzalnietevaluerenw>aaraan$testvargelijkis.ev\|alforceertdieevaluatie.#J3.3CommandoSubstitutieIkzdgebruikinbijnaallesituatiesinditdoQcumen>tde$( b> cmmi10)conventievoQorcommando-substitutie: datwilzeggen,卑$(dateN+%H%M)ؼbQetek>ent@9"verv\|anghierdeuitvoQerv\|anhetdate+%H%M@commando."DitwerktinBash2.0+.Ineenaan>taloudereversiesv\|anBash,k$vanv>oQor1.14.7,k$kanhetzijndatjeenk>eleaanhal-ingstek>ensopQenen,m(`date?+%H%M`)moetgebruik>en.@EnkeleaanhalingstekensopQenenkunneniniBash2.0+w>ordengebruikt,2maarzullengeleidelijkverdwijnentengunstev\|an$(),2welkebQeteristenesten.NUAlsjeeeneerderev>ersiev\|anBashgebruikt,YkunjedeaanhalingstekensopQeneneHmeestalv>erv\|angenopdieplaatsenwaarje$()ziet. ̯Alsdecommando-substitutiedoQorescape-tek>ensisomsloten,(d.w.z.n$(commando)),gebruikdanbac>kslashesomBEIDEaanhalingstek>ensopQenenteescapen(d.w.z. n'commandon').3.4NietAfdrukbareTekensinPromptsV eelEv\|andewijzigingendiekunnenw>ordenaangebrachtinBash-promptswelkeindezeHO>WTO-worden-bQesproken,2makengebruikv\|anniet-afdrukbaretekens. &Hetwijzigenv\|andetHkleurv\|andeprompttekst,hetwijzingenvandetitelbalkvaneenXtermenhetv>erplaatsenv\|andecursorpQositiev>ereisenalleniet-afdrukbaretekens.ؼAlsjeeenzeereen>voudigepromptbQestaandeuiteengroter-dantek>eneneenspatiewilt:卑[giles@nikolaNgiles]$PS1='>' =>ؼDitisslec>htseenpromptbQestaandeuitt>weetekens.AlsikhetzoQdanigwijzigdathetgroter-dantek>enheldergeelis(kleurenwordenineeneigensectiebQeschreven):>NPS1='\033[1;33m>\033[0m' =>ؼDitq@w>erktprima,8totdatjeeenlangecommandoregelintikt.OokalbQestaatdepromptuitnogmaart>weeafdrukbaretekens(eengroter-dan-tekeneneenspatie),deshelldenktdatdezepromptuitelftek>ensbQestaat(Ikdenkdathet'n033',Fg'[1'en'[0'iederalsntekentelt).Jekun>tditzienalsjeeenechtlangecommandoregelintikt.uiJezultbQemerkendatdeshelldetekstopdev>olgenderegelplaatst,#{voQordathetderandv\|andeterminalbereikt.>Indemeeste gev\|allengaatditnietgoQed.pDitk>omt doordathetv>oordeshellonduidelijkishoelangdefeitelijk>elengtev\|andepromptis.ؼDusgebruikinplaatsdaarv\|an:>NPS1='\[\033[1;33m\]>\[\033[0m\]' _2 ~?G3.8BashProgrammerenenShell-Scripts11ՁVDit[isw>atcomplexer,qmaarhetwerkt. )Commandoregelswordenjuistafgebroken. )De 'n033[1;33m'}w>aarmeedekleurgeelwordtbQegonnen,wordtomslotendoQorteksthaken.$PDit,inclusief6deteksthak>enzelf,1iseenniet-afdrukbaarteken. A(Hetzelfdewordtgedaanmetde'n033[0m'w>aarmeeheteindev\|andekleurgeelwordtaangegeven.#J3.5Commando'sineenBestandAlseenbQestandmetcommando'sw>ordtaangeroepen(doorhetopdecommandoregelt>ypenv\|anAsourcelenameof.`3lename),\ w>ordenderegelscoQdeinhetbestanduitgev>oerdalsofzeopadecommandoregelw>erdeningetypt. 9DitisvoQoralnuttigbijcomplexeprompts,omdathetmogelijkiszeinbQestandenopteslaanendecommando'sinhetbestandaanteroependoorhetaanroQepenv\|anhetbestand.ؼInLv>oQorbeeldenzuljev\|aakaan>treendatikaanhetbeginv\|anbestandenmetfunctiesderegel#!/bin/bashhebtoQegev>oegd.DitisnietnoQodzakelijkalsjeeenbQestandmetcommando'saanroQept,netalsdathetnietnoodzak>elijkisalsjeeenchmoQd+xtoepastopeenbestandw>aaruitdecommando'swordengelezen.[.IkdoQeditomervoQortezorgendatVim(editorv\|anmijn}k>euze,hgeengescheldalsjeblieft,hjijgebruiktwatjijwilt)denktdatikeenshell-scriptaanhetwijzigenbQen,endaardoorkleurensyn>taxhighlightingaanzet.3.6Functies,Aliassen,endeOmgevingZoals)aleerdergezegd,֭w>ordendePS1,PS2,PS3,PS4,enPR>OMPT_COMMANDalleinde[Bash-omgevingopgeslagen. $V oQordegenenonderonsmeteenDOS-ac>htergrond,ois[heteenafsc>huwelijkideeomgrotehoQeveelhedencoQdeindeomgevingteplaatsen,omdatdieDOS-omgeving}kleinw>asennietpreciesopdejuistemaniertoQenam.Erzijnwaarschijnlijkpraktisc>heAgrenzenaanwatjeindeomgevingk\|anenzoumoQetenplaatsen,A9maarikkenzeniet.W e1hebbQenhethierw>aarschijnlijk1overenkelegroQotte-ordenmeerdanwatDOS-gebruikersgew>endzijn.ؼZoals Danhetdeed:v"Inmijnin>teractieve shellhebik62aliassenen25functies.YMijnstelregelisBdatalsikietsalleenv>oQorinteractiefgebruiknoQdighebenheteenvoudiginbashteschrijvenis,ik6ereenshell-functiev\|anmaak(indev>eronderstellingdatheteenvoudigalseenaliask\|anw>ordenuitgedrukt).$Alsmensenzichdrukmakenoverhetgeheugendanisdatbijgebruikv\|anSbashnietnoQdig.(BashisnvandegroQotsteprogramma'sdieikopmijnlin>uxbo>xdraai(buitenVOracle).eDraaitopzon>uendanendrukop'M'VomopgeheugentesorterenenziehoQedic>htbashbQovenaandelijststaat.Jandorie,9hetisgroterdansendmail!Zegh>unomashofietsdergelijksaantesc>haen."Ikgokeropdathijalleenv\|andeconsolegebruikmaaktetoQenhijhetdraaienvanXenX-appsprobQeerde.gIkNhebheelw>atliggendatgroterisdanBash.Maarhetideeishetzelfde:Ndeomgevingisietsomtegebruik>en,enmaakjegeenzorgenalshetteveelwordt.Ik_risk>eerafkeuringv\|anUnix-goQeroes_wanneerikditzeg(voQordemisdaadhetalteeenvoudigte^mak>en),maarfunctieszijninprincipQekleineshell-scriptsdieomecincy-redenenindeomgevingw>ordengeladen.͝Danweeraanhalend:\"Shellfunctieszijnongeveerzoecintalszekunnenzijn.HetisbijbQenaderingequiv\|alen>taanhetinlezenvaneenbQew>aardebash/bourneShell-scriptЌzonderdatbQestands-I/OLnodigЌis,iaangeziendefunctiezic>halinhetgeheugenbQevindt.;DeTishell-functiesw>ordentypischgeladenv\|anuit[.bashrcof.bash_prole]afhankelijkv\|an3ofjezealleenindeinitileshellwiltofoQokindesubshells.7Ditintegenstellingtothetuitv>oQerenSv\|aneenshell-script.JeshellsplitstzichafendechilddoQeteenexec.Eventueelw>ordt}hetpaddoQorzocht.ߗDe}kernelopQenthetbQestandenonderzoektv>oldoendeb>ytesomv\|ast ؠ_2 ~?G4.8ExterneCommando'sM;<12ՁVtecstellenhoQehetbestanduitgev>oerdmoetw>orden.;Inhetgev\|alvaneenshell-scriptmoQeter eenUshellw>ordengestartmetdenaamv\|anhetscriptalsargument.DeshellopQentvervolgenshetbQestand,$leeshetinenv>oertdeopdrac>htenuit.V ergelekenmeteenshell-functie,$k\|analhetŲanderedanhetuitv>oQerenv\|andeopdrac>htenŲwordenaangemerktalsonnoQdigeoverhead."ؼAliassenzijnsimpQelaantemak>en:卑aliasNd="ls--color=tty--classify" =aliasNv="d--format=long"aliasNrm="rm-i"ؼAlleargumen>tendiejeaandealiasdoQorgeeftwordenaandecommandoregelv\|anhetge-alias-te commandoDdoQorgegev>en(lsindeeerstetweegev\|allen).gMerkopdataliassenkunnenwordengenestIenzekunnenw>ordengebruiktomeengewoQonunix-commandozichopeenanderemanierCtelatengedragen.X(IkbQenhetmethetargumen>teensdatjedelaatstesoortaliassennietzoumoQetengebruik>en.AlsjeindegewoQonteverv\|alteroptevertrouwendat"rm*"jevraagt׻ofjew>elzekerbQent,dkunjebQelangrijkebQestandenopeensysteemkwijtrakendiegeengebruikmaaktv\|anjealias).F uncties%w>ordengebruiktvoQorcomplexereprogrammastructuren.HAlsalgemeneregelmoetjeeenaliasgebruik>envoQorallesdatinnregelk\|anwordengedaan.F unctiesverschillenv\|anshell-scriptsindiezindatzeindeomgevingw>ordengeladenzoQdatzesnellerwerken.Nogmaals,valsVwalgemeneregelzoujejefunctiesrelatiefkleinmoQetenhouden,eniedershell-script1datrelatiefgroQotw>ordtzoueenshell-scriptmoetenblijv>eninplaatsdatjehetomzetinѼeenfunctie.JebQeslissingomietsalseenfunctieteladenzalookafhangenv\|anhoev\|aakjehetǥgebruikt.Alsjeeenkleinshell-scriptnietv\|aakgebruikt,Ulaathetdanalseenshell-script.Alsjehetv\|aakgebruikt,zethetdanomineenfunctie.Omhetgedragv\|anlstewijzigen,zoujeietskunnendoQenalshetv>olgende:卑functionNlf ={+:lsN--color=tty--classify$*+:echoN"$(ls-l$*|wc-l)files"}ؼDitzoumakk>elijkalseenaliaskunnenwordeningesteld,wmaarterwillev\|anhetvoQorbeeldzullen w>e>ereenfunctiev\|anmaken.XAlsjedeteksttyptineentekstbQestandenjepasteensourcetoQesopdatbestand,zaldefunctieinjeomgevingstaanenonmiddellijkbesc>hikbaarzijnopde0commandoregelzonderdeo>verhead0v\|aneenshell-scriptzoalsv>oQorheenwerdaangegeven.Het(n>uthierv\|anwordtduidelijkeralsjeoverweegtmeerfunctionaliteitaandefunctiev\|anhierbQo>ventoetev>oegen,mzoalshetgebruikv\|aneenif-opdrac>htomspecialecodeuittev>oerenalserlinksindelistingw>ordengevonden.)=4ExterneG\Commando'sX4.1PROMPT_COMMANDBashv>oQorzietineenandereomgevingsv\|ariabelegenaamdPR>OMPT_COMMAND.Deinhoudv\|anJdezevariabQelew>ordtuitgevoQerdalseenregulierBash-commandonetvoQordatBasheenprompttoQon>t. _2 ~?G4.8ExterneCommando'sM;<13ՁV[21:55:01][giles@nikola:~]NPS1="[\u@\h:\w]\$" =[giles@nikola:~]NPROMPT_COMMAND="date+%H%M"2155[giles@nikola:~]Ndbin+mail2156[giles@nikola:~]W at8hierbQo>vengebQeurdeisdatikPS1zowijzigdedatdeescapesequencenternietlangerin w>asXopgenomen,dusdetijdmaaktenietlangeronderdeeluitv\|andeprompt.5T oQengebruikteikdate?+%H%MXomdetijdineenbQeterformaattetonen.KpMaarhetv>erschijntopeenandereregeljJdandeprompt.۷Ditinordebrengendmetecho?-n...zoalsjJhierondergetoQondw>erktmet 6Bash2.0+,=maarsc>hijnt 6nietmetBash1.14.7tew>erken.yBlijkbaar 6wordtdepromptopeenanderemaniergetek>end. DevolgendemethoQderesulteertineenoverlappQendetekst.a2156 =[giles@nikola:~]NPROMPT_COMMAND="echo-n[$(date+%H%M)]"[2156][giles@nikola:~]$[2156][giles@nikola:~]$Ndbin+mail[2157][giles@nikola:~]$NunsetPROMPT_COMMAND[giles@nikola:~]echo?-n...hbQeheertHdeuitv>oerv\|anhetdatecommandoenonderdruktdeop>volgendeHnewline, w>aardoQordepromptgeheelopnregelk\|anverschijnen.%Aanheteindemaakteikgebruikv\|anhetunsetcommandoomdeomgevingsvariabQelePR>OMPT_COMMAND teverwijderen.#4.2ExterneCommando'sindePromptJefkun>ttevensdirectdeuitvoQerv\|anreguliereLinux-commando'sindepromptgebruiken.Uiteraard/wiljenietaltev>eelmateriaalinvoQegen,FLanderszalheteengrotepromptcreren.Jeszulteensnelcommandowillenomdathetiederek>eerdatjepromptophetschermverschijntzal/w>ordenuitgevoQerd.Onderbrekingenindeweergavev\|anjepromptterwijljeaanhetwerkenbQen>t)k\|anzeerergerlijkzijn.(IntegenstellingtothetvorigevoQorbeeld)waarditveeloplijkt,w>erktditwelmetBash1.14.7).a[21:58:33][giles@nikola:~]$NPS1="[\$(date+%H%M)][\u@\h:\w]\$" =[2159][giles@nikola:~]$Nlsbin+mail[2200][giles@nikola:~]$LetgoQedopdebac>kslashvoQorhetdollar-tekenv\|andecommandosubstitutie.Zonderdie bac>kslash1_wordthetexternecommandoexactnmaaluitgevoQerd,qalsdePS1-stringindeomgevingNw>ordtgelezen.%V oQordezepromptzoudatbetek>enendathetongeachthoQelangdepromptDlingebruikw>as,Adezelfdetijdzoutonen. jDebackslashschermtdeinhoudv\|an$()af\v\|anonmiddellijk>eshell-interpretatie,}dus"date"wordtiederekeerdateenpromptwordtgegenereerd,aangeroQepen.ؼLin>ux\Dwordtmetveelkleineutility'sgeleverd,~zoalsdate,grep,ofw>cwaarmeejedatakuntmanipuleren.nAlsjemerktdatjeprobQeertcomplexecom>binatiesv\|andezeprogramma'sbin-nenineenpromptaantemak>en,uk\|anheteenvoudigerzijnomereeneigenalias,ufunctieofshell-scriptŀv\|antemak>enenhetvan>uitdepromptaanteroQepen.Escapeŀsequenceszijnvaak_2 ~?G4.8ExterneCommando'sM;<14ՁVv>ereistinbashshell-scriptsomerzekerv\|antezijndatshell-variabQelenopdejuistetijdw>or- denW=uitgew>erkt(zoalstezieninhetdate-commandohierbQoven):2ditkomtopeenanderniveaubinnen+depromptPS1-regelnaarbQo>ven,ppen+hetv>oorkomen+erv\|andoorhetaanmak>env\|anfunctiesiseengoQedidee.ؼEen\!v>oQorbeeldv\|aneenkleinshell-scriptdatbinneneenpromptw>ordtgebruikt,tRwordthieron-dergegev>en:ffGՍ#!/bin/bash#>\lsbytesum?-geefhettotaalaantalbytesineendirectorylistingTotalBytes=0for?Bytesin$(ls-l|grep"^-"|cut-c30-41)dolet?TotalBytes=$TotalBytes+$BytesdoneTotalMeg=$(echo?-e"scale=3\n$TotalBytes/1048576\nquit"|bc)echo?-n"$TotalMeg" ^ffG*Ik%hebdittijdenzo>wel%alseenfunctiealsineenshell-scriptinmijn/bindirectorybQew>aard,diezic>hinmijnpathbQevindt. Gebruiktineenprompt:t[2158][giles@nikola:~]$NPS1="[\u@\h:\w(\$(lsbytesum)Mb)]\$" =[giles@nikola:~N(0Mb)]$cd/bin[giles@nikola:/binN(4.498Mb)]$#Xc4.3WatinjePrompttePlaatsenJezultziendatikmijngebruik>ersnaam, computernaam,detijdenhuidigedirectorynaamin mijnkmeestepromptsgebruik.Metuitzonderingv\|andetijd,'zijnditzeerstandaard-itemsdiein6eenprompttevindenzijn,Oentijdisw>aarschijnlijk6deeerstv>olgendealgemeneaanvulling.Maar|w>atjeopneemtisgeheeleenkwestiev\|ansmaak.HierzijnwatvoQorbeelden|v\|anmensendieikk>enomjeopideentebrengen.Dan'spromptisminimaal,maarzeereectief,v>oQoralvoQordemanierwaarophijwerkt.t[giles@nikola:~]$Ncur_tty=$(tty|sed-e"s/.*tty\(.*\)/\1/") =[giles@nikola:~]$Necho$cur_ttyp4[giles@nikola:~]$NPS1="\!,$cur_tty,\$?\$"1095,p4,0$Dan'@houdternietv\|analsdeh>uidigewerkdirectorydepromptdrastischv\|angroQottedoet v>eranderen,alsPjejedoQordedirectorystructuurverplaatst,dusonthoudthijdit(oftypt"p>wd").elenv\|anonsbQetreurdendatBashditnietdeed).8Dusheteersteitemindepromptishethistorie-n>ummer."HettweedeitembQestaatuitdeveelbQetekenendetekensv\|ano7dett>y(deuitvoQerv\|an"ttysermetseduitgeknipt),eenitemdathandigk\|anzijnvoQor"screen"gebruik>ers. zHetIderdeitemisdeexitwaardev\|anhetlaatstecommando/pipQeline(merk opdatdezew>eergave nutteloQosisdoorenigcommandouitgev>oerdbinnendeprompt.Jepzouditec>hterpopkunnenlossendoQorhetineenv\|ariabeleaftev\|angenenhetterugtespQelen).Alslaatsteishet"n$endollar-tek>envoQoreenregulieregebruikerenverandertineenhekje("#")alsdegebruik>erroQotis._2 ~?G5.8XtermTitelbalkManipulaties"15ՁVT orbQen?Fjerdingstad(tfj@fjerdingstad.dk)sc>hreefmeommetevertellendathijzijnjobsv\|aak uitsteltAenzedanv\|aakv>ergeet.AHijgebruiktzijnpromptomzichzelfaanuitgesteldetaken(suspQendedjobs)teherinneren:卑[giles@nikola:~]$Nfunctionjobcount{ =>Njobs|wc-l|awk'{print$1}'>N}[giles@nikola:~]$NexportPS1='\W[`jobcount`]#'giles[0]#Nmanls&[1]N4150[1]+ rStoppedN(ttyoutput)8manlsgiles[1]#ؼT orbQengebruikta>wkomdeblanco'suitdeuitvoQerv\|anwctehalen,terwijlikgebruikzou hebbQengemaaktv\|ansedoftr,Inietomdatdiebeterzijn,Imaaromdatikdaarmeerbek>endmee bQen.Erzijnw>aarschijnlijk ooknoganderemanieren.T orbenplaatstooknogenk>eleaanhalingstek>ensomzijnPS1-string,.]watvoQorkomtdatBashdeaanhalingstekensopQenen(`)onmiddellijkin>terpreteert. DushoQefthijzeniet,zoalsiknoemde,teescapen.ؼNOOT:EriseenbQek>endebuginBash2.02dieervoQorzorgtdateenjobscommando(eenin>ternγshell-commando)naareenpipQenietsretourneert.Alsjehetbo>venstaandeγonderBash2.02_probQeert,zuljealtijdeen"0"terugkrijgen,ongeac>ht_hoQeveeljobsjehebtuitgesteld. Ditprobleemisin2.03hersteld.)=5XtermG\TitelbalkManipulatiesNiet-afdrukbareÿescapQesequenceskunnenw>ordengebruiktominteressanteeecteninpromptsteproQduceren. uOmdezeescapesequencestegebruik>enmoetjezeomsluitendoorn[enn](zoalsbQesprok>enin3.4(NietAfdrukbareT ekensinPrompts)),AwaarbijjeBashverteltditmateriaal.tenegerenalshetdegroQottev\|andepromptaanhetberek>enenis. 'Alsjedezesc>heidingstekensEnietinsluit, resulteertdatincoQdew>aarbijdecursoronjuistwordtgeplaatst,omdatiVhetdew>erkelijkeiVgroQottev\|andepromptnietk>ent. EscapeiVsequencesmoetenookw>ordenvoQorafgegaandoorn033[inBashv\|anv>oorv>ersie2,ofdoorn033[ofne[inlaterev>ersies.Als;jeprobQeertdetitelbalkv\|anjeXtermmetjeprompttewijzigenonderdeconsole,0zuljerommelinjepromptproQduceren.iT estdeTERMvomgevingsv\|ariabeleomaantelatengev>enofjepromptineenXtermis,omdittev>oQorkomen.XffGFfunction?proml{case?$TERMinxterm*))`local?TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`local?TITLEBAR='')`;;esacΠ_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&16ՁVPS1="${TITLEBAR}\ [\$(date?+%H%M)]\[\u@\h:\w]\\$?"PS2='>?'PS4='+?'} ,dffG=Dit/*iseenfunctiediein/.bashrck\|anw>ordenopgenomen.*WDefunctienaamzoudanmoQetenw>orden]aangeroQepenomdefunctieuittev>oeren.fDefunctiew>ordtnetalsdePS1-stringindeomgevingopgeslagen.ZoQdradePS1-stringdoordefunctieisingesteld,zkunjedefunctieuitde$omgevingv>erwijderenmetunset?proml. 6Aangeziendepromptnietverplaatstk\|anwordenv\|an>uitdeconsolenaareenXterm,wordtdeTERM-v\|ariabQelenietiederekeergetestalsdepromptw>ordtgegenereerd. Ikgebruiktevervolgmarkeringen(backslashes)indedenitiev\|andeM)prompt,hYw>aardoQorhetmogelijkwordthetopmeerdereregelstecontinueren.DitverbQetertde01leesbaarheid,Q,w>aardoQorheteenvoudigeriswijzigingenaantemakenenfoutenoptespQoren.ؼIk denieerditalseenfunctieomdathetBashpromptpac>k\|agezometpromptsomgaat(8(HetBash\PromptP>ack\|age)\wordtlaterinditdoQcumentbQesproken).Hetisnietdeenigemanierom't`tedoQen,x*maarhetw>erktgoed.hNaarmatededoorjou>wgebruiktepromptssteedscomplexerw>orden,wordtXhetsteedslastigerzeac>hterXdepromptintet>ypQenenzalhetpraktischerzijnzerxinnofandertekstbQestandaantemak>en.@Bewaarrxinditgev\|alhethierbo>vengenoemderxalseentekstbQestandgenaamd"promlmditac>hterdeprompttetesten.Jekun>teralsvolgtmeewerken:[giles@nikola:/binN(4.498Mb)]$cd/= ->Ganaarwaarjedepromptop =TwiltNslaan[giles@nikola:~N(0Mb)]$viproml3Z->Wijzighetpromptbestand...~->NVoerdegegeventekstvanThierbovenNin[giles@nikola:~N(0Mb)]$sourceproml!"->Leesdepromptfunctiein[giles@nikola:~N(0Mb)]$promlB"D->VoerdepromptfunctieuitrDeUeerstestapinhetaanmak>env\|andezepromptishettestenofdetestartenshelleenxtermis ofniet. Alsditnietzois,lw>ordtdeshell-v\|ariabQele($fTITLEBARg)gedenieerd.HetbQestaatuitdejuisteescapQesequencesennu@nh:nw, w>aarmeede@:indeXtermtitelbalkw>ordengeplaatst.9DitisvoQoralnuttigmetgeminimaliseerdeXterms,omdatzedaardoQorsnelleriden>ticeerbaarzijn.HetanderemateriaalindezepromptzoubQek>endmoetenzijnv\|andev>origepromptsdiewehebbQenaangemaakt.De7enigek>eerzijdeaanhetmanipulerenv\|andetitelbalkvaneenXtermzoalsdeze,1k>omt7voQorw>anneer)8jeopeensysteeminlogtwaaropjedetitelbalkhackniethebtingesteld.DeXtermzaldeinformatiecon>tinulatenzienv\|anhetv>origesysteemdatdetitelbalkhackhad.) ύ6ANSIG\EscappeSequences: KleurenenCursorvcerplaatsingX6.1KleurenZoals!hierbQo>venaangegevenmoQetenniet-afdrukbaretekenswordenomslotendoQorn[n033[enn].rvV oQorkleurenescapesequences,9zoudenzeookgev>olgdmoetenw>ordendooreenkleineletterm. B_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&17ՁVAls;jedev>olgendepromptsineenxtermuitprobQeertenbemerktdatjegeenkleurenbe- noQemd.xziet,con>troleerdanhetbestand/.Xdefaults(enmogelijkzijnbroeders)opregelsals1b"XT erm*Foreground:ԵBlanc>hedAlmond".0Maakereencommentaarregelv\|andoQorereenuitroQeptek>en("!")voQorteplaatsen. 9Natuurlijkzalditookafhangenv\|anw>elketerminal-em>ulator"6jegebruikmaakt.yDitisdemeestwaarschijnlijkeplaatswaardevoQorgrondkleurenv\|anjetermzoudenkunnenzijno>verschreven.ؼOmblau>wetekstindepromptoptenemen:卑PS1="\[\033[34m\][\$(dateN+%H%M)][\u@\h:\w]$"ؼHet;probleemmetdezepromptisdatdeblau>we;kleurdiemetkleurcoQde34begin>tnooitnaarderegulierekleurw>ordtteruggezet,Ldusalletekstdiejeachterdepromptintiktstaatnogsteedsindekleurv\|andeprompt.vDitisoQokeendonk>erevormblauwdushetzoukunnenhelpQenhettecom>binerenmetdecodebold:PS1="\[\033[1;34m\][\$(dateN+%H%M)][\u@\h:\w]$\[\033[0m\]"ؼDe]promptstaatn>uinlichtblauwenheteindigtdoQorhetterugschakelenv\|andekleurnaarniets(w>elkevoQorgrondkleurjevoQorheenookhad).ؼDitisderestv\|andekleur-equivalen>ten:Zwart!"0;30Donkergrijs r1;30 =Blauw!"0;34Lichtblauw+1;34Groen!"0;32Lichtgroen+1;32Cyaan!"0;36Lichtcyaan+1;36Rood%p0;31Lichtrood81;31VioletW0;35Lichtviolet r1;35Bruin!"0;33Geel*1;33Lichtgrijs r0;37Wit/= 1;37ؼDanielDui(ddui@iee.org)wijsteropdatomstriktaccuraattezijn.QW emoQetenaangev>en datdelijsthierbQo>venvoorkleurenonderdeconsoleis.։Ineenxterm,isdecode1;31niet"Lic>htroQod,"maar"BenadruktRoQod."Ditgeldtv>oQorallekleuren.ؼJegkun>toQokachtergrondkleurenverkrijgendoQor44tegebruikenvoQordeBlauweachter-grond,}41v>oQoreenRodeac>htergrond,}enz. =Erzijngeenbenadrukteac>htergrondkleuren.Erkunnencom>binatieswordengebruikt,)zoalsLichtroQdetekstopeenBlauweachtergrond:n[n033[44;1;31mn],kalhoQew>elHhetapartinstellenv\|andekleurenbetersc>hijntHtew>erkenH(bv.n[n033[44mn]n[n033[1;31mn]).4GAnderebQesc>hikbarecodeszijn4:Underscore,}5:Blink,7:In-v>erse,en8: Concealed.T erG zijde:Veelmensen(inclusiefmezelf )hebbQenzeerv>eelbezw>aartegenhet"blink"kenmerk.Gelukkigw>erkthetnietinalleterminalemulatorszoverikweet,BImaarhetwerktnogsteedsopde,console.[EnmoQc>ht,jehetjeafvragen(zoalsikdeed)"W aarv>ooreen'Concealed'k>enmerkteTgebruik>en?!-IkzagdathetineenvoQorbeeldTshell-script(geenprompt)werdgebruiktomiemandtoQetestaaneenw>achtwoordintet>ypenzonderdathetnaarhetsc>hermwerdteruggek\|aatst.Gebaseerdopeenpromptgenaamdlite2nhetBashpromptpac>k\|age(watikhebgewijzigdomhetbQetertelatenw>erkenopeenstandaardconsole,inplaatsv\|anmetdespecialev>ereistexterm-fon>tsSomdeoriginelegoQedtekunnenzien),Ϯisditeenpromptdieikveelhebgebruikt:>ffGl_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&18ՁV function?elite{local?GRAY="\[\033[1;30m\]"local?LIGHT_GRAY="\[\033[0;37m\]"local?CYAN="\[\033[0;36m\]"local?LIGHT_CYAN="\[\033[1;36m\]"case?$TERMinxterm*))`local?TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`local?TITLEBAR="")`;;esaclocal?GRAD1=$(tty|cut-d/-f3)PS1="$TITLEBAR\$GRAY-$CYAN-$LIGHT_CYAN(\$CYAN\u$GRAY@$CYAN\h\$LIGHT_CYAN)$CYAN-$LIGHT_CYAN(\$CYAN\#$GRAY/$CYAN$GRAD1\$LIGHT_CYAN)$CYAN-$LIGHT_CYAN(\$CYAN\$(date?+%H%M)$GRAY/$CYAN\$(date+%d-%b-%y)\$LIGHT_CYAN)$CYAN-$GRAY-\$LIGHT_GRAY\n\$GRAY-$CYAN-$LIGHT_CYAN(\$CYAN\$$GRAY:$CYAN\w\$LIGHT_CYAN)$CYAN-$GRAY-$LIGHT_GRAY?"PS2="$LIGHT_CYAN-$CYAN-$GRAY-$LIGHT_GRAY?"} ;ffGVV oQordeleesbaarheiddenieerikdekleurenalstijdelijk>eshell-v\|ariabelen.]Hetismakk>elijkerom:3ermeetew>erken. KpDe:3"GRAD1"v\|ariabQeleiseencon>troleomvasttestellenopw>elketerminaljejebQevindt.iZoalsdetestomv\|asttestellenofjeineenXtermaanhetw>erkenbQen>t,khoefthetslechtsnmaaltewordengedaan.Depromptzieterongeveerzouit,kbQehalvedaninkleur:卑--(giles@nikola)-(75/ttyp7)-(1908/12-Oct-98)-- =--($:~/tmp)--ؼOmlmezelferaantehelpQenherinnerenw>elkelkleurenbesc>hikbaarzijn,schreefikhetvolgendescriptdieallekleurennaarhetsc>hermechoQot:XffG#!/bin/bash##Dit?bestandechootveelkleurcodesnaardeterminalomtedemonstreren#wat?beschikbaaris.Iedereregelbestaatuitnkleurmet(K_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&19ՁV#als?achtergrondzwartengrijs,metdecodeinhetmidden.Geverifieerd #dat?hetmeteenwitte,zwarteengrijzeachtergrondwerkt(2Dec98).#echo?" XOpLichtgrijs::)`OpZwart:"echo?-e"\033[47m\033[1;37m XWit)`\033[0m\?1;37m\\033[40m\033[1;37m XWit)`\033[0m"echo?-e"\033[47m\033[37m XLichtgrijs\033[0m\37m?\\033[40m\033[37m XLichtgrijs\033[0m"echo?-e"\033[47m\033[1;30m XGrijs/= \033[0m\?1;30m\\033[40m\033[1;30m XGrijs/= \033[0m"echo?-e"\033[47m\033[30m XZwart)`\033[0m\30m?\\033[40m\033[30m XZwart)`\033[0m"echo?-e"\033[47m\033[31m XRood4|\033[0m\31m?\\033[40m\033[31m XRood4|\033[0m"echo?-e"\033[47m\033[1;31m XLichtrood\033[0m\?1;31m\\033[40m\033[1;31m XLichtrood\033[0m"echo?-e"\033[47m\033[32m XGroen)`\033[0m\32m?\\033[40m\033[32m XGroen)`\033[0m"echo?-e"\033[47m\033[1;32m XLichtgroen\033[0m\?1;32m\\033[40m\033[1;32m XLichtgroen\033[0m"echo?-e"\033[47m\033[33m XBruin)`\033[0m\33m?\\033[40m\033[33m XBruin)`\033[0m"echo?-e"\033[47m\033[1;33m XGeel$\033[0m\?1;33m\\033[40m\033[1;33m XGeel$\033[0m"echo?-e"\033[47m\033[34m XBlauw/= \033[0m\34m?\\033[40m\033[34m XBlauw/= \033[0m"echo?-e"\033[47m\033[1;34m XLichtblauw\033[0m\?1;34m\\033[40m\033[1;34m XLichtblauw\033[0m"echo?-e"\033[47m\033[35m XViolet$\033[0m\35m?\\033[40m\033[35m XViolet$\033[0m"echo?-e"\033[47m\033[1;35m XRose/= \033[0m\?1;35m\\033[40m\033[1;35m XRose/= \033[0m"echo?-e"\033[47m\033[36m XCyaan/= \033[0m\36m?\\033[40m\033[36m XCyaan/= \033[0m"echo?-e"\033[47m\033[1;36m XLichtcyaan\033[0m\/_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&20ՁV?1;36m\ \033[40m\033[1;36m XLichtcyaan\033[0m" &ffG㌍6.2CursorverplaatsingMetANSI[escapQesequenceskunjedecursornaarw>ensophetschermverplaatsen.՜Ditisn>uttigerhWvoQorgebruikersinterfacesmetvolledigscherm,'gegenereerddoQorshell-scripts,maark\|anoQokinpromptsw>ordengebruikt. DeverplaatsingsescapQesequenceszijnalsvolgt:卑-NPositioneerdecursor: ="r\033[;H0Of"r\033[;f"rplaatsNdecursoropregelLenkolomC.-NVerplaatsdecursorNregel(s)omhoog:"r\033[A-NVerplaatsdecursorNregel(s)naarbeneden:"r\033[B-NVerplaatsdecursorNkolom(men)vooruit:"r\033[C-NVerplaatsdecursorNkolom(men)terug:"r\033[D-NMaakhetschermschoonenganaar(0,0):"r\033[2J-NVerwijdertotheteindevanderegel:"r\033[K-NBewaardecursorpositie:"r\033[s-NHersteldecursorpositie:"r\033[uؼDeylaatstet>weeycoQdesw>ordenNIETdoorv>eelterminal-emulatorsinachtgenomen. CDeenige die߀ikk>enzijnxtermennxterm,zelfsalisdemeerderheidv\|anterminal-emulatorsgebaseerdopfxterm-coQde. Zo>verikweet,A9ondersteunentell,rxvt,kvt,xiterm,enEtermzeniet. Zew>ordenopdeconsoleondersteund.ؼProbQeeradev>olgenderegelcodeac>hteradepromptteplaatsen(hetw>ordtwatduidelijkeralsdeopromptv>erscheideneoregelslagerligtdandebQo>venk\|antovandeterminal,alsjeditopgeeft):echo?-en"n033[7An033[1;35mBASHn033[7Bn033[6D"Hiermeezoudecursorzev>enregelsnaarbQovenmoQetengaan,/%hetwoQord"BASHfmoetendrukk>enVendanterugkerennaarwaarhetbQegonomeennormalepromptteproduceren.^Ditis/jgeenprompt,Phetisgew>oQoneendemonstratiev\|andecursorbew>egingophetscherm,Pwaarbijkleurw>ordtgebruiktomtebQenadrukkenwatergebQeurde.SladitineenbQestandopmetdenaam"cloc>k":XffG#!/bin/bashfunction?prompt_command{let?prompt_x=$COLUMNS-57ڠ_2 ~?G6.8ANSIEscapQeSequences: KleurenenCursorv>erplaatsing&21ՁV} PROMPT_COMMAND=prompt_commandfunction?clock{local$BLUE="\[\033[0;34m\]"local)`RED="\[\033[0;31m\]"local XLIGHT_RED="\[\033[1;31m\]"local~WHITE="\[\033[1;37m\]"local XNO_COLOUR="\[\033[0m\]"case?$TERMinxterm*))`TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`TITLEBAR="")`;;esacPS1="${TITLEBAR}\\[\033[s\033[1;\$(echo?-n\${prompt_x})H\]\$BLUE[$LIGHT_RED\$(date?+%H%M)$BLUE]\[\033[u\033[1A\]$BLUE[$LIGHT_RED\u@\h:\w$BLUE]\$WHITE\$$NO_COLOUR?"PS2='>?'PS4='+?'} ;ffGVDezeipromptistamelijkk\|aal,IbQehalv>edatheteen24-uursklokinderechterbQovenhoekiv\|andeterminalIbijhoudt(zelfsalsdegroQottev\|andeterminalw>ordtgewijzigd).DitzalNIETIawerkenop,determinal-em>ulatorsdieiknoQemdediehetopslaanenherstellenv\|andecursorpositie-coQdesnietaccepteren.ɉAlsjedezepromptinnv\|andezeterminal-em>ulatorsuitprobeert,zalsdeklokjuistv>erschijnen,maarsdepromptzalopdet>weedesregelv\|andeterminalw>ordenonderbrok>en.ؼZie{oQok12.7(DeElegan>tUselessCloc>kPrompt)voQoreenwatuitgebreidergebruikv\|andezecoQdes.#J6.3Verplaatsenv@ andeCursormettputZoalsܛmetzo>veelܛdingenonderUnix,Nzijnerv>elemanierenomhetzelfdetebQereiken.LEenutilitygenaamd"tput"k\|anoQokw>ordengebruiktomdecursorophetschermtemanoQeuvreren,ofinformatieQterugtekrijgeno>verQdestatusv\|andeterminal. "tputsv>oQorhetpositionerenv\|anNdecursorminderexibQeldanANSINescapesequences.Jek\|andecursoralleennaareenabsolute?KpQositiev>erplaatsen.ZJekunthetnietnaareenpQositieverplaatsendierelatiefistenopHzic>htev\|andehuidigepQositie.Ikmaakgeengebruikv\|an"tput", dusikgahetjehiernietindetailuitleggen. T>yp"mantputndanzuljenetzoveelwetenalsik.A_2 ~?G7.8SpQecialeT ek>ens: OctaleEscapeSequencesb˹22ՁV7SppecialeG\T(ekcens: OctaleEscapeSequencesBuiten7@detek>ensdiejeopjetoQetsenbord7@inkunttikken,Ozijnernogheelwatanderetekens die[jeopjesc>hermafk\|andrukken.Ikhebeenscriptgemaaktwaarmeehetmogelijkisdatje&kun>tcontrolerenwathetfontdatjegebruikt,bQeschikbaarvoQorjeheeft.HetbelangrijkstecommandodatjenoQdighebtomdezetek>ensaantepassenischo-e".De-e"switchverteltechodeƒin>terpretatiev\|antekensvoQorafgegaandooreenescape-tek>en,debackslash,teactiveren.W atjetezienkrijgtw>anneerjenaaroQctaal200-400kijktzalheelanderszijnmeteenVGA-fontdan Ow>atjetezienkrijgtmeteenstandaardLinux-font.؈W eesgewaarschuwddateenaantalv\|andezeescapQesequencesvreemdeeectenhebbenopjeterminal,enikhebhetnietgeprobeerdomdatgenetev>oQorkomenwatzedanoQokplegentedoen.Detek>ensvoQorhettrekkenv\|anlijnen~entek>enenv\|anblokken(waarvelenv\|anonsbQekendmeewerdendoQorW ordPerfect)diev>eeldoQorhetBashpromptprojectwordengebruikt,bQevindenzichtussenoQctaal260en337.XffG#!/bin/bash#Script:?escgenfunction?usage{echo?-e"\033[1;34mescgen\033[0m[]"echo?"Octalescapesequencegenerator:drukalleoctaleescapesequencesaf"echo?"tussendelagerewaardeendehogerewaarde.Alsergeentweede)`"?waarde Xwordtopgegeven,drukdanachttekensaf."echo?"1998-GilesOrr,geengarantie."exit?1}if?["$#"-eq"0"]thenecho?-e"\033[1;31mGeefalsjebliefteenoftweewaardenop.\033[0m"usagefilet?lower_val=${1}if?["$#"-eq"1"]then#Als?ergeenafsluitendewaardewordtopgegeven,geefzedan8tekens.upper_val=$(echo?-e"obase=8\nibase=8\n$lower_val+10\nquit"|bc)elselet?upper_val=${2}fiif?["$#"-gt"2"]thenecho?-e"\033[1;31mGeefalsjebliefttweewaardenop.\033[0m"echousagefiif?["${lower_val}"-gt"${upper_val}"]thenecho?-e"\033[1;31m${lower_val}isgroterdan${upper_val}."echoJ͠_2 ~?G8.8HetBashPromptP>ack\|age4523ՁVusage fiif?["${upper_val}"-gt"777"]thenecho?-e"\033[1;31mWaardenkunnende777nietoverschrijden.\033[0m"echousagefilet?i=$lower_vallet?line_count=1let?limit=$upper_valwhile?["$i"-lt"$limit"]dooctal_escape="\\$i"echo?-en"$i:'$octal_escape'"if?["$line_count"-gt"7"]then~echo~#Voeg?eenhardereturnin.~let?line_count=0filet?i=$(echo-e"obase=8\nibase=8\n$i+1\nquit"|bc)let?line_count=$line_count+1doneecho ffffGVJe)kun>toQokxfdgebruikenomalletekensv\|aneenX-fonttetonen,/.methetcommando,"xfd-fn2tname>".Hetklikkenopeengegeventekenzaljeheelveelinformatie,`waaronderdeoQctale w>aarde,overdattekengeven.Hetgegevenscriptv\|anhierbQovenzalnuttigzijnvoQoropdeconsoleenalsjenietzek>erbQentv\|andenaamvanheth>uidigefont.)=8HetG\BashPromptPcackageX8.1BeschikbaarheidHetaBashPromptpac>k\|ageisbQeschikbaarophttp://biHash.current.nu,2enaishetwerkv\|anver-sc>heidenemensen,gecoQ€rdineerddoorRobCurren>t(alaBadLandZ).Hetpack\|ageiseenvroQegebQeta,nmaarz)biedteeneen>voudigez)manieromgebruiktemak>env\|anmeerdereprompts(ofthemes),b/w>atEhetmogelijkmaaktdatjepromptsvoQorlogin-shells,b/envoQorsubshellsinkuntstellend(d.w.z. ʵhetplaatsenv\|anPS1-stringsin/.bash_proleen/.bashrc).Demeestethemesmak>engebruikv\|andeuitgebreideVGA-characterset,duszezienerslechtuitten-zij,zemetV>GA-fonts,wordengebruikt(welkeopdemeestesystemennietalsstandaardzijningesteld).#J8.2XtermFontsOmK>eenaan>talv\|andemeestattractievepromptsinhetBashPromptpack\|agetegebruiken,moQet;jefon>tsophaleneninstallerendiedecharactersetsondersteunenwelkedoQordepromptsU _2 ~?G8.8HetBashPromptP>ack\|age4524ՁVw>orden[)verwacht. SDitzijn"VGAZF onts",welkeverschillendecharactersetsondersteunen andersdanreguliereXterm-fon>ts.bStandaardXtermfontsondersteuneneenuitgebreidalfabQet,inclusief heelw>atlettersmetaccenten.rInVGAfontswordtditmateriaalverv\|angendoQorgrasc>he-tekens-blokken,D"punten,lijnen.&Ik-vroQegomeenuitlego>ver-ditv>erschil-enSrgioV aleeP>ace(space@gold.com.br)schreefme:ؼIkbQendolopcomputer-historiedushierk>omthet:T oQenqIBMqXdeeerstePCon>twierpqhaddenzeeenaan>taltegebruikencharactercoQdesnodig, duszekregendeASCIQI-c>haractertabel(128n>ummers,pletters,enwatleestekens)enomeenb>yte geadresseerdetabQeltevullen,3voQegdezenog128tekenstoQe.SindsdePC werdontworpQenalshome-computer,vuldenzederesterende128tek>ensmetpunten,lijnen,blokken,enz.?omk\|adersengrijstin>teectentekunnenproQduceren(denkeraandatwehethierhebbQenover2kleurengraphics).ؼTijdgaatv>oQorbij. PC'swordeneenstandaard, IBMmaaktkrachtigersystemenendeVGA-standaardw>ordtgebQoren,$6samenmet256kleurengraphics,enIBMgaatv>erderomhunIBM-ASCIQIc>haractertabeloptenemen.Meer\tijdgaatv>oQorbij.IBMKheeftzijnleiderschapindePC-marktverlorenendeOS-auteurson>tdekken' dateranderetalenindew>ereldzijndiegebruikmakenv\|anniet-engelsetekens,Idusv>oQegenXzeinternationaleondersteuningtoQeaanhunsystemen.Aangezienwenuintelligentekleurensc>hermenhebbQen,?Mkunnenwedepunten,?Mlijnen,enzweggoQoienendieruimtegebruikenv>oQorgeaccentueerdetekenseneenaantalGriekseletters,diejeinLinuxzultzien.#J8.3Wijzigenv@ anhetXtermFontb_dftopcfHetv>erkrijgeneninstallerenv\|andezefontsiseenwatingewikkeldproQces.Haalalseerstedefon>tsÓop.IV erzekerjezelfervervolgensv\|andathet.pQcfof.pcf.gzbestandenzijn.IAlshet.bdfbQestanden3zijnonderzoekdanhet"bdftopcf"commando(d.w.z.leesdemanpage).Plaatsde.pQcfvof.pcf.gzbestandeninde/usr/X11R6/lib/X11/fon>ts/miscdir(ditisdejuistedirectoryv>oQor\RedHat5.1enSlackware3.4.Hetk\|anvoQoranderedistributiesanderszijn)."cd"naardie9directoryenstarthet"mkfon>tdir"commandoop.\Startdan"xsetfprehashp.Somsisheteen goQedideehetfon>ts.aliasbestandindezelfdedirectoryteopenenenk>orterealiasnamenv>oQordefontsaantemaken.Omdenieu>wefontstegebruiken,UstartjehetXterm-programmanaarkeuzemethetjuistecom-mandolv>oQorjeXterm.8Ditk\|anindemanpagewordengevondenofmetde--help"parameteropdecommandoregel. P>opulairetermszoudenalsvolgtkunnenwordengebruikt:卑xtermN-fontؼOF卑xtermN-fn-fb =EtermN-FrxvtN-fnؼV>GAfonts1zijnbQesc>hikbaarv\|anafStumpy's'ANSIbFonts5pagebij http://home.eiHarthlink.net/us5zahns/enl/ansifont.html!!(w>aarv\|anikveelhebgebruikgemaakttijdensditsc>hrijven).^4_2 ~?G9.8Ladenv\|aneenAnderePrompt#޹25ՁV9LadenG\vaneenAnderePromptX9.1Ladenv@ aneenAnderePrompt,LaterIndezeHO>WTOuisaangegevenhoQePS1-omgevingsv\|ariabelenkunnenw>ordenaangemaakt,rof hoQeDdiePS1-enPS2-stringsinfunctieskunnenw>ordenopgenomen,`welkedoQor/.bashrcofalseenthemedoQorhetbashpromptpac>k\|agekunnenwordenaangeroQepen.ؼMetdThetbashpromptpac>k\|age,#kunjebashprompt?-iintikkenomeenlijstmetbQeschikbarethemestezientekrijgen.V oQorhetinstellenv\|andepromptintoek>omstigelogin-shells(ineersteinstan>tiedeconsole,maaroQoktelnetenXterms,afhank>elijkv\|anhoQejeXtermszijnin-gesteld),wtik`djeinbashprompt?-lthemename.:Bashprompt`dwijzigtdanje/.bash_proleomhetv>erzoQchteQ6themeaanteroepenw>anneerhetstart.*Hetinstellenv\|andepromptintoek>omstigesubshells(meestalXterms,rxvt,enz.),gaatdoQorhetin>tikkenv\|anbashprompt?-sthemename,en!bashpromptwijzigtjebQestand/.bashrcomhetjuistethemetijdenshetopstartenaanteroQepen.Zie oQok2.6(P>ermanent Instellenv\|andePS?-Strings)v>oordenotitiev\|anJohanKullstambQetrefthetbelangv\|anhetplaatsenvandePS?-stringsin/.bashrc.#J9.2Ladenv@ aneenAnderePrompt,OnmiddellijkJe9kun>tdepromptinjehuidigeterminalveranderen(metbQehulpv\|andevoQorbeeld-functie @>lite"v\|anhierv>oQor)doorhett>ypenv\|an"source?elite"gevolgddoor"elite"(inde?veronderstellingdatdeelitefunctieindewerkdirectoryvoorkomt). XDitiswatomslachtig?enhetlaatjeachtermeteenextrafunctie(elite)inderuimtevanjeomgeving. XAls?jedeomgevingopwiltschonen,zoujebovendien"unsetelitemoetentypen. XDit?zieteruitalseenidealekandidaatvooreenkleinshell-script,maareen?scriptwerkthiernietomdathetscriptdeomgevingvanjehuidigeshellnietkanwijzigen: Xhet?kanalleendeomgevingvandesubshellwaaronderhetdraaitwijzigen.Zodra?hetscriptstopt,verdwijntdesubshell,enwijzigingendiehetscriptaandeomgeving?hadtoegebracht,zijnernietmeer. XWatdeomgevingsvariabelenvanjehuidigeshell?welkanveranderenzijnomgevingsfuncties. XHetbashpromptpackageplaatsteenfunctie?genaamd"callbashpromptnjeomgevingenondanksdatzehetnietdocumenteren,kan?hetwordengeladenomiederebashpromptthemetijdenshetwerkenteladen. XHetkijkt?indethemedirectorydathetinstalleerde(hetthemedatjeaanriepmoetzichhier?bevinden),pasteensourcetoeopdefunctiewaarnaarjevroeg,laadtdefunctie,en?pastdaneenunsettoeopdefunctie,dusjeomgevingzonderrommelachterlatend. XHetwas?nietdebedoelingdat"callbashpromptpdezemaniergebruiktzouwordenenhetbevatgeen?controleopfouten,maaralsjedatingedachtenhoudt,werkthettamelijkgoed.(10%DynamiscchG\LadenvanPromptKleuren荍10.1%}Een"Pro_ofofConcept"VoorbeeldMDit?ismeereen"proofofconcept"daneenattractieveprompt: Xhetdynamischwijzigenvande?kleurenineenprompt. XInhetvoorbeeldwijzigtdekleurvandehostnaamafhankelijkvan?deload(alseenwaarschuwing).&ffG#!/bin/bashm_2 ~?G11.8PromptCoQdeF ragmen>ten0@26ՁV#"hostloadcolour"?-17October98,doorGiles ##De?gedachtehierisdekleurvandehostnaamindeprompttewijzigen,#afhankelijk?vandegrensvaneenloadwaarde.#?THRESHOLD_LOADisdewaardevandeeenminuutload(vermenigvuldigd#?methonderd)waaropjewiltdatdeprompt#?wijzigtvanCOLOUR_LOWnaarCOLOUR_HIGHTHRESHOLD_LOAD=200COLOUR_LOW='1;34'4|#?lichtblauwCOLOUR_HIGH='1;31'9d#?lichtroodfunction?prompt_command{ONE=$(uptime?|sed-e"s/.*loadaverage:\(.*\...\),\(.*\...\),\(.*\...\)/\1/"-e"s///g")#Apparently,?"scale"inbcdoesn'tapplytomultiplication,butdoes#apply?todivision.ONEHUNDRED=$(echo?-e"scale=0\n$ONE/0.01\nquit\n"|bc)if?[$ONEHUNDRED-gt$THRESHOLD_LOAD]thenHOST_COLOUR=$COLOUR_HIGH)`#?LichtroodelseHOST_COLOUR=$COLOUR_LOW)`#?Lichtblauwfi}function?hostloadcolour{PROMPT_COMMAND=prompt_commandPS1="[$(date?+%H%M)][\u@\[\033[\$(echo-n\$HOST_COLOUR)m\]\h\[\033[0m\]:\w]$"}vffG+8Sla?ditmetjefavorieteeditoropineenbestandmetdenaam"hostloadcolour". XAlsje?hetBashpromptpackagehebtgenstalleerd,zalditalseenthemewerken. XTypsourcehostloadcolour?envervolgenshostloadcolouralsditnietzois. XInbeidegevallenwordt"prompt_commanden?functieinjeomgeving. XAlsjedecodebestudeert,zuljeopmerkendat?dekleuren($COLOUR_HIGHen$COLOUR_LOW)zijningestelddoorslechtsgebruiktemakenvan?eengedeeltelijkekleurcode,d.w.z. X"1;34nplaatsvan"n[n033[1;34mn]",waarikdevoorkeur?aanzouhebbengegeven. XHetluktemenietomhetmetdecompletecodeaanhetwerk?tekrijgen. XLaathetmealsjeblieftwetenalsjehetvoorelkaarkrijgt.(F11%PromptG\CopdeF(ragmencten:Deze?sectietoonthoediversestukjesinformatieindeBash-promptkunnenwordengezet.Er?zijnoneindigveeldingendieinjepromptgezetzoudenkunnenworden. XStuurmegerust?watvoorbeeldenop. XIkzaldatgenewaarvanikdenkdatzehetmeestzullenwordengebruikt,?proberenintevoegen. XAlsjeeenalternatievemanierhebtomwatvande{_2 ~?G11.8PromptCoQdeF ragmen>ten0@27ՁVinformatie?hier,optehalen,enjehetgevoelhebtdatjouwmethodeefficinteris, neem?danalsjeblieftcontactmetmeop. XHetisheelmakkelijkslechtecodeteschrijven.Ik?doeditvaak,maarhetisgeweldigomelegantecodeteschrijven,eneenplezierhette?lezen. XIkkrijghetzoafentoevoorelkaarenzouhetbijzonderprettigvindenerhiervan?meerinteplaatsen.ؼOm?shell-codeinpromptsoptenemen,moetergebruikwordengemaaktvanescape-tekens.Meestal?betekentditdathettussenn$()moetwordengeplaatst,zodatde?uitvoervanhetcommandoiederekeerdatdepromptwordtgegenereerd,wordtgesubstitueerd.#Í11.1%}Ingeb_ouwdeEscapeSequencesMZie?2.5(BashPromptEscapeSequences)vooreenvolledigelijstmetingebouwdeescapesequences. XDeze?lijstisrechtsstreeksafkomstiguitdemanpagevanBash,dusjezouook?daarinkunnenkijken.11.2%}DatumenTijdMMocht?jedeinternecommando'sdateentimenietprettigvinden,hetextraherenvandeinformatie?vanuithetdatecommandoisrelatiefeenvoudig. XVoorbeeldendiereedsindezeHOWTO?tezienwaren,zijndate+%H%M,diehetuurin24-uursformaatzet,endeminuut.date?"+%A,%d%B%Y"ؼgeeft?jeietsals"Sunday,06June1999". XTypdatehelpofmandatevooreenvolledigelijst?metgenterpreteerdereeksen.11.3%}Tellenv@ anBestandenindeHuidigeDirectoryMOm?vasttestellenhoeveelbestandenerzichindehuidigedirectorybevinden,plaatsje?erls-ljwc-lin. XDitmaaktgebruikvanwc(wordcount)omhetaantalregels(-l)van?deuitvoervanls-ltetellen. XBestandendiemeteenpuntbeginnenwordennietmeegeteld. XAls?jealleendebestandenwiltmeetellenendesymbolischelinkshierinNIETop?wiltnemen(gewooneenvoorbeeldhoejehetanderszoukunnendoen),zoujegebruikkunnen?makenvanls-ljgrep-vljwc-l. XHiercontroleertgrepiedereregelopeenbeginnende?"l"(wateenlinkaangeeft)enverwerptdieregel(-v).11.4%}TotaalaantalBytesindeHuidigeDirectoryMAls?jewiltwetenhoeveelruimtedeinhoudvandehuidigedirectoryinbeslagneemt,kunje?ietsalswatvolgtgebruiken:&ffGF#?Hetcommandosedvervangtallespatiesdoorslechtsnspatie.#?cut-d""-f5:-dstelteenscheidingstekenvast,watbetekentdat(indit#?geval)eenspatieeennieuwekolombegint.#?-fgeeftaandateenbepaaldekolomeruitmoetwordengenomen,watindit#?gevaldevijfdekolomislet?TotalBytes=0_2 ~?G11.8PromptCoQdeF ragmen>ten0@28ՁVfor?Bytesin$(ls-l|grep"^-"|sed-e"s/\+//g"|cut-d""-f5) dolet?TotalBytes=$TotalBytes+$Bytesdone#?Deif...fi'sgeefteenspecifiekeruitvoerinbyte,kilobyte,megabyte,#?engigabyteif?[$TotalBytes-lt1024];thenTotalSize=$(echo?-e"scale=3\n$TotalBytes\nquit"|bc)else?if[$TotalBytes-lt1048576];thenTotalSize=$(echo?-e"scale=3\n$TotalBytes/1024\nquit"|bc)else?if[$TotalBytes-lt1073741824];thenTotalSize=$(echo?-e"scale=3\n$TotalBytes/1048576\nquit"|bc)elseTotalSize=$(echo?-e"scale=3\n$TotalBytes/1073741824\nquit"|bc)fifififfGVDDe?codedankzijdewelwillendheidvanSamSchmit(id@pt.lu)enzijnoomJean-Paul,dieeen?tamelijkbelangrijkebuginmijnoriginelecodegladstreken,enhetinhetalgemeenopschoonden."Zu11.5%}ControlerenopHuidigeTTYMHet?ttycommandoretourneertdebestandsnaamvandeterminaldieisverbondenmetdestandaardinvoer. XDit?iserintweeformatenopdeLinuxsystemendieikhebgebruikt,f/dev/tty4"f?/dev/pts/2". XIkbenhiereenmeeralgemeneoplossingvoorgaangebruiken:tty?jsed-e"s:/dev/::"ؼ,?waarmeedevoorafgaande/dev/"wordtverwijderd. XOuderesystemen(inmijnervaring,tot?aanRedHat5.2)retourneerdenalleenbestandnameninhetformaat/dev/tty4",dusgebruikte?ikttyjsed-e"s/.*ttyn(.*n)/n1/".Een?alternatievemethode: Xpsauxjgrep$$jawk'fprint$7g'."Zu11.6%}UitgesteldeJobTellingMOm?erachtertekomenhoeveeluitgesteldetakenjehebt,gebruikjejobsjwc-ljawk'fprint?$1g'. XOverigensrekentawkspatiesmeewatruimteineenpromptverspilt.Als?jenetscapevanuiteenxtermopstart,zaldatookwordengeteld. XAlsjedatwiltvoorkomen?enalleengestoptejobswilttellen,gebruikjeinplaatsdaarvanjobs-s. XTyphelp?jobsvoormeerinformatieoverjobs. XjobszalinBashversie2.02nooitietsnaareen?piperetourneren. XDitprobleemisingeenenkeleandereversieaanwezig.11.7%}UptimeenLoadMHuidige?loadisafkomstigvanhetuptimecommando. XWatikthansgebruikisuptimejsed-e?"s/.*loadaverage: Xn(.*n...n),.*n...,.*n.../n1/-e"s///g"L_2 ~?G11.8PromptCoQdeF ragmen>ten0@29ՁVwat?extreemonhandigis,maarhetwerkt. XVerbeteringenzijnwelkom.uptimekanookop vergelijkbare?manierwordengebruiktomerachtertekomenhoelangdecomputerwerkendis?(vanzelfsprekend)enhoeveelgebruikerszijningelogd. XDegegevenszoudenkunnenworden?verwerktmetsedomzeeruittelatenzienzoalsjedatwilt.#11.8%}AantalPro_cessenMps?axjwc-ljtr-d XqL ecit1000OFpsaxjwc-ljawk'fprint$1g'OFpsaxjwc-ljsed-e"s:::g"ؼ. XIn?iedergeval,wordttrofawkofsedgebruiktomdeongewenstespatiesteverwijderen.11.9%}Beherenv@ andeBreedtevan$PWDMUnix?staatlangebestandsnamentoe,watertoekanleidendatdewaardevan$PWDnogallang?wordt. XEenaantalmensen(metnamedestandaardRedHatprompt)kozenervoordebasename?vandehuidigewerkdirectorytegebruiken(bv. X"gilesls$PWD=/home/giles").Ik?wilgraagwatmeerinformatiedandat,maarhetisvaakwenselijkdelengtevandedirectory?binnendeperkentehouden,enhetishetmeestzinvolaandelinkerkantaftekappen.{ffG#Hoeveel?tekensvan$PWDmoetenbewaardblijvenlocal?pwd_length=30if?[$(echo-n$PWD|wc-c|tr-d"")-gt$pwd_length]thennewPWD="...$(echo?-n$PWD|sed-e"s/.*\(.\{$pwd_length\}\)/\1/")"elsenewPWD="$(echo?-n$PWD)"fi NffG#{De?codehierbovenkanwordenuitgevoerdalsonderdeelvanPROMPT_COMMAND,endegegenereerde?omgevingsvariabele(newPWDV)kanvervolgensindepromptwordeningevoegd.11.10,=0){print\"up\"}else{print\"down\"}\nprintx\nquit\n"|bc)loaddiff="$(echo?-n"${one}${diff1_5}")"#Tel?zichtbarebestanden:let?files=$(ls-l|grep"^-"|wc-l|tr-d"")let?hiddenfiles=$(ls-l-d.*|grep"^-"|wc-l|tr-d"")let?executables=$(ls-l|grep^-..x|wc-l|tr-d"")let?directories=$(ls-l|grep"^d"|wc-l|tr-d"")let?hiddendirectories=$(ls-l-d.*|grep"^d"|wc-l|tr-d"")-2let?linktemp=$(ls-l|grep"^l"|wc-l|tr-d"")if?["$linktemp"-eq"0"]thenlinks=""elselinks="?${linktemp}l"fiunset?linktemplet?devicetemp=$(ls-l|grep"^[bc]"|wc-l|tr-d"")if?["$devicetemp"-eq"0"]thendevices=""elsedevices="?${devicetemp}bc"fiunset?devicetemp}PROMPT_COMMAND=prompt_commandfunction?pprom2{local)`BLUE="\[\033[0;34m\]"local XLIGHT_GRAY="\[\033[0;37m\]"local?LIGHT_GREEN="\[\033[1;32m\]"!_2 ~?G12.8V oQorbeeldpromptsW*33ՁVlocal XLIGHT_BLUE="\[\033[1;34m\]" local XLIGHT_CYAN="\[\033[1;36m\]"local~YELLOW="\[\033[1;33m\]"local$WHITE="\[\033[1;37m\]"local/= RED="\[\033[0;31m\]"localNO_COLOUR="\[\033[0m\]"case?$TERMinxterm*))`TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`TITLEBAR="")`;;esacPS1="$TITLEBAR\$BLUE[$RED\$(date?+%H%M)$BLUE]\$BLUE[$RED\u@\h$BLUE]\$BLUE[\$LIGHT_GRAY\${files}.\${hiddenfiles}-\$LIGHT_GREEN\${executables}x?\$LIGHT_GRAY(\${TotalMeg}Mb)?\$LIGHT_BLUE\${directories}.\\${hiddendirectories}d\$LIGHT_CYAN\${links}\$YELLOW\${devices}\$BLUE]\$BLUE[${WHITE}\${loaddiff}$BLUE]\$BLUE[\$WHITE\$(ps?ax|wc-l|sed-e\"s:::g\")proc\$BLUE]\\n\$BLUE[$RED\$PWD$BLUE]\$WHITE\$\\$NO_COLOUR?"PS2='>?'PS4='+?'} ډffG12.5%}PromptAfhankelijkv@ anhetTyp_eVerbindingMBradley?MAlexander(storm@tux.org)hadhetuitstekendeideeomzijngebruikerseraanteherinneren?vanwelkeverbindingzeopzijncomputer(s)gebruikmaakte,duscodeerdehijprompts?ineenkleurafhankelijkvanhettypeverbinding. XHierishetbashrcdathijmeleverde:މffG ԡ#?/etc/bashrc"_2 ~?G12.8V oQorbeeldpromptsW*34ՁV#?Systeemomvattendefunctiesenaliassen #?Omgevingszakengaanin/etc/profile#?Omonbekenderedenweigertbashineenaantalsituatieswaarikniet#?uitkom,PS1teerven.#?AlsPS1hierinwordtgeplaatst,benjeerzekervandathetiederekeer#?wordtgeladen.#?Stelpromptsin.Kleurcodevoorlogins.Roodvoorroot,witvoor#?gebruikerslogins,groenvoorssh-sessies,cyaanvoortelnet,#?magentametrood"(ssh)"voorssh+su,magentavoortelnet.THIS_TTY=tty`ps?aux|grep$$|grepbash|awk'{print$7}'`SESS_SRC=`who?|grep$THIS_TTY|awk'{print$6}'`SSH_FLAG=0SSH_IP=`echo?$SSH_CLIENT|awk'{print$1}'`if?[$SSH_IP];then XSSH_FLAG=1fiSSH2_IP=`echo?$SSH2_CLIENT|awk'{print$1}'`if?[$SSH2_IP];then XSSH_FLAG=1fiif?[$SSH_FLAG-eq1];then XCONN=sshelif?[-z$SESS_SRC];then XCONN=lclelif?[$SESS_SRC="(:0.0)"-o$SESS_SRC=""];then XCONN=lclelse XCONN=telfi#?Okay...Wiezijnwenu?if?[`/usr/bin/whoami`="root"];then XUSR=privelse XUSR=noprivfi#Stel?eenaantalpromptsin...if?[$CONN=lcl-a$USR=nopriv];then XPS1="[\u?\W]\\$"elif?[$CONN=lcl-a$USR=priv];then XPS1="\[\033[01;31m\][\w]\\$\[\033[00m\]?"elif?[$CONN=tel-a$USR=nopriv];then XPS1="\[\033[01;34m\][\u@\h?\W]\\$\[\033[00m\]"elif?[$CONN=tel-a$USR=priv];then XPS1="\[\033[01;30;45m\][\u@\h?\W]\\$\[\033[00m\]"elif?[$CONN=ssh-a$USR=nopriv];then#_2 ~?G12.8V oQorbeeldpromptsW*35ՁV XPS1="\[\033[01;32m\][\u@\h?\W]\\$\[\033[00m\]" elif?[$CONN=ssh-a$USR=priv];then XPS1="\[\033[01;35m\][\u@\h?\W]\\$\[\033[00m\]"fi#?PS1="[\u@\h\W]\\$"export?PS1alias?which="type-path"alias?dir="ls-lF--color"alias?dirs="ls-lFS--color"alias?h=history &ffGp12.6%}EenPromptterBreedtev@ anJeTermMEen?vriendklaagdedathijeenprompt,diequalengtebleefwijzigen,ditomdat$PWDerin?voorkwam,nietprettigvond. XIkschreefduseenpromptdiedegrootteexactaandebreedte?vanjetermwijzigde,metdewerkdirectoryindebovensteregelvantweeregels.&ffG*#!/bin/bash#termbrede?prompt#~door?Giles-aangemaakt2November98##De?bedoelinghierisdatdebovenstevandeuittweeregelsbestaande#prompt?altijdevenbreedisalsdebreedtevanjeterm.Doeditdoor#de?breedtevandetekstelemententeberekenen,envulhetzonodig#uit?ofkap$PWDaandelinkerkantaf.#function?prompt_command{TERMWIDTH=${COLUMNS}#Bereken?debreedtevandeprompt:hostnam=$(echo?-n$HOSTNAME|sed-e"s/[\.].*//")#"whoami"?en"pwd"sluiteneenafsluitendenewlineinusernam=$(whoami)let?usersize=$(echo-n$usernam|wc-c|tr-d"")newPWD="${PWD}"let?pwdsize=$(echo-n${newPWD}|wc-c|tr-d"")#Voeg?alleaccessoireshierondertoe...let?promptsize=$(echo-n"--(${usernam}@${hostnam})---(${PWD})--"\Y:l|?wc-c|tr-d"")let?fillsize=${TERMWIDTH}-${promptsize}fill=""while?["$fillsize"-gt"0"]dofill="${fill}-"$ _2 ~?G12.8V oQorbeeldpromptsW*36ՁVlet?fillsize=${fillsize}-1 doneif?["$fillsize"-lt"0"]thenlet?cut=3-${fillsize}newPWD="...$(echo?-n$PWD|sed-e"s/\(^.\{$cut\}\)\(.*\)/\2/")"fi}PROMPT_COMMAND=prompt_commandfunction?termwide{local?GRAY="\[\033[1;30m\]"local?LIGHT_GRAY="\[\033[0;37m\]"local?WHITE="\[\033[1;37m\]"local?NO_COLOUR="\[\033[0m\]"local?LIGHT_BLUE="\[\033[1;34m\]"local?YELLOW="\[\033[1;33m\]"case?$TERMinxterm*))`TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`TITLEBAR="")`;;esacPS1="$TITLEBAR\$YELLOW-$LIGHT_BLUE-(\$YELLOW\${usernam}$LIGHT_BLUE@$YELLOW\${hostnam}\${LIGHT_BLUE})-${YELLOW}-\${fill}${LIGHT_BLUE}-(\$YELLOW\${newPWD}\$LIGHT_BLUE)-$YELLOW-\\n\$YELLOW-$LIGHT_BLUE-(\$YELLOW\$(date?+%H%M)$LIGHT_BLUE:$YELLOW\$(date\"+%a,%d%b%y\")\$LIGHT_BLUE:$WHITE\$$LIGHT_BLUE)-\$YELLOW-\$NO_COLOUR?"PS2="$LIGHT_BLUE-$YELLOW-$YELLOW-$NO_COLOUR?"} ;ffG%U_2 ~?G12.8V oQorbeeldpromptsW*37ՁV12.7%}DeElegantUselessClo_ckPromptMDit?isnvandemeeraantrekkelijke(ennutteloze)promptsdieikhebgemaakt. XOmdat veel?vandeX-terminalemulatorshetbewarenenherstellenvandepositievandecursorniet?implementeren,kunjealsalternatiefdecursoronderaandeterminalverankerenals?jeeenklokindebovensterechterhoekplaatst. XDitbouwtvoortophetideevande"termbrede"prompt?vanhiervoor,eenlijntekenendaanderechterkantvanhetschermvande?prompttotaandeklok. XEenVGA-fontisvereist.ؼNoot: XEr?ishiereenvreemdesubstitutie,waardoorhetwaarschijnlijknietjuistwordtafgedrukt,?alshetvanuitSGMLnaarandereformatenisomgezet. XIkmoesthetschermtekenvoor?n304substitueren. XIkzounormaalgesprokengewoondereeks"n304"hebbenopgenomen,maar?hetwasnodiginditgevaldezesubsitutietemaken.' ffG ^#!/bin/bash#Voor?dezepromptiseenVGA-fontvereist.Depromptwordtaande#onderkant?vandeterminalverankerd,vultopterbreedtevandeterminal#en?tekenteenverticalelijnaanderechterkantvandeterminal#waarbij?hetzichzelfkoppeltaaneenklokinderechterbovenhoekvan#de?terminal.function?prompt_command{#Bereken?debreedtevandeprompt:hostnam=$(echo?-n$HOSTNAME|sed-e"s/[\.].*//")#"whoami"?en"pwd"nemeneenafsluitendenewlineopusernam=$(whoami)newPWD="${PWD}"#Voeg?alleaccesoireshieronderin...let?promptsize=$(echo-n"--(${usernam}@${hostnam})---(${PWD})-----"\Y:l|?wc-c|tr-d"")#Zoek?uithoeveelertussenuser@hostenPWDmoetwordeningevoegd(of#hoeveel?vanPWDteverwijderen)let?fillsize=${COLUMNS}-${promptsize}fill=""#Maak?deopvulleralsdepromptnietzobreedisalsdeterminal:while?["$fillsize"-gt"0"]dofill="${fill}"#?DeAmetdeumlauterboven(hetverschijntalseenlangestreepals#?jeeenVGA-fontgebruikt)is\304,maarikkniptehetenplaktehetin#?omdatBashslechtsnsubstitutieuitvoertendatis#?inditgevalhetplaatsenvan$fillindeprompt.let?fillsize=${fillsize}-1done#Kap?PWDaanderechterkantafalsdepromptbrederwordtdandeterminal:if?["$fillsize"-lt"0"]thenlet?cutt=3-${fillsize}newPWD="...$(echo?-n$PWD|sed-e"s/\(^.\{$cutt\}\)\(.*\)/\2/")"fi&_2 ~?G12.8V oQorbeeldpromptsW*38ՁV# #Maak?deklokendebalkdieaanderechterkantvandetermdraait#local?LIGHT_BLUE="\033[1;34m"local>\YELLOW="\033[1;33m"#Positioneer?decursoromdeklokweertegeven:echo?-en"\033[2;$((${COLUMNS}-9))H"echo?-en"$LIGHT_BLUE($YELLOW$(date+%H%M)$LIGHT_BLUE)\304$YELLOW\304\304\277"local?i=${LINES}echo?-en"\033[2;${COLUMNS}H"# XPrint?verticalestreepjes:while?[$i-ge4]doecho?-en"\033[$(($i-1));${COLUMNS}H\263"let?i=$i-1donelet?prompt_line=${LINES}-1#Dit?isnodigomdateen\${LINES}binneneenBashmathematische#expressie?(d.w.z.$(()))nietschijnttewerken.}PROMPT_COMMAND=prompt_commandfunction?clock3{local?LIGHT_BLUE="\[\033[1;34m\]"local>\YELLOW="\[\033[1;33m\]"local~WHITE="\[\033[1;37m\]"local?LIGHT_GRAY="\[\033[0;37m\]"local XNO_COLOUR="\[\033[0m\]"case?$TERMinxterm*))`TITLEBAR='\[\033]0;\u@\h:\w\007\]')`;;*))`TITLEBAR="")`;;esacPS1="$TITLEBAR\\[\033[\${prompt_line};0H\]$YELLOW\332$LIGHT_BLUE\304(\$YELLOW\${usernam}$LIGHT_BLUE@$YELLOW\${hostnam}\${LIGHT_BLUE})\304${YELLOW}\304\${fill}${LIGHT_BLUE}\304(\$YELLOW\${newPWD}\$LIGHT_BLUE)\304$YELLOW\304\304\304\331\\n\$YELLOW\300$LIGHT_BLUE\304(\$YELLOW\$(date?\"+%a,%d%b%y\")\'y_2 ~?G12.8V oQorbeeldpromptsW*39ՁV$LIGHT_BLUE:$WHITE\$$LIGHT_BLUE)\304\ $YELLOW\304\$LIGHT_GRAY?"PS2="$LIGHT_BLUE\304$YELLOW\304$YELLOW\304$NO_COLOUR?"} ;ffGx;_2G'qL ecit1000 ecbi1000qL ectt0900qL ectt1000!N ecbx1200]f ecbx1000&Lt$ffffecbx14406 ecss1000HЃ ecti1000Iqqecss2074 1 ecrm1000 !", cmsy10 b> cmmi10