Learn Linux 08: Keyboard Tricks

Published Jan 9, 2022

Contents


Introduction

The goal of this chapter is to learn some bash features that make keyboard use faster and more efficient. This chapter will introduce the following commands:

  • clear - Clear the terminal screen
  • history - Display or manipulate the history list

Command Line Editing

bash uses a library (a shared collection of routines that different programs can use) called Readline to implement command line editing. For example, the arrow keys move the cursor, but there are many more features.

Please note that some of the key sequences covered in this chapter (particularly those that use the alt key) may be intercepted by the GUI for other functions. All of the key sequences should work properly when using a virtual console.

Cursor Movement

Here is a list of keys used to move the cursor:

  • ctrl+A - Move cursor to the beginning of the line.
  • ctrl+E - Move the cursor to the end of the line.
  • ctrl+F - Move the cursor forward one character.
  • ctrl+B - Move the cursor backward one character.
  • alt+F - Move cursor forward one word.
  • alt+B - Move cursor backward one word.
  • ctrl+L - Clear the screen and move the cursor to the top-left corner. The clear command does the same thing.

Modifying Text

Here is a list of keys that are used to edit characters:

  • ctrl+D - Delete the character at the cursor location.
  • ctrl+T - Transpose (exchange) the character at the cursor location with the one preceding it.
  • alt+T - Transpose the word at the cursor location with the one preceding it.
  • alt+L - Convert the characters from the cursor location to the end of the word to lowercase.
  • alt+U - Convert the characters from the cursor location to the end of the word to uppercase.

Cutting And Pasting (Killing and Yanking) Text

The Readline documentation uses the terms killing and yanking to refer to what we would commonly call cutting and pasting. Items that are cut are stored in a buffer (a temporary storage area in memory) called the kill-ring.

Here is a list of cut and paste commands:

  • ctrl+K - Kill text from the cursor location to the end of line.
  • ctrl+U - Kill text from the cursor location to the beginning of the line.
  • alt+D - Kill text from the cursor location to the end of the current word.
  • alt+BACKSPACE - Kill text from the cursor location to the beginning of the current word.
  • ctrl+Y - Yank text from the kill-ring and insert it at the cursor location.

Completion

Another way that the shell can help you is through a mechanism called completion. Completion occurs when you press the TAB key while typing a command.

Using History

The history facility is a useful resource for reducing the amount of typing you have to do, especially when combined with command line editing.

Searching History

At any time, we can view and filter the contents of the command history list.

[user@linux ~]$ history | less
[user@linux ~]$ history | grep /usr/bin

We can even use the history number and do another type of expansion called history expansion. Let's say we want to get the contents of the 56th line in the history list.

[user@linux ~]$ !56

bash also provides the ability to search the history list incrementally. This means we can tell bash to search the history list as we enter characters, with each additional character further refining our search. To start incremental search, press ctrl-R followed by the text you are looking for. When you find it, you can either press enter to execute the command or press ctrl-J to copy the line from the history list to the current command line. To find the next occurrence of the text (moving "up" the history list), press ctrl-R again. To quit searching, press either ctrl-G or ctrl-C.

History Expansion

Here is a list of history expansion commands:

  • !! - Repeat the last command.
  • !number - Repeat history list item number.
  • !string - Repeat last history list item starting with string.
  • !?string - Repeat last history list item containing string.

Be caution against using the !string and !?string forms unless you are absolutely sure of the contents of the history list items.

To learn more about the history expansion you can read the "HISTORY EXPANSION" section of the bash man page.

Script

In addition to the command history feature in bash, most Linux distributions include a program called script that can be used to record an entire shell session and store it in a file. where file is the name of the file used for storing the recording. If no file is specified, the file typescript is used. See the script man page for a complete list of the program’s options and features.

script file

Summary

In this chapter, we covered some of the keyboard tricks that the shell provides to help us reduce our workloads.