Bash fc 命令:轻松驾驭 Bash Shell 如专业人士

您是否曾经在Bash中运行命令时因拼错单词而出现错误?或者您是否忘记了最近运行的最后三个命令?与其重新编写或记住先前的命令,不如使用Bashfc命令来帮助快速编辑和重新执行先前的命令。

在本文中,您将学习如何利用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发挥作用,必须有一些命令历史记录可供使用。由于你刚刚打开了一个新的终端窗口,可能还没有命令历史记录。为了建立测试的命令历史记录,请复制下面的每个命令并在终端中运行。这些命令不会对你的计算机造成任何危险。

# 清屏
 clear
 
# 在终端会话中打印字符串
 echo 'working on the command line with fc'
 
# 显示一些系统信息
 uname -a
 
# 使用PS命令获取进程信息
 ps aux

3. 接下来,通过运行以下命令列出历史记录中的所有命令。-l 选项指示 fc 仅列出所有先前的命令而不执行它们。

fc -l

如下所示,fc 命令显示了您先前发出的所有四个命令。左侧的数字表示您执行每个命令的顺序。

Listing command history with fc

编辑和重新执行最后一个命令

想象一种情况,您正在安装一个应用程序,并且您拼写错误了。结果,命令失败了。与其重新输入整个命令,为什么不编辑命令并自动重新执行呢?要执行此操作,请按照以下步骤操作。

1. 通过在终端中运行以下命令来模拟安装一个不存在的应用程序。请注意,您将有意拼错应用程序的名称 caffiene

sudo apt install caffiene -y

结果,尝试的安装失败了。您将收到类似于以下消息的消息。

Failed installation message

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

fc

下面的截图显示了 nano 编辑器中的最后一个命令。

Editing the last command with nano.

如果nano不是您首选的文本编辑器,您可以指示fc使用其他编辑器,例如vi。为此,请包含-e选项,后面跟着文本编辑器的名称。例如,fc -e vi将在vi文本编辑器中打开命令历史记录。

3. 进入nano文本编辑器后,将应用程序名称的拼写从caffiene更正为caffeine

4. 更正应用程序名称后,按CTRL+X退出nano。

5. 在下一个提示要求您保存修改的缓冲区?时,按Y —> Enter保存更改。

Editing the last command and saving changes to the history buffer

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

Automatically re-executing the edited command

编辑并重新执行先前的命令

使用fc,不仅可以编辑您运行的最后一个命令,还可以编辑您执行的任何以前的命令。例如,要编辑命令echo '在命令行上使用fc',请按照以下步骤进行。

1. 通过运行下面的命令在终端中列出先前的命令。

fc -l

2. 从命令历史列表中找到要编辑的命令,并注意其左侧的数字。在这个例子中,命令号为2。

Listing the command history and finding the command number to edit

3. 要编辑具有条目编号2的命令,请在终端中运行下面的命令。该命令将在文本编辑器中打开以进行编辑。

fc 2

4. 在文本编辑器中,现在根据需要编辑命令。

5. 编辑完命令后,按下CTRL+X退出nano。

6. 在下一个提示中询问您是否保存修改的缓冲区?,按下Y —> Enter保存更改。

Editing a past command entry in the history buffer

保存命令并退出文本编辑器后,您编辑的命令将自动在shell中执行。

编辑和重新执行多个命令

如果您认为fc一次只能编辑和执行一个以前的命令,那么您将有所收获。为什么呢?fc也允许您编辑多个以前的命令!编辑多个以前的命令有什么用?首先,您可以更改命令执行的顺序。

假设您要编辑前面的命令编号2到7。要做到这一点,请按照以下步骤操作。

1. 在Bash终端中运行以下命令,并按Enter。下面的命令读作fc <space> 2 <space> 7,这意味着fc将打开命令2到7以供编辑。

fc 2 7

2. 接下来,根据需要编辑命令。例如:

  • 删除sudo apt install caffiene -y命令。
  • 交换uname -aps aux的顺序。
  • 删除clear
Editing command history entries 2 through 7 at once

3. 编辑完命令后,按下CTRL+X退出nano。

4. 在下一个提示中询问您是否保存修改的缓冲区?,按下Y —> Enter保存更改。

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

Automatically re-executing the edited command

重新执行先前的命令而无需编辑

假设您只需执行先前的命令而无需首先编辑。 fc 有一个选项可以实现这一点。按照以下步骤执行来自历史记录中指定条目的先前命令。

  1. 通过运行以下命令在终端中列出先前的命令。
fc -l

2. 从命令历史列表中找到您想要再次运行的命令,并注意其左侧的数字。在此示例中,命令编号为2。

Listing the command history and finding the command number to execute

3. 要执行特定的先前命令,请在shell中运行以下命令。 -s 选项指示 fc 跳过编辑并继续执行命令编号为2的命令。

fc -s 2

下面的截图显示了从命令历史记录中执行命令编号为2的fc。

Executing a previous command from the history buffer without editing

结论

本文旨在引起您对一个有用但经常被忽视和遗忘的命令 fc 的兴趣。您学会了如何使用 fc 避免重新输入先前执行过的命令,这可能会浪费时间。

有了您现在对 fc 的了解,您认为您会使用它吗?还是您仍然更喜欢在shell中重新输入命令?做一个明智的选择!

Source:
https://adamtheautomator.com/bash-fc-command/