您是否曾经在Bash中运行命令时因拼错单词而出现错误?或者您是否忘记了最近运行的最后三个命令?与其重新编写或记住先前的命令,不如使用Bash的fc
命令来帮助快速编辑和重新执行先前的命令。
在本文中,您将学习如何利用fc
从您的命令历史记录中编辑和重新执行命令。阅读本指南后,您将能够像您想要的命令行战士一样熟练运用fc
!
先决条件
本文将是一个教程。如果您计划一步一步地跟着进行操作,则需要一台Linux计算机或启用了Windows Subsystem for Linux(WSL)的Windows 10计算机。本教程将使用Ubuntu 20.04 LTS。
关于Bash fc
命令
fc
不是Linux应用程序,而是Bash中的内置shell实用程序。Bash可在大多数主要的Linux发行版中使用。通过几个按键,Bash的fc
命令允许您列出、编辑或执行先前的命令。
fc
命令在Z Shell(ZSH)中也可用。但本文示例将使用Bash中的fc
。
运行了一条长命令结果错误了吗?fc
可以帮你避免重新输入整个命令。相反,fc
允许你使用你选择的文本编辑器编辑命令。保存编辑后,编辑的命令将自动执行!
准备好尝试fc
了吗?让我们开始吧!
列出以前的命令
你离开电脑一段时间回来后,忘记了上次运行的命令吗?或者你不记得是否按正确顺序执行了多个命令。怎么办?放轻松,fc
会帮助你记住。下面是方法。
1. 在你的电脑上打开一个Bash终端。
2. 要让fc
发挥作用,必须有一些命令历史记录可供使用。由于你刚刚打开了一个新的终端窗口,可能还没有命令历史记录。为了建立测试的命令历史记录,请复制下面的每个命令并在终端中运行。这些命令不会对你的计算机造成任何危险。
3. 接下来,通过运行以下命令列出历史记录中的所有命令。-l
选项指示 fc
仅列出所有先前的命令而不执行它们。
如下所示,fc
命令显示了您先前发出的所有四个命令。左侧的数字表示您执行每个命令的顺序。

编辑和重新执行最后一个命令
想象一种情况,您正在安装一个应用程序,并且您拼写错误了。结果,命令失败了。与其重新输入整个命令,为什么不编辑命令并自动重新执行呢?要执行此操作,请按照以下步骤操作。
1. 通过在终端中运行以下命令来模拟安装一个不存在的应用程序。请注意,您将有意拼错应用程序的名称 caffiene
。
结果,尝试的安装失败了。您将收到类似于以下消息的消息。

2. 要更正您执行的最后一个命令,请在终端中运行以下命令。这样将在默认文本编辑器中打开命令历史记录缓冲区。在本示例中,默认文本编辑器是 nano。
下面的截图显示了 nano 编辑器中的最后一个命令。

如果nano不是您首选的文本编辑器,您可以指示
fc
使用其他编辑器,例如vi。为此,请包含-e
选项,后面跟着文本编辑器的名称。例如,fc -e vi
将在vi文本编辑器中打开命令历史记录。
3. 进入nano文本编辑器后,将应用程序名称的拼写从caffiene
更正为caffeine
。
4. 更正应用程序名称后,按CTRL+X
退出nano。
5. 在下一个提示要求您保存修改的缓冲区?时,按Y
—> Enter
保存更改。

在退出文本编辑器后,fc
会自动执行您编辑的命令。

编辑并重新执行先前的命令
使用fc
,不仅可以编辑您运行的最后一个命令,还可以编辑您执行的任何以前的命令。例如,要编辑命令echo '在命令行上使用fc'
,请按照以下步骤进行。
1. 通过运行下面的命令在终端中列出先前的命令。
2. 从命令历史列表中找到要编辑的命令,并注意其左侧的数字。在这个例子中,命令号为2。

3. 要编辑具有条目编号2的命令,请在终端中运行下面的命令。该命令将在文本编辑器中打开以进行编辑。
4. 在文本编辑器中,现在根据需要编辑命令。
5. 编辑完命令后,按下CTRL+X
退出nano。
6. 在下一个提示中询问您是否保存修改的缓冲区?,按下Y
—> Enter
保存更改。

保存命令并退出文本编辑器后,您编辑的命令将自动在shell中执行。
编辑和重新执行多个命令
如果您认为fc
一次只能编辑和执行一个以前的命令,那么您将有所收获。为什么呢?fc
也允许您编辑多个以前的命令!编辑多个以前的命令有什么用?首先,您可以更改命令执行的顺序。
假设您要编辑前面的命令编号2到7。要做到这一点,请按照以下步骤操作。
1. 在Bash终端中运行以下命令,并按Enter。下面的命令读作fc <space> 2 <space> 7
,这意味着fc
将打开命令2到7以供编辑。
2. 接下来,根据需要编辑命令。例如:
- 删除
sudo apt install caffiene -y
命令。 - 交换
uname -a
和ps aux
的顺序。 - 删除
clear
。

3. 编辑完命令后,按下CTRL+X
退出nano。
4. 在下一个提示中询问您是否保存修改的缓冲区?,按下Y
—> Enter
保存更改。
您编辑的命令在退出文本编辑器后将自动执行。

重新执行先前的命令而无需编辑
假设您只需执行先前的命令而无需首先编辑。 fc
有一个选项可以实现这一点。按照以下步骤执行来自历史记录中指定条目的先前命令。
- 通过运行以下命令在终端中列出先前的命令。
2. 从命令历史列表中找到您想要再次运行的命令,并注意其左侧的数字。在此示例中,命令编号为2。

3. 要执行特定的先前命令,请在shell中运行以下命令。 -s
选项指示 fc
跳过编辑并继续执行命令编号为2的命令。
下面的截图显示了从命令历史记录中执行命令编号为2的fc。

结论
本文旨在引起您对一个有用但经常被忽视和遗忘的命令 fc
的兴趣。您学会了如何使用 fc
避免重新输入先前执行过的命令,这可能会浪费时间。
有了您现在对 fc
的了解,您认为您会使用它吗?还是您仍然更喜欢在shell中重新输入命令?做一个明智的选择!