fc [ -e ename ] [ -s ] [ -LI ] [ -m match ] [ old=new ... ] [ first [
last ] ]
fc -l [ -LI ] [ -nrdfEiD ] [ -t timefmt ] [ -m match ]
[ old=new ... ] [ first [ last ] ]
fc -p [ -a ] [ filename [ histsize [ savehistsize ] ] ]
fc -P
fc -ARWI [ filename ]
The fc command controls the interactive history mechanism. Note
that reading and writing of history options is only performed if
the shell is interactive. Usually this is detected automati-
cally, but it can be forced by setting the interactive option
when starting the shell.
The first two forms of this command select a range of events
from first to last from the history list. The arguments first
and last may be specified as a number or as a string. A nega-
tive number is used as an offset to the current history event
number. A string specifies the most recent event beginning with
the given string. All substitutions old=new, if any, are then
performed on the text of the events.
The range of events selected by numbers can be narrowed further
by the following flags.
-I restricts to only internal events (not from $HISTFILE)
-L restricts to only local events (not from other shells,
see SHARE_HISTORY in zshoptions(1) -- note that $HISTFILE
is considered local when read at startup)
-m takes the first argument as a pattern (which should be
quoted) and only the history events matching this pattern
are considered
If first is not specified, it will be set to -1 (the most recent
event), or to -16 if the -l flag is given. If last is not spec-
ified, it will be set to first, or to -1 if the -l flag is
given. However, if the current event has added entries to the
history with `print -s' or `fc -R', then the default last for -l
includes all new history entries since the current event began.
When the -l flag is given, the resulting events are listed on
standard output. Otherwise the editor program specified by -e
ename is invoked on a file containing these history events. If
-e is not given, the value of the parameter FCEDIT is used; if
that is not set the value of the parameter EDITOR is used; if
that is not set a builtin default, usually `vi' is used. If
ename is `-', no editor is invoked. When editing is complete,
the edited command is executed.
The flag `-s' is equivalent to `-e -'. The flag -r reverses the
order of the events and the flag -n suppresses event numbers
when listing.
Also when listing,
-d prints timestamps for each event
-f prints full time-date stamps in the US `MM/DD/YY hh:mm'
format
-E prints full time-date stamps in the European `dd.mm.yyyy
hh:mm' format
-i prints full time-date stamps in ISO8601 `yyyy-mm-dd
hh:mm' format
-t fmt prints time and date stamps in the given format; fmt is
formatted with the strftime function with the zsh exten-
sions described for the %D{string} prompt format in the
section EXPANSION OF PROMPT SEQUENCES in zshmisc(1). The
resulting formatted string must be no more than 256 char-
acters or will not be printed
-D prints elapsed times; may be combined with one of the op-
tions above
`fc -p' pushes the current history list onto a stack and
switches to a new history list. If the -a option is also speci-
fied, this history list will be automatically popped when the
current function scope is exited, which is a much better solu-
tion than creating a trap function to call `fc -P' manually. If
no arguments are specified, the history list is left empty,
$HISTFILE is unset, and $HISTSIZE & $SAVEHIST are set to their
default values. If one argument is given, $HISTFILE is set to
that filename, $HISTSIZE & $SAVEHIST are left unchanged, and the
history file is read in (if it exists) to initialize the new
list. If a second argument is specified, $HISTSIZE & $SAVEHIST
are instead set to the single specified numeric value. Finally,
if a third argument is specified, $SAVEHIST is set to a separate
value from $HISTSIZE. You are free to change these environment
values for the new history list however you desire in order to
manipulate the new history list.
`fc -P' pops the history list back to an older list saved by `fc
-p'. The current list is saved to its $HISTFILE before it is
destroyed (assuming that $HISTFILE and $SAVEHIST are set appro-
priately, of course). The values of $HISTFILE, $HISTSIZE, and
$SAVEHIST are restored to the values they had when `fc -p' was
called. Note that this restoration can conflict with making
these variables "local", so your best bet is to avoid local dec-
larations for these variables in functions that use `fc -p'.
The one other guaranteed-safe combination is declaring these
variables to be local at the top of your function and using the
automatic option (-a) with `fc -p'. Finally, note that it is
legal to manually pop a push marked for automatic popping if you
need to do so before the function exits.
`fc -R' reads the history from the given file, `fc -W' writes
the history out to the given file, and `fc -A' appends the his-
tory out to the given file. If no filename is specified, the
$HISTFILE is assumed. If the -I option is added to -R, only
those events that are not already contained within the internal
history list are added. If the -I option is added to -A or -W,
only those events that are new since last incremental ap-
pend/write to the history file are appended/written. In any
case, the created file will have no more than $SAVEHIST entries.
history
Same as fc -l.
r Same as fc -e -.