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

Leftovers: Software

  • [Video] Linux Audio Programs Compared 2017
    I made this video for those that are new to, or just interested in making music on the Linux OS. I go over the features, goods and bads of Rosegarden, LMMS, Ardour, Mixbus, and EnergyXT, as well as touch on Qtractor. I don't don't go much into details of the particular versions I am using, but the video was made in the early part of 2017 and I'm running Ubuntu 16.04LTS.
  • Green Recorder: A Simple Desktop/Screen Recorder for Linux
    Green Recorder is a simple, open source desktop recorder developed for Linux systems built using Python, GTK and FFmpeg. It supports most of the Linux desktop environments such as Unity, Gnome, Cinnamon, Mate, Xfce and so on. Recently it has been updated to work with Wayland too in Gnome session.
  • Komorebi: A New Way To Enhance Your Desktop Using Animated/Parallax Wallpapers
    In past there were applications that allowed us to run videos/Gif as wallpaper on the desktop and make desktop look much cooler but than all of sudden the development of such Apps stopped and I can't name any App that exist for this purpose. Komorebi is fairly new application designed to make your desktop experience much better and make desktop cool as well, we can say it is kind of 'live wallpaper' situation here or 3D wallpaper. It is developed by Abe Masri and available under GPL license for free.
  • Stacer Sytem Optimizer: A Must Have Application For Ubuntu/Linux Mint
    There are multiple ways to optimize your Linux, the most geeky way is using Terminal, there are also applications available that performs such actions like Bleachbit, Ubuntu cleaner and so on. Stacer is simple, open-source, quick and new application designed to offer you all-in-one optimizer for your Ubuntu/Linux Mint (It's alternative to CCleaner but only for Linux).
  • Qtox: Open Source and Fully Secure Skype Replacement for Linux
    Long years ago, we've talked about a Skype alternative called Tox which was still in its early developmental stages. Tox was supposed to become the anti-thesis of Skype by being a fully open-source video and voice chat client that placed user privacy and security at its center. Well, guess what, there are now fully active and well-maintained chat clients that are built on top of Tox protocol. qTox is one of them.
  • Rclone 1.36 Released With SFTP And Local Symlinks Support, More
    Rclone 1.36 was released recently, bringing support for SFTP, local symbolic links support, mount improvements, along with many other new features and bug fixes. For those not familiar with Rclone, this is a cross-platform command line tool for synchronizing files and folders to multiple cloud storages, which supports Dropbox, Google Drive, Amazon S3, Amazon Drive, Microsoft One Drive, Yandex Disk, and more. It can be used to sync files either from your machine or from one cloud storage to another.
  • Streamlink Twitch GUI 1.2.0 Adds Support For Communities And Team Pages, Basic Hotkeys
    Streamlink Twitch GUI (previously Livestreamer Twitch GUI) is a multi-platform Twitch.tv browser. The application is powered by Node.js, Chromium and Streamlink, though it can still use Livestreamer (which is no longer maintained) too.
  • Code Editor `Brackets` 1.9 Released, Available In PPA
    Brackets is a free, open source code editor focused on front-end web development (HTML, CSS and JavaScript).
  • Terminix Terminal Emulator Renamed To Tilix, Sees New Bugfix Release
    [Quick update] Terminix, a GTK3 tiling terminal emulator, has been renamed to Tilix due to some trademark issues.

today's howtos

Games and CodeWeavers/Wine

  • A Snapshot of Linux Gamers, Just One Year Ago
    It’s about time we share the analysis of that Q1 2016 survey (fielding occured in March last year), especially as we are about to launch the Q1 2017 one pretty, pretty soon. That way we will be able to compare how things have changed over the course of 12 months. As usual, the whole disclaimer about online surveys is valid here (data is only as good as your n size, the appropriateness of your sampling, and the quality of the responses, etc…), but assuming it’s not all that bad and all that unreliable, let’s dig in the results. As a reminder, most of the respondents for this survey were recruited through the r/linux and r/linux_gaming subreddits, as well as the readership of BoilingSteam. This is not our first survey, and you can see our previous ones done in the second quarter of 2015, and the following one in the last quarter of 2015.
  • Slime-san Coming To PC, Mac and Linux
    Headup Games and Fabraz proudly announce their upcoming action-platformer Slime-san for PC, Mac and Linux via Steam & Humble Bundle. Console releases will follow soon after. Jump and slime your way through 100 levels in a unique 5-colored, pixelated world and escape from a giant worm’s innards. Get your shopping done in Slumptown, a town full of survivors within the worm. Unlock different play styles, outfits, shaders and even multiplayer mini-games! Slime-san is developed by Fabraz, an independent development studio that also released the critically-acclaimed games Cannon Crasha and Planet Diver. Slime-san was minding his own business, sliming around in a peaceful forest when suddenly…A giant worm appeared and gobbled him up! Now deep within the worm’s belly, Slime-san has to face a decision: Be digested by the incoming wall of stomach acid... Or jump, slide and slime his way through the worm's intestines and back out its mouth!
  • CodeWeavers Announces CrossOver 16.2.0
  • The Wine Revolution is ON!
    As you know Codeweavers (and other WINE contributors) have been working on DX11 support for a while – they were supposed to have DX11 support by the end of 2016, but as with all complex projects, timelines tend to slip and only very DX11 titles could run a few months ago. Since then, there was no major announcement, but it seems that the progress has been very significant in the recent WINE versions (2.3 is already out).

Leftovers: KDE