Linux fc命令介绍
fc命令是fix command的缩写,它是一个shell内置命令,用于列出、编辑和重新执行之前输入到交互式shell中的命令。fc命令在编辑复杂的多行命令时非常有用,可以避免重新输入整个命令。fc命令可以使用环境变量EDITOR或FCEDIT来指定编辑器。
Linux fc命令适用的Linux版本
fc命令是一个标准的Unix程序,它适用于大多数的Unix和类Unix操作系统,如Linux、macOS、BSD等。fc命令是Bash和Zsh shell的一个内置命令,也可以在其他的shell中使用,如Ksh和Csh。如果你的shell不支持fc命令,你可以使用history命令来查看和操作历史命令,或者使用!和^符号来重复和修改历史命令。
Linux fc命令的基本语法
fc命令的基本语法如下:
fc [-e ename] [-lnr] [first] [last]
fc -s [pat=rep] [command]
其中,-e ename指定要使用的编辑器,-lnr是可选的选项,first和last是指定历史命令的范围,可以是数字或者字符串,fc -s是用于替换和执行历史命令的简写形式,pat和rep是要替换的模式和替代,command是要执行的历史命令。
Linux fc命令的常用选项或参数说明
fc命令的常用选项或参数如下表所示:
选项 | 参数 | 说明 |
---|---|---|
-e | ename | 指定要使用的编辑器,如果不指定,则使用环境变量EDITOR或FCEDIT的值,如果都没有设置,则使用默认的编辑器。 |
-l | 无 | 列出历史命令,而不是编辑和执行。 |
-n | 无 | 列出历史命令时,不显示行号。 |
-r | 无 | 反转历史命令的顺序,即最新的命令先显示。 |
-s | pat=rep | 替换和执行历史命令,pat是要替换的模式,rep是替代的字符串,如果不指定pat=rep,则使用上一次的替换。 |
first | 数字或字符串 | 指定历史命令的起始位置,如果是数字,则表示行号,如果是字符串,则表示最近的以该字符串开头的命令。 |
last | 数字或字符串 | 指定历史命令的结束位置,如果是数字,则表示行号,如果是字符串,则表示最近的以该字符串开头的命令。 |
command | 字符串 | 指定要执行的历史命令,如果不指定,则使用最近的命令。 |
Linux fc命令的实例
下面给出一些fc命令的实例,以帮助你更好地理解和使用这个命令。
实例1:编辑和执行最近的命令
如果你只输入fc命令,不带任何选项或参数,那么它会打开编辑器,让你编辑和执行最近输入的命令。例如,如果你输入了一个错误的命令:
[linux@bashcommandnotfound.cn ~]$ ls floder
ls: cannot access 'floder': No such file or directory
你可以使用fc命令来修改它,而不用重新输入:
[linux@bashcommandnotfound.cn ~]$ fc
这时,你的编辑器会打开,显示你的历史命令,你可以修改它,例如将floder改为folder,然后保存并退出编辑器,fc命令会自动执行你修改后的命令:
[linux@bashcommandnotfound.cn ~]$ ls folder
file1 file2 file3
实例2:使用不同的编辑器
如果你想使用不同的编辑器来编辑历史命令,你可以使用-e选项来指定编辑器的名称,例如,如果你想使用vim编辑器,你可以输入:
[linux@bashcommandnotfound.cn ~]$ fc -e vim
这时,vim编辑器会打开,显示你的历史命令,你可以按照vim的操作方式来编辑和执行命令。
实例3:列出历史命令
如果你只想查看历史命令,而不想编辑和执行,你可以使用-l选项来列出历史命令,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -l
你会看到类似下面的输出,显示了你之前输入的一些命令,每个命令前面有一个行号:
[linux@bashcommandnotfound.cn ~]$ fc -l
1001 ls floder
1002 fc
1003 ls folder
1004 fc -e vim
1005 fc -l
你可以使用first和last参数来指定要显示的历史命令的范围,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -l 1002 1004
你会看到类似下面的输出,只显示了第1002行到第1004行的命令:
[linux@bashcommandnotfound.cn ~]$ fc -l 1002 1004
1002 fc
1003 ls folder
1004 fc -e vim
你也可以使用字符串来指定要显示的历史命令,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -l fc
你会看到类似下面的输出,只显示了最近的以fc开头的命令:
[linux@bashcommandnotfound.cn ~]$ fc -l fc
1002 fc
1004 fc -e vim
1005 fc -l
1006 fc -l fc
如果你想反转历史命令的顺序,即最新的命令先显示,你可以使用-r选项,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -lr
你会看到类似下面的输出,显示了你之前输入的一些命令,但是顺序是从下往上的:
[linux@bashcommandnotfound.cn ~]$ fc -lr
1006 fc -l fc
1005 fc -l
1004 fc -e vim
1003 ls folder
1002 fc
1001 ls floder
如果你想列出历史命令时,不显示行号,你可以使用-n选项,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -ln
你会看到类似下面的输出,显示了你之前输入的一些命令,但是没有行号:
[linux@bashcommandnotfound.cn ~]$ fc -ln
ls floder
fc
ls folder
fc -e vim
fc -l
fc -l fc
实例4:替换和执行历史命令
如果你想快速地替换和执行历史命令,你可以使用-s选项来指定要替换的模式和替代的字符串,例如,如果你输入了一个错误的命令:
[linux@bashcommandnotfound.cn ~]$ ls -l /usr/bim
ls: cannot access '/usr/bim': No such file or directory
你可以使用fc -s命令来修改它,而不用重新输入:
[linux@bashcommandnotfound.cn ~]$ fc -s bim=bin
ls -l /usr/bin
total 0
drwxr-xr-x. 2 root root 40 Dec 26 09:36 bash
drwxr-xr-x. 2 root root 40 Dec 26 09:36 cat
drwxr-xr-x. 2 root root 40 Dec 26 09:36 ls
...
你可以看到,fc -s命令会将最近的命令中的bim替换为bin,并执行修改后的命令。你也可以指定要执行的历史命令,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -s bim=bin ls
你会看到类似下面的输出,fc -s命令会将最近的以ls开头的命令中的bim替换为bin,并执行修改后的命令:
[linux@bashcommandnotfound.cn ~]$ fc -s bim=bin ls
ls -l /usr/bin
total 0
drwxr-xr-x. 2 root root 40 Dec 26 09:36 bash
drwxr-xr-x. 2 root root 40 Dec 26 09:36 cat
drwxr-xr-x. 2 root root 40 Dec 26 09:36 ls
...
如果你不指定要替换的模式和替代的字符串,fc -s命令会使用上一次的替换,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -s
你会看到类似下面的输出,fc -s命令会将最近的命令中的bim替换为bin,并执行修改后的命令:
[linux@bashcommandnotfound.cn ~]$ fc -s
ls -l /usr/bin
total 0
drwxr-xr-x. 2 root root 40 Dec 26 09:36 bash
drwxr-xr-x. 2 root root 40 Dec 26 09:36 cat
drwxr-xr-x. 2 root root 40 Dec 26 09:36 ls
...
实例5:使用快捷键
如果你想更快地使用fc命令,你可以使用一些快捷键来代替fc命令,例如,如果你想编辑和执行最近的命令,你可以按Ctrl+X Ctrl+E,这相当于输入fc命令。如果你想替换和执行最近的命令,你可以按Ctrl+R,这相当于输入fc -s命令。如果你想列出历史命令,你可以按Ctrl+P,这相当于输入fc -l命令。
实例6:编辑和执行指定范围的历史命令
如果你想编辑和执行多个历史命令,你可以使用first和last参数来指定要编辑和执行的历史命令的范围,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc 1002 1004
你会看到类似下面的输出,fc命令会打开编辑器,让你编辑第1002行到第1004行的历史命令:
fc
ls folder
fc -e vim
你可以修改这些命令,或者添加新的命令,然后保存并退出编辑器,fc命令会自动执行你修改后的命令。
实例7:编辑和执行以指定字符串开头的历史命令
如果你想编辑和执行以指定字符串开头的历史命令,你可以使用字符串来指定要编辑和执行的历史命令,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc ls
你会看到类似下面的输出,fc命令会打开编辑器,让你编辑最近的以ls开头的历史命令:
ls -l /usr/bim
你可以修改这个命令,或者添加新的命令,然后保存并退出编辑器,fc命令会自动执行你修改后的命令。
实例8:使用正则表达式替换和执行历史命令
如果你想使用正则表达式来替换和执行历史命令,你可以在pat和rep中使用正则表达式的语法,例如,如果你输入了一个错误的命令:
[linux@bashcommandnotfound.cn ~]$ ls -l /usr/bim
ls: cannot access '/usr/bim': No such file or directory
你可以使用fc -s命令来修改它,而不用重新输入:
[linux@bashcommandnotfound.cn ~]$ fc -s /bim$/bin
ls -l /usr/bin
total 0
drwxr-xr-x. 2 root root 40 Dec 26 09:36 bash
drwxr-xr-x. 2 root root 40 Dec 26 09:36 cat
drwxr-xr-x. 2 root root 40 Dec 26 09:36 ls
...
你可以看到,fc -s命令会将最近的命令中的以bim结尾的部分替换为bin,并执行修改后的命令。你也可以指定要执行的历史命令,例如,如果你输入:
[linux@bashcommandnotfound.cn ~]$ fc -s /bim$/bin ls
你会看到类似下面的输出,fc -s命令会将最近的以ls开头的命令中的以bim结尾的部分替换为bin,并执行修改后的命令:
[linux@bashcommandnotfound.cn ~]$ fc -s /bim$/bin ls
ls -l /usr/bin
total 0
drwxr-xr-x. 2 root root 40 Dec 26 09:36 bash
drwxr-xr-x. 2 root root 40 Dec 26 09:36 cat
drwxr-xr-x. 2 root root 40 Dec 26 09:36 ls
...
Linux fc命令的注意事项
在使用fc命令时,你需要注意以下几点:
- fc命令只能操作交互式shell中的历史命令,不能操作脚本中的命令。
- fc命令只能编辑和执行单个命令,不能编辑和执行多个命令,如果你想编辑和执行多个命令,你可以使用source命令来执行编辑后的文件。
- fc命令会将编辑后的命令添加到历史命令的末尾,如果你想删除某些历史命令,你可以使用history -d命令来删除。
- 如果你的shell不支持fc命令,你会看到类似下面的错误信息:
[linux@bashcommandnotfound.cn ~]$ fc
bash: fc: command not found
这时,你可以使用history命令来查看和操作历史命令,或者使用!和^符号来重复和修改历史命令。
Linux fc相关命令
下面是一些和fc命令相关的命令,你可以点击链接查看更多的介绍和实例。
评论区