÷ƒ’À;è TeX output 2003.11.26:1325‹ÿÿÿÿ Û_2 ý ~? ÕÁ ýZݺóþÖëI½q½qecss2074»Bash–fÑPrompt“HO‘ÿwmWTOŽ¤ ®„ØcÕÁGŽŽ¡ó 1ê± ecrm1000¹Giles–U Orr,“ó½HЃ ecti1000¼giles@interlo–ÿ}/g.c“om’ô0Ö¹v0.60,–U 07“gennaio“1999Ž¡Ÿ&°óŒ6 ecss1000½Viene–C­discusso“come“creaš¸ère“e“controlla˜re“il“p˜rompt“del“terminale“e“di“xterm,‘Pcomp˜resa“l'uso“delle“sequenze“diŽ¡escapšGe–tUstanda¸èrd“p˜er“ottenere“il“nome“utente,‘|#la“directoš¸èry“di“lavo˜ro“co˜rrente,–|#l'o˜ra,“ecc.‘Ï V˜engono–tUespGosti“ulterio˜riŽ¡suggerimenti–Ãsu“come“moGdicaš¸ère“le“ba˜rre“di“titolo“di“xterm,‘N«usa˜re“funzioni“esterne“pGer“fo˜rnire“info˜rmazioni“sulŽ¡pš¸èrompt–U e“su“come“usa˜re“i“colo˜ri“ANSI.ŽŸ(Àœó&Lt$ffffecbx1440¿Con•cten“tsŽ©Øó]fŒ ecbx1000À1Ž‘ÿIn®>troQÂduzione’€Ó2ŽŽ¤ؼ‘ÿ¹1.1Ž‘%ý¡Prerequisiti‘ÑK‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï2ŽŽ¡‘ÿ1.2Ž‘%ý¡Come–U Usare“Questo“DoGcumen¸èto‘¢ß‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï2ŽŽ¡‘ÿ1.3Ž‘%ý¡T‘ÿ*¸raduzioni‘˜c‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘ÿ1.4Ž‘%ý¡Problemi-w‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘ÿ1.5Ž‘%ý¡In•¸èviatemi›U Commen“ti˜e˜Suggerimen“ti‘*{‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï3ŽŽ¡‘ÿ1.6Ž‘%ý¡Crediti‘m‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ1.7Ž‘%ý¡Cop•¸èyrigh“t–U e“LibGeratoria‘=בü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¦À2Ž‘ÿBash–Õe“i“Prompt“Bash’Q24ŽŽ¡‘ÿ¹2.1Ž‘%ý¡Cosa–U €è“Bash‘|+‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ2.2Ž‘%ý¡Quali–U sono“i“v‘ÿqÐan¸ètaggi“di“moGdicare“il“prompt?‘ÏÇ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï4ŽŽ¡‘ÿ2.3Ž‘%ý¡P•¸èerc“h€é–U darsi“tan¸ète“noie?‘Œ+‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï5ŽŽ¡‘ÿ2.4Ž‘%ý¡Il–U Primo“P¸èasso‘˜Û‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï5ŽŽ¡‘ÿ2.5Ž‘%ý¡Sequenza–U di“EscapGe“dei“Prompt“Bash‘jŸ‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï6ŽŽ¡‘ÿ2.6Ž‘%ý¡ImpGostare›U P•¸èermanen“temen“te˜le˜Stringhe˜PS?‘£‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï7ŽŽ¦À3Ž‘ÿComandi‘ÕEsterni’k׋7ŽŽ¡‘ÿ¹3.1Ž‘%ý¡PR¸èOMPT_COMMAND‘/ï‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï7ŽŽ¡‘ÿ3.2Ž‘%ý¡Comandi–U Esterni“nel“Prompt‘‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï8ŽŽ¡‘ÿ3.3Ž‘%ý¡Cosa–U Mettere“nel“Prompt‘ïë‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘wï9ŽŽ¡‘ÿ3.4Ž‘%ý¡Am•¸èbien“te–U e“F‘ÿ*¸unzioni“Bash‘>_‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?10ŽŽ¦À4Ž‘ÿManipQÂolazioni–Õdella“Barra“del“Titolo“di“Xterm’ÑQ11ŽŽ¦5Ž‘ÿSequenze–Õdi“escapQÂe“ANSI:“Colori“e“Mo•®>vimen“ti–Õdel“Cursore’“Ñ#12ŽŽ¡‘ÿ¹5.1Ž‘%ý¡Colori‘Pk‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?12ŽŽ¡‘ÿ5.2Ž‘%ý¡Mo•¸èvimen“ti–U del“Cursore‘è‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?15ŽŽ¡‘ÿ5.3Ž‘%ý¡Muo•¸èv“ere–U il“Cursore“Con“tput‘T‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?16ŽŽŽŽŒ‹* Û_2 ý ~?Ÿ„€ÕÁGŽÀ1.‘ñ8In®>troQÂduzione’~¯œ¹2ŽŽ ÕÁ ýV¯À6Ž‘ÿCaratteri–ÕSpšQÂeciali:‘ Sequenze“di“Escap˜e“Ottali’Ö”n16ŽŽ©Ø7Ž‘ÿIl›ÕP•®>acc“hetto˜Bash˜Prompt’7\š18ŽŽ¤ؼ‘ÿ¹7.1Ž‘%ý¡DispGonibilit€à‘Ñs‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?18ŽŽ¡‘ÿ7.2Ž‘%ý¡Camš¸èbiare–U il“F‘ÿ*¸on˜t“di“XtermpC‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?18ŽŽ¦À8Ž‘ÿCaricare–Õun“Prompt“Dieren®>te’áû19ŽŽ¡‘ÿ¹8.1Ž‘%ý¡Caricare–U un“Prompt“Dieren¸ète,“Pi€ù“T‘ÿ*¸ardi‘]'‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?19ŽŽ¡‘ÿ8.2Ž‘%ý¡Caricare–U un“Prompt“Dierenš¸ète,“Immediatamen˜te‘Aבü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?19ŽŽ¦À9Ž‘ÿCaricare–Õil“Colori“del“Prompt“Dinamicamen®>te’Ôƒ#19ŽŽ¡‘ÿ¹9.1Ž‘%ý¡Un–U esempio“c¸èhe“dimostra“il“concetto‘8Ñü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?19ŽŽ¦À10Ž‘ÿPrompt–Õdi“Esempio’Xöò20ŽŽ¡‘ÿ¹10.1Ž‘%ý¡Un–U Prompt“"Leggero"‘½§‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?20ŽŽ¡‘ÿ10.2Ž‘%ý¡Elite–U dai“T‘ÿ*¸emi“Bashprompt‘Œ«‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?21ŽŽ¡‘ÿ10.3Ž‘%ý¡Un–U Prompt“pGer“il“"P•¸èo“w“er‘U User"‘”—‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?21ŽŽ¡‘ÿ10.4Ž‘%ý¡Un–U Prompt“Largo“Quan¸èto“il“T‘ÿ*¸erminale‘ò#‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?23ŽŽ¡‘ÿ10.5Ž‘%ý¡Il–U Prompt“Orologio“Inš¸èutile“ed“Elegan˜te‘@W‘ü.ŽŽ–Æè‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ“‘ü.ŽŽ‘x?25ŽŽŸ(Àœ¿1Ž‘ÁInctropœduzioneŽŸèó¥!¢N ecbx1200Â1.1Ž‘¾PrerequisitiŽ©Mª¹A‘þã vrete–±Jbisogno“di“Bash.‘…þLa“vš¸èersione“fornita“con“quasi“tutte“le“distribuzioni“Lin˜ux“€è“la“1.14.7“(al“momen˜toŽ¤ ®della–èåstesura“di“questo“doGcumen•¸èto,› ÖNo“v“em“bre‘èå98),˜c“he–èå€è“una“shell“bGen“conosciuta“e“adabile.‘,ÏBash“€è“oraŽ¡dispšGonibile–¯ƒnella“v¸èersione“2.0+:‘&Eoramai“ho“utilizzato“Bash“2.0“p˜er“qualc¸èhe“temp˜o,‘Æma“quasi“tutto“il“co˜diceŽ¡qui–ÿ{presenš¸ètato“do˜vrebbGe“funzionare“con“la“1.14.7.‘p‘Se“do˜v˜essi“essere“a“conoscenza“di“un“problema,‘*ne“far€òŽ¡menzione.‘T~P•¸èotete›öcon“trollare˜la˜v“ostra˜v“ersione˜di˜Bash˜digitando˜óqLË ectt1000Ãecho‘?¬$BASH_VERSION‘õö¹al˜prompt.‘T~SullaŽ¡mia–U macc¸èhina,“rispGonde“con“Ã2.02.1(1)-release¹.ŽŸؼSarebbGe–i4utile,›n:ma“non“essenziale,˜espšGerienza“nella“programmazione“shell:‘™©pi€ù“ne“sap˜ete,‘n:pi€ù“sarete“in“gradoŽ¡di–­ncreare“prompt“complessi.‘ziIn“questo“tutorial“presuppGongo“una“conoscenza“di“base“della“programmazioneŽ¡shell–¶Xe“delle“utilitš¸èy“Unix.‘•)Com˜unque,›Φle“mie“stesse“capacit€à“nella“programmazione“shell“sono“limitate,˜cos€ìŽ¡fornisco–U molti“esempi“e“spiegazioni“c¸èhe“pšGossono“apparire“sup˜erue“ad“un“esp˜erto“programmatore“shell.ŽŸ#ÃÂ1.2Ž‘¾Come–¸Usare“Questo“Do_úcumen toŽ¦¹Includo– wmolti“esempi“e“spiegazioni.‘”…Pš¸èarti“div˜erse“saranno“utili“in“v‘ÿqÐaria“misura“a“pGersone“div˜erse.‘”…QuestoŽ¡doGcumenš¸èto–œ€è“div˜en˜tato“abbastanza“lungo“e“leggerlo“tutto“in“una“v˜olta“sarebbGe“dicile“-“leggete“solamen˜te“leŽ¡sezioni–U cš¸èhe“vi“serv˜ono,“tornate“indietro“quando“necessario.ŽŽŽŒ‹'Ž Û_2 ý ~?Ÿ„€ÕÁGŽÀ1.‘ñ8In®>troQÂduzione’~¯œ¹3ŽŽ ÕÁ ýV¯Â1.3Ž‘¾T‘þàraduzioniŽ©Mª¹Al–Xxmomenš¸èto“in“cui“scriv˜o“(6“gennaio“99),‘™Osono“in“la˜v˜orazione“traduzioni“in“giappGonese“(Akira“Endo,‘™O¼ak-Ž¤ ®endo@t3.rim.or.jp–©5¹)“e“tedesco“(Thomas“Keil,‘¾:¼thomas@h-pr‘ÿ}/eissler.de“¹).›m¿Molte“grazie“ad“en•¸ètram“bi!˜Gli‘©5URLŽ¡v¸èerranno–U inclusi“quando“le“traduzioni“saranno“dispGonibili.ŽŸ"¿3Â1.4Ž‘¾ProblemiŽ¦¹Questa–s€è“una“lista“di“problemi“c¸èhe“ho“notato“nel“programmare“i“prompt.‘ zNon“iniziate“a“leggere“qui,‘ÞeŽ¡non–ªôlasciate“cš¸èhe“questa“lista“vi“scoraggi“-“questi“sono“principalmen˜te“dettagli“minori.‘rýCon˜trollate“qui“se“viŽ¡sconš¸ètrate–U con“qualc˜he“cosa“di“strano.ŽŸ³ƒ‘ó !",š cmsy10¸ŽŽŽ‘¹Molte–QÉfunzionalit€à“di“Bash“(come“i“calcoli“matematici“all'in¸èterno“di“$(())“fra“gli“altri)“sono“opzioniŽ¡‘denite–eýin“fase“di“compilazione.‘¤Se“state“usando“una“distribuzione“binaria“come“quelle“fornite“conŽ¡‘una–Odistribuzione“standard“di“Linš¸èux,‘O[tutte“queste“funzionalit€à“do˜vrebbGero“essere“gi€à“denite“in“faseŽ¡‘di–Ú²compilazione.‘5Ma“se“state“la•¸èv“orando–Ú²sul“sistema“altrui,‘üv‘ÿqÐale“la“pGena“ricordarsene“se“qualcosa“nonŽ¡‘funziona–U come“vi“aspGettate.‘q€Vi“sono“alcune“note“su“questo“in“¼L–ÿ}/e“arning–“°the“Bash“Shel‘‚Ðl‘w¹,‘U p.260-262.Ž©Òd‘¸ŽŽŽ‘¹Lo–³ screen“manager“"screen"“non“funziona“sempre“bGene“con“i“colori“ANSI.“Sfortunatamen¸ète“non“sonoŽ¡‘un–(1espGerto“di“screen.‘b†La“mia“attuale“vš¸èersione“di“screen“(una“molto“recen˜te)“sem˜bra“funzionare“bGene“inŽ¡‘tutti–”´i“casi,‘¤™ma“ho“visto“oGccasioni“in“cui“screen“ha“ridotto“tutti“i“colori“del“prompt“al“colore“di“primoŽ¡‘piano–U standard“negli“X“terminal.‘q€Questo“non“sem¸èbra“essere“un“problema“nella“consolle.Ž¦‘¸ŽŽŽ‘¹I‘™«le–™ÿXdefault“pšGossono“reimp˜ostare“i“colori.‘@Cercate“in“/.Xdefaults“linee“cš¸èhe“fanno“riferimen˜to“aŽ¡‘XT›ÿ*¸erm*bac¸èkground–U e“XT˜erm*foreground“(o“forse“XT˜erm*Bac¸èkground“e“XT˜erm*F˜oreground).Ž¦‘¸ŽŽŽ‘¹Uno–‰adei“prompt“menzionati“in“questo“doGcumen¸èto“usa“l'output“di“"jobs"“-“come“gi€à“discusso,‘–ql'outputŽ¡‘di–U "jobs"“v¸èerso“un“pipGe“non“funziona“in“Bash“2.02.Ž¦‘¸ŽŽŽ‘¹Le–“zsequenze“di“escapšGe“ANSI‘“jp˜er“il“mo•¸èvimen“to–“zdel“cursore“non“sono“tutte“implemen¸ètate“in“tutti“gli“XŽ¡‘terminal.‘q€Questo–U €è“discusso“in“una“sezione“a“parte.Ž¦‘¸ŽŽŽ‘¹Alcune–•pseudo-immagini“carine“pGossono“essere“create“usando“i“fonš¸èt“V˜GA‘ˆpiuttosto“c˜he“i“fon˜t“standardŽ¡‘di›~ùLin•¸èux.‘ï Sfortunatamen“te,‘Épquesti˜eetti˜sono˜pGessimi˜se˜non˜usate˜fon“t˜V“GA,˜e˜non˜c'€è˜moGdo˜diŽ¡‘scoprire–U all'inš¸èterno“di“un“terminale“quali“fon˜t“sta“usando.Ž¦‘¸ŽŽŽ‘¹Bash–„k2.0+“€è“dispšGonibile“e“include“alcune“n•¸èuo“v“e–„kfunzionalit€à“e“cam¸èbia“un“p˜o'“il“comp˜ortamen¸èto.‘ÿaCoseŽ¡‘cš¸èhe–U funzionano“sulla“1.14.7“non“funzionano“necessariamen˜te“sulla“2.0+,“o“vice“v˜ersa.ŽŸ"¿3Â1.5Ž‘¾In• viatemi›¸Commen“ti˜e˜Suggerimen“tiŽŸMª¹Questa–ÈÀè“anc¸èhe“pšGer“me“una“"esp˜erienza“didattica".‘ÌiSono“arriv‘ÿqÐato“a“sap˜erne“un“b˜el“p˜o'“su“cosa“pu€ò“essereŽ¡fatto–7spGer“creare“prompt“Bash“in•¸èteressan“ti–7se“utili,‘pma“ho“bisogno“dei“vš¸èostri“suggerimen˜ti“pGer“correggere“eŽ¡migliorare–å:questo“doGcumenš¸èto.‘!ÏHo“pro˜v‘ÿqÐato“a“con˜trollare“i“miei“suggerimen˜ti“con“v˜ersioni“dieren˜ti“di“BashŽ¡(principalmen•¸ète›â62.02,‘ù1c“he˜uso,–ù1e˜1.14.7,“c¸èhe˜€è˜molto˜usata),“ma˜fatemi˜sapGere˜se˜tro¸èv‘ÿqÐate˜delle˜incompatibilit€à.Ž©ؼL'ultima–çlvš¸èersione“di“questo“doGcumen˜to“do˜vrebbšGe“essere“sempre“disp˜onibile“suŽ¡¼http://www.interlo–ÿ}/g.c“om/giles/b“ashpr“ompt.html–¨Ç¹.‘ltPš¸èer“fa˜v˜ore“dategli“un'oGcc˜hiata“e“lasciate“pure“unŽ¡e-mail–U a“¼giles@interlo–ÿ}/g.c“omŽ¦¹con‘U suggerimen¸èti.Ž¦Uso–Bgli“HOš¸èWTO‘Aßdel“Lin˜ux“DoGcumen˜tation“Pro‘Ž0ject“quasi“esclusiv‘ÿqÐamen˜te“in“formato“HTML,“cos€ì“quandoŽ¡con•¸èv“erto–ô…questo“doGcumenš¸èto“da“SGML,“HTML‘ô€è“l'unico“formato“c˜he“con˜trollo“in˜teramen˜te.‘ O°Se“ci“sonoŽ¡problemi–U con“altri“formati,“pšGotrei“non“sap˜erlo“e“gradirei“una“nota“a“riguardo.ŽŽŽŒ‹?× Û_2 ý ~?Ÿ„€ÕÁGŽÀ2.‘ñ8Bash–Õe“i“Prompt“Bash’Nêƹ4ŽŽ ÕÁ ýV¯Â1.6Ž‘¾CreditiŽŸMª¹Nel–¾prošGdurre“questo“do˜cumenš¸èto,‘¿¥ho“preso“in“prestito“molto“dal“la˜v˜oro“del“progetto“Bashprompt“suŽ¤ ®¼http://b–ÿ}/ash.curr“ent.nu/–ε¹.‘Þ>Altre“fon¸èti“usate“includono“l'¼xterm–ïTitle“mini-HO¾˜WTO‘¾ù¹di–εRic“Lister,‘-repGeri-Ž¡bile–ìÁsu“¼http://sunsite.unc.e‘ÿ}/du/LDP/HOš¾˜WTO/mini/Xterm-Title.html“¹,‘R©¼A˜nsi‘ ´Pr‘ÿ}/ompts‘¾Ö¹di“Keebler,‘R©repGeri-Ž¡bile–Ösu“¼http://www.nc–ÿ}/al.verio.c“om/ke“ebler/ansi.html›Ö¹,‘6J¼How–õÒto“make“a“Bash“Pr‘ÿ}/ompt“Theme‘–^¹di˜StephenŽ¡W›ÿ*¸ebb,‘—frepGeribile–Vñsu“¼http://b–ÿ}/ash.curr“ent.nu/b“ash/HO¾˜WTO.html–Vñ¹e“¼X–€¤ANSI“F‘ÿ;Èonts‘)¹di–VñStump¸èy˜,‘—frepGeribile“suŽ¡¼http://home.e‘ÿ}/arthlink.net/us5zahns/enl/ansifont.html‘U ¹.Ž©ؼSono–xçstate“ancš¸èhe“di“immenso“aiuto“div˜erse“con˜v˜ersazioni“e“e-mail“di“Dan,‘Ùun“collega“del“Georgia“College“&Ž¡State›܃Univ•¸èersit“y‘ÿ*¸,‘ô¢le˜cui˜conoscenze˜di˜UNIX‘ÜdsupGerano˜di˜molto˜le˜mie.‘ILEgli˜mi˜ha˜dato˜n“umerosi˜ed˜eccellen“tiŽ¡suggerimenš¸èti,–U le“sue“idee“hanno“pGortato“ad“alcuni“prompt“in˜teressan˜ti.Ž¦T‘ÿ*¸re–¼œlibri“cš¸èhe“sono“stati“utili“nel“prorammare“i“prompt“sono“¼Linux–òäin“a“Nutshel‘‚Ðl‘Źdi–¼œJessica“Hec˜kman“P˜erryŽ¡(O'Reilly›ÿ*¸,–zÐ1997),“¼L–ÿ}/e“arning–¯mthe“Bash“Shel‘‚Ðl‘{½¹di–sFCameron“Newham“e“Bill“Rosen¸èblatt“(O'Reilly˜,–zÐ2nd.‘Ëòed.,“1998)Ž¡e›¹¼Unix–J£Shel‘‚Ðl“Pr–ÿ}/o“gr“amming‘è'¹di˜Lo•¸èw“ell˜Ja“y˜Arth“ur˜(Wiley‘ÿ*¸,–š1986.‘W Questa˜€è˜la˜prima˜edizione,“la˜quarta˜€è˜uscitaŽ¡nel‘U 1997).ŽŸ#ÃÂ1.7Ž‘¾Cop• yrigh“t–¸e“Lib_úeratoriaŽŸMª¹This–í3doGcumenš¸èt“is“cop˜yrigh˜t“1998-1999“b˜y“Giles“Orr.›9¸Y‘ÿ*¸ou“are“encouraged“to“redistribute“it.˜Y‘ÿ*¸ou“ma¸èy“notŽ¡mošGdify–öçthis“do˜cumenš¸èt“(see“the“section“on“con˜tacting“me:‘BdI‘öÏha˜v˜e“so“far“bšGeen“incorp˜orating“all“c¸èhanges“recom-Ž¡mended–Nbš¸èy“readers).‘o'Please“con˜tact“me“if“y˜ou're“in˜terested“in“doing“a“translation:‘mûthat's“one“moGdication“IŽ¡can–U liv¸èe“with.Ž¦This–à¹doGcumenš¸èt“is“a˜v‘ÿqÐailable“for“free,–øand,“while–à¹I‘àœha˜v˜e“done“the“bGest“I‘àœcan“to“mak˜e“it“accurate“and“up“to“date,Ž¡I–U takš¸èe“no“respGonsibilit˜y“for“an˜y“problems“y˜ou“ma˜y“encoun˜ter“resulting“from“the“use“of“this“doGcumen˜t.Ž¦Ovv¸èero:Ž¦Questo–éúdoGcumenš¸èto“€è“sotto“il“cop˜yrigh˜t“di“1998-1999“b˜y“Giles“Orr.›0Siete“incoraggiati“a“ridistribuirlo.˜NonŽ¡p•Gotete›#omo“dicare˜questo˜do“cumen•¸èto˜(v“edete˜la˜sezione˜su˜come˜con“tattarmi:‘no˜ad˜ora˜ho˜incluso˜tuttiŽ¡cam•¸èbiamen“ti–ž¼raccomandati“dai“lettori).‘NUPš¸èer“piacere“con˜tattatemi“se“siete“in˜teressati“a“fare“una“traduzione:Ž¡€è–U una“mošGdica“c¸èhe“p˜osso“tollerare.Ž¦Questo–†ŸdošGcumen¸èto“€è“disp˜onibile“gratuitamenš¸ète“e,‘Òÿmen˜tre“ho“fatto“il“mio“meglio“pGer“renderlo“accurato“eŽ¡aggiornato,‘œnon–Z´mi“assumo“nessuna“respšGonsabilit€à“p˜er“alcun“problema“in“cui“vi“p˜ossiate“im¸èbattere“comeŽ¡risultato–U dell'uso“di“questo“doGcumen¸èto.ŽŸ(Àœ¿2Ž‘ÁBash–G\e“i“Prompt“BashŽŸèÂ2.1Ž‘¾Cosa–¸€è“BashŽ©Mª¹Discendenš¸ète–ƒdalla“Bourne“Shell,‘­Bash“€è“un“progetto“GNU,“la“"ÀB¹ourne“ÀA¹gain“ÀSH¹ell".‘+|€È‘‚ßl'in˜terfaccia“a“linea“diŽ¡comando–Zûstandard“su“molte“maccš¸èhine“Lin˜ux.‘Eccelle“in“in˜terattivit€à,‘nel“suppšGortare“mo˜dica,‘completamen¸ètoŽ¡e–&pricš¸èhiamo“della“linea“di“comando.‘åoSuppGorta“anc˜he“prompt“congurabili“-“molti“lo“sanno,‘ZÄma“non“sannoŽ¡quan¸èto–U si“pu€ò“fare.ŽŸ#ÃÂ2.2Ž‘¾Quali–¸sono“i“v‘ÿ@ an taggi“di“mo_údicare“il“prompt?Ž¦¹La–äŸmaggior“parte“dei“sistemi“Linš¸èux“hanno“un“prompt“predenito“in“un“colore“(di“solito“grigio)“c˜he“dice“ilŽ¡vš¸èostro–çcnome“uten˜te,‘ óil“nome“della“macc˜hina“su“cui“la˜v˜orate“e“qualc˜he“indicazione“sulla“directory“di“la˜v˜oroŽŽŽŒ‹PÆ Û_2 ý ~?Ÿ„€ÕÁGŽÀ2.‘ñ8Bash–Õe“i“Prompt“Bash’Nêƹ5ŽŽ ÕÁ ýV¯corren¸ète.‘`ŸQueste–ú*sono“tutte“informazioni“utili,‘#mma“si“pu€ò“fare“molto“di“pi€ù“con“il“prompt:‘»•ogni“genere“diŽ¤ ®informazione–Jpu€ò“essere“visualizzata“(nš¸èumero“di“tt˜y‘ÿ*¸,–ÌTora,“data,“carico–Jdella“macc˜hina,‘ÌTn˜umero“di“uten˜ti,Ž¡uptime–...)‘¨xe“il“prompt“pu€ò“utilizzare“colori“ANSI,“pšGer“farlo“apparire“in•¸èteressan“te,‘A]o–p˜er“fare“s€ì“c¸èhe“certeŽ¡informazioni–ÔÐsiano“eviden•¸èti.‘ð€È‘Ô¯anc“he–ÔÐpšGossibile“manip˜olare“la“barra“del“titolo“di“un“Xterm“p˜er“visualizzareŽ¡alcune–U di“queste“informazioni.Ž©# SÂ2.3Ž‘¾P• erc“h€é–¸darsi“tan te“noie?ŽŸMª¹Oltre–íšc¸èhe“essere“bšGello,‘¹€è“sp˜esso“utile“tenere“traccia“delle“informazioni“di“sistema.‘:ïUna“idea“c¸èhe“so“piace“aŽ¡molti–Œ‹€è“la“pGossibilit€à“di“mettere“su“maccš¸èhine“dieren˜ti“prompt“con“colori“dieren˜ti.‘ÁSe“a˜v˜ete“div˜ersi“XtermŽ¡apGerti–Ùcsu“maccš¸èhine“dieren˜ti,‘úso“se“tendete“a“dimen˜ticare“su“quale“macc˜hina“state“la˜v˜orando“e“a“cancellareŽ¡le–U sbagliati,“tro•¸èv“erete–U questa“un“ottima“maniera“pGer“ricordare“su“cš¸èhe“macc˜hina“vi“tro˜v‘ÿqÐate.Ž¦Â2.4Ž‘¾Il–¸Primo“P assoŽŸMª¹L'aspGetto–<ùdel“prompt“viene“conš¸ètrollato“dalla“v‘ÿqÐariabile“della“shell“PS1.‘isLe“con˜tin˜uazioni“di“un“comando“sonoŽ¡indicate–]#dalla“stringa“PS2,‘_#cš¸èhe“pu€ò“essere“moGdicata“con“esattamen˜te“gli“stessi“metošGdi“qui“discussi“-“p˜oic¸èh€éŽ¡conš¸ètrollarla–W€è“esattamen˜te“uguale“e“non“€è“altrettan˜to“"in˜teressan˜te",‘åmoGdic˜her€ò“primcipalmen˜te“la“stringaŽ¡PS1.›(Ci–Qásono“anc¸èhe“le“stringhe“PS3“e“PS4.˜Queste“non“vš¸èengono“mai“viste“dall'uten˜te“medio“-“si“v˜eda“la“paginaŽ¡di–Bmanš¸èuale“di“Bash“se“si“€è“in˜teressati“al“loro“scopGo).‘IåP˜er“mošGdicare“l'asp˜etto“del“prompt,‘¯Jdo•¸èv“ete‘Bcam“biareŽ¡la–x¢v‘ÿqÐariabile“PS1.‘ÜPš¸èer“fare“esp•Gerimen˜ti,‘Áƒp“otete–x¢cam˜biare“la“stringa“PS1“direttamen˜te“al“prompt“e“v˜edereŽ¡immediatamenš¸ète–É¢i“risultati“(questo“inuenza“solo“la“sessione“corren˜te“e“i“cam˜biamen˜ti“spariscono“quando“fateŽ¡log-out).‘EäSe–ÒKvš¸èolete“rendere“pGermanen˜te“un“cam˜biamen˜to“del“prompt,‘ìumoGdicate“il“le“/.bashrc“e“aggiungeteŽ¡l€ì–ù÷la“n•¸èuo“v‘ÿqÐa–ù÷denizione“di“PS1.‘SSe“a•¸èv“ete–ù÷pšGermessi“di“ro˜ot,‘ 3p˜otete“guardare“in“/etc/prole“e“mo˜dicare“la“lineaŽ¡"ÀPS1=¹".‘gÌSappiate–8c¸èhe“in“alcune“distribuzioni“(almeno“la“Redhat“5.1)“/etc/bashrc“resetta“le“stringhe“PS1“eŽ¡PS2.ŽŸؼPrima–ædi“cominciare,‘"‹€è“impGortanš¸ète“ricordare“c˜he“la“stringa“PS1“viene“salv‘ÿqÐata“nell'am˜bien˜te.‘\mSe“la“moGdicateŽ¡alla–t_linea“di“comando,‘|/il“prompt“camš¸èbier€à“di“conseguenza.‘Ï=Prima“di“fare“dei“cam˜biamen˜ti,‘|/pGotete“salv‘ÿqÐare“ilŽ¡prompt–U correnš¸ète“in“un'altra“v‘ÿqÐariabile“d'am˜bien˜te:Ž¤O¡‘óqLË ectt0900Å[giles@nikola–¹Ngiles]$“SAVE=$PS1Ž© Š=‘[giles@nikola‘¹Ngiles]$ŽŸsx¹Il–U prompt“pi€ù“semplice“sarebbGe“un“singolo“carattere,“come:Ž¡‘Å[giles@nikola–¹Ngiles]$“PS1=$Ž¦‘$lsŽ¦‘bin‘+êmailŽ¦‘$ŽŸsx¹Questo–Pxdimostra“il“mošGdo“migliore“p˜er“fare“esp˜erimen¸èti“con“semplici“prompt,‘Qgdigitarli“alla“linea“di“comando.ŽŸ ®Si–U noti“cš¸èhe“il“testo“digitato“dall'uten˜te“appare“immediatamen˜te“dopGo“il“prompt:‘q€io“preferisco“usareŽ¡‘Å$PS1="$‘¹N"Ž¦‘$‘¹NlsŽ¦‘bin‘+êmailŽ¦‘$ŽŸsx¹cš¸èhe–éinserisce“uno“spazio“dopGo“il“prompt,‘Nrendendolo“pi€ù“leggibile.‘ -XP˜er“ripristinare“il“prompt“originale,ŽŸ ®semplicemen•¸ète›U ric“hiamate˜la˜v‘ÿqÐariabile˜c“he˜a“v“ete˜salv‘ÿqÐato:ŽŽŽŒ‹`& Û_2 ý ~?Ÿ„€ÕÁGŽÀ2.‘ñ8Bash–Õe“i“Prompt“Bash’Nêƹ6ŽŽ ÕÁ ýV¯‘Å$‘¹NPS1=$SAVEŽ¤ Š=‘[giles@nikola‘¹Ngiles]$ŽŸ#ÃÂ2.5Ž‘¾Sequenza–¸di“Escap_úe“dei“Prompt“BashŽŸMª¹Vi–®«sono“molte“sequenze“di“escapGe“oerte“dalla“shell“Bash“da“inserire“nel“prompt.‘~"Dalla“pagina“di“man¸èualeŽŸ ®di–U Bash“2.02:Ž©´å‘ÅQuando–¹Neseguita“in“modalita“interattiva,“bash“mostra“il“promptŽ¡‘primario–¹Nquando“e“pronta“per“leggere“un“comando“e“il“promptŽ¡‘secondario–¹NPS2“quando“e“necessario“ulteriore“input“perŽ¡‘completare–¹Nil“comando.“Bash“permette“di“personalizzare“queste“stringheŽ¡‘di–¹Nprompt“inserendo“vari“caratteri“di“escape“speciali“che“vengonoŽ¡‘interpretati–¹Ncome“segue:Ž¡‘:$\a‘ž†il–¹Ncarattere“ASCII“beep“(07)Ž¡‘:$\d‘ž†la–¹Ndata“nel“formato“"Giorno-della-settimana“Mese“Data"Ž¡‘["F(e.g.,–¹N"Tue“May“26")Ž¡‘:$\e‘ž†un–¹Ncarattere“di“escape“ASCII“(033)Ž¡‘:$\h‘ž†l'hostname–¹Nfino“al“primo“`.'Ž¡‘:$\H‘ž†l'hostnameŽ¡‘:$\n‘ž†il–¹Ncarattere“"newline"Ž¡‘:$\r‘ž†il–¹Ncarattere“"carriage“return"Ž¡‘:$\s‘ž†il–¹Nnome“della“shell,“il“nome“base“di“$0Ž¡‘["F(la–¹Nparte“che“segue“lo“slash“finale)Ž¡‘:$\t‘ž†l'ora–¹Ncorrente“nel“formato“24-ore“HH:MM:SSŽ¡‘:$\T‘ž†l'ora–¹Ncorrente“nel“formato“12-ore“HH:MM:SSŽ¡‘:$\@‘ž†l'ora–¹Ncorrente“nel“formato“12-ore“am/pmŽ¡‘:$\u‘ž†lo–¹Nusername“dell'utente“correnteŽ¡‘:$\v‘ž†la–¹Nversione“di“bash“(e.g.,“2.00)Ž¡‘:$\V‘ž†la–¹Nrelease“di“bash,“versione“+“patchlevelŽ¡‘["F(e.g.,‘¹N2.00.0)Ž¡‘:$\w‘ž†la–¹Ndirectory“di“lavoro“correnteŽ¡‘:$\W‘ž†il–¹Nnome“di“base“della“directory“di“lavoro“correnteŽ¡‘:$\!‘ž†il–¹Nnumero“cronologico“(history“number)“di“questo“comandoŽ¡‘:$\#‘ž†il–¹Nnumero“di“questo“comandoŽ¡‘:$\$‘ž†se–¹Nl'UID“effettivo“e“0,“un“#,“altrimenti“un“$Ž¡‘:$\nnn‘+êil–¹Ncarattere“corrispondente“al“numero“ottale“nnnŽ¡‘:$\\‘ž†un‘¹NbackslashŽ¡‘:$\[‘ž†comuncia–¹Nuna“sequenza“di“caratteri“non“stampabili,“cheŽ¡‘["Fpotrebbero–¹Nessere“usati“per“inserire“una“sequenza“diŽ¡‘["Fcontrollo–¹Ndel“terminale“nel“promptŽ¡‘:$\]‘ž†termina–¹Nla“sequenza“di“caratteri“non“stampabiliŽŸؼ¹Con•¸ètin“uando–U da“do•¸èv“e›U a“v“ev‘ÿqÐamo˜in“terrotto:Ž¦‘Å[giles@nikola–¹Ngiles]$“PS1="\u@\h“\W>“"Ž¡‘giles@nikola–¹Ngiles>“lsŽ¡‘bin‘+êmailŽ¡‘giles@nikola‘¹Ngiles>ŽŸؼ¹Questo–,€è“simile“al“prompt“predenito“su“molte“distribuzioni“Lin•¸èux.‘[„V‘ÿ*¸olev“o–,un“apparenza“leggermen¸ète“dier-ŽŸ ®enš¸ète,–U cos€ì“l'ho“cam˜biato“a:ŽŽŽŒ‹n Û_2 ý ~?Ÿ„€ÕÁGŽÀ3.‘ñ8Comandi‘ÕEsterni’i´¹7ŽŽ ÕÁ ýV¯‘Ågiles@nikola–¹Ngiles>“PS1="[\t][\u@\h:\w]\$“"Ž¤ Š=‘[21:52:01][giles@nikola:~]$‘¹NlsŽ¡‘bin‘+êmailŽ¡‘[21:52:15][giles@nikola:~]$ŽŸ#ÃÂ2.6Ž‘¾Imp_úostare›¸P• ermanen“temen“te˜le˜Stringhe˜PS?ŽŸMª¹V‘ÿ*¸arie–çXpšGersone“e“distribuzioni“imp˜ostano“le“loro“stringhe“PS?“in“p˜osti“div¸èersi.‘ ((I‘æðp˜osti“pi€ù“com¸èuni“sonoŽ© ®/etc/prole,–U /etc/bashrc,“/.bash_prole“e“/.bashrc.‘q€Johan“Kullstam“(“¼johan19@idt.net“¹)“scriv¸èe:ŽŸ´å‘ÅLa–¹Nstringa“PS1“dovrebbe“essere“impostata“inŽ¡‘.bashrc.–¹Nquesto“perche“le“shell“bash“non“interattive“resettanoŽ¡‘PS1.–¹NLa“pagina“di“manuale“di“bash“dice“come“la“presenza“o“l'assenza“diŽ¡‘PS1–¹Ne“un“buon“modo“di“sapere“se“ci“si“trova“in“una“sessioneŽ¡‘bash–¹Ninterattiva“oppure“non-interattiva“(e.g.“uno“script).Ž¡¡‘Il–¹Nmodo“in“cui“mi“sono“accorto“di“questo“e“che“startx“eŽ¡‘uno–¹Nscript“bash.“Questo“significa“che“startx“annullera“ilŽ¡‘vostro–¹Nprompt.“Quando“impostate“PS1“in“.profile“(o“.bash_profile),Ž¡‘fate–¹Nlogin“alla“consolle,“fate“partire“X“con“startx,“il“vostro“PS1Ž¡‘viene–¹Nannullato“nel“processo“lasciandovi“con“il“prompt“predefinito.Ž¡¡‘Una–¹Nsoluzione“e“di“lanciare“xterm“e“rxvt“con“l'opzione“-ls“perŽ¡‘forzarli–¹Na“leggere“.profile.“Ma“ogni“volta“che“viene“invoca“una“shellŽ¡‘mediante–¹Nuno“shell-script“non“interativo“PS1“viene“perduto.“system(3)Ž¡‘usa–¹Nsh“-c“che“se“sh“e“bash“distruggeraŽ¡‘PS1.–¹NUn“modo“migliore“e“mettere“la“definizione“di“PS1“inŽ¡‘.bashrc–¹N.“questo“viene“letto“ogni“volta“bash“parte“ed“e“dove“leŽ¡‘cose–¹Ninterattive“-“come“PS1“-“dovrebbero“restare.Ž¡¡‘Quindi–¹Ndovrebbe“essere“sottolineato“che“PS1=..blabla..“dovrebbe“stareŽ¡‘in–¹N.bashrc“e“non“in“.profile.ŽŸؼ¹Ho–‡Yproš¸èv‘ÿqÐato“a“duplicare“il“problema“c˜he“spiega,‘Sçe“ne“ho“incon˜trato“uno“div˜erso:‘ Õñla“mia“v‘ÿqÐariabileŽ¦PR•¸èOMPT_COMMAND‘M:(c“he›MOMPT_COMMAND¹.˜Il˜con“ten“uto˜di˜questaŽ¦v‘ÿqÐariabile–U viene“eseguito“come“un“normale“comando“Bash“appGena“prima“c¸èhe“Bash“visualizzi“il“prompt.ŽŸ´å‘Å[21:55:01][giles@nikola:~]–¹NPS1="[\u@\h:\w]\$“"Ž¡‘[giles@nikola:~]–¹NPROMPT_COMMAND="date“+%H%M"Ž¡‘2155Ž¡‘[giles@nikola:~]‘¹NdŽ¡‘bin‘+êmailŽ¡‘2156Ž¡‘[giles@nikola:~]ŽŽŽŒ‹x• Û_2 ý ~?Ÿ„€ÕÁGŽÀ3.‘ñ8Comandi‘ÕEsterni’i´¹8ŽŽ ÕÁ ýV¯Ci€ò–ö?cš¸èhe“€è“accaduto“sopra“€è“c˜he“ho“cam˜biato“PS1“in“mošGdo“da“non“includere“pi€ù“la“sequenza“di“escap˜e“¸nÃt¹,Ž¤ ®cos€ì–rŸda“visualizzare“l'ora“in“un“formato“cš¸èhe“mi“piace“di“pi€ù.‘ÉüMa“l'ora“compare“in“una“linea“div˜ersa“dalŽ¡prompt.›Ã|Aggiustando–ptquesto“con“Ãecho–?¬-n“...˜¹(come–ptmostrato“sotto)“funziona“con“Bash“2.0+,‘wIma“sem¸èbraŽ¡non–u³funzonare“con“Bash“1.14.7:‘²¦apparen•¸ètemen“te–u³il“prompt“viene“ottenš¸èuto“in“maniera“dieren˜te“e“il“metoGdoŽ¡seguenš¸ète–U causa“una“so˜vrappGosizione“del“testo.Ž©´å‘Å2156Ž¤ Š=‘[giles@nikola:~]–¹NPROMPT_COMMAND="echo“-n“[$(date“+%H%M)]"Ž¡‘[2156][giles@nikola:~]$Ž¡‘[2156][giles@nikola:~]$‘¹NdŽ¡‘bin‘+êmailŽ¡‘[2157][giles@nikola:~]$–¹Nunset“PROMPT_COMMANDŽ¡‘[giles@nikola:~]ŽŸؼÃecho–?¬-n“...‘³Š¹con¸ètrolla–Îl'output“del“comando“Ãdate“¹e“sopprime“il“carattere“newline“nale,‘EúpGermettendo“alŽ¤ ®prompt–Îidi“apparire“tutto“su“una“riga.‘Ý\Alla“ne“ho“usato“il“comando“Ãunset“¹pGer“rim•¸èuo“v“ere–Îila“v‘ÿqÐariabileŽ¡d'am•¸èbien“te‘U PR“OMPT_COMMAND.ŽŸؼSi–U noti“cš¸èhe“uso“la“con˜v˜enzione“$(ó  b> cmmi10µ<¹comandoµ>¹)“pGer“la“sostituzione“dei“comandi:‘q€o˜vv˜ero:Ž¦‘Å$(date‘¹N+%H%M)ŽŸؼ¹signica–º"sostituisci“qui“l'output“del“comando“Àdate‘Ž|+%H%M¹".›] Questo“funziona“in“Bash“2.0+.˜In“qualc¸èheŽ¡vš¸èersione–Öpi€ù“v˜ecc˜hia“di“Bash,‘öTpreceden˜te“alla“1.14.7,‘öTpGotreste“do˜v˜ere“usare“i“bac˜kquote“(Ã`date‘?¬+%H%M`¹).‘ôdIŽ¡bacš¸èkquote–ä¨pGossono“essere“usati“in“Bash“2.0+,‘Šma“stanno“v˜enendo“via“via“rimpiazzati“in“fa˜v˜ore“di“$(),‘Šc˜heŽ¡si–à¬annida“meglio.›#Con•¸ètin“uer€ò–à¬ad“utilizzare“questa“con•¸èv“enzione–à¬in“questo“doGcumen¸èto.˜Se“state“usando“unaŽ¡v•¸èersione›•"preceden“te˜di˜Bash,‘¥"pGotete˜di˜solito˜sostituite˜dei˜bac“kquote˜do“v“e˜v“edete˜$().‘1†Se˜la˜sostituzione˜diŽ¡comandi–"a€è“preceduta“da“"¸n¹"“(cioG€è“¸n¹$(comando)“),‘,‡usate“dei“bacš¸èkslash“da˜v‘ÿqÐan˜ti“ad“en˜tram˜bi“i“bac˜kquote“(cioG€èŽ¡¸n¹'comando¸n¹'‘U ).ŽŸ#ÃÂ3.2Ž‘¾Comandi–¸Esterni“nel“PromptŽŸMª¹P•¸èotete›•šanc“he˜usare˜l'output˜di˜normali˜comandi˜Lin“ux˜direttamen“te˜nel˜prompt.‘2ïOvviamen“te,‘¥¹non˜do“vreteŽ¡inserire–}molto“materiale“altrimenš¸èti“creer€à“un“prompt“molto“grande.‘êDo˜vrete“anc˜he“inserire“un“comandoŽ¡Àv®>eloQÂce¹,‘õØpGerc•¸èh€é›Þv“err€à˜eseguito˜ogni˜v“olta˜c“he˜il˜prompt˜appare˜sullo˜sc“hemo˜e˜ritardi˜nell'apparire˜del˜promptŽ¡menš¸ètre–Ástate“la˜v˜orando“pGossono“essere“molto“fastidiosi.‘¶÷(Dieren˜temen˜te“dall'esempio“preceden˜te,‘¼a“cuiŽ¡assomiglia–U molto,“questo“funziona“anc¸èhe“con“Bash“1.14.7).Ž¦‘Å[21:58:33][giles@nikola:~]$–¹NPS1="[\$(date“+%H%M)][\u@\h:\w]\$“"Ž¤ Š=‘[2159][giles@nikola:~]$‘¹NlsŽ¡‘bin‘+êmailŽ¡‘[2200][giles@nikola:~]$ŽŸؼ¹€È‘(impGortanš¸ète–Vnotare“il“bac˜kslash“prima“del“segno“dollaro“della“sostituzione“di“comando.‘‚!Senza“di“esso,‘1cilŽ¤ ®comando–óÌesterno“viene“eseguito“esattamenš¸ète“una“v˜olta:‘@Öquando“la“stringa“PS1“viene“letta“nell'am˜bien˜te.‘QP˜erŽ¡questo–ÙIprompt,‘úSci€ò“signic¸èherebbšGe“mostrare“lo“stesso“orario“indip˜enden•¸ètemen“te–ÙIda“quan¸èto“il“prompt“vieneŽ¡utilizzato.‘S Il–õ£bacš¸èkslash“protegge“il“con˜ten˜uto“di“$()“dall'in˜terpretazione“immediata“della“shell,‘Äcos€ì“"date"Ž¡viene–U cš¸èhiamato“ogni“v˜olta“c˜he“il“prompt“viene“generato.ŽŸؼLinš¸èux–õjviene“fornito“con“molti“piccoli“programmi“di“utilit€à“come“Àdate¹,–}Àgrep¹,“o–õjÀw®>c“¹c˜he“consen˜tono“di“ma-Ž¡nipGolare–œÍinformazioni.‘H‡Se“vi“troš¸èv‘ÿqÐate“a“creare“complesse“com˜binazioni“di“questi“programmi“all'in˜terno“di“unŽ¡prompt,‘Z%p•Gotrebb“e–Y$essere“pi€ù“semplice“fare“vš¸èoi“stessi“uno“shell“script“e“c˜hiamarlo“dal“prompt.‘}ŒP˜er“assicurareŽŽŽŒ‹ ƒ- Û_2 ý ~?Ÿ„€ÕÁGŽÀ3.‘ñ8Comandi‘ÕEsterni’i´¹9ŽŽ ÕÁ ýV¯cš¸èhe–XÁle“v‘ÿqÐariabili“della“shell“siano“espanse“al“momen˜to“giusto“negli“shell“script“bash“sono“spGesso“necessarieŽ¤ ®delle–ösequenze“di“escapGe“(come“visto“sopra“con“il“comando“Ãdate¹):‘³?questo“viene“elev‘ÿqÐato“ad“un“altro“liv¸èelloŽ¡all'in¸èterno–U della“linea“del“prompt“PS1“ed“evitare“ci€ò“creando“degli“shell“script“€è“una“buona“idea.ŽŸؼUn–U esempio“di“un“piccolo“shell“script“usato“all'in¸èterno“di“un“prompt“viene“dato“a“seguire:Ž©´å‘Å#!/bin/bashŽ¤ Š=‘#‘ž†lsbytesum–¹N-“somma“il“numero“di“byte“in“un“elenco“di“directoryŽ¡‘TotalBytes=0Ž¡‘for–¹NBytes“in“$(ls“-l“|“grep“"^-"“|“cut“-c30-41)Ž¡‘doŽ¡‘+å:let‘¹NTotalBytes=$TotalBytes+$BytesŽ¡‘doneŽ¡‘TotalMeg=$(echo–¹N-e“"scale=3“\n$TotalBytes/1048576“\nquit"“|“bc)Ž¡‘echo–¹N-n“"$TotalMeg"ŽŸؼ¹A‘ÑNvš¸èolte–Ñol'ho“usato“come“una“funzione“(molto“pi€ù“ecien˜te“-“sfortunatamen˜te,‘ëÆspiegare“in“dettaglio“le“funzioniŽ¤ ®v‘ÿqÐa–h2oltre“lo“scopšGo“di“questo“do˜cumen¸èto),›l÷altre“come“uno“shell“script“nella“mia“directory“/bin,˜c¸èhe“€è“nel“mioŽ¡path.‘q€Usata–U in“un“prompt:Ž¦‘Å[2158][giles@nikola:~]$–¹NPS1="[\u@\h:\w“(\$(lsbytesum)“Mb)]\$“"Ž¤ Š=‘[giles@nikola:~–¹N(0“Mb)]$“cd“/binŽ¡‘[giles@nikola:/bin–¹N(4.498“Mb)]$ŽŸ#ÃÂ3.3Ž‘¾Cosa–¸Mettere“nel“PromptŽŸMª¹A‘þã vrete–Ãnotato“cš¸èhe“io“metto“il“nome“della“macc˜hina,‘Œìl'ora“e“la“directory“corren˜te“nella“maggioranza“dei“mieiŽ¤ ®prompt.‘RcAš¸èd–÷Éeccezione“dell'ora“queste“sono“cose“molto“standard“da“mettere“nel“prompt,‘ tl'ora“€è“l'aggiun˜ta“pi€ùŽ¡comš¸èune–?õdopGo“queste.‘jrMa“cosa“includere“nel“prompt“€è“in˜teramen˜te“una“questione“di“gusto“pGersonale.‘jrQuestiŽ¡sono–U esempi“da“pšGersone“c¸èhe“conosco“p˜er“aiutare“a“darvi“delle“idee.ŽŸؼIl–U prompt“di“Dan“€è“minimale“ma“ecace,“particolarmen¸ète“pšGer“via“del“mo˜do“in“cui“funziona.Ž¦‘Å[giles@nikola:~]$–¹Ncur_tty=$(tty“|“sed“-e“"s/.*tty\(.*\)/\1/")Ž¤ Š=‘[giles@nikola:~]$–¹Necho“$cur_ttyŽ¡‘p4Ž¡‘[giles@nikola:~]$–¹NPS1="\!,$cur_tty,\$?\$“"Ž¡‘1095,p4,0$ŽŸؼ¹A‘–ÌDan––ünon“piace“a•¸èv“ere––üla“directory“correnš¸ète“c˜he“pu€ò“ridimensionare“drasticamen˜te“il“prompt“come“ci“si“m˜uo˜v˜eŽ¤ ®nell'albGero–¦Udelle“directory‘ÿ*¸,‘º£cos€ì“ne“tiene“traccia“a“menš¸ète“(o“digita“"p˜wd").‘e Lui“ha“imparato“Unix“con“csh“eŽ¡tcsh,›·~cos€ì–£Ñusa“molto“la“command“history“(qualcosa“c¸èhe“molti“di“noi,˜viziati“da“bash,˜non“facciamo),˜cos€ì“laŽ¡prima–dõcosa“nel“prompt“€è“l'history“n•¸èum“bGer.‘ þLa–dõseconda“cosa“sono“i“caratteri“signicativi“del“tt¸èy“(l'output“diŽ¡"ttš¸èy"–13viene“tagliato“con“sed),‘8buna“cosa“c˜he“pu€ò“essere“utile“pGer“gli“utilizzatori“di“"screen".‘e†La“terza“cosa“€è“ilŽ¡v‘ÿqÐalore–bdi“uscita“dell'ultimo“comando/pipGeline“(si“noti“cš¸èhe“questo“viene“reso“in˜utile“da“ogni“comando“eseguitoŽ¡all'in¸èterno–ªdel“prompt“-“pšGotreste“p˜er€ò“ottenerlo“salv›ÿqÐando“il“v˜alore“in“una“v˜ariabile“e“rimettendolo“pšGoi“a“p˜osto).Ž¡In–pšne,‘wylo“"¸n¹$"“€è“un“carattere“dollaro“pGer“un“normale“utenš¸ète“e“cam˜bia“in“un“cancelletto“("#")“se“l'uten˜te“€èŽ¡roGot.ŽŸؼT‘ÿ*¸orbšGen–¬•Fjerdingstad“ha“scritto“p˜er“dirmi“c¸èhe“sp˜esso“sosp˜ende“dei“job“e“p˜oi“se“ne“dimen¸ètica,‘ÎKcos€ì“usa“il“promptŽ¡pšGer–U ricordarsi“dei“job“sosp˜esi:Ž¦‘Å[giles@nikola:~]$–¹Nfunction“jobcount“{ŽŽŽŒ‹ ’ Û_2 ý ~?Ÿ„€ÕÁGŽÀ3.‘ñ8Comandi‘ÕEsterni’d´o¹10ŽŽ ÕÁ ýV¯‘Å>–¹Njobs|wc“-l|“awk“'{print“$1}'Ž¤ Š=‘>‘¹N}Ž¡‘[giles@nikola:~]$–¹Nexport“PS1='\W[`jobcount`]#“'Ž¡‘giles[0]#–¹Nman“ls“&Ž¡‘[1]‘¹N4150Ž¡¡‘[1]+‘ rœStopped–¹N(tty“output)‘å8man“lsŽ¡‘giles[1]#ŽŸؼ¹T‘ÿ*¸orbšGen–‚usa“Àa®>wk“¹p˜er“togliere“gli“spazi“vuoti“dall'output“di“w•¸èc,‘¬>men“tre–‚io“a¸èvrei“usato“sed“oppure“tr“-“non“p˜erc¸èh€éŽ¤ ®siano–a,meglio,‘d/ma“pGercš¸èh€é“mi“sono“pi€ù“familiari.‘•£Vi“sono“probabilmen˜te“anc˜he“altri“mo•Gdi.‘•£T‘ÿ*¸orb“en–a,delimita“laŽ¡stringa–?ÛPS1“con“apGostro“(single“quote),‘Dquesto“evita“cš¸èhe“Bash“in˜terpreti“immediatamen˜te“i“bac˜kquote,‘Dcos€ìŽ¡lui–U non“dev¸èe“farli“precedere“da“"¸n¹"“come“ho“menzionato.Ž©ؼÀNOT‘ÿ ºA:–¡Ö¹C'€è“un“noto“bug“in“Bash“2.02“cš¸èhe“fa“s€ì“c˜he“il“comando“Àjobs“¹(in˜tegrato“nella“shell)“non“restituiscaŽ¡nš¸èulla–ísad“un“pipGe.‘NñSe“pro˜v‘ÿqÐate“quan˜to“sopra“con“Bash“2.02,‘/otterrete“sempre“"0"“indipGenden˜temen˜te“da“quan˜tiŽ¡job›U a•¸èv“ete˜sospGesi.‘q€Chet˜Ramey‘ÿ*¸,˜uno˜dei˜man“uten“tori˜di˜Bash,˜mi˜dice˜c“he˜questo˜sar€à˜corretto˜in˜v2.03.ŽŸ#ÃÂ3.4Ž‘¾Am• bien“te–¸e“F‘þàunzioni“BashŽŸMª¹Come–§menzionato“prima,–RIPS1,“PS2,“PS3,“PS4–§e“PRš¸èOMPT_COMMAND‘ssono“tutti“salv‘ÿqÐati“nell'am˜bien˜teŽ¡Bash.‘ô%Pš¸èer–Öquelli“di“noi“c˜he“hanno“preceden˜te“espšGerienza“con“DOS,“l'idea“di“maneggiare“grosse“p˜orzioni“diŽ¡coGdice›eTnell'am•¸èbien“te˜€è˜terrican“te,‘iapGerc“h€è˜l'am“bien“te˜DOS‘eOera˜piccolo˜e˜proprio˜non˜crescev‘ÿqÐa˜bGene.‘¢Vi˜sonoŽ¡probabilmenš¸ète–Mlimiti“pratici“su“cosa“pu€ò“e“cosa“do˜vrebbGe“essere“messo“nell'am˜bien˜te,‘Oma“non“so“quali“siano;Ž¡stiamo–probabilmenš¸ète“parlando“di“un“paio“di“ordini“di“grandezza“in“pi€ù“di“quan˜to“gli“uten˜ti“DOS‘~»sianoŽ¡abituati.‘q€Come–U dice“Dan:Ž¦"Nella–(mia“shell“inš¸èterattiv‘ÿqÐa“ho“62“alias“e“25“funzioni.‘bvLa“mia“regola“generale“€è“c˜he“se“ho“bisogno“di“qualcosaŽ¡solamenš¸ète–‹pGer“uso“in˜terattiv˜o“e“pu€ò“essere“scritta“in“bash“ne“faccio“una“funzione“(presumendo“c˜he“non“pGossaŽ¡essere–Éçespressa“facilmenš¸ète“con“un“alias).‘CSe“queste“pGersone“hanno“problemi“di“memoria“non“do˜vrebbGero“usareŽ¡bash.‘KîBash–ï€è“uno“dei“programmi“pi€ù“grossi“cš¸èhe“faccio“girare“nella“mia“Lin˜ux“bGo˜x“(a“parte“Oracle).‘KîLanciaŽ¡top–Òqualcš¸èhe“v˜olta“e“premi“'M'‘ÑðpšGer“ordinare“p˜er“memoria“o˜ccupata“-“vš¸èedrai“quan˜to“bash“€è“vicino“alla“cimaŽ¡della–U lista.›q€Caspita,“€è“pi€ù“grosso“di“sendmail!˜D€ì“loro“di“prendere“qualcosa“come“ash".Ž¦Credo–$qc¸èhe“quel“giorno“stesse“usando“solo“la“consolle:‘Y)girando“X‘$ee“le“applicazioni“X,“ho“molte“cose“pi€ù“grosseŽ¡di–U Bash.›q€Ma“l'idea“€è“la“stessa:˜l'am•¸èbien“te–U €è“qualcosa“da“utilizzare“senza“preošGccuparsi“di“riempirlo“tropp˜o.Ž¦Risc¸èhio–9—la“censura“da“parte“dei“guru“di“Unix“quando“dico“questo“(pšGer“crimine“di“ip˜ersemplicazione):‘:nleŽ¡funzioni–_Âsono“in“pratica“piccoli“shell“script“cš¸èhe“v˜engono“caricati“nell'am˜bien˜te“pGer“motivi“di“ecienza.‘¶CitandoŽ¡ancora–xDan:‘æ1"Le“funzioni“shell“sono“ecienš¸èti“quan˜to“pi€ù“pGossibile.‘ ‰Approssimativ‘ÿqÐamen˜te“€è“l'equiv‘ÿqÐalen˜te“diŽ¡eseguire–z`uno“shell“script“bash/bšGourne“eccetto“c¸èhe“nessun“I/O‘zWdi“le“€è“necessario“p˜erc¸èh€é“la“funzione“€è“gi€à“inŽ¡memoria.‘4æLe–ŸQfunzioni“shell“sono“tipicamenš¸ète“caricate“da“.bashrc“o“.bash_prole“a“seconda“c˜he“le“si“v˜oglia“soloŽ¡nella–›Cshell“iniziale“o“ancš¸èhe“nelle“sottoshell.‘CéSe“confron˜ti“questo“con“l'esecuzione“di“uno“shell“script:‘ýÆla“shellŽ¡fa–>;un“fork,›BÏil“proGcesso“glio“apre“il“le“e“fa“un“exec,˜pGotenzialmen¸ète“il“path“viene“esaminato,˜il“k¸èernel“apre“ilŽ¡le–A3e“esamina“sucienš¸èti“b˜yte“da“determinare“come“eseguire“il“le,‘E/nel“caso“di“uno“shell“script“una“shell“dev˜eŽ¡essere–kaš¸èvviata“con“il“nome“dello“script“come“argomen˜to,›pœla“shell“allora“apre“il“le,˜legge“e“esegue“i“comandi.Ž¡Div•¸èersamen“te,›Ê°con–¨una“funzione“shell,˜tutto“fuorcš¸èh€é“l'esecuzione“dei“comandi“pu€ò“essere“considerato“o˜v˜erheadŽ¡non‘U necessario".ŽŽŽŒ‹   Û_2 ý ~?Ÿ„€ÕÁGŽÀ4.‘ñ8ManipQÂolazioni–Õdella“Barra“del“Titolo“di“Xterm’Ïî¹11ŽŽ ÕÁ ýV¯¿4Ž‘ÁManippœolazioni–G\della“Barra“del“Titolo“di“XtermŽŸ¿:¹P¸èosso–‚essere“usate“dele“sequenze“di“escapšGe“non“stampabili“p˜er“pro˜durre“eetti“in•¸èteressan“ti–‚nei“prompt.‘ø!P¸èerŽ¤ ®usare–»—queste“sequenze“di“escapGe,›Õ5do•¸èv“ete–»—includerle“fra“¸nÀ[“¹e“¸nÀ]¹,˜dicendo“a“Bash“di“ignorare“questo“materialeŽ¡nel–‡calcolare“la“dimensione“del“prompt.‘ Se“non“si“includono“questi“delimitatori“si“fa“in“moGdo“c¸èhe“il“cursoreŽ¡appaia–Ë›nel“pšGosto“sbagliato“p˜erc¸èh€é“la“sua“eettiv‘ÿqÐa“dimensione“€è“sconosciuta.‘ÔðLe“sequenze“di“escap˜e“dev¸èonoŽ¡ancš¸èhe–úÙessere“precedute“da“¸nÀ033[“¹prima“della“v˜ersione“2“di“Bash“oppure“da“¸nÀ033[“¹o“¸nÀe[“¹in“v˜ersioni“successiv˜e.Ž©ؼSe– ãcercate“di“cam¸èbiare“la“barra“del“titolo“dell'Xterm“con“il“prompt“quando“siete“alla“consolle,‘<proGdurreteŽ¡spazzatura.‘] Pš¸èer–¼evitare“questo,‘$testate“la“v‘ÿqÐariabile“d'am˜bien˜te“XTERM‘¬pšGer“sap˜ere“se“il“prompt“si“tro•¸èv“er€à‘¼inŽ¡un‘U Xterm.ŽŸ´å‘Åfunction‘¹NpromlŽ¤ Š=‘{Ž¡‘case–¹N$TERM“inŽ¡‘+å:xterm*)Ž¡‘>Êrlocal‘¹NTITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘>Êr;;Ž¡‘+å:*)Ž¡‘>Êrlocal‘¹NTITLEBAR=''Ž¡‘>Êr;;Ž¡‘esacŽ¡¡‘PS1="${TITLEBAR}\Ž¡‘[\$(date‘¹N+%H%M)]\Ž¡‘[\u@\h:\w]\Ž¡‘\$‘¹N"Ž¡‘PS2='>‘¹N'Ž¡‘PS4='+‘¹N'Ž¡‘}ŽŸؼ¹Questa–ƒ2€è“una“funzione“c¸èhe“pu€ò“essere“incorpšGorata“in“/.bashrc.‘ûµIl“nome“della“funzione“p˜otrebb˜e“quindiŽ¤ ®essere–e#c¸èhiamato“pGer“eseguire“la“funzione.‘¡ŠLa“funzione,›©$come“la“stringa“PS1,˜viene“salv‘ÿqÐata“nell'am•¸èbien“te.Ž¡Una–Dvš¸èolta“c˜he“la“stringa“PS1“viene“impšGostata“dalla“funzione,‘$pp˜otete“rim•¸èuo“v“ere–Dla“funzione“dall'am•¸èbien“te‘DconŽ¡Ãunset‘?¬proml¹.‘–Dal–aRmomenš¸èto“c˜he“il“prompt“non“pu€ò“cam˜biare“da“quando“sta“in“un“Xterm“a“quando“sta“allaŽ¡consolle,‘!Åla–îv‘ÿqÐariabile“TERM‘Ýnon“viene“testata“ogni“vš¸èolta“c˜he“il“prompt“viene“generato.‘\Ho“usato“i“marcatoriŽ¡di›·con•¸ètin“uazione˜(i˜bac“kslash)˜nella˜denizione˜del˜prompt,‘›ÝpGer˜consen“tire˜di˜scriv“erlo˜su˜pi€ù˜righe.‘EQuestoŽ¡migliora–U la“leggibilit€à“rendendo“pi€ù“facile“moGdicarlo“e“fare“un“debug.Ž¦Lo–¤Ìdenisco“come“una“funzione“pGercš¸èh€é“cos€ì“€è“come“il“pacc˜hetto“Bashprompt“(discusso“pi€ù“a˜v‘ÿqÐan˜ti“in“questoŽ¡došGcumen¸èto)–íõtratta“i“prompt:‘£)non“€è“la“sola“maniera“di“farlo,‘*ma“funziona“b˜ene.‘;þVia“via“cš¸èhe“i“prompt“c˜heŽ¡utilizzate›äúdiv•¸èen“tano˜pi€ù˜complessi,‘ûhdiv“en“ta˜sempre˜pi€ù˜scon“v“enien“te˜digitarli˜al˜prompt˜e˜pi€ù˜pratico˜metterliŽ¡in–Équalc¸èhe“sorta“di“le“di“testo.‘ÍPIn“questo“caso,›æ pGer“testare“questo“prompt,˜salv‘ÿqÐate“quendo“sopra“come“unŽ¡le–U di“testo“cš¸èhiamato“"proml".‘q€pGotete“la˜v˜orare“come“segue:ŽŸ´å‘Å[giles@nikola:/bin–¹N(4.498“Mb)]$“cd‘ž†->“Andate“dove“volete“salvare“il“promptŽ¤ Š=‘[giles@nikola:~–¹N(0“Mb)]$“vi“proml‘WÔ->“Modificate“il“file“del“promptŽ¡‘...’ªø->–¹NInserite“il“testo“dato“sopraŽ¡‘[giles@nikola:~–¹N(0“Mb)]$“source“proml‘ rœ->“Leggete“la“funzione“del“promptŽ¡‘[giles@nikola:~–¹N(0“Mb)]$“proml‘*ƒ¾->“Eseguite“la“funzione“del“promptŽŸؼ¹Il–=Æprimo“passo“nel“creare“questo“prompt“€è“di“conš¸ètrollare“se“la“shell“c˜he“stiamo“facendo“partire“€è“in“un“xtermŽŸ ®o–rXno:‘«ïse“lo“€è,‘y¥la“v‘ÿqÐariabile“della“shell“($¸f¹TITLEBAR¸g¹)“viene“denita.‘É'Essa“consiste“delle“sequenze“di“escapGeŽŽŽŒ‹ ° Û_2 ý ~?Ÿ„€ÕÁGŽÀ5.‘ñ8Sequenze–Õdi“escapQÂe“ANSI:“Colori“e“Mo•®>vimen“ti–Õdel“Cursore’’m«¹12ŽŽ ÕÁ ýV¯appropriate–ue“¸nÀu@¸nÀh:¸nÀw¹,‘!dcš¸èhe“mettono“µ<¹uten˜teµ>¹@µ<¹macc˜hinaµ>¹:µ<¹directory“di“la˜v˜oroµ>“¹nella“barra“del“titoloŽ¤ ®di–F£Xterm.‘l¬Questo“€è“particolarmenš¸ète“utile“con“Xterm“minimizzati,‘I‰rendendoli“iden˜ticabili“pi€ù“rapidamen˜te.Ž¡Il–>šresto“del“materiale“in“questo“prompt“doš¸èvrebbGe“essere“gi€à“noto“dai“preceden˜ti“prompt“c˜he“abbiamo“creato.Ž©ؼIl–Zsolo“incon•¸èv“enien“te–Zdi“manipšGolare“la“barra“dell'Xterm“in“questo“mo˜do“a¸èvviene“quando“vi“loggate“in“unŽ¡sistema–’ösu“cui“non“a•¸èv“ete–’öpredispGosto“il“truccš¸èhetto“della“barra“del“titolo:‘í-l'Xterm“con˜tin˜uer€à“a“mostrareŽ¡l'informazione–U del“preceden¸ète“sistema“su“cui“c'era“il“trucco.ŽŸ(Àœ¿5Ž‘ÁSequenze–G\di“escappœe“ANSI:“Colori“e“Mo•cvimen“ti–G\del“CursoreŽŸèÂ5.1Ž‘¾ColoriŽŸMª¹Come–¢Smenzionato“prima,‘µ i“caratteri“di“escapGe“non“stampabili“devš¸èono“essere“racc˜hiusi“da“¸nÀ[¸nÀ033[“¹e“¸nÀ]¹.‘YP˜erŽ¡le–U sequenze“di“escapGe,“devš¸èono“anc˜he“essere“seguiti“da“Àm“¹min˜uscola.Ž¦Se–Ülproš¸èv‘ÿqÐate“i“prompt“seguen˜ti“in“un“xterm“e“tro˜v‘ÿqÐate“c˜he“non“v˜edete“i“colori“menzionati,‘þ?con˜trollate“nel“leŽ¡/.Xdefaults–rG(e“pGossibilmenš¸ète“gli“altri“con“simile“funzione)“le“linee“come“"XT–ÿ*¸erm*F“oreground:‘«ÏBlanc˜hedAl-Ž¡mond".‘-Questo–´Zpu€ò“essere“commenš¸ètato“mettendo“un“pun˜to“esclamativ˜o“("!")“da˜v‘ÿqÐan˜ti.‘-Ovviamen˜te“questoŽ¡dipGender€à–uðancš¸èhe“da“c˜he“em˜ulatore“di“terminale“state“usando.‘ÓðQuesto“€è“il“pGosto“pi€ù“probabile“in“cui“i“coloriŽ¡del–U v¸èostro“terminale“pšGossono“essere“reimp˜ostati.Ž¦P¸èer–U includere“del“testo“blu“nel“prompt:Ž©´å‘ÅPS1="\[\033[34m\][\$(date–¹N+%H%M)][\u@\h:\w]$“"ŽŸؼ¹Il–rÍproblema“con“questo“prompt“€è“cš¸èhe“il“colore“blu“c˜he“inizia“con“il“coGdice-colore“34“non“viene“mai“cam˜biatoŽ¡n•¸èuo“v‘ÿqÐamen“te–†\al“normale“colore,‘’«cos€ì“il“testo“digitato“dopGo“il“prompt“€è“ancora“nel“colore“del“promot.‘3QuestaŽ¡€è–U una“tonalit€à“di“blu“scura,“unendola“con“il“cošGdice“ÀbQÂold“¹(grassetto)“p˜otrebb˜e“aiutare:Ž¦‘ÅPS1="\[\033[1;34m\][\$(date–¹N+%H%M)][\u@\h:\w]$\[\033[0m\]“"ŽŸؼ¹Il–uprompt“€è“ora“blu“cš¸èhiaro“e“termina“cam˜biando“il“colore“n˜uo˜v‘ÿqÐamen˜te“a“n˜ulla“(quale“c˜he“fosse“il“colore“diŽ¡primo–U piano“cš¸èhe“a˜v˜ev‘ÿqÐate“prima)ŽŸؼQuesto–U sono“i“restan¸èti“v‘ÿqÐalori“dei“colori:Ž¦‘ÅNero‘3öZ0;30‘ž†Grigio‘¹NScuro‘ rœ1;30Ž¤ Š=‘Blu‘8¯¨0;34‘ž†Blu‘¹NChiaro‘å81;34Ž¡‘Verde‘/= 0;32‘ž†Verde‘¹NChiaro‘ rœ1;32Ž¡‘Ciano‘/= 0;36‘ž†Ciano‘¹NChiaro‘ rœ1;36Ž¡‘Rosso‘/= 0;31‘ž†Rosso‘¹NChiaro‘ rœ1;31Ž¡‘Viola‘/= 0;35‘ž†Viola‘¹NChiaro‘ rœ1;35Ž¡‘Marrone–%Êp0;33‘ž†Giallo“1;33Ž¡‘Grigio‘¹NChiaro‘ rœ0;37‘ž†Bianco‘%Êp1;37ŽŸؼ¹P•¸èotete›ÖÉanc“he˜imp•Gostare˜i˜colori˜dello˜sfondo˜usando˜44˜p“er˜uno˜sfondo˜blu,‘ð41˜p“er˜uno˜sfondo˜rosso,‘ðecc.‘GcNonŽ¤ ®ci–ùIsono“colori“dello“sfondo“in“grassetto“(bGold).‘]úPš¸èossono“essere“usate“delle“com˜binazioni,‘"Scome“testo“RossoŽ¡Chiaro–Û.su“uno“sfondo“Blu:‘4‡¸nÀ[¸nÀ033[44;1;31m¸nÀ]¹,‘ó’sebbšGene“imp˜ostare“i“colori“separatamenš¸ète“sem˜bra“funzionareŽ¡meglio–ºÃ(ciošG€è“¸nÀ[¸nÀ033[44m¸nÀ]¸nÀ[¸nÀ033[1;31m¸nÀ]¹).‘¢jGli“altri“co˜dici“disp˜onibili“includono“4:‘<ÆSottolineatura,‘,5:Ž¡LmpGeggian•¸ète,›U 7:‘q€Negativ“o,˜e˜8:‘q€Nascosto.ŽŸؼÀIn‘{Ôoltre:‘“x¹Molti–æ(incluso“me“stesso)“si“oppGongono“fermamenš¸ète“all'attributo“"blink".‘$tF‘ÿ*¸ortunatamen˜te,‘ [nonŽ¡funziona–in“ogni“emš¸èulatore“di“terminale“c˜he“conosco“-“ma“funziona“alla“consolle.‘®WE,“se“vi“state“c˜hieden˜toŽŽŽŒ‹ ¾{ Û_2 ý ~?Ÿ„€ÕÁGŽÀ5.‘ñ8Sequenze–Õdi“escapQÂe“ANSI:“Colori“e“Mo•®>vimen“ti–Õdel“Cursore’’m«¹13ŽŽ ÕÁ ýV¯(come–qho“fatto“io)“"A‘>cosa“serv¸èe“un“attributo“'Nascosto'‘`?!"“-“l'ho“visto“usato“in“un“esempio“di“uno“shellŽ¤ ®script–U (non“un“prompt)“pšGer“p˜ermettere“di“digitare“una“passwš¸èord“senza“visualizzarla“sullo“sc˜hermo.ŽŸؼBasato–Îsu“un“prompt“cš¸èhiamato“"elite2"“nel“pacc˜hetto“Bashprompt“(c˜he“ho“mošGdicato“p˜er“funzionare“meglioŽ¡su–@3una“consolle“standard,‘z÷piuttosto“cš¸èhe“con“i“fon˜t“spGeciali“di“xterm“ric˜hiesti“pGer“v˜edere“bGene“l'originale),Ž¡questo–U €è“un“prompt“c¸èhe“ho“usato“molto:Ž©^O¤ Š=‘Åfunction‘¹NeliteŽ¡‘{Ž¡¡‘local‘¹NGRAY="\[\033[1;30m\]"Ž¡‘local‘¹NLIGHT_GRAY="\[\033[0;37m\]"Ž¡‘local‘¹NCYAN="\[\033[0;36m\]"Ž¡‘local‘¹NLIGHT_CYAN="\[\033[1;36m\]"Ž¡¡‘case–¹N$TERM“inŽ¡‘+å:xterm*)Ž¡‘>Êrlocal‘¹NTITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘>Êr;;Ž¡‘+å:*)Ž¡‘>Êrlocal‘¹NTITLEBAR=""Ž¡‘>Êr;;Ž¡‘esacŽ¡¡‘local–¹NGRAD1=$(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–¹N+%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‘¹N"Ž¡‘PS2="$LIGHT_CYAN-$CYAN-$GRAY-$LIGHT_GRAY‘¹N"Ž¡‘}ŽŸ‚&¹Io–küdenisco“i“colori“come“v‘ÿqÐariabili“tempšGoranee“della“shell“p˜er“leggibilit€à.›¶€È‘k÷pi€ù“facile“la•¸èv“orarci.˜La‘küv‘ÿqÐariablieŽ¤ ®"GRAD1"–üÈ€è“un“conš¸ètrollo“pGer“determinare“in“c˜he“terminale“ci“si“tro˜v‘ÿqÐa,‘scome“il“con˜trollo“pGer“determinare“se“ciŽ¡si–Ctroš¸èv‘ÿqÐa“su“un“Xterm,‘<€è“sucien˜te“farlo“una“sola“v˜olta.‘VáIl“prompt“c˜he“v˜edrete“ha“questo“aspGetto,‘vimen“ti–Õdel“Cursore’’m«¹14ŽŽ ÕÁ ýV¯Ã#‘¿mostrare–?¬quali“sono“disponibili.“Ogni“linea“e`“un“colore“su“sfondoŽ¤ ®#‘¿nero–?¬o“grigio,“con“il“colore“nel“mezzo.“E`“verificato“che“funziona“conŽ¡#‘¿sfondo–?¬bianco,“nero“e“verde“(2“dic“98).Ž¡#Ž¡echo–?¬"‘ XOn“Light“Gray:‘)ý`On“Black:"Ž¡echo–?¬-e“"\033[47m\033[1;37m‘ XWhite‘)ý`\033[0m\Ž¡–?¬1;37m“\Ž¡\033[40m\033[1;37m‘ XWhite‘)ý`\033[0m"Ž¡echo–?¬-e“"\033[47m\033[37m‘ XLight“Gray‘¿\033[0m\Ž¡‘¿37m‘?¬\Ž¡\033[40m\033[37m‘ XLight‘?¬Gray‘¿\033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;30m‘ XGray‘/= \033[0m\Ž¡–?¬1;30m“\Ž¡\033[40m\033[1;30m‘ XGray‘/= \033[0m"Ž¡echo–?¬-e“"\033[47m\033[30m‘ XBlack‘)ý`\033[0m\Ž¡‘¿30m‘?¬\Ž¡\033[40m\033[30m‘ XBlack‘)ý`\033[0m"Ž¡echo–?¬-e“"\033[47m\033[31m‘ XRed‘4|¸\033[0m\Ž¡‘¿31m‘?¬\Ž¡\033[40m\033[31m‘ XRed‘4|¸\033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;31m‘ XLight“Red‘þ°\033[0m\Ž¡–?¬1;31m“\Ž¡\033[40m\033[1;31m‘ XLight‘?¬Red‘þ°\033[0m"Ž¡echo–?¬-e“"\033[47m\033[32m‘ XGreen‘)ý`\033[0m\Ž¡‘¿32m‘?¬\Ž¡\033[40m\033[32m‘ XGreen‘)ý`\033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;32m› XLight“Green˜\033[0m\Ž¡–?¬1;32m“\Ž¡\033[40m\033[1;32m– XLight‘?¬Green“\033[0m"Ž¡echo–?¬-e“"\033[47m\033[33m‘ XBrown‘)ý`\033[0m\Ž¡‘¿33m‘?¬\Ž¡\033[40m\033[33m‘ XBrown‘)ý`\033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;33m‘ XYellow‘$½´\033[0m\Ž¡–?¬1;33m“\Ž¡\033[40m\033[1;33m‘ XYellow‘$½´\033[0m"Ž¡echo–?¬-e“"\033[47m\033[34m‘ XBlue‘/= \033[0m\Ž¡‘¿34m‘?¬\Ž¡\033[40m\033[34m‘ XBlue‘/= \033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;34m‘ XLight“Blue‘¿\033[0m\Ž¡–?¬1;34m“\Ž¡\033[40m\033[1;34m‘ XLight‘?¬Blue‘¿\033[0m"Ž¡echo–?¬-e“"\033[47m\033[35m‘ XPurple‘$½´\033[0m\Ž¡‘¿35m‘?¬\Ž¡\033[40m\033[35m‘ XPurple‘$½´\033[0m"Ž¡echo–?¬-e“"\033[47m\033[1;35m‘ XPink‘/= \033[0m\Ž¡–?¬1;35m“\Ž¡\033[40m\033[1;35m‘ XPink‘/= \033[0m"Ž¡echo–?¬-e“"\033[47m\033[36m‘ XCyan‘/= \033[0m\Ž¡‘¿36m‘?¬\Ž¡\033[40m\033[36m‘ XCyan‘/= \033[0m"ŽŽŽŒ‹ÖD Û_2 ý ~?Ÿ„€ÕÁGŽÀ5.‘ñ8Sequenze–Õdi“escapQÂe“ANSI:“Colori“e“Mo•®>vimen“ti–Õdel“Cursore’’m«¹15ŽŽ ÕÁ ýV¯Ãecho–?¬-e“"\033[47m\033[1;36m‘ XLight“Cyan‘¿\033[0m\Ž¤ ®–?¬1;36m“\Ž¡\033[40m\033[1;36m‘ XLight‘?¬Cyan‘¿\033[0m"ŽŸ Ÿ&‰ffÕÁGŸpÂ5.2Ž‘¾Mo• vimen“ti–¸del“CursoreŽŸMª¹Le–Í»sequenze“di“escapšGe“ANSI‘Íœp˜ermettono“di“m•¸èuo“v“ere–Í»il“cursore“a“piacere“sullo“sc¸èhermo.‘ÛRQuesto“€è“pi€ù“utileŽ¡pGer–Ùcinš¸èterfacce“uten˜te“a“tutto“sc˜hermo“generate“da“shell“script,‘úsma“pGossono“essere“usate“anc˜he“nei“prompt.Ž¡Le–U sequenze“di“escapGe“di“mo•¸èvimen“to–U sono“le“seguen¸èti:ŽŸ´å‘Å-–¹NPosizione“del“cursore:Ž¤ Š=‘"rž\033[;HŽ¡‘"ržmette–¹Nil“cursore“alla“linea“L“e“colonna“C.Ž¡‘-–¹NMuove“il“cursore“su“N“linee:Ž¡‘"rž\033[AŽ¡‘-–¹NMuove“il“cursore“giu“N“linee:Ž¡‘"rž\033[BŽ¡‘-–¹NMuove“il“cursore“avanti“N“colonne:Ž¡‘"rž\033[CŽ¡‘-–¹NMuove“il“cursore“indietro“N“colonne:Ž¡‘"rž\033[DŽ¡¡‘-–¹NSalva“la“posizione“del“cursore:Ž¡‘"rž\033[sŽ¡‘-–¹NRipristina“la“posizione“del“cursore:Ž¡‘"rž\033[uŽŸؼ¹Gli–`÷ultimi“due“cošGdici“NON–`ôSONO“supp˜ortati–`÷da“molti“emš¸èulatori“di“terminale.‘•Gli“unici“c˜he“so“c˜he“lo“fannoŽ¤ ®sono–ÍÊxterm“e“nxterm“-“ancš¸èhe“se“la“maggior“parte“degli“em˜ulatori“di“terminale“sono“basati“sul“coGdice“di“xterm.Ž¡Da–U quanš¸èto“ho“pGotuto“v˜edere“rxvt,“kvt,“xiterm,“e“Eterm“non“li“suppšGortano.‘q€Sono“supp˜ortati“alla“consolle.Ž©ؼProš¸èv‘ÿqÐate–Ðia“digitare“le“seguen˜ti“linee“di“cošGdice“al“prompt“(cosa“fa“€è“un“p˜o'“pi€ù“c¸èhiaro“se“il“prompt“€è“alcune“lineeŽ¡gi€ù– „nel“terminale“quando“lo“digitate):‘HÃecho–?¬-en“"¸nÃ033[7A¸nÃ033[1;35m“BASH“¸nÃ033[7B¸nÃ033[6D"¹.‘S¬QuestoŽ¡do•¸èvrebbGe›m“uo“v“ere˜il˜cursore˜sette˜linee˜su˜pGer˜lo˜sc“hermo,–Ëústampare˜la˜parola˜"˜BASH‘€´",“e˜pGoi˜tornareŽ¡do¸èv'era–pšGer“pro˜durre“un“normale“prompt.‘ ÆQuesto“non“€è“un“prompt:‘æZ€è“solo“una“dimostrazione“di“comeŽ¡m•¸èuo“v“ere–U il“cursore“sullo“scš¸èhermo,“usando“il“colore“pGer“evidenziare“quan˜to“viene“fatto.Ž¦Salv‘ÿqÐate–U questo“in“un“le“cš¸èhiamato“"cloGc˜k":ŽŸX‰ffÕÁGŸÃ#!/bin/bashŽ¡¡function–?¬prompt_command“{Ž¡let‘?¬prompt_x=$COLUMNS-5Ž¡}Ž¡¡PROMPT_COMMAND=prompt_commandŽ¡¡function–?¬clock“{Ž¡local‘$½´BLUE="\[\033[0;34m\]"Ž¡local‘)ý`RED="\[\033[0;31m\]"Ž¡local‘ XLIGHT_RED="\[\033[1;31m\]"Ž¡local‘~WHITE="\[\033[1;37m\]"ŽŽŽŒ‹Þs Û_2 ý ~?Ÿ„€ÕÁGŽÀ6.‘ñ8Caratteri–ÕSpšQÂeciali:‘ Sequenze“di“Escap˜e“Ottali’Õ0ö¹16ŽŽ ÕÁ ýV¯Ãlocal‘ XNO_COLOUR="\[\033[0m\]"Ž¤ ®case–?¬$TERM“inŽ¡‘þ°xterm*)Ž¡‘)ý`TITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘)ý`;;Ž¡‘þ°*)Ž¡‘)ý`TITLEBAR=""Ž¡‘)ý`;;Ž¡esacŽ¡¡PS1="${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='+‘?¬'Ž¡}ŽŸ ;®‰ffÕÁGŸª0¹Questo–˜3prompt“€è“piuttosto“semplice,‘¨÷ma“tiene“un“orologio“nell'angolo“in“alto“a“destra“del“terminale“(anc¸èheŽ¡se–)il“terminale“viene“ridimensionato).‘í2Questo“NON‘(Ïfunzioner€à“negli“emš¸èulatori“di“terminale“c˜he,‘^come“hoŽ¡menzionato,‘dnon–-×accettano“i“cošGdici“p˜er“salv‘ÿqÐare“e“ripristiare“la“p˜osizione“del“cursore.‘û¤Se“pro¸èv‘ÿqÐate“ad“usareŽ¡questo–ábprompt“in“uno“di“quegli“emš¸èulatori“di“terminale,‘øˆl'orologio“apparir€à“correttamen˜te,‘øˆma“il“prompt“v˜err€àŽ¡in¸ètrappGolato–U nella“seconda“linea“del“terminale.ŽŸؼV‘ÿ*¸edi–U ancš¸èhe“10.5“(Il“Prompt“Orologio“In˜utile“ed“Elegan˜te)“pšGer“un“uso“pi€ù“esteso“di“questi“co˜dici.ŽŸ#ÃÂ5.3Ž‘¾Muo• v“ere–¸il“Cursore“Con“tputŽŸMª¹Come–êmolte“cose“in“Unix,‘Uc'€è“pi€ù“di“un“mošGdo“p˜er“raggiungere“gli“stessi“ni.‘0fUna“utilitš¸èy“c˜hiamata“"tput"Ž¡pu€ò–Ó^essere“usata“anc¸èhe“pšGer“sp˜ostare“il“cursore“sullo“sc¸èhermo,‘òío“p˜er“ottenere“informazioni“sullo“stato“di“unŽ¡terminale.‘I"tput",‘ô p•Ger›Ûàp“osizionare˜il˜cursore,‘ô €è˜meno˜essibile˜delle˜sequenze˜di˜escap“e˜ANSI:˜si˜pu€ò˜m•¸èuo“v“ereŽ¡il–bÑcursore“solo“ad“una“pšGosizione“assoluta,‘¦>non“si“pu€ò“relativ‘ÿqÐamen¸ète“alla“sua“p˜osizione“corren¸ète.‘š”Non“usoŽ¡"tput",–U quindi“non“inš¸ètendo“spiegarlo“in“dettaglio.‘q€Digitate“"man“tput"“e“ne“saprete“quan˜to“me.ŽŸ(Àœ¿6Ž‘ÁCaratteri–G\Spšpœeciali:‘ ÐSequenze“di“Escap˜e“OttaliŽŸ¿:¹Oltre–d€i“caratteri“cš¸èhe“si“digitano“sulla“tastiera,‘hYci“sono“molti“altri“caratteri“c˜he“pGossono“essere“stampati“sulloŽ¡sc¸èhermo.‘‘¬Ho–_Ùcreato“uno“script“pšGer“p˜ermettervi“di“con¸ètrollare“cosa“mette“a“disp˜osizione“il“fonš¸èt“c˜he“stateŽ¡usando.‘ITIl–comando“principale“cš¸èhe“a˜vrete“bisogno“di“usare“€è“pGer“utilizzare“questi“caratteri“€è“"ec˜ho“-e".Ž¡L'opzione–ÀP"-e"“dice“ad“ecš¸èho“di“abilitare“l'in˜terpretazione“dei“caratteri“protetti“con“bac˜kslash.‘³Cosa“si“v˜edeŽ¡quando–¯œguardate“200-400“ottale“€è“molto“divš¸èerso“con“un“fon˜t“V˜GA‘¯…da“quello“c˜he“si“v˜ede“con“un“fon˜t“Lin˜uxŽ¡standard.‘“±Siate–µÛaš¸èvvisati“c˜he“queste“sequenze“di“escapGe“hanno“eetti“strani“sul“terminale,‘Î e“non“ho“ten˜tatoŽ¡di–{¡prevš¸èenire“c˜he“facciano“quello“c˜he“fanno.‘åI‘{—caratteri“linedra˜w“e“bloGc˜k“(ai“quali“molti“di“noi“sono“div˜en˜tatiŽ¡familiari–U con“W‘ÿ*¸ord“Pš¸èerfect)“e“c˜he“sono“usati“molto“dal“progetto“Bashprompt,“sono“fra“260“e“337“ottale.ŽŸæ>‰ffÕÁGŸÃ#!/bin/bashŽ¡¡#‘¿Script:‘?¬escgenŽŽŽŒ‹è4 Û_2 ý ~?Ÿ„€ÕÁGŽÀ6.‘ñ8Caratteri–ÕSpšQÂeciali:‘ Sequenze“di“Escap˜e“Ottali’Õ0ö¹17ŽŽ ÕÁ ýV¯¤ ®Ãfunction–?¬usage“{Ž¡‘¿echo–?¬-e“"\033[1;34mescgen\033[0m““[]"Ž¡–¿echo›?¬"“Octal˜escape˜sequence˜generator:˜print˜all˜octal˜escape˜sequences"Ž¡–¿echo›?¬"“between˜the˜lower˜value˜and˜the˜upper˜value.‘ XIf˜a˜second˜value"Ž¡–¿echo›?¬"“isn't˜supplied,˜print˜eight˜characters."Ž¡–¿echo›?¬"“1998˜-˜Giles˜Orr,˜no˜warranty."Ž¡‘¿exit‘?¬1Ž¡}Ž¡¡if–?¬[“"$#"“-eq“"0"“]Ž¡thenŽ¡‘¿echo–?¬-e“"\033[1;31mPlease“supply“one“or“two“values.\033[0m"Ž¡‘¿usageŽ¡fiŽ¡let‘?¬lower_val=${1}Ž¡if–?¬[“"$#"“-eq“"1"“]Ž¡thenŽ¡–¿#“If–?¬they“don't“supply“a“closing“value,“give“them“eight“characters.Ž¡‘¿upper_val=$(echo–?¬-e“"obase=8“\n“ibase=8“\n“$lower_val+10“\n“quit"“|“bc)Ž¡elseŽ¡‘¿let‘?¬upper_val=${2}Ž¡fiŽ¡if–?¬[“"$#"“-gt“"2"“]Ž¡thenŽ¡‘¿echo–?¬-e“"\033[1;31mPlease“supply“two“values.\033[0m"Ž¡‘¿echoŽ¡‘¿usageŽ¡fiŽ¡if–?¬[“"${lower_val}"“-gt“"${upper_val}"“]Ž¡thenŽ¡‘¿echo–?¬-e“"\033[1;31m${lower_val}“is“larger“than“${upper_val}."Ž¡‘¿echoŽ¡‘¿usageŽ¡fiŽ¡if–?¬[“"${upper_val}"“-gt“"777"“]Ž¡‘¿thenŽ¡‘¿echo–?¬-e“"\033[1;31mValues“cannot“exceed“777.\033[0m"Ž¡‘¿echoŽ¡‘¿usageŽ¡fiŽ¡¡let‘?¬i=$lower_valŽ¡let‘?¬line_count=1Ž¡let‘?¬limit=$upper_valŽ¡while–?¬[“"$i"“-lt“"$limit"“]Ž¡doŽ¡‘¿octal_escape="\\$i"Ž¡‘¿echo–?¬-en“"$i:'$octal_escape'“"Ž¡‘¿if–?¬[“"$line_count"“-gt“"7"“]ŽŽŽŒ‹ô! Û_2 ý ~?Ÿ„€ÕÁGŽÀ7.‘ñ8Il›ÕP•®>acc“hetto˜Bash˜Prompt’5ù"¹18ŽŽ ÕÁ ýV¯‘¿ÃthenŽ¤ ®‘~echoŽ¡‘~#‘¿Put–?¬a“hard“return“in.Ž¡‘~let‘?¬line_count=0Ž¡‘¿fiŽ¡‘¿let–?¬i=$(echo“-e“"obase=8“\n“ibase=8“\n“$i+1“\n“quit"“|“bc)Ž¡‘¿let‘?¬line_count=$line_count+1Ž¡doneŽ¡echoŽŸ "G‰ffÕÁGŸ°¹P•¸èotete›jêanc“he˜usare˜Àxfd˜¹pGer˜mostrare˜tutti˜i˜caratteri˜un˜un˜fon“t˜X,˜con˜il˜comando˜"xfd˜-fn˜µ<¹fon“tnameµ>¹".Ž¡F‘ÿ*¸acendo–­áclic“su“un“carattere“v¸èengono“date“molte“informazioni“circa“quel“catattere,‘ÏTincluso“il“suo“v‘ÿqÐalore“ottale.Ž¡Lo–U script“dato“sopra“sar€à“utile“alla“consolle“e“se“non“siete“sicuri“del“nome“del“fonš¸èt“corren˜te.ŽŸ(ˆÎ¿7Ž‘ÁIl›G\P•cacc“hetto˜Bash˜PromptŽŸèÂ7.1Ž‘¾Disp_úonibilit€àŽ©Mª¹Il–ƒ-paccš¸èhetto“Bash“Prompt“€è“dispGonibile“qui“¼http://b–ÿ}/ash.curr“ent.nu–ƒ-¹,‘­+ed“€è“il“la˜v˜oro“di“molte“p•Gersone,‘­+co“ordinateŽ¡da–àŽRob“Currenš¸èt“(ak‘ÿqÐa“BadLandZ).“Il“pacc˜hetto“€è“in“v˜ersione“bGeta,‘jma“ore“una“maniera“semplice“di“usareŽ¡prompt–¯ìm¸èultipli“(o“temi),‘ÆŸpšGermette“di“imp˜ostare“il“prompt“p˜er“shell“di“login“e“p˜er“sottoshell“(cio˜€è“mettereŽ¡stringhe–s4PS1“in“(/.bash_prole“e“/.bashrc).‘Ë»La“maggior“parte“dei“temi“usano“i“set“di“caratteri“estesiŽ¡Vš¸èGA,–#quindi“hanno“un“brutto“aspGetto“a“meno“c˜he“siano“usati“con“fon˜t“V˜GA‘(c˜he“non“sono“presen˜ti“su“moltiŽ¡sistemi).ŽŸ"åõÂ7.2Ž‘¾Camš biare–¸il“F‘þàon˜t“di“XtermŽ¦¹Pš¸èer–©usare“alcuni“dei“prompt“pi€ù“attraen˜ti“nel“pacc˜hetto“Bash“Prompt,‘Ádo˜v˜ete“prendere“e“installare“installareŽ¡i–è/fonš¸èt“c˜he“suppGortano“il“set“di“caratteri“ric˜hiesto“dai“prompt.‘M0Ci“si“riferise“ad“essi“come“"F‘ÿ*¸on˜t“V˜GA",‘ýùma“nonŽ¡mi–Þ€è“cš¸èhiara“la“distinzione“fra“essi“e“i“fon˜t“gi€à“distribuiti“presen˜ti“con“Lin˜ux“-“sebbGene“c˜hiaramen˜te“suppGortanoŽ¡set–­udi“caratteri“dieren•¸èti.‘z~I‘­^fon“t–­upšGer“Xterm“standard“supp˜ortano“un“alfab˜eto“esteso,‘Êinclusi“molti“caratteriŽ¡accen•¸ètati.‘h{Nei›§tfon“t˜V“GA,˜questo˜materiale˜viene˜rimpiazzato˜da˜caratteri˜graci˜-˜bloGcc“hi,›¼pun“ti,˜linee.‘h{SeŽ¡qualcuno–U pu€ò“spiegare“questo“pi€ù“in“dettaglio“mi“mandi“un“e-mail“e“includer€ò“qui“una“spiegazione.Ž©ؼOttenere–e“installare“questi“fon¸èt“€è“un“prošGcesso“un“p˜o'“con¸ètorto.‘V%Prima,‘xrecup˜erate“i/il“fon•¸èt.‘V%P“oi,‘xassicurateviŽ¡c¸èhe–ì°siano“le“.pšGcf“o“.p˜cf.gz.‘N°Se“sono“le“.b˜df,‘“informatevi“sul“comando“"b˜dftop˜cf"“(cio˜€è“leggete“la“man“page).Ž¡Mettete––Xi“le“.pšGcf“o“.p˜cf.gz“nella“directory“/usr/X11R6/lib/X11/fon¸èts/misc“(questa“€è“la“directory“corretta“p˜erŽ¡RedHat–X#5.1“e“Slac•¸èkw“are›X#3.4,‘Xäp•Gotrebb“e˜essere˜dieren¸ète˜su˜altre˜distribuzioni).‘zŠF‘ÿ*¸ate˜"cd"˜su˜quella˜directoryŽ¡ed–;Ûeseguite“il“comando“"mkfon¸ètdir".›iQuindi“eseguite“"xset“fp“rehash".˜A‘;Ôv¸èolte“€è“una“buona“idea“andare“nelŽ¡le–U fonš¸èts.alias“nella“stessa“directory“e“creare“dei“nomi“alternativi“pi€ù“corti“pGer“i“fon˜t.Ž¦Pš¸èer–Þ(usare“i“n˜uo˜vi“fon˜t,‘jlanciate“l'Xterm“c˜he“pi€ù“vi“piace“con“l'opzione“appropriata,‘jc˜he“pu€ò“essere“tro˜v‘ÿqÐataŽ¡nella–S…man“page“o“usando“il“parametro“"help"“alla“linea“di“comando.‘l¯Alcuni“Xterm“comš¸èuni“do˜vrebbGeroŽ¡essere–U usati“come“segue:ŽŸpÆ‘Åxterm–¹N-font“ŽŸIj‘OPPUREŽŸF‘xterm–¹N-fn““-fb“Ž¤ Š=‘Eterm–¹N-f“Ž¡‘rxvt–¹N-fn“ŽŽŽŒ‹ú9 Û_2 ý ~?Ÿ„€ÕÁGŽÀ8.‘ñ8Caricare–Õun“Prompt“Dieren®>te’~ƒ¹19ŽŽ ÕÁ ýV¯I›8xfon•¸èt‘8ÀV“GA˜sono–8ÀdispGonibili“alla“¼Stumpy's‘ŽANSI‘ÍF‘ÿ;Èonts‘ Õ¹su“¼http://home.e‘ÿ}/arthlink.net/us5zahns/enl/ansifont.htmlŽ©ؼ¹(da–U cui“ho“preso“in“prestito“molto“nello“scrivš¸èere“questo“doGcumen˜to).ŽŸ(®é¿8Ž‘ÁCaricare–G\un“Prompt“DierencteŽŸèÂ8.1Ž‘¾Caricare–¸un“Prompt“Dieren te,“Pi€ù“T‘þàardiŽŸMª¹Le–Œžspiegazione“in“questo“HOš¸èWTO‘ŒNhanno“mostrato“come“creare“v‘ÿqÐariabili“di“am˜bien˜te“PS1,‘Ú}oppure“comeŽ¤ ®incorpšGorare–°quelle“stringhe“PS1“e“PS2“in“funzioni“c¸èhe“p˜otrebb˜ero“essere“create“da“/.bashrc“o“come“un“temaŽ¡dal–U pacc¸èhetto“bashprompt.Ž¦Usando–úil“pacš¸èhetto“bashprompt,‘ Nsi“dev˜e“digitare“Ãbashprompt‘?¬-i“¹pGer“v˜edere“una“lista“dei“prompt“dispGonibili.Ž¡Pš¸èer–œ>impGostare“il“prompt“in“shell“di“login“future“(principalmen˜te“la“consolle,‘Á8ma“anc˜he“telnet“e“Xterm,‘Á8dipGendeŽ¡da– ácome“sono“congurati“i“vš¸èostri“Xterm),‘8Rsi“dev˜e“digitare“Ãbashprompt–?¬-l“nometema¹.‘’Äbashprompt‘ áquindiŽ¡mošGdica–•=il“v¸èostro“/.bash_prole“p˜er“cš¸èhiamare“il“tema“ric˜hiesto“alla“partenza.‘1×P˜er“impGostare“il“prompt“inŽ¡future–‹Ðsottoshell“(solitamenš¸ète“Xterm,–™|rxvt,“ecc.),“si–‹Ðdev˜e“digitare“Ãbashprompt–?¬-s“nometema¹,‘™|e‘‹ÐbashpromptŽ¡mošGdica–U il“v¸èostro“le“/.bashrc“p˜er“cš¸èhiamare“il“tema“ric˜hiesto“alla“partenza.ŽŸ# Â8.2Ž‘¾Caricare–¸un“Prompt“Dierenš te,“Immediatamen˜teŽ©Mª¹P•¸èotete›õˆcam“biare˜il˜prompt˜nel˜terminale˜corren“te˜(usando˜la˜funzione˜esempio˜"elite"˜di˜cui˜sopra)˜digitandoŽ¡Ãsource‘?¬elite–ç¹seguito“da“Ãelite“¹(assumendo“cš¸èhe“il“le“funzione“elite“sia“nella“directory“corren˜te).‘'$QuestoŽ¡€è–&un“pšGo'“p˜o˜co“pratico“e“vi“lascia“con“un'altra“funzione“(elite)“nel“vš¸èostro“spazio“am˜bien˜te“-“se“v˜olete“ripulireŽ¡l'am•¸èbien“te,‘îdo“vreste–σdigitare“ancš¸èhe“Ãunset‘?¬elite¹.‘à¨Questo“sem˜brerebbšGe“un“candidato“ideale“p˜er“un“piccoloŽ¡shell–`Ëscript,‘c¶ma“uno“script“in“questo“caso“non“funziona“pšGerc¸èh€é“lo“script“non“pu€ò“mo˜dicare“l'am•¸èbien“te‘`ËdellaŽ¡shell–t¢correnš¸ète:‘°ƒpu€ò“solo“cam˜biare“l'abien˜te“della“sottoshell“in“cui“gira.‘ÐCome“lo“script“termina,‘|‚la“sottoshellŽ¡sparisce–‘ze“cos€ì“i“cam•¸èbiamen“te–‘zfatti“all'am•¸èbien“te.‘&Cosa–‘zÀpu€ò“¹camš¸èbiare“le“v‘ÿqÐariabili“d'am˜bien˜te“della“shell“cor-Ž¡renš¸ète–L‰sono“le“funzioni“d'am˜bien˜te.‘n£Il“pacc˜hetto“bashprompt“mette“una“funzione“c˜hiamato“"callbashprompt"Ž¡nell'am•¸èbien“te–be,‘%UsebbšGene“non“sia“do˜cumenš¸ètata,‘%Upu€ò“essere“c˜hiamata“pGer“caricare“al“v˜olo“qualsiasi“tema“bash-Ž¡prompt.‘f²Guarda–¦Ûnella“directory“dei“temi“cš¸èhe“ha“installato“(il“tema“c˜he“c˜hiamate“dev˜e“essere“l€ì),‘»Jin˜terpretaŽ¡la–šfunzione“ric¸èhiesta,›«Ncarica“la“funzione“e“pGoi“elimina“la“funzione,˜manš¸ètenendo“wuindi“l'am˜bien˜te“in“ordine.Ž¡"callbashprompt"–_Ãnon“€è“pšGensata“p˜er“essere“usata“cos€ì“e“non“conš¸ètrolla“ev˜en˜tuali“errori,‘bkma“tenendo“questo“aŽ¡men¸ète,–U funziona“piuttosto“bGene.ŽŸ(®é¿9Ž‘ÁCaricare–G\il“Colori“del“Prompt“DinamicamencteŽŸèÂ9.1Ž‘¾Un–¸esempio“c he“dimostra“il“concettoŽ¦¹Questa–Lñ€è“una“dimostrazione“del“concetto“piuttosto“cš¸èhe“un“prompt“attraen˜te:‘micam˜biare“i“colori“all'in˜terno“diŽ¡un–™ƒprompt“dinamicamenš¸ète.‘>¨In“questo“esempio,‘ª›il“colore“dell'hostname“cam˜bia“in“funzione“del“carico“(comeŽ¡un‘U a•¸èvv“ertimen“to).ŽŸN‘Å#!/bin/bashŽ¤ Š=‘#‘+ê"hostloadcolour"–¹N-“17“ottobre“98,“GilesŽ¡‘#Ž¡‘#‘+êQui–¹Nl'idea“e`“di“cambiare“il“colore“dell'hostname“nel“prompt,“aŽ¡‘#‘+êseconda–¹Ndel“valore“del“carico.Ž¡¡‘#–¹NTHRESHOLD_LOAD“e`“il“valore“del“carico“per“un“minuto“(moltiplicatoŽŽŽŒ‹à Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹20ŽŽ ÕÁ ýV¯‘Å#–¹Nper“cento)“al“quale“volete“che“il“prompt“cambi“da“COLOUR_LOW“aŽ¤ Š=‘#‘¹NCOLOUR_HIGHŽ¡¡‘THRESHOLD_LOAD=200Ž¡‘COLOUR_LOW='1;34'Ž¡‘H=#–¹Nblu“chiaroŽ¡‘COLOUR_HIGH='1;31'Ž¡‘H=#–¹Nrosso“chiaroŽ¡¡‘function–¹Nprompt_command“{Ž¡‘ONE=$(uptime–¹N|“sed“-e“"s/.*load“average:“\(.*\...\),“\(.*\...\),“\(.*\...\)/\1/"“-e“"s/“//g")Ž¡‘#‘+êA–¹Nquanto“pare,“"scale"“in“bc“non“funziona“con“la“moltiplicazione,Ž¡‘#‘+êma–¹Nfunziona“con“la“divisionone.Ž¡‘ONEHUNDRED=$(echo–¹N-e“"scale=0“\n“$ONE/0.01“\nquit“\n"“|“bc)Ž¡‘if–¹N[“$ONEHUNDRED“-gt“$THRESHOLD_LOAD“]Ž¡‘thenŽ¡‘+å:HOST_COLOUR=$COLOUR_HIGHŽ¡‘>Êr#–¹Nrosso“chiaroŽ¡‘elseŽ¡‘+å:HOST_COLOUR=$COLOUR_LOWŽ¡‘>Êr#–¹Nblu“chiaroŽ¡‘fiŽ¡‘}Ž¡¡‘function–¹Nhostloadcolour“{Ž¡¡‘PROMPT_COMMAND=prompt_commandŽ¡‘PS1="[$(date–¹N+%H%M)][\u@\[\033[\$(echo“-n“\$HOST_COLOUR)m\]\h\[\033[0;37m\]:\w]$“"Ž¡‘}ŽŸؼ¹Usando–´ il“vš¸èostro“editor“preferito,‘ËÆsalv‘ÿqÐate“queso“in“un“le“c˜hiamato“"hostloadcolour".‘ŽBSe“a˜v˜ete“il“pacc˜hettoŽ¤ ®Bashprompt–8Iinstallato,›qQuesto“funzioner€à“come“un“tema.‘üSe“no,˜digitate“Ãsource‘?¬hostloadcolour“¹e“pGoiŽ¡Ãhostloadcolour¹.‘ÌhIn›ÈÃen•¸ètram“bi˜i˜moGdi,‘å«"prompt_command"˜div“en“ta˜una˜funzione˜nel˜v“ostro˜am“bien“te.‘ÌhSeŽ¡esaminate–gil“coGdice,‘Bùnoterete“cš¸èhe“i“colori“($COLOUR_HIGH‘6e“$COLOUR_LO˜W)‘6sono“impGostati“usan˜toŽ¡solo–÷æun“cošGdice“del“colore“parziale,‘ ‹cio˜€è“"1;34"“in•¸èv“ece–÷ædi“"¸n¹[¸n¹033[1;34m¸n¹]",‘ ‹cš¸èhe“a˜vrei“preferito.‘RmNon“sono“statoŽ¡in–U grado“di“farlo“funzionare“con“il“cošGdice“completo.‘q€Siete“pregati“di“farmi“sap˜ere“se“do•¸èv“este‘U riuscirvi.ŽŸ(Àœ¿10Ž‘¬%Prompt–G\di“EsempioŽŸèÂ10.1Ž‘%}¨Un–¸Prompt“"Leggero"ŽŸÿ+¤ Š=‘Åfunction–¹Nproml“{Ž¡‘local‘¹NBLUE="\[\033[0;34m\]"Ž¡‘local‘¹NRED="\[\033[0;31m\]"Ž¡‘local‘¹NLIGHT_RED="\[\033[1;31m\]"Ž¡‘local‘¹NWHITE="\[\033[1;37m\]"Ž¡‘local‘¹NLIGHT_GRAY="\[\033[0;37m\]"Ž¡‘case–¹N$TERM“inŽ¡‘+å:xterm*)Ž¡‘>ÊrTITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘>Êr;;Ž¡‘+å:*)ŽŽŽŒ‹å Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹21ŽŽ ÕÁ ýV¯‘>ÊrÅTITLEBAR=""Ž¤ Š=‘>Êr;;Ž¡‘esacŽ¡¡‘PS1="${TITLEBAR}\Ž¡‘$BLUE[$RED\$(date‘¹N+%H%M)$BLUE]\Ž¡‘$BLUE[$LIGHT_RED\u@\h:\w$BLUE]\Ž¡‘$WHITE\$$LIGHT_GRAY‘¹N"Ž¡‘PS2='>‘¹N'Ž¡‘PS4='+‘¹N'Ž¡‘}Ž©#ÃÂ10.2Ž‘%}¨Elite–¸dai“T‘þàemi“BashpromptŽŸMª¹Si–U noti“cš¸èhe“questo“necessita“di“un“fon˜t“V˜GA.ŽŸ´å¡‘Å#–¹NCreato“da“KrON“da“windowmaker“su“IRCŽ¡‘#–¹NCambiato“da“Spidey“08/06Ž¡‘function–¹Nelite“{Ž¡‘PS1="\[\033[31m\]\332\304\[\033[34m\](\[\033[31m\]\u\[\033[34m\]@\[\033[31m\]\h\Ž¡‘\[\033[34m\])\[\033[31m\]-\[\033[34m\](\[\033[31m\]\$(date‘¹N+%I:%M%P)\Ž¡‘\[\033[34m\]-:-\[\033[31m\]\$(date–¹N+%m)\[\033[34m\033[31m\]/\$(date“+%d)\Ž¡‘\[\033[34m\])\[\033[31m\]\304-\[\033[34m]\\371\[\033[31m\]-\371\371\Ž¡‘\[\033[34m\]\372\n\[\033[31m\]\300\304\[\033[34m\](\[\033[31m\]\W\[\033[34m\])\Ž¡‘\[\033[31m\]\304\371\[\033[34m\]\372\[\033[00m\]"Ž¡‘PS2=">‘¹N"Ž¡‘}Ž¦Â10.3Ž‘%}¨Un–¸Prompt“p_úer“il“"P• o“w“er‘¸User"ŽŸMª¹Io–v£in“realt€à“uso“questo“prompt,‘ma“si“ottengono“notevš¸èoli“ritardi“quando“il“prompt“appare“su“una“macc˜hinaŽ¤ ®monoutenš¸ète– +PIGI-400,‘7mquindi“non“raccomando“di“usarlo“su“un“P-100“m˜ultiuten˜te“o“altro...‘ Guardatelo“pGerŽ¡cercare–U idee,“piuttosto“c¸èhe“pGer“usarlo“in“pratica.ŽŸX‰ffÕÁGŸ*¨¡Ã#!/bin/bashŽ¡#----------------------------------------------------------------------Ž¡#‘$½´POWER–?¬USER“PROMPT“"pprom2"Ž¡#----------------------------------------------------------------------Ž¡#Ž¡#‘¿Creato–?¬nell'agosto“98,“Ultima“Modifica“9“novembre“98“da“GilesŽ¡#Ž¡#‘¿Problema:–?¬quando“load“va“giu',“dice“"1.35down-.08",“eliminare“ilŽ¡#‘¿segno‘?¬negativoŽ¡¡¡function‘?¬prompt_commandŽ¡{Ž¡#‘¿Crea–?¬la“variabile“TotalMeg:“somma“delle“dimensioni“dei“fileŽ¡#‘¿visibile–?¬nella“directory“correnteŽ¡local‘?¬TotalBytes=0ŽŽŽŒ‹‘ Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹22ŽŽ ÕÁ ýV¯Ãfor–?¬Bytes“in“$(ls“-l“|“grep“"^-"“|“cut“-c30-41)Ž¤ ®doŽ¡‘þ°let‘?¬TotalBytes=$TotalBytes+$BytesŽ¡doneŽ¡TotalMeg=$(echo–?¬-e“"scale=3“\nx=$TotalBytes/1048576\n“if“(x<1)“{print“\"0\"}“\n“print“x“\nquit"“|“bc)Ž¡¡#‘~Questo–?¬viene“usato“per“calcolare“il“differenziale“del“valoreŽ¡#‘~del–?¬carico“fornito“dal“comando“"uptime".“"uptime"“fornisce“medie“diŽ¡#‘~carico–?¬per“1,“5“r“15“minuti.Ž¡#Ž¡local–?¬one=$(uptime“|“sed“-e“"s/.*load“average:“\(.*\...\),“\(.*\...\),“\(.*\...\)/\1/"“-e“"s/“//g")Ž¡local–?¬five=$(uptime“|“sed“-e“"s/.*load“average:“\(.*\...\),“\(.*\...\),“\(.*\...\).*/\2/"“-e“"s/“//g")Ž¡local–?¬diff1_5=$(echo“-e“"scale“=“scale“($one)“\nx=$one“-“$five\n“if“(x>0)“{print“\"up\"}“else“{print“\"down\"}\n“print“x“\nquit“\n"“|“bc)Ž¡loaddiff="$(echo–?¬-n“"${one}${diff1_5}")"Ž¡¡#‘¿Conta–?¬file“visibili:Ž¡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“"“")-2Ž¡let–?¬linktemp=$(ls“-l“|“grep“"^l"“|“wc“-l“|“tr“-d“"“")Ž¡if–?¬[“"$linktemp"“-eq“"0"“]Ž¡thenŽ¡‘þ°links=""Ž¡elseŽ¡‘þ°links="‘?¬${linktemp}l"Ž¡fiŽ¡unset‘?¬linktempŽ¡let–?¬devicetemp=$(ls“-l“|“grep“"^[bc]"“|“wc“-l“|“tr“-d“"“")Ž¡if–?¬[“"$devicetemp"“-eq“"0"“]Ž¡thenŽ¡‘þ°devices=""Ž¡elseŽ¡‘þ°devices="‘?¬${devicetemp}bc"Ž¡fiŽ¡unset‘?¬devicetempŽ¡¡}Ž¡¡PROMPT_COMMAND=prompt_commandŽ¡¡function–?¬pprom2“{Ž¡¡local‘)ý`BLUE="\[\033[0;34m\]"Ž¡local‘ XLIGHT_GRAY="\[\033[0;37m\]"Ž¡local‘?¬LIGHT_GREEN="\[\033[1;32m\]"Ž¡local‘ XLIGHT_BLUE="\[\033[1;34m\]"Ž¡local‘ XLIGHT_CYAN="\[\033[1;36m\]"Ž¡local‘~YELLOW="\[\033[1;33m\]"ŽŽŽŒ‹'_ Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹23ŽŽ ÕÁ ýV¯Ãlocal‘$½´WHITE="\[\033[1;37m\]"Ž¤ ®local‘/= RED="\[\033[0;31m\]"Ž¡local‘¿NO_COLOUR="\[\033[0m\]"Ž¡¡case–?¬$TERM“inŽ¡‘þ°xterm*)Ž¡‘)ý`TITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘)ý`;;Ž¡‘þ°*)Ž¡‘)ý`TITLEBAR=""Ž¡‘)ý`;;Ž¡esacŽ¡¡PS1="$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='+‘?¬'Ž¡}ŽŸ Ú‰ffÕÁGŸªÂ10.4Ž‘%}¨Un–¸Prompt“Largo“Quan to“il“T‘þàerminaleŽŸMª¹Un–Ú amico“si“€è“lamenš¸ètato“pGerc˜h€é“non“gli“piacev‘ÿqÐa“c˜he“il“prompt“cam˜biasse“con˜tin˜uamen˜te“di“dimensione“pGerc˜h€éŽ¡c'era–fü$PWD‘føall'inš¸èterno,‘kscos€ì“ho“scritto“questo“prompt“c˜he“adatta“la“sua“dimensione“all'esatta“larghezza“dalŽ¡terminale.ŽŸˆÞ‰ffÕÁGŸ Ô¡Ã#!/bin/bashŽ¡¡#‘¿termwide‘?¬promptŽ¡#‘~Giles–?¬-“creato“il“2“novembre“98Ž¡#Ž¡#‘¿Qui–?¬l'idea“e`“di“avere“la“linea“superiore“di“questo“prompt“di“dueŽŽŽŒ‹.þ Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹24ŽŽ ÕÁ ýV¯Ã#‘¿linee–?¬sempre“della“larghezza“del“terminale.“Questo“viene“fattoŽ¤ ®#‘¿calcolando–?¬la“larghezza“degli“elementi“di“testo“e“riempendo“comeŽ¡#‘¿appropriato–?¬o“troncando“a“destra“$PWD.Ž¡#Ž¡¡function–?¬prompt_command“{Ž¡¡TERMWIDTH=${COLUMNS}Ž¡¡#‘¿Calcola–?¬la“larghezza“del“prompt:Ž¡¡hostnam=$(echo–?¬-n“$HOSTNAME“|“sed“-e“"s/[\.].*//")Ž¡#‘¿"whoami"–?¬e“"pwd"“includono“un“carattere“"carriage“return"“finaleŽ¡usernam=$(whoami)Ž¡let–?¬usersize=$(echo“-n“$usernam“|“wc“-c“|“tr“-d“"“")Ž¡newPWD="${PWD}"Ž¡let–?¬pwdsize=$(echo“-n“${newPWD}“|“wc“-c“|“tr“-d“"“")Ž¡#‘¿Aggiunge–?¬tutti“gli“accessori“sotto“...Ž¡let–?¬promptsize=$(echo“-n“"--(${usernam}@${hostnam})---(${PWD})--"“\Ž¡‘Y:l|–?¬wc“-c“|“tr“-d“"“")Ž¡let‘?¬fillsize=${TERMWIDTH}-${promptsize}Ž¡fill=""Ž¡while–?¬[“"$fillsize"“-gt“"0"“]Ž¡doŽ¡‘¿fill="${fill}-"Ž¡‘¿let‘?¬fillsize=${fillsize}-1Ž¡doneŽ¡¡if–?¬[“"$fillsize"“-lt“"0"“]Ž¡thenŽ¡‘¿let‘?¬cut=3-${fillsize}Ž¡‘¿sedvar=""Ž¡‘¿while–?¬[“"$cut"“-gt“"0"“]Ž¡‘¿doŽ¡‘~sedvar="${sedvar}."Ž¡‘~let‘?¬cut=${cut}-1Ž¡‘¿doneŽ¡‘¿newPWD="...$(echo–?¬-n“$PWD“|“sed“-e“"s/\(^${sedvar}\)\(.*\)/\2/")"Ž¡fiŽ¡}Ž¡¡PROMPT_COMMAND=prompt_commandŽ¡¡function–?¬termwide“{Ž¡¡local‘?¬GRAY="\[\033[1;30m\]"Ž¡local‘?¬LIGHT_GRAY="\[\033[0;37m\]"Ž¡local‘?¬WHITE="\[\033[1;37m\]"Ž¡local‘?¬NO_COLOUR="\[\033[0m\]"Ž¡ŽŽŒ‹4€ Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹25ŽŽ ÕÁ ýV¯Ãlocal‘?¬LIGHT_BLUE="\[\033[1;34m\]"Ž¤ ®local‘?¬YELLOW="\[\033[1;33m\]"Ž¡¡case–?¬$TERM“inŽ¡‘þ°xterm*)Ž¡‘)ý`TITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘)ý`;;Ž¡‘þ°*)Ž¡‘)ý`TITLEBAR=""Ž¡‘)ý`;;Ž¡esacŽ¡¡PS1="$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‘?¬"Ž¡¡}ŽŸ ;®‰ffÕÁGŸpÂ10.5Ž‘%}¨Il–¸Prompt“Orologio“Inš utile“ed“Elegan˜teŽŸMª¹Questo–Ý€è“probabilmenš¸ète“il“pi€ù“attraen˜te“(e“in˜utile)“prompt“c˜he“abbia“mai“creato.‘ѸP˜oic˜h€é“gli“em˜ulatori“diŽ¡terminale–… non“implemen¸ètano“il“salv›ÿqÐataggio“e“ripristino“della“pGosizione“del“cursore,‘‘l'alternativ˜a“pGer“mettereŽ¡un–Éüorologio“nell'angolo“in“alto“a“destra“e“di“ancorare“il“prompt“nella“parte“inferiore“del“terminale.‘ÐQuestoŽ¡deriv‘ÿqÐa–}ódall'idea“del“prompt“ampio“quan¸èto“il“terminale“di“cui“sopra,‘ˆ'disegnando“una“linea“nella“parte“destraŽ¡dello–U scš¸èhermo“dal“prompt“all'orologio.‘q€€È“ric˜hiesto“un“fon˜t“V˜GA.ŽŸؼNota:‘ÃOqui–þc'€è“una“sostituzione“strana,‘(Acš¸èhe“p•Gotrebb“e–þnon“v˜enir“stampata“correttamen˜te“quando“viene“con-Ž¡vš¸èertita–8da“SGML‘7åad“altri“formati:‘7~ho“do˜vuto“sostituire“il“carattere“screen“con“¸n¹304“-“normalmen˜te“a˜vreiŽ¡in¸ètrošGdotto–U solo“la“sequenza“"¸n¹304",“ma“in“questo“caso“era“necessario“p˜er“fare“questa“sostituzione.ŽŸæf‰ffÕÁGŸ*¨¡Ã#!/bin/bashŽ¡¡#‘¿Questo–?¬prompt“richiede“i“font“VGA.“Il“prompt“e`“ancorato“in“bassoŽ¡#‘¿al–?¬terminale,“riempie“la“larghezza“del“terminale“e“disegna“una“lineaŽ¡#‘¿sul–?¬lato“destro“del“terminale“per“collegarsi“all'orologioŽ¡#‘¿nell'angolo–?¬in“alto“a“destra“del“terminale.Ž¡¡function–?¬prompt_command“{Ž¡#‘¿Calcola–?¬la“larghezza“del“prompt:ŽŽŽŒ‹:b Û_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹26ŽŽ ÕÁ ýV¯Ãhostnam=$(echo–?¬-n“$HOSTNAME“|“sed“-e“"s/[\.].*//")Ž¤ ®#‘¿"whoami"–?¬e“"pwd"“includono“il“carattere“"carriage“return"“finaleŽ¡usernam=$(whoami)Ž¡newPWD="${PWD}"Ž¡#‘¿Aggiunge–?¬tutti“gli“accessori“sotto“...Ž¡let–?¬promptsize=$(echo“-n“"--(${usernam}@${hostnam})---(${PWD})-----"“\Ž¡‘Y:l|–?¬wc“-c“|“tr“-d“"“")Ž¡#‘¿Trova–?¬quanto“aggiungere“fra“user@host“e“PWD“(o“quanto“rimuovereŽ¡#‘¿da‘?¬PWD)Ž¡let‘?¬fillsize=${COLUMNS}-${promptsize}Ž¡fill=""Ž¡#‘¿Riempie–?¬la“linea“se“il“prompt“non“e`“largo“quanto“il“terminale:Ž¡while–?¬[“"$fillsize"“-gt“"0"“]Ž¡doŽ¡‘¿fill="${fill}€Ä"Ž¡‘¿#–?¬La“A“con“la“dieresi“(apparira`“come“una“lunga“linea“se“stateŽ¡‘¿#–?¬usando“un“font“VGA)“e`“\304,“ma“l'ho“"tagliata"“e“poi“"incollata"Ž¡‘¿#–?¬perche'“Bash“farebbe“solo“una“sostituzione“-“che“in“questo“caso“e`Ž¡‘¿#–?¬mettere“$fill“nel“prompt.Ž¡‘¿let‘?¬fillsize=${fillsize}-1Ž¡doneŽ¡#‘¿Tronca–?¬a“destra“PWD“se“il“prompt“e`“piu`“largo“del“terminale:Ž¡if–?¬[“"$fillsize"“-lt“"0"“]Ž¡thenŽ¡‘¿let‘?¬cutt=3-${fillsize}Ž¡‘¿sedvar=""Ž¡‘¿while–?¬[“"$cutt"“-gt“"0"“]Ž¡‘¿doŽ¡‘~sedvar="${sedvar}."Ž¡‘~let‘?¬cutt=${cutt}-1Ž¡‘¿doneŽ¡‘¿newPWD="...$(echo–?¬-n“$PWD“|“sed“-e“"s/\(^${sedvar}\)\(.*\)/\2/")"Ž¡fiŽ¡#Ž¡#‘¿Crea–?¬l'orologio“e“la“barra“lungo“il“lato“destro“del“terminaleŽ¡#Ž¡local‘?¬LIGHT_BLUE="\033[1;34m"Ž¡local‘>\YELLOW="\033[1;33m"Ž¡#‘¿Posiziona–?¬il“cursore“per“stampare“l'orologio:Ž¡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"Ž¡#‘¿Stampa–?¬linee“verticali“lungo“il“lato“del“terminale:Ž¡while–?¬[“$i“-ge“4“]Ž¡doŽ¡‘¿echo–?¬-en“"\033[$(($i-1));${COLUMNS}H\263"Ž¡‘¿let‘?¬i=$i-1Ž¡doneŽ¡ŽŽŒ‹BΠÛ_2 ý ~?Ÿ„€ÕÁGŽÀ10.‘ñ8Prompt–Õdi“Esempio’QÓÖ¹27ŽŽ ÕÁ ýV¯Ãlet‘?¬prompt_line=${LINES}-1Ž¤ ®#‘¿Questo–?¬e`“necessario“perche'“facendo“\${LINES}“all'interno“di“unaŽ¡#‘¿espressione–?¬matematica“Bash“(come“$(()))“sembra“non“funzionare.Ž¡}Ž¡¡PROMPT_COMMAND=prompt_commandŽ¡¡function–?¬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–?¬$TERM“inŽ¡‘þ°xterm*)Ž¡‘)ý`TITLEBAR='\[\033]0;\u@\h:\w\007\]'Ž¡‘)ý`;;Ž¡‘þ°*)Ž¡‘)ý`TITLEBAR=""Ž¡‘)ý`;;Ž¡esacŽ¡¡PS1="$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\")\Ž¡$LIGHT_BLUE:$WHITE\$$LIGHT_BLUE)\304\Ž¡$YELLOW\304\Ž¡$LIGHT_GRAY‘?¬"Ž¡¡PS2="$LIGHT_BLUE\304$YELLOW\304$YELLOW\304$NO_COLOUR‘?¬"Ž¡¡}ŽŸ ;®‰ffÕÁGŽŽŒøJfƒ’À;èÛ_2ÕÁGóqLË ectt0900óqLË ectt1000ó¥!¢N ecbx1200ó]fŒ ecbx1000ó&Lt$ffffecbx1440óŒ6 ecss1000ó½HЃ ecti1000óþÖëI½q½qecss2074ó 1ê± ecrm1000ó !",š cmsy10ó  b> cmmi10ùNôßßßßß