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  com-
       mand on their standard output instead of	running	the shell.

       The  commands work by looking for a file	named by the environment vari-
       able $history,0 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  $history0  in  re-
       verse  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 be-
       fore a command is selected.

       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  com-
       mand.

       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 re-
	      places 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 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.

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.0>

home | help