fc(1)fc(1)NAMEfc - Processes the command history list
SYNOPSISfc [-r] [-e editor] [first[last]]
fc-l [-nr] [first[last]]
fc [-s] [old=new] [first]
STANDARDS
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
fc: XCU5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
OPTIONS
Uses the editor named by editor to edit the commands. The editor
string is a utility name, subject to search via the PATH variable. The
value in the FCEDIT variable is used as a default when -e is not speci‐
fied. If FCEDIT is null or unset, ed is used as the editor. Lists the
commands rather than invoking an editor on them. The commands are
written in the sequence indicated by the first and last parameters, as
affected by -r, with each command preceded by the command number. Sup‐
presses command numbers when listing with -l. Reverses the order of
the commands listed (with -l) or edited (with neither -l nor -s).
Reexecutes the command without invoking an editor.
OPERANDS
Selects the commands to list or edit. The number of previous commands
that can be accessed is determined by the value of the HISTSIZE vari‐
able. The value of first or last or both is one of the following: A
positive number representing a command number; command numbers can be
displayed with the -l option. A negative decimal number representing
the command that was executed number of commands previously. For exam‐
ple, -1 is the immediately previous command. A string indicating the
most recently entered command that begins with that string. If the
old=new operand is not also specified with -s, the string form of the
first operand cannot contain an embedded equal sign.
When the synopsis form with -s is used: If first is omitted, the
previous command is used.
For the synopsis forms without -s: If last is omitted, last
defaults to the previous command when -l is specified; other‐
wise, it defaults to first. If first and last are both omitted,
the previous 16 commands are listed or the previous single com‐
mand is edited (based on the -l option). If first and last are
both present, all of the commands from first to last are edited
(without -l) or listed (with -l). Editing multiple commands is
accomplished by presenting to the editor all of the commands at
one time, each command starting on a new line. If first repre‐
sents a newer command than last, the commands are listed or
edited in reverse sequence, equivalent to using -r. For exam‐
ple, the following commands on the first line are equivalent to
the corresponding commands on the second:
fc-r 10 20 fc 30 40 fc 20 10
fc-r 40 30 When a range of commands is used, it is not an error
to specify first or last values that are not in the history
list; fc substitutes the value representing the oldest or newest
command in the list, as appropriate. For example, if there are
only ten commands in the history list, numbered 1 to 10, the
following commands list and edit, respectively, all ten com‐
mands:
fc-lfc 1 99
The first occurrence of string old in the commands to be reexe‐
cuted is replaced by the string new.
DESCRIPTION
The fc utility lists or edits and reexecutes commands previously
entered to an interactive shell.
The command history list references commands by number. The first
number in the list is selected arbitrarily. The relationship of a num‐
ber to its command does not change except when the user logs in and no
other process is accessing the list, at which time the system may reset
the numbering to start the oldest retained command at another number
(usually 1). When the number reaches an upper limit, either the value
in HISTSIZE or 32767 (whichever is greater), the shell wraps the num‐
bers, starting the next command with number 1. However, despite this
optional wrapping of numbers, fc maintains the time-ordering sequence
of the commands. For example, if four commands in sequence are given
the numbers 32766, 32767, 1 (wrapped), and 2 as they are executed, com‐
mand 32767 is considered the command previous to 1, even though its
number is higher.
When commands are edited (when the -l option is not specified), the
resulting lines are entered at the end of the history list and then
reexecuted by sh. The fc command that caused the editing is not
entered into the history list. If the editor returns a non-zero exit
status, this suppresses the entry into the history list and the command
reexecution. Any command-line variable assignments or redirection oper‐
ators used with fc affect both the fc command itself as well as the
command that results. The following command reinvokes the previous
command, suppressing standard error for both fc and the previous com‐
mand: fc-s -- -1 2>/dev/null
NOTES
Users on windowing systems may want to have separate history files for
each window by setting HISTFILE to the following: HIST‐
FILE=$HOME/.sh_hist$$
RESTRICTIONS
Since editors sometimes use file descriptors as integral parts of their
editing, redirecting their file descriptors as part of the fc command
can produce unexpected results. For example, if vi is the FCEDIT edi‐
tor, the following command will not work correctly on many systems: fc-s | more
EXIT STATUS
The following exit values are returned: Successful completion of the
listing. An error occurred.
Otherwise, the exit status is that of the commands executed by fc.
ENVIRONMENT VARIABLES
The following environment variables affect the execution of fc: This
variable, when expanded by the shell, determines the default value for
the -e editor option's editor option-argument. If FCEDIT is null or
unset, ed is used as the editor. Determines a path name naming a com‐
mand history file. If the HISTFILE variable is not set, the shell
attempts to access or create a file in your home directory. If the
shell cannot obtain both read and write access to, or create, the his‐
tory file, it uses a default mechanism that allows the history to oper‐
ate properly. Changes made to HISTFILE after the history file has been
initialized are not effective. If more than one instance of the shell
is using the same history file, it is unspecified how updates to the
history file from those shells interact. As entries are deleted from
the history file, they will be deleted oldest first. Determines a dec‐
imal number representing the limit to the number of previous commands
that are accessible. If this variable is unset, a default of 128 is
used. Changes made to HISTSIZE after the history file has been ini‐
tialized are not effective. Provides a default value for the interna‐
tionalization variables that are unset or null. If LANG is unset or
null, the corresponding value from the default locale is used. If any
of the internationalization variables contain an invalid setting, the
utility behaves as if none of the variables had been defined. If set
to a non-empty string value, overrides the values of all the other
internationalization variables. Determines the locale for the inter‐
pretation of sequences of bytes of text data as characters (for exam‐
ple, single-byte as opposed to multibyte characters in arguments and
input files). Determines the locale used to affect the format and con‐
tents of diagnostic messages written to standard error. Determines the
location of message catalogues for the processing of LC_MESSAGES.
SEE ALSO
Commands: sh(1p)
Standards: standards(5)fc(1)