GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
HISTORY(1) FreeBSD General Commands Manual HISTORY(1)

-, --, -p, --p - shell history programs

- [pattern...] [substitution...]

This set of programs provides a crude history mechanism for the shell rc(1). It is based on the v8 UNIX programs =, ==, etc.

The program ``-'' runs the shell on the command it is requested to find. The program ``--'' edits that command first. The programs ``-p'' and ``--p'' are similar, except that they print the final command on their standard output instead of running the shell.

The commands work by looking for a file named by the environment variable $history, and by searching for previous commands in this file. Old commands can be edited, or simply re-executed according to the rules below:

A command is searched for by examining the lines in $history in reverse order. Lines which contain a previous invocation of the history program itself are ignored. If one or more pattern is supplied on the command line, then the patterns are used as a means of limiting the search. Patterns match any substring of a previous command, and if more than one pattern is present then all patterns must be matched before a command is selected.

Substitutions may also be specified on the command line. These have the syntax:


old:[:...]new

(Note that the old pattern is used as a search-limiting pattern also.) Substitutions happen from left to right and are repeated according to the number of colons specified.

Finally, if the program was invoked as ``--'' or ``--p'', a command may be edited in a crude line-mode fashion. The line to be edited is printed out, and below it the user supplies modifications to the command.

any character except those below
Replaces the character above.
space or tab
Skips over the above character(s).
#
Deletes one character.
%
Replaces one character with a space.
^
Inserts the rest of the typed line just before the character.
$
Deletes the rest of the line from that character on, and replaces it with the rest of the typed line.
+
Appends the rest of the typed line.
-
Backs up to a previous command satisfying the same matching constraints.
end of line
If any changes have been made, the command is printed out again for further editing. If no changes have been made, the command is executed or printed, and the program exits.
end of file
If an end-of-file is read from the keyboard by the editor, it aborts with exit status 1 and does not produce any output.

The history programs work best when their output is reinterpreted by the shell using an eval command. This can be achieved by writing a shell function to perform the reinterpretation:


fn - -- {
	comm = `{$0^p $*}
	if (! ~ $#comm 0) {
		echo $comm >[1=2]
		eval $comm
	}
}

Stuttering the `:' in a substitution allows things like:


; prog 1 2 3 abc > /very/long/path/abc.out
etc.
- prog abc::xyz
prog 1 2 3 xyz > /very/long/path/xyz.out
;

30 July 1991

Search for    or go to Top of page |  Section 1 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.