Portál AbcLinuxu, 30. dubna 2025 15:31
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ě grcuser@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
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ě.
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.
Tiskni
Sdílej:
A jedno moje malé vylepšení:
$ cat ~/bin/pless #!/bin/bash pygmentize $1 | less -R -i
Dohromady pygmentize
+ less
pro čtení zdrojáků
Na barvičky pozor, občas vám může terminál sežrat písmenko.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.