Skip to main content

Moving the Cursor in the Linux Terminal

Navigating the screen real estate of the Linux terminal efficiently can drastically improve user productivity. While many users are familiar with basic command-line operations, fewer dive deep into manipulating the terminal cursor programmatically. In this article, we will explore the concept of moving the cursor in the Linux terminal, understand various cursor-moving escape sequences, and craft a blue bar with an embedded clock at the top of our terminal.

The Basics of Cursor Movement

At its core, the cursor acts as a pointer, signifying where the next character will be placed in the terminal. Beyond simple text input, the terminal, with its rich set of capabilities, allows for precise cursor movements using ANSI escape codes.

For instance, to move the cursor up by 3 lines, you'd use the escape sequence \e[3A.

Here's a quick example using the echo command:

echo -e "First Line\nSecond Line\e[2A"

In the above command:

  • echo -e enables the interpretation of backslash escapes.
  • First Line\nSecond Line prints two lines.
  • \e[2A moves the cursor up by two lines.

When you run this command, you will see the text "First Line" and "Second Line", but the cursor will be placed at the start of "First Line", having moved up two lines.

Table of Cursor Moving Escape Sequences

Here's a concise table of some commonly used escape sequences for cursor manipulation:

Escape SequenceAction
\e[nAMove cursor up by n lines
\e[nBMove cursor down by n lines
\e[nCMove cursor right by n columns
\e[nDMove cursor left by n columns
\e[n;mcSet cursor position to row n, column m
\e[sSave current cursor position
\e[uRestore cursor to the saved position

Certainly! By modifying the PS1 environment variable, we can add the blue bar with a clock whenever a new prompt is displayed. Here's how you can integrate it into your PS1:

Embedding a Blue Bar with a Clock in the PS1 Prompt

To add the blue bar with the clock into the PS1 environment variable, follow these steps:

  1. Backup Current PS1: Before making changes to PS1, let's save its current state:
ps1_backup=$PS1
  1. Modify PS1:

To include the blue bar with the clock, adjust your PS1 as follows:

PS1='\e[s\e[1;1H\e[44m\e[K$(date +"%T") \e[0m\e[u\n'"$ps1_backup"

Here's what's happening:

  • \e[s: Saves the current cursor position.
  • \e[1;1H: Moves the cursor to the first row and first column.
  • \e[44m: Sets the background color to blue.
  • \e[K: Clears the line where the cursor currently is, so the blue bar spans the entire width.
  • $(date +"%T"): Fetches the current time in HH:MM:SS format.
  • \e[0m: Resets all terminal attributes to default.
  • \e[u: Returns the cursor to its original position.
  • '$ps1_backup': Inserts the saved prompt string, ensuring you retain your original prompt structure after the blue bar.
  1. Reload your shell or start a new terminal session:

After setting the PS1, either reload your shell (source ~/.bashrc or similar, depending on your shell) or start a new terminal session. You should see the blue bar with the current time appear at the top whenever a new prompt is displayed.

Restoring the Original PS1

If you'd like to revert back to the original PS1 prompt:

PS1=$ps1_backup

Making the Blue Bar Permanent with .bashrc

If you find that having the blue bar with the clock enhances your terminal experience and you'd like to make it a permanent feature every time you open a new terminal window or tab, adding the code to your ~/.bashrc file is the way to go.

Steps to Add to ~/.bashrc:

  1. Open .bashrc in a Text Editor:

Using your preferred text editor, open the ~/.bashrc file. For this example, we'll use nano:

nano ~/.bashrc
  1. Add the Modified PS1 Code:

Navigate to the end of the file and append the following code:

# Blue Bar with Clock in PS1
ps1_backup=$PS1
PS1='\e[s\e[1;1H\e[44m\e[K$(date +"%T") \e[0m\e[u\n'"$ps1_backup"

This ensures that every new terminal session sources this modification and displays the blue bar.

  1. Save and Close:

If you're using nano, press CTRL + O to write the changes and then CTRL + X to exit.

  1. Reload .bashrc:

For the changes to take immediate effect in your current terminal session, reload the .bashrc file:

source ~/.bashrc

Testing:

Open a new terminal window or tab. The blue bar with the clock should now be a permanent fixture at the top of your terminal.

Reverting to the Original Setting:

If at any point you decide to revert back to the original setting without the blue bar, simply:

  1. Open the ~/.bashrc file.
  2. Remove or comment out the lines of code added.
  3. Reload the .bashrc file with source ~/.bashrc or restart your terminal.

Conclusion

Manipulating the terminal cursor extends the functionality of the Linux command line beyond basic text input. Whether you're creating dynamic UI elements, like our blue bar clock, or simply enhancing the display of scripts and programs, mastering cursor movements can elevate your terminal skills to the next level.

What Can You Do Next 🙏😊

If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.

YouTube @cloudaffle