Language Selection

English French German Italian Portuguese Spanish

MiniTutor: Shell Colors and Cursor Positions

Filed under

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

Review: Google Pixel is Android at its best (if a little boring)

The Pixel’s designs have been divisive ever since the first batch of leaks hit the interwebs, but I’ve grown quite fond of it. Maybe it’s the fact that my ‘Really Blue’ (provided to us by Verizon, thanks folks) model is in fact so incredibly blue, but really I just think the two tone look stands out. It’s instantly recognizable if you’ve seen the phone before. Read more

What a Linux Desktop Does Better

After I resolved to adopt Linux, my confidence grew slowly but surely. Security-oriented considerations were compelling enough to convince me to switch, but I soon discovered many more advantages to the Linux desktop. For those still unsure about making the transition, or those who have done so but may not know everything their system can do, I'll showcase here some of the Linux desktop's advantages. Read more

Today in Techrights

Leftovers: GNU/Linux

  • Profit From the Rising Importance of Linux Software
    You may have noticed that there’s no stock symbol next to Linux’s name. This important OS isn’t made by a public company… or even a company at all. Linux software is open source. In other words, it’s not a commercial product which anyone owns. Rather, it’s free software which is developed and improved pro bono by the programmers who use it. As a result of this democratized development process, Linux is more customizable than a commercial OS. Windows and MacOS both have proprietary designs with usage restrictions, but not so with Linux. This makes Linux software ideal for the advanced programmers and IT professionals who make cloud computing possible. They often like to tinker with hardware and software in order to optimize it for their purposes.
  • Kopano, openSUSE: Yes, we’re open!
    Kopano announced big news yesterday about being included in openSUSE’s factory codebase as development proceeds to be in openSUSE’s upcoming release, which was a big first step toward inclusion into openSUSE downstream. “We are straight on the path to be included with openSUSE Leap 42.3 already, which has started development just last December,” wrote Michael Kromer in a news release yesterday. “You can find the downstream requests from Factory to Leap 42.3 here: Core and WebApp.” Being one of the most popular Linux distros, Kopano expressed delight to be the first distribution to pick the communication solution.
  • Rebellin Linux 3.5 Released — Beginner-friendly, Fast, And Debian-based Linux Distro
  • Runtu XFCE 16.04.2 x64 - 20170222
  • New Zenwalk Current ISO for 22 feb 2017
    The main change is the comeback of Firefox, built with GTK3 and multithreading enabled by default : This build of Firefox starts and react nearly as fast as Chromium, and with many tabs opened : scales much better in terms of responsiveness and memory footprint. You will also notice some improvements around ffmpeg, and MPV which is from now the main media player in Zenwalk. Gstreamer has been dropped from ISO but is still available from Slackware repositories. Of course this ISO contains many updated packages (see changelog below).
  • Technologic Systems, Inc. Brings Ubuntu Core to the i.MX6 Based TS-4900
    Today, Technologic Systems, Inc. announced that it will be partnering with Canonical to make Ubuntu Core available for their TS-4900 Compute Module. The TS-4900 is a high-performance Computer on Module (CoM) based on the NXP i.MX6 CPU which implements the ARM® CortexTM A9 architecture clocked at 1 GHz.