Monday, December 1, 2008

Shell Prompt Basics 03

11.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 command.

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 11.9.1. The first time, however, at the shell prompt, type:

 

cat sneakrs.txt

 

Nothing happens, of course, because there is no sneakrs.txt file. No problem. We will just 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 [Enter] again.

 

We now see the contents of sneakers.txt.

 

By default, up to 500 commands can be stored in the bash command line history file.

 

Tip

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 our login directory. We can read it in a number of ways: by using pico, cat, less, more, and others. Be aware that the file can be long. To read it with the more command, from your home directory type:

 

more .bash_history

 

To move forward a screen, press [Space]; to move back a screen, press [b]; to quit, press [q].

 

Tip

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 11.11.3. Here is how you can quickly find a previously used command: say you are searching for a command that is similar to cat sneaksomething.

 

You have used the command and you think it might be in your history file. At the shell prompt, type:

 

history | grep sneak

 

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.

 

11.13. Using Multiple Commands

Linux allows you to enter multiple commands at one time. The only requirement is that you separate the commands with a semicolon (you can see an example in Figure 11-7). Want to see how long you have been online? Just combine the date command with Mozilla's command.

 

date; mozilla; date

 

Remember that commands are case sensitive, so the command to start Mozilla must be in lowercase to start the browser.

 

date; mozilla; date

 

Mon Feb 7 13:26:27 EST 2000

Mon Feb 7 14:28:32 EST 2000

 

Running the combination of commands prints out the time and date, starts Mozilla, and then prints the time and date again after you close Mozilla. The discrepancy between the two results from the date command shows that you were using Mozilla for just over an hour.

No comments: