Colorize commands output or STDIN using patterns.
JavaScript Shell Python
Pull request Compare This branch is 143 commits behind nicoulaj:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



Easily colorize logs or commands output using patterns.

rainbow [ --COLOR=PATTERN ... | --conf CONF ] COMMAND


Using patterns

Just prepend rainbow with COLOR=PATTERN associations to your command, for example:

  • Tail some log file with lines containing ERROR in red:

    rainbow --red='.*ERROR.*' -- tail -f /var/log/my.log
  • Ping Google with IP addresses colorized in yellow:

    rainbow --yellow='\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' -- ping
  • Rainbow can also read from STDIN instead of providing a command:

    tail -f /var/log/my.log | rainbow --red='.*ERROR.*'

Using confs

Rainbow can read COLOR=PATTERN associations from config files, which is the most common way to use it. It automatically uses the config file if there is one named after the command name in ~/.rainbow, or a builtin one:

  • Colorize the diff command output using the builtin config:

    rainbow diff file1 file2
  • Start JBoss application server with colorized logs:

    rainbow --config=jboss -- jboss/bin/ run

The syntax for writing configs is very simple. See the builtin configs for examples.


Using packages

Building from sources

You can build from sources this way:

git clone git://
cd rainbow
sudo python install


This project is a fork of Linibou's colorex. It is is released under the terms of the GNU General Public License. See COPYING for details.