Format
- fc [–r] [–e editor]
[first[last]]
- fc –l [–nr]
[first[last]]
- fc –s [old=new]
[specifier]
Description
fc displays,
edits, and reenters commands that have been input to an interactive
shell. fc stands
for “fix commands.” If the variable HISTSIZE is not defined,
128 commands are accessible. The number of commands that are accessible
is determined by the HISTSIZE variable.
The
shell stores these commands in a history file. When the
HISTFILE environment
variable is defined as the
name of a writable file, the shell uses this as the history file.
Otherwise, the history file is
$HOME /.sh_history, if
HOME is
defined and the file is writable. If the
HOME variable is not
defined, or the file is not writable, the shell attempts to create
a temporary file for the history. If a temporary file cannot be created,
the shell does not keep a history file.
Note: A shell shares history
(commands) with all shells that have the same history file. A login
shell truncates the history file if it is more than HISTSIZE lines
long.
Normally,
the shell does not keep a history of commands run from a profile file
or the
ENV file. By default, however, it begins recording commands
in the history file when it encounters a function definition in either
of these setup files. This means that the
HISTSIZE and
HISTFILE variables
must be set up appropriately before the first function definition.
If you do not want the history file to begin at this time, use:
set -o nolog
For
further information, see sh and set.
Any variable assignment or redirection that appears on the fc command
line affects both the fc command itself
and the commands that fc produces.
The
first form of fc in Format puts
you into an editor with a range of commands to edit. When you leave
the editor, fc inputs the edited commands
to the shell.
The first and last command in the range are specified
with
first and
last.
There are three ways to specify a command.
- If the command specifier is an unsigned or positive number, fc edits
the command with that number.
- If the command specifier is a negative number –n, fc edits
the command that came n commands before
the current command.
- If the command specifier is a string, fc edits
the most recent command beginning with that string.
The default value of last is first.
If you specify neither first nor last,
the default command range is the previous command entered to the shell.
Options
- –e editor
- Invokes editor to edit the commands.
If you do not specify the –e option, fc assumes
that the environment variable FCEDIT, if defined, contains
the name of the editor for fc to use. If FCEDIT is
not defined, fc invokes ed to
edit the commands.
- –l
- Displays the command list. This option does not edit or reenter
the commands. If you omit last with this
option, fc displays all commands from the
one indicated by first through to the previous
command entered. If you omit both first and last with
this option, the default command range is the 16 most recently entered
commands.
- –n
- Suppresses command numbers when displaying commands.
- –r
- Reverses the order of the commands in the command range.
- –s
- Reenters exactly one command without going through an editor.
If a command specifier is given, fc selects
the command to reenter as described earlier; otherwise, fc uses
the last command entered. To perform a simple substitution on the
command before reentry, use a parameter of the form old=new.
The string new replaces the first occurrence
of string old. fc displays
the (possibly modified) command before reentering it.
Environment variables
- FCEDIT
- Contains the default editor to be used if none is specified with
the –e option.
- HISTFILE
- Contains the path name of the history file.
- HISTSIZE
- Gives the maximum
number of previous commands that are accessible.
Files
- /tmp
- Used to store
temporary files. You can use the TMPDIR environment variable to dictate
a different directory to store temporary files.
- $HOME/.sh_history
- This default history file is created.
Localization
fc uses
the following localization environment variables:
- LANG
- LC_ALL
- LC_CTYPE
- LC_MESSAGES
- NLSPATH
See Localization for more
information.
Usage notes
- fc is a built-in shell command.
- r is a built-in alias for fc –s. history is
a built-in alias for fc –l.
Exit values
- 0
- If you specified –l, this indicates
successful completion.
- 1
- Failure due to any of the following:
- Missing history file
- Inability to find the desired line in the history file
- Inability to create temporary file
- 2
- An incorrect command-line option or argument
If fc runs one or more
commands, the exit status of fc is the exit
status of the last run command.
Messages
Possible error messages include:
- Cannot create temporary file
- fc must create a temporary file to do
some operations, such as editing. It prints this message when it cannot
create its temporary file—for example, because the disk is full.
- No command matches string
- You asked to edit a command beginning with a particular string,
but there was no such command in the history file.
Related information
alias, ed, print, read, sh, vi