Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
HISTORY(1)		     General Commands Manual		      HISTORY(1)

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

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

DESCRIPTION
     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,0 and by searching for previous commands in this file.   Old  com-
     mands can be edited, or simply re-executed according to the rules below:

     A	command  is  searched for by examining the lines in $history0 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.   Pat-
     terns  match any substring of a previous command, and if more than one pat-
     tern is present then all patterns must be matched before a command  is  se-
     lected.

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

	  old:[:...]new0

     (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 con-
	    straints.

     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 exe-
	    cuted 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.

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

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

     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			      HISTORY(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=history&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help