Language Selection

English French German Italian Portuguese Spanish

MiniTutor: Shell Colors and Cursor Positions

Filed under
Linux

You can use characters to modify texts and how they are displayed, and also for fun you can draw, create animations, statusbar, progressbar and more.

These commands can be called as escape sequencies because all they use ASCII's ESC (033). They must be send directly to the terminal and you can use 'print', 'printf' or 'echo'. The sequencies use ESC to definy colors and cursos position, they begin with an 'ESC' followed by a '[', and close with a 'm'. In the middle we must add numbers separeted by ';'.

First, we show how to use these commands and sequencies to change default colors displayed by shell. The command format is 'ESC[n1;n2;...m', it means, after the begin '033[' (ESC[) and before the end 'm', we have all numeric instructions. The default is '0' if any number are written, and those numbers indicate text color, background color and video atributes or codes. Those atributes can change text form and how the colors is going to be showed.

The list of text colors is: 30 (black/gray), 31 (red), 32 (green), 33 (brown/yellow), 34 (blue), 35 (purple), 36 (cyan) and 37 (gray/white). The list of background colors is: 40 (black/gray), 41 (red), 42 (green), 43 (brown/yellow), 44 (blue), 45 (purple), 46 (cyan) and 47 (gray/white). The atributes are: 0 (default), 1 (bold), 5 (blinking) and 7 (reverse background and color). There are some differences between colors above as you can see, for example 43 is used to display a brown color, but if you enable bold text the color turnes to yellow.

The number are read following this sequence: background, text color and atributes, for example '40,32,1,5' means black background, green color, bold text and blinking.

You must not forget to enable interpretation of backslash escapes, '-e' option, while using 'echo, for example: echo -e '\033[41m TESTING \033[m'.

Test example: echo -e '\033[40;33;1m Welcome to \033[40;31;1m GoblinX\033[40;33;1mNewsletter \033[m'.

Second, after learn how to change colors, we show how to change the text position. The command to set where display a text is 'ESC[. The common list is: ESC[nA (n lines up and same column), ESC[nB (n lines down, same column), ESC[nC (n columns to the right, same line), ESC[nD (n columns to the left, same line), ESC[nE (n lines down in column 1), ESC[nF (n lines up, column 1), ESC[nG (go to n column, current line) and ESC[n;mH (go to column m and line n).

An example: echo -e '\033c\033[4;7HSaturday\033[AMonday\033[2B\033[DWednesday'

In the above line, '\033c' cleans the screen, '\033[4;7HSaturday' writes Saturday at line 4 column 7, '\033[AMonday' moves the cursos up one line and writes Monday, '\033[2B' moves the cursor two lines down in the same column, and '\033[DWednesday' goes back one column in the same line and writes Wednesday.

There are also more commands to move the cursor before write a text and also others to clear texts and move the screen. The list is: ESC[nJ (n=0, clear until the end of the screen, n=1, clear until the begin of the screen, n=2, clear all screen) ESC[nK (n=0, clear until the end of the line, n=1, clear until the begin of the line, n=2, clear all line), ESC[nM (clear n lines below), ESC[nP (clear n characters in the right side), ESC[nX (clear n characters in the left side and write spaces instead), ESC[n@ (insert n blank spaces), ESC[nL (insert n blank lines), ESC[nS (move the screen n linhas up) and ESC[nT (move the screen n linhas down).

Test example: echo -e '\033c \033[40;33;1m Welcome to \033[4;7H \033[40;31;1m GoblinX\033[1C \033[40;33;1mNewsletter \033[m'

Another example, a counter:
for i in 1 2 3 4 5 6 7 8 9; do echo -ne "\033c \033[G\033[@Counted =\033[11G\033[0K$i"; sleep 1; done; echo

Your shell scripts can inform and also be funny, you just need to let your imagination flyes. This minitutor is heavly inspired by an article in the book 'Programação Shell Linux' written by Julio Cesar Neves.

Minitutor from: GoblinX Minitutors

More in Tux Machines

Exclusive: Elephone P1000, Snapdragon 801, 2K and CyanogenMod!

Elephone, most known for their every expanding range of Mediatek phones and as being one of the first manufacturers in China to offer an Android 4.4 Kitkat update, are preparing a 2014 Flagship killer of their own. The Elephone P1000 will be the most exciting Elephone smartphone to date with features we have not seen from the company so far. The P1000 will boast a 2.5Ghz Snapdragon 801 processor, Adreno 330 GPU, 3GB RAM and 32GB of on board memory. This compared to their current phones is an amazing achievement! Read more

Ken Starks to Keynote At Ohio LinuxFest

As most FOSS Force readers probably already know, Ken’s articles here and on his own Blog of Helios are only a small part of what he does. He’s one of those too rare people who works to make a difference in this world and he does so by leveraging the power of Linux and free and open source software for the greater good. As the founder of the Reglue project (originally called Helios), he’s responsible for putting refurbished computers in the hands of financially challenged students in and around the Austin, Texas area where he resides. Over the years there have been thousands of these students and many of them, given Reglue computers while in middle or high school, have gone on to not only earn undergraduate degrees, but to attend graduate school as well — often studying computer science. Read more

Mesa 10.3 release candidate 1

Mesa 10.3 release candidate 1 is now available for testing. The current plan is to have an additional release candidate each Friday until the eventual 10.3 release, (Ian can follow up to state what the planned date is for that). The tag in the git repository for Mesa 10.3-rc1 is 'mesa-10.3-rc1'. I have also pushed a tag '10.3-branchpoint' to mark the point where master and 10.3 diverge. This should make git-describe a bit more useful. As a reminder, with the 10.3 branch now created, patches nominated with: CC: will now be candidates only for the new 10.3 branch. To nominate patches for the older 10.2 branch as well, please use: CC: "10.2 10.3" The expectation is that the 10.2 branch will remain alive with bi-weekly releases until after 10.3.1 release. Mesa 10.3 release candidate 1 is available for download from ftp://freedesktop.org/pub/mesa/10.3 Read more

Canonical Joined The Khronos Group To Help Mir/Wayland Drivers

Canonical's specific involvement with the Khronos Group isn't listed and we haven't seen Canonical names closely associated with any major specs out of the different working groups to date. However, Oliver Ries, the Head of Engineering Product Strategy at Canonical, wrote into Phoronix that they joined the group for pushing their display server agenda with trying to work towards an underlying driver standard for Mir/Wayland. Oli noted in his email, "Canonical has joined Khronos in order to help establish the necessary driver standard that is required for Mir (and Wayland) to succeed. We have specifically contributed to the current standard proposal/draft." Read more