# Chapter 30. The Use of History

#### Contents:

The Lessons of History
History in a Nutshell
My Favorite Is !$
My Favorite Is !:n*
My Favorite Is ^^
Using !$ for Safety with Wildcards
History by Number
History Substitutions
Repeating a Cycle of Commands
Running a Series of Commands on a File
Check Your History First with :p
Picking Up Where You Left Off
Pass History to Another Shell
Shell Command-Line Editing
Changing History Characters with histchars
Instead of Changing History Characters

## 30.1. The Lessons of History

It has been said that "the only thing we learn from history is that people don't learn from history."

Fortunately, the original maxim that "history repeats itself" is more appropriate to Unix.

Most shells include a powerful history mechanism that lets you recall and repeat past commands, potentially editing them before execution. This can be a godsend, especially when typing a long or complex command.

All that is needed to set C shell history in motion is a command like this in your .cshrc (or .tcshrc) file, where `n` is the number of past commands that you want to save:

>     set history=n

In ksh and bash, the variable is HISTSIZE, and it's already set for you; the default values are 128 and 500, respectively.

The history command (Section 30.7) lists the saved commands, each with an identifying number. (It's also possible to configure the shells to print the history number of each command as part of your prompt (Section 4.3).)

In tcsh, csh, and bash, you can repeat a past command by typing its number (or its name) preceded by an exclamation point (`!`). You can also select only parts of the command to be repeated and use various editing operators to modify it. Section 30.8 and Section 28.5 give quick tutorial summaries of some of the wonderful things you can do. Most of the rest of the chapter gives a miscellany of tips for using and abusing the shells' history mechanism.

Most shells -- except the original Bourne and C shells -- also have interactive command-line editing (Section 30.14). Interactive editing might seem to be better than typing `!vi` or `lpr !$`. If you learn both systems, though, you'll find plenty of cases where the `!` system is faster and more useful than interactive editing.

-- TOR

Copyright © 2003 O'Reilly & Associates. All rights reserved.