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

KDE/Qt: Qt 3D, Kube/Kolab, GSoC, and Atelier (3-D Printing)

  • What a mesh!
    With all the advances being made in Qt 3D, we wanted to create some new examples showing some of what it can do. To get us started, we decided to use an existing learning framework, so we followed the open source Tower Defence course, which you can find at CGCookie. Being a game, it allows an interactive view of everything at work, which is very useful.
  • Last week in Kube
    Perhaps if Windows wasn’t such a PITA there would be more progress
  • GSoC 2018: Week 4 & 5
    The last 2 weeks were mainly dedicatd for reviews and testing and thanks to my mentors, I passed the first evaluation with good work till now. Some significant changes were made on discussion with my mentors during the last 2 weeks in the code and some new features.
  • Giving Atelier some Love
    I work for atelier together with Chris, Lays and Patrick for quite a while, but I was basically being the “guardian angel” of the project being invocked when anything happened or when they did not know how to proceed (are you a guardian angel of a project? we have many that need that) For instance I’v done the skeleton for the plugin system, the buildsystem and some of the modules in the interface, but nothing major as I really lacked the time and also lacked a printer.

Proprietary Software on GNU/Linux

  • Winepak – Install Windows Apps and Games on Linux via Flatpak
    A reason for Linux not being more used as added in the comments section of a recent article is “Adobe and Games“. Well, there is a latest Linux bad guy in town and it is here to comfort us in a cooler way than Wine.
  • Mark Text Markdown Editor Adds Sidebar And Tabs Support
    Mark Text is a somewhat new free and open source Electron Markdown editor for Windows, Mac and Linux, which supports the CommonMark Spec and the GitHub Flavored Markdown Spec. The app features a seamless live preview using Snabbdom as the render engine, multiple edit modes (Typewriter, Source Code and Focus), includes code fence support, light and drak themes, emoji auto-completion, and export to PDF, HTML or styled HTML.
  • Google’s VR180 Creator Makes It Easier to Edit VR Video on Linux
    It’s called “VR180 Creator” (catchy) and the tool aims to make it easier for people to edit video shot on 180-degree and 360-degree devices like the Lenovo Mirage camera (pictured opposite). And boy is just-such a tool needed! VR180 Creator: Easier VR Video Editing Editing VR video is, to be perfectly frank, a pain in the rump end. So by releasing this new, open-source tool for free Google is being rather smart.Anything that makes it easier for consumers and content creators to edit VR on something other than a high-end specialist rig is going to help the format flourish.

Devuan GNU+Linux 2.0.0 "ASCII"

When I am trying out a desktop distribution, what really tends to divide the field of Linux distributions in my mind is not whether the system uses MATE or Plasma, or whether the underlying package manager uses RPM or Deb files. What tends to leave a lasting impression with me is whether the desktop environment, its applications and controls feel like a cooperative, cohesive experience or like a jumble of individual tools that happen to be part of the same operating system. In my opinion Ubuntu running the Unity desktop and Linux Mint's Cinnamon desktop are good examples of the cohesive approach. The way openSUSE's administration tools work together provides another example. Like them or hate them, I think most people can see there is an overall design, a unifying vision, being explored with those distributions. I believe Devuan falls into the other category, presenting the user with a collection of utilities and features where some assembly is still required. This comes across in little ways. For example, many distributions ship Mozilla's Firefox web browser and the Thunderbird e-mail client together as a set, and they generally complement each other. Devuan ships Firefox, but then its counterpart is the mutt console e-mail program which feels entirely out of place with the rest of the desktop software. The PulseAudio sound mixing utility is included, but its system tray companion is not present by default. Even the system installer, which switches back and forth between graphical windows and a text console, feels more like a collection of uncoordinated prompts rather than a unified program or script. Some people may like the mix-and-match approach, but I tend to prefer distributions where it feels like the parts are fitted together to create a unified experience. What I found was that Devuan provided an experience where I had to stop and think about where items were or how I was going to use them rather than having the pieces seamlessly fit together. However, once I got the system set up in a way that was more to my liking, I appreciated the experience provided. Devuan offers a stable, flexible platform. Once I shaped the operating system a little, I found it to be fast, light and capable. Having a fairly large repository of software available along with Flatpak support provided a solid collection of applications on a conservative operating system foundation. It was a combination I liked. In short, I think Devuan has some rough edges and setting it up was an unusually long and complex experience by Linux standards. I certainly wouldn't recommend Devuan to newcomers. However, a day or two into the experience, Devuan's stability and performance made it a worthwhile journey. I think Devuan may be a good alternative to people who like running Debian or other conservative distributions such as Slackware. I suspect I may soon be running Devuan's Raspberry Pi build on my home server where its lightweight nature will be welcome. Read more Also: deepin 15.6 Released With New Features: Get This Beautiful Linux Distro Here

Android Leftovers