+
+
Color Up Arbitrary Command Output
-colout is a simple command to add colors to a text stream in your terminal.
- -The colout command line interface has been carefully designed to be simple. Basically, you will call it like: <text
-stream> | colout <pattern to color> [color [style]]
colout has the ability to use 8 colors mode, 256 colors mode, colormaps, themes and source code syntax coloring. -Patterns are regular expressions.
- -You can think of colout as an alternative to grep --color which will preserve the surrounding context, whith more
-powerful coloring capabilites.
In the most simple use, you just have to call colout word to highlight what you want to spot in a text stream. This is
-particularly useful when examining logs.
Color every occurence of the word "fail" in bold red, in the boot log:
-tail /var/log/boot.log | colout fail

Using regular expressions, you can highlight anything you want in a text stream.
- -Color every line containing the word "fail" in bold red, in the boot log:
-tail /var/log/boot.log | colout "^.*fail.*$" red bold

Color in blue the user name of the ps output that have been greped:
ps aux | grep firefox | colout "^\w+\s" blue

Using groups in the regular expressions, you can highlight several matchs in different colors.
- -Highlight the different parts of the permissions of files in your home directories, that are rwx for user and group,
-but r-x for others:
ls -l ~ | colout "^(d*)-*(rwx)(rwx)(r-x)" blue,red,yellow,green

Using colormaps, you can change the colors for each lines
- -Predefined colormaps are particularly useful for reading logs that have long -lines that are wrapped.
-tail /var/log/kern.log | colout "^.*$" rainbow

But you can also create your own colormap, using the -c switch, for example to alternate two colors:
tail /var/log/kern.log | colout -c "^.*$" blue,yellow normal

If you prefer a rainbow with more colors, just use an upper-case R. For example to color a progress bar:
-echo "Progress [########################] 100%" | colout "#" Rainbow
- -

If you want even more colors, you can highlight each line of your log with a random one among the 256 ANSI colors:
-tail /var/log/dmesg | colout "^.*$" Random

You can color numbers according to their value on a linear scale:
-cmake .. && make 2>&1 | colout --scale 0,100 "\[(.*)%\]" scale

You can even fill your screen with esoteric disco characters (not that useful, but fun):
-cat /dev/urandom | colout "." Random

You can load extern palettes as colormaps. colout supports the GIMP Palette format (*.gpl, used by GIMP and inkscape, -for instance) and will translate them from their RGB values to their nearest ANSI colors (which may thus contains -fewer colors than the orginal RGB palette).
- -sudo apt-get update | colout -P /usr/share/gimp/2.0/palettes/ "^.*$" Firecode

You can use colout as a basic proxy to the pygments library, if you want to highlight a source code.
- -For example, let say you want to have a quick look at a source file, without being bothered by comments and empty lines:
-tail colout.py | grep -v "#" | grep -v "^\s*$" | colout -s Python monokai

But even more interesting, you can highlight the syntax of the matching parts of your text stream, which is useful -for spotting code in a log.
- -For example, color the code parts in the output of g++ (they come inside single quotes):
make 2>&1 | colout "'.*'" Cpp vim

colout comes with a set of handy shortcuts for coloring common outputs.
- -For example, if you often build your software with cmake but find its coloring scheme a bit boring, you can use the
-following shortcut:
-
make 2>&1 | colout -t cmake

You can, of course, combine several calls to colout using pipes: -
make 2>&1 | colout -t cmake | colout -t g++

To be able to use the syntax highlighting, you should install the python-pygments library.
colout -r will give you the lists of available colors, colormaps, themes and supported programming languages.
Colormaps and source code syntax highlighting most often comes in 8 or 256 colors mode. Use a lower case first letter -for the 8 colors mode and an upper case first one for the 256 colors.
- -The 8 colors mode syntax highlighting only comes in two styles: light and dark. If you want more fancy styles, you -should use 256 colors mode, and thus upper case the first letter of the language name, or else the style is ignored.
- -You can leave simple words without quotes, but it is better to put the regexp in quotes to avoid escaping special -characters that would overwise be interpreted by your shell (like parenthesis).
- -Do not hesitate to design your own theme, they are defined as separated files, and basically are just like chaining -several calls to colout in pipes, with the possibility to use python code around.
- -Don't use nested groups or colout will duplicate the corresponding input text with each matching colors.
- -