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

System76 Thelio Major Proves To Be A Major Player For Linux Workstations

For the past two months we have been testing the System76 Thelio Major and it's been working out extremely well with performance and reliability. The Thelio Major offering with options for Intel Core X-Series or AMD Ryzen Threadripper and resides between their standard Thelio desktop with Ryzen/Core CPUs and the Thelio Massive that sports dual Intel Xeon CPUs. The Thelio Major is the platform we have been using for all of our AMD Ryzen Threadripper 3990X testing and it's been working out great. The Thelio Major besides having Threadripper and Core X-Series CPU options can be configured with up to 256GB of RAM, up to two GPUs, and up to 46TB of storage for really yielding incredibly powerful Linux workstation performance potential. Read more

Deprecating support for the Linux kernel

Running on the Hurd was always a goal for Guix, and supporting multiple kernels is a huge maintenance burden. As such it is expected that the upcoming Guix 1.1 release will be the last version featuring the Linux-Libre kernel. Future versions of Guix System will run exclusively on the Hurd, and we expect to remove Linux-Libre entirely by Guix 2.0. The Linux kernel will still be supported when using Guix on "foreign" distributions, but it will be on a best-effort basis. We hope that other distributions will follow suit and adopt the Hurd in order to increase security and freedom for their users. Read more Also: Guix deprecating support for the Linux kernel

Essential Guide: How to Upgrade to Ubuntu 20.04 (Beta) Right Now

Well, in this guide I show you the steps required to upgrade to Ubuntu 20.04 from Ubuntu 18.04 or Ubuntu 19.10 right now, , nice and early, ahead of the final release. You do not need to download an .iso, fuss around with a USB thumb drive, or lose any of your files — you can upgrade directly with a half-way decent internet connection. Just keep in mind that (at the time you read this) the final stable release of the Focal Fossa is not yet available, only a beta quality candidate is. Read more

Plasma Mobile: How to help us!

We often get asked: “how long until the 1.0 release?”. Or: “how far away is Plasma Mobile 1.0?”. The usual answer to both these question is “It’ll be ready when it is ready”. But, really, how do we know that it is ready? Recently some of us prepared a check list of items which we consider necessary before we can declare Plasma Mobile “ready” or at rc1 status. Read more