Top Qs
Timeline
Chat
Perspective
Fc (Unix)
From Wikipedia, the free encyclopedia
Remove ads
fc
is a standard program on Unix and Unix-like operating systems that lists, edits and re-executes commands previously entered to an interactive shell. Its name is an initialism for "fix command".[1] It is particularly helpful for editing complex, multi-line commands.
Remove ads
The fc command is required to be an "intrinsic" utility by POSIX,[2] and as such is implemented as a builtin in the Bash, Zsh, and Almquist shells.
Invoked with no options, fc will open 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. Various other command-line options are supported, allowing quick substitutions, repetition or modification of a specific command from the session history, or a range of commands from the history.
Remove ads
Examples
Summarize
Perspective
When invoked with the -l
flag, fc will list recent lines from the session history (the last 16 lines by default in the Bash shell[3]):
$ fc -l
1 pwd
2 whoami
3 ls
4 ls -a
When invoked with -s PATTERN
, fc will re-run the most recent command matching PATTERN:
$ fc -s ls
ls -a
. .. .bash_logout .bashrc .profile
Though, more powerfully, -s
enables inline substitution:
$ ls floder # user typo
$ fc -s flod=fold # revise and re-run with correction
ls folder
Invoking fc
with no arguments edits the last command executed with the user's preferred text editor. Upon exiting the editor, the modified command will execute in the current shell.[4]
$ fc # change 'ls -a' to 'ls -la' in editor and exit
ls -la
total 20
drwxr-x--- 2 user user 4096 Apr 22 15:38 .
drwxr-xr-x 1 root root 4096 Apr 22 15:38 ..
-rw-r--r-- 1 user user 220 Apr 22 15:38 .bash_logout
⋮
The editor to be used can be specified with the -e
option; otherwise it is read from the value of the FCEDIT environment variable,[5] or, in some shells, EDITOR,[3][6][7] with a fallback to vi or ed.
It is also possible to edit and re-invoke a range of commands from the history:
$ fc -l
1 pwd
2 whoami
3 ls
4 ls -a
5 ls -la
$ fc 1 2 # specify start and end history entries, separated by whitespace
pwd
/home/user
whoami
user
Remove ads
External links
- : process the command history list – Shell and Utilities Reference, The Single UNIX Specification, Version 5 from The Open Group
See also
References
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads