13.12. Command History and Tab Completion
It does not take long before the thought of typing the same command
over and over becomes unappealing. One minor typing error can ruin lines
of a series of commands.
One solution is to use the command line history. By scrolling with
the [Up Arrow] and [Down Arrow] keys, you
can find plenty of your previously typed commands.
Try it by taking a look again at sneakers.txt
(created in Section 13.9.1 Using Redirection. The first time,
however, at the shell prompt, type:
Nothing happens, of course, because there is no
sneakrs.txt file. No problem. Use the up-arrow key
to bring back the command, then use the left-arrow key to get to the
point where we missed the "e." Insert the letter and press
We now see the contents of sneakers.txt.
By default, up to 500 commands can be stored in the
bash command line history file.
By typing the env command at
a shell prompt, we can see the environment variable that controls the
size of the command line history. The line which reads,
HISTFILESIZE=500 shows the number of
commands that bash will store.
The command line history is actually kept in a file, called
.bash_history in your login directory. We can read
it in a number of ways: by using vi,
more, and others.
Be aware that the file can be long. To read it with the
more command, from your home directory type:
To move forward a screen, press [Space]; to move back a
screen, press [b]; to quit, press [q].
To find a command in your history file without
having to keep hitting the arrow keys or page through the history file,
use grep, a powerful search utility (see Section 13.11.3 The grep Command. Here is how you can quickly find a
previously used command: say you are searching for a command that is
similar to cat
sneak-something. You have used the
command, and you think it might be in your history file. At the shell
Another time-saving tool is known as command completion. If you type
part of a file, command, or pathname and then press the
[Tab] key, bash will present you with
either the remaining portion of the file/path, or a beep (if sound is
enabled on your system). If you get a beep, just press
[Tab] again to obtain a list of the files/paths that
match what has been typed so far.
For example, if you forget the command updatedb, but
remember a portion of the command, you can su to
root, then at the shell prompt, type up, press the
[Tab] key twice and you will see a list of possible
completions, including updatedb and
uptime. By typing the partial command
upd and pressing [Tab] again, your
command is completed for you.