Portál AbcLinuxu, 6. června 2024 01:17

Barvičky v terminálu - výstupy

7.11.2013 18:42 | Přečteno: 1788× | Za vším hledej Linux | Výběrový blog | poslední úprava: 7.11.2013 18:42

Před týdnem se tu objevil blogpost na téma Barevný prompt a barvičky v terminálu obecně. Škoda, že autor tohle vděčné téma nerozebral víc, takže nezbývá než také přihodit hrst do mlýna. Tentokrát o tom, co se dá použít, když si chci obarvit výstup na terminálu.

Zhruba před rokem napsal v rámci svého blogpostu o konfiguraci syslogu pěkný příspěvek mirec o utilitách grc a supercat, které se dají použít na obarvení logu. Já občas používám právě grc
user@stroj~: grc tail -f /var/log/messages

Pro obarvení výstupu z roury se dá použít jeho variace grcat (je součástí stejného instalačního balíku). která však akceptuje pouze jeden vstupní atribut - parametr který utilitě sděluje jaký konfigurační soubor se má na proud dat aplikovat v níže uvedeném příkladu je to conf.log, protože jde o výstup z logu. Bez tohoto parametru by grcat skončil chybou.

user@stroj~: tail -f /var/log/messages | grcat conf.log

Stránkování obarveného výstupu

Přesahuje-li délka obarveného výstupu okno terminálu, můžeme jej prohnat také přes less akorát nesmíme zapomenout přidat parametr -R. Bez něj by less barvičky nezobrazil.

user@stroj~: tail -f /var/log/messages | grcat conf.log | less -R

Různé výstupy vyžadují různé konfigurační soubory. Utilita grc použije konfigurační soubor vždy podle toho, jaký příkaz za ním následuje. Ovšem grcat zpracovává proud dat, proto je mu to třeba říct explicitně.

Obarvení výstupu pocházejícího ze zdrojových kódů

I když má grc podporu pro docela širokou škálu výstupů, tak všechno obarvit neumí. Pro obarvení XML a jiných zdrojových kódů je třeba použít jinou pomůcku - pygmentize (součást instalačního balíku python-pygments).

Ta - podobně jako grc analyzuje vstupu a podle něj použje barevné schéma. Má-li ovšem obarvit výstup z roury, tak je nutné buď použít volbu -g, kterou řekneme, aby se má pokusil určit barevné schéma analýzou vstupu.

user@stroj~: cibadmin --query --scope resource | pygmentize -g

Nebo pokud víme o jaký typ zdrojového kódu se jedná, mu to můžeme rovnou říct parametrem volby -l. Následující příklad použije na obarvení výstup schéma pro XML.

user@stroj~: cibadmin --query --scope resource | pygmentize -l xml

Jaké se má na výstupu použít barevné schéma lze ovlivnit také volbou -f, kterou nastavujeme formát výstupu. Kupř. má-li parametr hodnotu null, tak zase barvičky zahodíme. Výstup lze ale formátovat také do grafické podoby. Parametrem svg zformátuje obsah tak, že jej můžeme zapsat do souboru a tím získáme z výstupu obrázek ve formátu SVG.

       

Hodnocení: 100 %

        špatnédobré        

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

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

xkucf03 avatar 7.11.2013 22:28 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Barvičky v terminálu - výstupy
Odpovědět | Sbalit | Link | Blokovat | Admin

A jedno moje malé vylepšení:

$ cat ~/bin/pless
#!/bin/bash

pygmentize $1 | less -R -i

Dohromady pygmentize + less pro čtení zdrojáků :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
8.11.2013 10:07 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Barvičky v terminálu - výstupy
Odpovědět | Sbalit | Link | Blokovat | Admin

Na barvičky pozor, občas vám může terminál sežrat písmenko.

8.11.2013 13:58 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Barvičky v terminálu - výstupy
Nemůžeme jen brát, musíme i dávat… :-)
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
8.11.2013 13:20 Jan33
Rozbalit Rozbalit vše Re: Barvičky v terminálu - výstupy
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak to je super. Přesně tohle jsem hledal. Díky moc!

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.