Doing tricks on the Linux command line

The Linux command line allows you to get a lot of work done – especially when you learn enough “tricks” to make it interesting and productive.

What is a trick on Linux?

When you’re new to Linux (or maybe I should say when Linux is new to you), your first challenge is learning a suite of commands like ls (list files), pwd (showing what directory you’re currently working in), cat (displaying the content of text files) and cd (move to a different directory). Once you get comfortable with these and a pile of other basic commands, however, you’ll likely be ready to take on what most of us Linux geeks like to refer to as “Linux tricks”.

The expression “Linux tricks” refers to the many ways that you can make the Linux command line easier to use – especially when you want to make some complicated process quick and painless. Sure, it’s easy to list files, but listing files by size or only those that contain a specific phrase is more complex. Similarly, running a commonly used command is easy, but rerunning a command that you’ve used recently but with some small but important changes can be a challenge. Tricks are the many ways that you can make even the more complicated commands easier and, if you’re anything like me, more fun and more rewarding.

Recognizing comments

To begin, in many of the commands included in this post, a comment is included that describes what the command is doing. Comments are lines of text that follow # (pound signs) that provide some context but avoid having your shell trying to run them as if they were commands. For example, the line below contains a comment whether typed directly on the command line or included in a script to explain what it’s doing.

$ # This is a comment

The line above shows a fairly obvious comment that was entered at the command prompt without any additional commands. Generally comments are only included in scripts to make it easier to understand various portions of the code and, thus, easier to update when needed.

Using pipes

Pipes are those incredible vertical bars that send the output of one command to another command – one of the very special powers of Linux. For example, here are a couple commands with pipes along with comments that explain them.

$ ls | grep report	# list files that contain the string "report" in their names
2022_report
2023_report
$ ls -ltr | tail -2	# list the three most recently updated files
-rw-r--r--. 1 justme justme    401 Dec  4 11:29 test.html
-rwx--x--x. 1 justme justme   1527 Dec  6 11:32 mkTable

Auto-completion

Auto-completion refers to the process of pressing the tab key in the middle of a file or command name. This allows the shell to finish the typing for you – at least until it reaches a point at which it finds more than one match when it will wait for more characters to be provided.

$ ls ha^tab			# type "ls" followed by a tab
happy_quotes

Looking at text files a chunk a time

The head, tail and more commands allow you to view portions of a file. Here are some examples:

$ head -2 happy_quotes
You're never fully dressed without a smile.
Let a smile be your umbrella.
$ tail -2 happy_quotes
Happiness depends upon ourselves.
Happiness is when what you think, what you say, and what you do are in harmony.
$ more states
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
Florida
Georgia
Hawaii
Idaho
--More--(21%)

And don’t overlook the column command that can keep you from paging through a list of the states in the US when you’d prefer to see them all on one screen.

$ more states | column
Alabama         Hawaii          Massachusetts   New Mexico      South Dakota
Alaska          Idaho           Michigan        New York        Tennessee
Arizona         Illinois        Minnesota       North Carolina  Texas
Arkansas        Indiana         Mississippi     North Dakota    Utah
California      Iowa            Missouri        Ohio            Vermont
Colorado        Kansas          Montana         Oklahoma        Virginia
Connecticut     Kentucky        Nebraska        Oregon          Washington
Delaware        Louisiana       Nevada          Pennsylvania    West Virginia
Florida         Maine           New Hampshire   Rhode Island    Wisconsin
Georgia         Maryland        New Jersey      South Carolina  Wyoming

If you want to turn a file containing a long list of states into a file with five states per line, just do this:

$ cat states  | column > states-columns

The number of columns will depend on the width of your screen.

Viewing command history

The Linux history command allows you to view commands you’ve recently run. The number of commands that it can remember depends on a setting called HISTSIZE. You can display its value using a command like this:

$ echo $HISTSIZE
1000

To view your previously run commands, you can issue the history command. Here are some examples:

$ history | more		# display previous commands a screen at a time
$ history | tail -10	# show the 10 most recently run commands

Rerunning commands

To rerun a command, you can use the up-arrow key on your keyboard to back through previously run commands. The most recently run commands appear first. You can also enter the number shown in the history command’s output following a ! (exclamation point).

$ !196
ls happy_quotes
happy_quotes

Moving to the previously used directory

Moving into a different directory (e.g., cd /usr/bin) or back to your home directory (cd with no arguments) is easy, but you can also move to whatever directory you were last sitting in with a command like this one:

$ cd -

That trick lets you avoid typing long pathnames when you just want to return to where you just came from.

Turning complex or frequently used commands into simple aliases

Many Linux tricks involve fairly complex commands, but one of the best ways to save yourself time and trouble is simply to turn them into aliases like these examples from a Linux user’s .bashrc (shell startup) file:

alias myprocs="ps -ef | grep `whoami`"
alias c="clear"
alias rec="ls -ltr | tail -3"

Wrap-up

Learning a few Linux tricks can make Linux more fun to use as well as improve your productivity.



Source link