Escape: Värikoodit ja muut hienoudet

Linux.fista
Siirry navigaatioon Siirry hakuun

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:

Escape-kontrollikoodi eri tavoilla
Binääri Oktaali Desimaali Heksadesimaali Näppäimistö C tai printf-konsolikomento
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[muokkaa]

[a;bH siirtää kursorin koordinaatteihin a,b.

[?25l/h joko piilottaa (l) tai näyttää (h) kursorin.

Miltä teksti näyttää[muokkaa]

Väritöntä ja värillistä tekstiä voi yhdistää.

Värittömät[muokkaa]

[vm muuttaa ulkoasua v-muuttujan mukaan, kaavio:

Värittömät ulkoasut
0 1 2 3 4 5 8
Nollaa tekstin ulkoasun Kirkas teksti Pimeä teksti Vino teksti Alleviivattu teksti Vilkkuva teksti Piilotettu teksti

Värilliset[muokkaa]

[tvm asettaa itse tekstin (t=3) tai taustan (t=4) värin, joka on v. Kaavio alla:

Värit
0 1 2 3 4 5 6 7 9
Musta Punainen Vihreä Keltainen Sininen Magenta Syaani Valkoinen Oletusväri

Esimerkkejä[muokkaa]

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'