Escape: Värikoodit ja muut hienoudet
1960-luvulla kehitetty ASCII-standardi määrää miten merkistö, esim. kirjaimet näytetään näytöllä. Mukana on myös kontrollikoodeja, jolla näytölle tulostuvaa dataa voi säädellä, mm. värin suhteen. Tämä tapahtuu erityisesti Escape-kontrollikoodin avulla. Kontrollikoodien avulla saataviin väreihin sekä muiden muutosten avulla voidaan esimerkiksi saada muokata käytettävän komentotulkin ulkoasua, lisätä skripteihin selkeyttä sekä ylimääräistä toiminnallisuutta. Esc-näppäimen lisäksi Escape-kontrollikoodi saada seuraavilla tavoilla:
Binääri | Oktaali | Desimaali | Heksadesimaali | Näppäimistö | C tai printf-ohjelma |
---|---|---|---|---|---|
11011 | 33 | 27 | 1b | ^[ alias CTRL+[ alias (joissain näppäimistöasetteluissa) CTRL+AltGr+8 tai usein Escape-näppäin | \e |
Kun laittaa Escape-koodin ja tietyn merkkiyhdistelmän, saa hienoja tuloksia.
Seuraavissa esimerkeissä vinot kirjaimet tarkoittavat sitä, että tekstiä ei kirjoiteta niin kuin se esimerkissä näytetään. Päättele asiayhteydestä. Laita myös ennen esimerkkejä Escape-koodi. Voit testata vaikka konsolikomennolla printf näitä (pakokoodi on siinä \e). Pääteasetukset tulevat tietenkin vaikuttamaan ulkonäköön.
Kursori
[a;bH siirtää kursorin koordinaatteihin a,b.
[?25l/h joko piilottaa (l) tai näyttää (h) kursorin.
Miltä teksti näyttää
Väritöntä ja värillistä tekstiä voi yhdistää.
Värittömät
[vm muuttaa ulkoasua v-muuttujan mukaan, kaavio:
0 | 1 | 2 | 3 | 4 | 5 | 8 |
---|---|---|---|---|---|---|
Nollaa tekstin ulkoasun | Kirkas teksti | Pimeä teksti | Vino teksti | Alleviivattu teksti | Vilkkuva teksti | Piilotettu teksti |
Värilliset
[tvm asettaa itse tekstin (t=3) tai taustan (t=4) värin, joka on v. Kaavio alla:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 |
---|---|---|---|---|---|---|---|---|
Musta | Punainen | Vihreä | Keltainen | Sininen | Magenta | Syaani | Valkoinen | Oletusväri |
Esimerkkejä
printf '\e[3mMAINOS:\e[0m \e[5mUusia Swap-muistin laajennustuotteita (menetelmän tehokkuus saa lääkärit \e[1mraivoamaan\e[0m\e[5m...)\e[0m\n'
printf '\e[1m\e[31mHÄTÄTAPAUS!!! Joku inhottava tietomurtautuja kirjoitti "sleep 30; rm -rf /*"! Meillä on \e[5mpuoli minuuttia aikaa\e[0m\e[1m\e[31m pyytää ylläpitäjää lähettämään SIGKILL!\e[30m\e[0m\n'
printf '\e[8mLaitetaan tähän törkeä salaisuus jota kukaan ei löydä. Vaikka: Käytän tabulaattoreiden sijaan välilyöntejä.\e[0m\n'