Guarantee business interface. stickfish.com
abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz 64bit.eu 64bit.eu abcprace.cz AbcPráce.cz Raydesk Raydesk
Sledujte AbcLinuxu.cz na:
facebook favicon logo  Facebooku twitter favicon logo  Twitteru,   identi.ca favicon logo  Identi.ca,   rss logo  RSS
Rozšířené hledání
×
včera 22:04 | Upozornění
Firma Valve, tvůrce online herní platformy Steam, hledá vývojáře pro portování her z Windows na Linux. Nedávno sice Valve dementovala zvěsti o chystaném linuxovém klientu Steam, ale třeba se blýská na lepší časy.
Robert Krátký | Komentářů: 9
včera 21:50 | Zajímavý software
Tvůrci Open-Xchange, open source groupwarového softwaru, oznámili, že vyvinuli migrační nástroj pro převod dat z Microsoft Outlooku na Open-Xchange. Nástroj podporuje přesun e-mailů, kontaktů, událostí a úkolů na Open-Xchange Server. Mohou jej použít jak individuální uživatelé, kteří používali Outlook jako samostatný poštovní klient, tak ti, kdo ho používali v kombinaci s Exchange Serverem.
Robert Krátký | Komentářů: 0
včera 21:40 | IT novinky
IBM představila dosud nejrychlejší mikroprocesor: 5,2 GHz a stojí tisíce dolarů. Jmenuje se z196 a bude dodáván s mainframy řady Z. z196 obsahuje 1,4 miliard tranzistorů na čipu, který měří 512 čtverečních milimetrů a je vyroben 45nm technologií. Na trh se dostane během září.
Robert Krátký | Komentářů: 3
včera 16:24 | Pozvánky
Konference LinuxAlt se koná o víkendu 6. a 7. listopadu 2010 na půdě FIT VUT v Brně — Králově poli. Pořádá ji společnost Red Hat, FIT VUT a Liberix, o.p.s., a hlavním tématem jsou opět open-source software a otevřené technologie. … více »
Vlastimil Ott | Komentářů: 0
včera 09:57 | IT novinky
Firma Archos oznámila pětici nových tabletů s Androidem 2.2 (Froyo). Zařízení budou od kapesní velikosti (displej 2,8", 3,2" a 4,3") až po iPadovsky velké tablety (displej 7" a 10,1"). Malé verze budou v prodeji již z září, ostatní přijdou během podzimu. Nejmenší a nejlevnější bude stát 99 USD, největší a nejdražší bude za 349 USD.
Robert Krátký | Komentářů: 6
včera 09:49 | Zajímavý článek
Čím se bude odlišovat Mozilla Firefox 4 od verze 3.x? Ubuntu.ka připravil přehled nových funkcí Firefoxu 4 včetně screenshotů srovnávajících příslušné vlastnosti ve verzích 3 a 4.
Robert Krátký | Komentářů: 14
včera 09:43 | Zajímavý software
Ruská firma Unigine připravuje nativní linuxovoou real-time strategickou hru OilRush. Cílem hry bude rozšiřovat, bránit a dobývat vrtné plošiny v moři. Hra používá engine Unigine a renderovat bude pomocí OpenGL 3.x/4.x. K dispozici je docela působivá video ukázka. Informuje Phoronix.
Robert Krátký | Komentářů: 11
včera 09:20 | Zajímavý software
KSplice, kód, který umožňuje patchování jádra za běhu (bez restartu), bude k dispozici pro uživatele Fedory zadarmo (kromě toho existuje placená 'enterprise' verze). Mimo Fedory je bezplatná verze k mání i pro Ubuntu.
Robert Krátký | Komentářů: 6
1.9. 19:47 | Zajímavý software
Firma Fotolab (sběrny Fotolab a FotoStar) vydala své programy pro objednávání tisku digitálních fotografií, fotoknih apod. i ve verzích pro Linux. Ze stránek si můžete stáhnout archiv s perlovským skriptem, který po odsouhlasení EULA dostahuje potřebné aplikační soubory.
Robert Krátký | Komentářů: 21
1.9. 18:47 | Humor
Koncem srpna byl Microsoftu schválen patent na vypínání operačního systému. Patent má výstižný název "Operating system shut down" a ve výtažku se mimo jiné píše: "Uživatelské rozhraní a schéma poskytnuté pro umožnění vypnutí operačního systému". Vypnutí operačního systému prostě není žádná legrace. Patent uvádí pět "vynálezců". … více »
Robert Krátký | Komentářů: 93
Používáte domácí účetnictví?
 (5%)
 (6%)
 (9%)
 (80%)
Celkem 586 hlasů
 Komentářů: 26, poslední 1.9. 19:15
IBM Smartplanet logo Pojďte s námi budovat chytřejší planetu
    Rozcestník
    Doporučujeme

    Barevný a formátovaný text v terminálu

    4.3. | David Watzke | Návody | 5388×

    V tomto článku se dozvíte, jak ovlivnit zobrazení výstupu programu na terminálu. Článek rozebírá především barvy a základní formátování.

    Obsah

    Většina un*xových emulátorů terminálu podporuje řídící (escape) sekvence ANSI, které slouží (mimo jiné) k formátování výstupu na textových terminálech.

    Nejdříve si povíme něco k teorii a pak si ukážeme ukázky kódu v různých programovacích jazycích. Tato záležitost není multiplatformní a na Windows je třeba postupovat trochu jinak než na Linuxu a jiných unixových systémech. Ne každý emulátor terminálu má implementovánu podporu všech standardizovaných vlastností a aby toho nebylo málo, některé vlastnosti dokonce v různých terminálech dělají různé věci. To vám doufám postačí jako pádný důvod k tomu, abyste v případě, že použijete formátování ve svém programu, nezapomněli i na možnost formátování úplně vypnout.

    Snad jsem vás ještě neodradil. V praxi to není až tak hrozné. Většinou budete chtít zřejmě používat jen základní možnosti formátování textu a s těmi není žádný problém na hojně používaných emulátorech terminálu.

    Takže jak na to? Escapovací sekvence se tomu neříká jen tak pro nic za nic, escape je totiž znak, který tyto řídící sekvence zahajuje. Tedy ještě spolu se znakem „[“, který jej musí následovat. Této sekvenci znaků se říká zkratkou CSI, a to znamená Control Sequence Introducer/Initiator – česky iniciátor řídící sekvence. Za touto sekvencí následuje samotný příkaz. My se v tomto článku budeme zabývat pouze příkazem ovlivňujícím zobrazení textu na terminálu. Jeho předpis vypadá takto:

    CSI a [;b] m
    

    Mezery jsou v předpisu pouze pro přehlednost a hranatá závorka značí volitelnost. A co to znamená? CSI je zmiňovaná zahajovací sekvence, tedy ESC+[. Písmena „a“ a „b“ jsou parametry, které nahradíme za čísla. Za jaká? To záleží na tom, co od příkazu očekáváte. Možnosti jsou vypsané v tabulce níže. Za parametry je třeba dát písmeno „m“ tak, jak je.

    A teď když konečně prozradím, jak napsat znak escape, tak si to budeme moci předvést. Máte tři možnosti, jak napsat escape, buď \033 (umístění znaku escape v ASCII tabulce zapsáno v osmičkové soustavě je 33), \x1b (umístění znaku v ASCII tabulce zapsáno v šestnáctkové soustavě je 1B) nebo \e (styl jazyka C), což je nestandardní (a někde nepodporovaný), ale poměrně rozšířený zápis (dostupný nejen v C).

    \033[31mAhoj barevný světe!\033[0m
         ^^                         ^- vypne formátování
          `- zahájí výpis v červené barvě
    

    Jak je vidět, v tomto případě používáme pouze parametr „a“ (z předpisu výše). Když použijeme zároveň i parametr „b“, můžeme nastavit dvě atributy najednou stylem „a;b“, takže to pak celé vypadá takto: \033[a;bm, přičemž za „a“ a „b“ dosadíme číselné hodnoty. Následuje výběr ze seznamu možných hodnot parametrů:

    • 0 – vypne všechny atributy
    • 1 – tučný text
    • 4 – jednoduché podtržení
    • 5 – blikající text
    • 7 – prohodí barvy popředí a pozadí
    • 39 – nastaví výchozí barvu popředí
    • 49 – nastaví výchozí barvu pozadí
    • 30 až 37, 90 až 99 – nastavuje barvu popředí (jako proměnná „a“)
    • 40 až 47, 100 až 109 – nastavuje barvu pozadí (jako proměnná „a“)

    U výše zmíněných rozsahů hodnot není jasné, která hodnota náleží které barvě. Proto následuje tabulka barev:

    číslo 0 1 2 3 4 5 6 7
    barva   černá  červená zelená  žlutá  modrá  purpurová tyrkysová  bílá 

    Přidám ještě několik ukázkových parametrů, abyste si mohli ověřit, že to celé chápete správně:

    • 101 je světle červené pozadí (10 = světlé pozadí, 1 = červená)
    • 34 je modré popředí (3 = popředí, 4 = modrá)
    • 93 je světle žlutá

    Ukázkové sekvence s oběma parametry:

    • \033[31;42m – červený text (31) na zeleném pozadí (42)
    • \033[42;31m – totéž
    • \x1b[32;1m – tučný (1) zelený text (32)
    • \x1b[34;4m – podtržený (4) modrý text (34)
    • \e[101;34m – světle červené pozadí (101), modrý text (34)
    • \e[44;1m – modré pozadí (44), tučný text (1)

    Poznámka: Nikdy nezapomínejte ukončovat formátování pomocí \033[0m.

    Nyní přejdeme k ukázkám z praxe.

    Bash

    link

    V Bashi lze barevný text vypisovat pomocí příkazu echo s přepínačem -e.

    echo -e "\033[31mAhoj barevný světe!\033[0m"
    
    for((i = 0; i <= 7; i++))
    do
    	echo -e "(3$i) \033[3${i}mBarevný text\033[0m a (4${i}) \033[4${i}mbarevné pozadí…\033[0m"
    done
    

    barvy konsole barvy xterm

    Python

    link

    V Pythonu můžete použít funkci print().

    print("\033[32mZelený text\033[0m")
    
    YELLOW = '\033[93m'
    END = '\033[0m'
    
    print(YELLOW + "Žlutý text!" + END)
    

    Perl

    link

    V Perlu lze také použít funkci print().

    my @colors = ("cerna", "cervena", "zelena", "zluta",
    	      "modra", "purpurova", "tyrkysova", "bila");
    
    do {
    	my $number = 37 – $#colors;
    	my $color = shift @colors;
    	print "\033[${number}m${color}, \033[1mtucna ${color}\033[0m\n";
    } while (@colors);
    

    PuTTY na Symbianu je ukázkou toho, že ne všude všechny atributy fungují. (Tučný text se zobrazí jako normální.)

    barvy putty symbian

    C/C++

    link

    Lze použít funkce printf() z C nebo std::cout z C++.

    /* C nebo C++ */
    #include <stdio.h>
    void vypis_tucne(const char* text)
    {
    	printf("\x1b[1m%s\x1b[0m\n", text);
    }
    
    /* C++ */
    #include <iostream>
    void vypis_tucne_cpp(std::string text)
    {
    	std::cout << "\e[1m" << text << "\e[0m\n";
    }
    
           

    Hodnocení: 82 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    4.3. 07:52 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    V Konsoli je 8 - rudá, která je na černé lépe vidět. Škoda že není i v xterm.
    4.3. 08:06 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    V jake konkretne?

    Svetla/Bold cervena "\033[1;31m" je IMHO videt vsude dobre.

    http://www.abclinuxu.cz/blog/idea/2008/7/ansi-ridici-sekvence
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.3. 08:32 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    V KDE Konsoli. Tučná je samozřejmě vidět lépe, ale já mluvil o standardní červené.
    4.3. 08:37 xurfa
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    KDE? tu sračku ještě někdo používá?
    4.3. 08:51 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Samozřejmě (nemluvím samozřejmě o experimentální 4ce ale o poslední stabilní verzi). Kwin dohromady s Kickerem je minimálně stejně dobrý než řada jiných DE/WM.
    4.3. 10:21 Zopper | skóre: 1
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    KDE 4 mi jako experimentální už nepřijde. S 4.4 jsem se k němu zase vrátil, ač jsem s příchodem 4.0 odešel ke Gnome.
    "Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2
    4.3. 12:56 Xjmeno363
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    nápodobně!

    Jinak nechápu proč se někdo snaží konzoli obarvit a vylepšit -> čeho chcete dosáhnout, chcete z toho udělat GUI v GUI?
    4.3. 13:31 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Pretože to niekomu tak môže vyhovovať? Skús napr. kontrolovať diff (alebo skôr veľa diff-ov) a uvidíš, k čomu sú farby dobré (a určite veľa ľudí má pre farby aj iné použitie a to, že ich ty nepotrebuješ, im je úplne jedno).
    5.3. 10:49 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Proč si myslíte že právě a jen GUI by mělo být barevné? Vždyť je to proti přírodě. I text a písmenka mají právo být barevné, nejen vobrázky a vomalovánky! Nejste vy nakonec rasista? :D
    pavlix avatar 5.3. 12:29 pavlix | skóre: 30 | blog: pavlix | Praha
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Tahle možnost je tu pro lidi, kteří chápou :).

    Ne pro ty, co považují konzoli/terminál za sprosté slovo.

    A ani proty, co považují černobílou konzoli za výraz nadřazenosti nad uživateli barevného gui.
    Roman Horník avatar 10.3. 06:59 Roman Horník | Seč
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Že by např. kvůli přehlednosti?

    Mimochodem- nejseš ty náhodou *bunťák?
    I'm Only Wearing Black Until They Make Something Darker
    4.3. 10:26 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Jaka verze KDE?
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    5.3. 10:47 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Funguje to v 3.5.10, asi i starších, a předpokládám že i v KDE4, ale zkoušet se mi to nechce.
    5.3. 11:53 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    V KDE4 to prave nefunguje, proto jsem se ptal :)
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    9.3. 07:27 miREC
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    V kde 4.3.2 to funguje no problem
    9.3. 08:19 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Příloha:
    Asi jsem neco nepochopil.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Marián Kyral avatar 9.3. 09:59 Marián Kyral | skóre: 25 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Příloha:
    Teď jsem to zkoušel v 4.4.1 a funguje. Bohužel poslední KDE 4.3.5 jsem upgradoval o víkendu, takže to už nevyzkouším. Možná to bude nějaká regrese. V 4.3.4 a 4.3.5 jich bylo několik. A i díky tomu jsem upgradoval.
    9.3. 12:41 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Eh? Ale vzdyt ti to dela uplne to same. 8 proste neni barva, takze to udela bilou.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Marián Kyral avatar 9.3. 12:53 Marián Kyral | skóre: 25 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Aha, já se v tom ztratil. Stačilo mi, že to byla jiná bílá ;-)
    4.3. 08:19 Radek
    Rozbalit Rozbalit vše Nedělejte to
    Ty jo, to je ale retro. Jistě zajímavá perlička, ale prosím prosím, opravdu to takhle nikdy v programech nedělejte. Vyrobíte úplně nepřenositelný program plný divokých nečitelných sekvencí. To si chytří lidé uvědomili už před více než 30 lety, když vytvořili věci jako termcap, terminfo a postupně řadu knihoven nad tím. Takže pokud chcete objevovat dávnou slávu textových terminálů zejména na Unixu, začal bych někde tam. Můžete třeba zkusit zadat na svém Linuxu echo $TERM a zamyslet se, co to asi znamená :-)
    4.3. 08:21 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Nedělejte to
    Jistě zajímavá perlička, ale prosím prosím, opravdu to takhle nikdy v programech nedělejte.
    Uzasny nazor. Protoze to nekde nefunguje, tak to nebudu vubec pouzivat :-)
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.3. 09:19 flaxa
    Rozbalit Rozbalit vše Re: Nedělejte to
    ja jsem autora prispevku pochopil jinak. Dokonce bych rekl, ze autor je takovy don Quijote v oblasti vypocetni techniky jehoz vetrne mlyny jsou nestrukturovane programy vytvorene dnes generaci Excel-Word.

    Dokonce jsem presvedcen, ze v jeho programech jsou nejen ty terminfo/termcap sequence , nybrz , ze je ma schovane ve funkcich, ktere nenesou nazev 'udelej_cervene' ale 'zvyrazni_stupen_1'.
    Používat funkce za tímhle účelem jsem v shellu neviděl nikdy, ale běžně se ANSI sekvence na začátku naládují do vhodně pojmenovaných proměnných ($BLUE, $BOLD $UL, $ERROR, atd.). Což je vhodné i v případě, že pohrdnete tput a napíšete tam ty sekvence natvrdo.
    4.3. 13:00 Ivan
    Rozbalit Rozbalit vše Re: Nedělejte to
    Kline to pouzivejte, ale pouzivejte to to "spravnym" zpusobem. To vam treba neni divne, ze vystup z prikazu ls je barevny, ale pokud ho presmerujete do less-u, tak barvicky zmizi? Jakto, ze less nezobrazi ani barvicky ani escape sekvence?
    4.3. 13:32 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Nedělejte to
    V niekoľkých mojich skriptoch používam na ofarbovanie escape sekvencie a pri presmerovaní do súboru sa nepoužijú (pretože nie je problém urobiť funkciu, prípadne nastaviť premenné podľa toho, či je výstup niekam presmerovaný).
    4.3. 13:37 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Nedělejte to
    LOL, tak to je snad jasne, ze nebudu tlacit escape sekvence jinam nez na terminal.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Fill avatar 4.3. 14:32 Fill | skóre: 13 | blog: Fill | Třebíč
    Rozbalit Rozbalit vše Re: Nedělejte to
    less se dá donutit, aby barvičky zachoval: less -R
    pavlix avatar 5.3. 12:31 pavlix | skóre: 30 | blog: pavlix | Praha
    Rozbalit Rozbalit vše Re: Nedělejte to
    Pak musíš ještě vstupní aplikaci donutit, aby barvičky používala (ls --color).
    4.3. 13:02 zulu
    Rozbalit Rozbalit vše Re: Nedělejte to
    Uzasna neschopnost pochopit psane slovo. Upozornil bych predevsim na _takhle_. Ale samozrejme si klidne natvrdo dratuj sekvence do kodu, uz jsme neco z tve produkce videli, takze nas dalsi cunarna neprekvapi.
    4.3. 13:45 Let_Me_Be | skóre: 19 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Nedělejte to
    Jenomze _TAKHLE_ se to dela z urciteho duvodu a to prave proto aby clovek nemusel pouzivat sadu knihoven.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    4.3. 08:49 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Nedělejte to
    Ano, sekvene jako \E[0;1;4;5;7;8m^N by používal jen blázen, když tu jsou nové a lepší terminfo \E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,. Jen žertuji :)

    Nevím ale když je v shellu něco jako "Ahoj ${cred}lidi${cnorm}" tak mi to až tak "plné divokých nečitelných sekvencí" nepřipadá.
    4.3. 09:03 vencas | skóre: 30
    Rozbalit Rozbalit vše Re: Nedělejte to
    Souhlasim, taky jsem si rikal, kdyz jsem to cetl. Ovsem nikdy jsem to nedotahl do praxe, tj.jak neco podobneho napsat prenositelne -- krom toho, ze by se podle schopnosti terminalu (ktere mi poskytne terminfo) pak kod kosate vetvil s ruznymi excape sekvencemi.

    Predstavoval bychsi neco jako termcap_set_attr(TERMCAP_RED | TERMCAP_BOLD); /*...*/ termcap_set_attr(TERMCAP_PLAIN);. Existuje to?
    4.3. 13:20 zulu
    Rozbalit Rozbalit vše Re: Nedělejte to
    To sam termcap neumi, ale nad nim jsou treba curses (taky nekdy na pos.ani), kde na to mas has_colors(); init_pair(num, fg, bg); attron(COLOR_PAIR(num));
    4.3. 13:35 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: Nedělejte to
    Knižnica curses je dostupná úplne všade?
    Josef Kufner avatar 4.3. 18:47 Josef Kufner | skóre: 58
    Rozbalit Rozbalit vše Re: Nedělejte to
    Ne, na mikrovlnce ji bohužel nemám... není totiž kompatibilní s otočným knoflíkem.
    Hello world ! Segmentation fault (core dumped)
    Josef Kufner avatar 4.3. 09:13 Josef Kufner | skóre: 58
    Rozbalit Rozbalit vše Re: Nedělejte to
    Jojo, sice to celkem funguje, ale kdo ví na jakých terminálech to poběží a zda ten terminál vůbec bude umět barvičky. Chtělo by to ještě druhý díl o tom, jak to dělat správně (ncurses, tput, terminfo,…).
    Hello world ! Segmentation fault (core dumped)
    4.3. 08:28 pozortucnak | skóre: 18 | blog: vecny_windowsar
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Chjo nejak mi to nejde...

    Chtěl bych toto echo -e '\033[32;40m' ale tučným písmem...
    Jsem mimořádně obtížný případ
    4.3. 08:35 Ash | skóre: 48
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Tučná není vždy tučná, často je "jen" světlá. Prostě zvýraznění (něco jako v html emphasis).
    David Watzke avatar 4.3. 18:53 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Tohle je ono?
    echo -e '\033[32;40m\033[1mXXX\033[0m'
    4.3. 08:30 pet
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Více v "man console_codes".

    Zde popsané je v části "ECMA-48 Set Graphics Rendition", jinak je tam spousta jiných zajímavých a užitečných sekvencí.
    Věroš avatar 4.3. 13:19 Věroš | skóre: 23 | blog: Co není v hlavě | 49.29 s.š., 16.54. v.d.
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    ... což je ovšem pouze návod k Linuxové konzoli a nikoliv k obecnému terminálu.

    Že se ty sekvence mezi nějakými terminály náhodou shodují, to je věc jiná.

    PS: Včera jsem uklízel a našel jsem fotku sériového terminálu z 80 let. Tam červená fakt nefungovala a dělala nepořádek. Byl totiž černobílý....
    Tak jsem si taky napsalredakční systém Do kterého klubu se mám přihlásit?
    4.3. 11:06 Karel Zak
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Pouzivat primo Esc sekvence neni moc chytre a psat je primo do C (apod.) programu je pak vylozeni blbe.
      man tput
      man terminfo
    
    napriklad:
       echo "$(tput setaf 1) Red Text $(tput sgr0)"
    
    Jinak barev muze byt daleko vice, napriklad xterm nema problem s 256 barvama,
       export TERM=xterm-256color
    
    nebo
      xterm -tn xterm-256color
    
    vlastikroot avatar 4.3. 17:57 vlastikroot | skóre: 21 | blog: vlastikovo | Milevsko
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Jak to udělat přes telnet? Rád bych to pokud možno zakomponoval do toho mýho chat serveru.
    Sg1-game | We will destroys the Christian's legion ... and the cross, will be inverted | IP 85.13.98.47
    Autore, zkuste si třeba v Konsoli, xtermu apod...:
    tput setb 1;tput setf 7;tput cup 10 10 ...
    Uvidíte, že je zbytečné se trápit s Escape sekvencemi a ještě se starat, zda terminál danou možnost podporuje. Databáze Terminfa a příslušná knihovna to udělá za vás ;-)
    vogo avatar 4.3. 11:15 vogo | skóre: 32 | blog: "Skládat papír" | Jihlava
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Nevím proč se všichni rozčilují, že umisťování sekvencí přímo do kódu je hnus, proč to má tedy třeba ls z coreutils také sekvence natvrdo v kódu? Mimochodem pacman-color je také vystavěn nad těmito barevnými sekvencemi. Jinak neuškodí detekce, zda stream, do kterého se zapisuje sekvence je opravu terminál... jinak potom přesměrování výstupu dopadá špatně...
    Nejsem paranoidní, ale to ještě neznamená, že po mě nejdou.
    4.3. 11:33 TM
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Protože na daném terminálu nemusí naše sekvence dělat přesně to co jsme zamýšleli, zatímco u nás doma to bylo OK. A také proto, že bychom měli používat nástroje, které nám systém nabízí a ne je obcházet. To že jsou k dispozici má svůj důvod.
    Vůbec se nerozčiluji a autor doufám taky ne. Prostě se mu snažím předat svoji zkušenost.
    David Watzke avatar 4.3. 11:38 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Vůbec se nerozčiluji a autor doufám taky ne. Prostě se mu snažím předat svoji zkušenost.
    Tak to má bejt; diskuse má být o tom, co jsem zapomněl, atp. Pak je užitečná.
    4.3. 11:53 JS
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Je nekde nejaky standardni referencni popis vsech tech escape sekvenci? Neco jako RFC treba.
    David Watzke avatar 4.3. 12:24 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Na wiki je stránka ANSI escape code. Jinak hledej standard ISO/IEC 6429 (link ukazuje na preview).
    7.3. 08:28 ivan
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    www.vt100.net
    4.3. 13:24 maertien(neprihlasen)
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    pekny clanek, thx
    Marián Kyral avatar 4.3. 22:25 Marián Kyral | skóre: 25 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Ono když se jednotlivé barvy nadefinují jako proměnné, tak se s tím hned pracuje mnohem lépe.

    Barevný prompt:
    
    
    $ cat bin/prompt 
    #!/bin/bash                                        
    
    ##########
    # prompt #
    ##########
    # prompt is a template-like program designed to simplify the process of colourizing one's prompt.
    # By analyzing the variables, it is easy to identify what ANSI colour sequences match up with which colour.
    # Thus, modifying one's bash prompt is a simple matter of going through the variables and inserting the colour of choice.
    #                                                                                                                        
    # When the script is modified to your liking, you should place it a useful place (like ~/bin/).                          
    # Then replace PS1="..." in your bootup file (~/.bashrc or ~/.bash_profile) with PS1=`~/bin/prompt` (those are backticks!)
    #                                                                                                                         
    # Only known to work as expected with bash                                                                                
    #                                                                                                                         
    # No licensing or copyright is placed on this script. Do with it as you wish.                                             
    
    ################################################
    # THERE SHOULD BE NO NEED TO EDIT THIS SECTION #
    ################################################
    
    #$normal will reset the colour to the default, use it to stop using a certain colour (see "prompt parts")
    normal="\[\e[0m\]"                                                                                       
    
    # # # # # # #
    #BACKGROUNDS
    # # # # # # #
    blackbg=";40m\]"
    redbg=";41m\]"
    greenbg=";42m\]"
    brownbg=";43m\]"
    bluebg=";44m\]"
    purplebg=";45m\]"
    cyanbg=";46m\]"
    greybg=";47m\]"
    
    ############################################################################################
    # THERE SHOULD BE NO NEED TO EDIT THIS SECTION (UNLESS YOU DO NOT WANT A BLACK BACKGROUND) #
    ############################################################################################
    # # # # # # #
    #FOREGROUNDS
    # # # # # # #
    black="\[\e[0;30$blackbg"
    redfaint="\[\e[0;31$blackbg"
    greenfaint="\[\e[0;32$blackbg"
    brownfaint="\[\e[0;33$blackbg"
    bluefaint="\[\e[0;34$blackbg"
    purplefaint="\[\e[0;35$blackbg"
    cyanfaint="\[\e[0;36$blackbg"
    greyfaint="\[\e[0;37$blackbg"
    
    grey="\[\e[1;30$blackbg"
    red="\[\e[1;31$blackbg"
    green="\[\e[1;32$blackbg"
    yellow="\[\e[1;33$blackbg"
    blue="\[\e[1;34$blackbg"
    pink="\[\e[1;35$blackbg"
    cyan="\[\e[1;36$blackbg"
    white="\[\e[1;37$blackbg"
    
    ##################################
    # EDIT THIS STUFF TO YOUR LIKING #
    ##################################
    # # # # # # #
    #PROMPT PARTS
    # # # # # # #
    prompt_opening_brace="$yellow[$normal"
    prompt_closing_brace="$yellow]$normal"
    
    prompt_date="\d"
    prompt_hostname_short="$blue\h$normal"
    prompt_hostname_long="\H"
    prompt_jobs="\j"
    prompt_terminal="\l"
    prompt_shellname="\s"
    prompt_time_24="\t"
    prompt_time_12="\T"
    prompt_time_12_am_pm="\@"
    prompt_username="$green\u$normal"
    prompt_version="\v"
    prompt_version_patchlevel="\V"
    prompt_pwd_long="\w"
    prompt_pwd_short="$red\W$normal"
    prompt_history_number="\!"
    prompt_session_number="\#"
    prompt_usertype_sign="\\$"
    prompt_git_branch="$white\$(__git_ps1)$normal"
    
    # # # # # # # #
    #FINAL PROMPT
    # # # # # # # #
    echo -n "$prompt_opening_brace$prompt_time_24 $prompt_username@$prompt_hostname_short $prompt_pwd_short$prompt_git_branch$prompt_closing_brace$prompt_usertype_sign "
    
    Ghaad avatar 9.3. 18:31 Ghaad | skóre: 30 | blog: blogoblog
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Co kdyz nechci pozadi cerne (blackbg), ale pruhledne? Kdyz timhle skriptem nastavim prompt, tak ho mam na cernem pozadi, coz vypada spatne, jelikoz vsechen vystup mam jinak pruhledny (na pozadi urxvt terminalu mam grafiku).
    GNUniverse - May the source be with you...
    Marián Kyral avatar 9.3. 20:34 Marián Kyral | skóre: 25 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Zkus si tam přidat tento řádek a následně změnit $blackbg za $transparentbg
    transparentbg="m\]"
    Ghaad avatar 17.3. 19:12 Ghaad | skóre: 30 | blog: blogoblog
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Jde to, dik.
    GNUniverse - May the source be with you...
    Ghaad avatar 5.3. 18:12 Ghaad | skóre: 30 | blog: blogoblog
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Pekny strucny prehled/uvod. Nebylo by ale od veci zminit, ze je mozno v nekterych terminalech pouzivat i 256 barev + nejake priklady.
    GNUniverse - May the source be with you...
    6.3. 01:14 Gilhad | skóre: 13
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Máte dvě možnosti, jak napsat escape, buď \033 (umístění znaku escape v ASCII tabulce zapsáno v osmičkové soustavě je 33), \x1b (umístění znaku v ASCII tabulce zapsáno v šestnáctkové soustavě je 1B) nebo \e .....

    Máme dvě možnosti: a, b nebo c ... :)
    David Watzke avatar 6.3. 15:03 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    :-) to je tak, když něco měním po napsání
    6.3. 18:18 aceman | skóre: 21
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Pokial viem tak minimalne v bashi sa toto formatovanie da zadavat v tvare ESC[ [i];a[;b]m , kde A (30-37) a B (40-47) su farby popredia a pozadia tak ako popisuje clanok. Intenzita farby I (0-8) sa zapisuje ako prvy nepovinny parameter. Clanok ale uvadza, ze hodnoty 0-8 by mohli byt zapisane do parametra A. Resp. ak sa do A zapise intenzita a potom do B farba popredia, clanok nespomina moznost tretieho parametra kam sa zada farba pozadia. Ako to teda je?
    David Watzke avatar 9.3. 15:35 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Když chceš tři věci najednou, musíš to udělat takhle:
    \e[A;Bm\e[Cm   tradáá   \e[0m
    9.3. 20:34 aceman | skóre: 21
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Vsimnite si, ze aj predchadzajuci prispevok s vypisom kodu skriptu prompt jma definicie v tvare \e[A;B;Cm , kde A a B su povinne, C nepovinne. A = intenzita, B=popredie, C=pozadie. A ide o bash. Zeby to teda bolo v roznych programoch rozdielne?
    David Watzke avatar 9.3. 21:15 David Watzke | skóre: 72 | blog: Blog...
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    Hm, to nevím, ale funguje mi to. O tom jsem ani nevěděl, abych pravdu řek. Ono to ale není že A, B, C má nějaký pořadí, můžeš to tam nacpat jak chceš.
    # 3x to samý
    \e[1;33;43m
    \x1b[33;1;43m
    \033[43;1;33m
    Evidentně tam lze zadat libovolný množství parametrů.
    15.3. 20:40 aceman | skóre: 21
    Rozbalit Rozbalit vše Re: Barevný a formátovaný text v terminálu
    To by davalo zmysel. Mozno preto su jednotlive hodnoty z roznych intervalov a potom su jednoznacne bez ohladu na poradie.

    Založit nové vláknoNahoru

    ISSN 1214-1267   Powered by 64bit.eu   64bit.eu logo
    © 1999-2010 Stickfish, s. r. o. Všechna práva vyhrazena.