| fc | |
|---|---|
| Developers | Various open-source and commercial developers |
| Operating system | Unix, Unix-like |
| Platform | Cross-platform |
| Type | Command |
fc (short for fix command [1] ) is a shell command that lists, edits and re-executes commands previously entered in the shell. It is particularly helpful for editing complex, multi-line commands. Originally developed for Unix and standardized by POSIX, the command is available in many operating systems today.
As it is required to be "intrinsic" by POSIX, [2] it is implemented as a builtin in the Bash, Zsh, and Almquist shells.
Invoked with no options, the command opens a text editor, allowing the user to modify the last-run command. Upon exiting the editor, the modified command is executed in the current shell. [3] The editor used can be specified with the -e option; otherwise it is read from the FCEDIT environment variable, [4] or, in some shells, EDITOR, [5] [6] [7] with a fallback to vi or ed. Command-line options allow for quick substitution, repetition or modification of a specific command from the session history, or a range of commands from the history.
When invoked with the -l option, the command lists recent lines from the session history:
$ fc-l 1 pwd2 whoami3 ls4 ls -aWhen invoked with -s PATTERN, the command re-runs the most recent command matching PATTERN:
$ fc-sls ls -a. .. .bash_logout .bashrc .profileOption -s enables inline substitution. For example, consider that the last command ls floder contains a typo. The following command runs the last command with "flod" replaced with "fold":
$ fc-sflod=fold ls folderIt is also possible to edit and re-invoke a range of commands from the history. Often, one lists commands first like:
$ fc-l 1 pwd2 whoami3 ls4 ls -a5 ls -laThen, to run the commands identified as 1 and 2:
$ fc12pwd/home/userwhoamiuser