Tutorial: Colored Man Pages & How It Works

Posted by Chris7mas on Apr 2, 2012 5:11 AM EDT
TuxArena; By Craciun Dan
Mail this story
Print this story

In this tutorial I’ll show how to get some nicely colored man pages by adding several lines inside the .bashrc file, explaining what the code means and how it works.

In this tutorial I’ll show how to get some nicely colored man pages by adding several lines inside the .bashrc file, explaining what the code means and how it works.

Except for the eye-candy, colors may help when it comes to clarity, although some prefer the default monochrome approach. At the start of this article there is the actual code which can be copied and pasted inside the ~/.bashrc file, and which can be modified depending on each person’s preferences. If you don’t care about what it does you can just insert it in ~/.bashrc, restart your terminal and start reading some man pages to see how it looks (e.g. man man). After this part I tried to explain how this code works and how to modify it in order to get new ‘themes’. The code

For this tutorial we’ll be editing the ~/.bashrc file, which is a hidden file located in your home directory which gets read each time a new Bash instance starts up. Bash reads all the commands found in this file and executes them (hence the rc part, which stands for run commands).

We will edit this file and add some lines which specify certain colors for the $LESS_TERMCAP variables.

export LESS_TERMCAP_mb=$(printf 'e[01;31m') # enter blinking mode - red export LESS_TERMCAP_md=$(printf 'e[01;35m') # enter double-bright mode - bold, magenta export LESS_TERMCAP_me=$(printf 'e[0m') # turn off all appearance modes (mb, md, so, us) export LESS_TERMCAP_se=$(printf 'e[0m') # leave standout mode export LESS_TERMCAP_so=$(printf 'e[01;33m') # enter standout mode - yellow export LESS_TERMCAP_ue=$(printf 'e[0m') # leave underline mode export LESS_TERMCAP_us=$(printf 'e[04;36m') # enter underline mode - cyan

Don’t forget to reset your terminal after entering this code in order for the changes to take effect, e.g. type reset or exit and start up another shell.

This will mostly use magenta and cyan as the colors. Next, I’ll explain what these lines mean and how you can modify the colors. Explaining it

As you can see, there are several variables which are assigned different values. As shown in the comments after the # sign, every one is used when needed. When text is in bold (double-bright mode), the formatting option is set to bold and the color magenta.

Let’s take, for example, the following line:

export LESS_TERMCAP_md=$(printf 'e[01;35m') # enter double-bright mode - bold, magenta

This line could be broken into this:

the environment variable LESS_TERMCAP_md will be assigned the value to the right of the equal sign the right side says execute the command between the $( and ) characters, just like the older ` ` did printf is a command similar with C’s printf and means “print with format”. The characters between the double quotes specify a color and a font style (e.g. in this case, bold and magenta).

The part that is inside the double quotes are format specifiers like bold, regular, or color to be used. More on these can be found on Wikipedia, here. Color codes

The color codes are as follows:

30 – black 31 – red 32 – green 33 – orange 34 – blue 35 – magenta 36 – cyan 37 – white

Some other escape codes which you could use include:

0 – reset/normal 1 – bold 3 – italic/reversed 4 – underlined 5 – blink

You can check this by typing in a terminal something like:

printf 'e[31m' printf 'e[32m' printf 'e[37m'

So, if we have something like printf ‘e[01;33m’ it means enter bold and color yellow, according to the listing above. What about ‘export’?

export is a Bash built-in used to assign values to variables in such a matter that any subsequent application that runs in that shell will be aware of the variable’s value. If, for example, we would simply assign a value to a variable, say MYVAR=”this is my variable” and we would then issue echo $MYVAR, we would see that the variable’s value will be printed. However, try to make a simple script which would echo it, for example:

#!/bin/bash

echo $MYVAR

And then run it e.g. bash myscript.sh – you will see that the value is lost, not visible in the script. So this is where export is useful, because it will make any further script or application “see” the variable. When we invoke the man command, it will need to see the values for our LESS_TERMCAP variables. More color schemes

Here is another color scheme:

export LESS_TERMCAP_mb=$(printf 'e[01;31m') # enter blinking mode export LESS_TERMCAP_md=$(printf 'e[01;38;5;75m') # enter double-bright mode export LESS_TERMCAP_me=$(printf 'e[0m') # turn off all appearance modes (mb, md, so, us) export LESS_TERMCAP_se=$(printf 'e[0m') # leave standout mode export LESS_TERMCAP_so=$(printf 'e[01;33m') # enter standout mode export LESS_TERMCAP_ue=$(printf 'e[0m') # leave underline mode export LESS_TERMCAP_us=$(printf 'e[04;38;5;200m') # enter underline mode

References

http://www.ibm.com/developerworks/linux/library/l-bash/index... en.wikipedia.org/wiki/ANSI_escape_code http://www.gnu.org/software/termutils/manual/termcap-1.3/htm... https://wiki.archlinux.org/index.php/Man_Page http://tips4linux.com/color-man-pages-in-linux/

Full Story

  Nav
» Read more about: Story Type: Tutorial

« Return to the newswire homepage

Subject Topic Starter Replies Views Last Post
Ya know, you might want to read that headline slowly. dinotrac 29 1,532 Apr 6, 2012 11:52 PM

You cannot post until you login.