侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux fc命令教程:如何编辑和执行历史命令(附实例详解和注意事项)

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命令的常用选项或参数如下表所示:

选项参数说明
-eename指定要使用的编辑器,如果不指定,则使用环境变量EDITOR或FCEDIT的值,如果都没有设置,则使用默认的编辑器。
-l列出历史命令,而不是编辑和执行。
-n列出历史命令时,不显示行号。
-r反转历史命令的顺序,即最新的命令先显示。
-spat=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命令相关的命令,你可以点击链接查看更多的介绍和实例。

0

评论区