fc — Process a command history list
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.
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.
- 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
- 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
- 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.
Portability
POSIX.2.
Related information
alias, ed, print, read, sh, vi