带有初学者示例的 fc 命令教程

fc 命令,简称 FCommands 是一个 shell 内置命令,用于在交互式 shell 中列出、编辑和重新执行最近输入的命令。 您可以在您喜欢的编辑器中编辑最近输入的命令并运行它们,而无需重新键入整个命令。 该命令有助于纠正之前输入的命令中的拼写错误,避免重复冗长复杂的命令。 由于它是 shell 内置的,它在大多数 shell 中都可用,包括 Bash、Zsh、Ksh 等。在这个简短的教程中,我们将学习在 Linux 中使用 fc 命令。

内容

  1. 使用 fc 命令列出最近执行的命令
  2. 自动编辑并重新运行最后一个命令
  3. 更改默认编辑器以编辑命令
  4. 重新运行最后一个命令而不编辑它
  5. 显示命令执行的时间
    1. TL;博士

使用 fc 命令列出最近执行的命令

如果你跑 fc -l 不带参数的命令,它将显示最后一个 16 命令。

$ fc -l 507 fish 508 fc -l 509 sudo netctl restart wlp9s0sktab 510 ls -l 511 pwd 512 uname -r 513 uname -ms 514 touch ostechnix.txt 515 vi ostechnix.txt 516 echo "Welcome to OSTechNix" 517 sudo apcman -Syu 518 sudo pacman -Syu 519 more ostechnix.txt  520 wc -l ostechnix.txt  521 cat ostechnix.txt  522 clear

要反转命令的顺序,请使用 -r 旗帜。

$ fc -r

您可以使用取消行号 -n 旗帜。

$ fc -ln  nano ~/.profile  source ~/.profile  source ~/.profile  fc -ln  fc -l  sudo netctl restart wlp9s0sktab  ls -l  pwd  uname -r  uname -ms  echo "Welcome to OSTechNix"  sudo apcman -Syu  cat ostechnix.txt   wc -l ostechnix.txt   more ostechnix.txt   clear

现在您将看不到行号。

要列出从特定命令开始的结果,只需使用行号和 -l 选项。 例如,显示从行号开始的命令 520 到目前为止,我们这样做:

$ fc -l 520 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt  527 wc -l ostechnix.txt  528 more ostechnix.txt  529 clear 530 fc -ln 531 fc -l

列出特定范围内的命令,例如 520525, 做:

$ fc -l 520 525 520 ls -l 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu

除了使用行号,我们还可以使用字符串。 例如,列出从 pwd 命令直到重新发送,只需使用该命令的起始字母(即 p) 如下所示。

$ fc -l p 521 pwd 522 uname -r 523 uname -ms 524 echo "Welcome to OSTechNix" 525 sudo apcman -Syu 526 cat ostechnix.txt  527 wc -l ostechnix.txt  528 more ostechnix.txt  529 clear 530 fc -ln 531 fc -l 532 fc -l 520 533 fc -l 520 525 534 fc -l 520 535 fc -l 522 536 fc -l l

看到之间的一切 pwdmore 命令,你可以使用:

$ fc -l p m

或者,使用起始命令命令的首字母和结束命令的行号的组合:

$ fc -l p 528

或者,只是开始和结束命令的行号:

$ fc -l 521 528

所有这三个命令都将显示相同的结果。

自动编辑并重新运行最后一个命令

有时,您可能拼错了先前的命令。 在这种情况下,您可以使用默认编辑器轻松编辑命令的拼写错误并执行它,而无需再次重新键入。

要编辑最后一个命令并重新运行它,请执行以下操作:

$ fc

这将在默认编辑器中打开您的最后一个命令。

使用 fc 命令编辑并重新运行最后一个命令

正如您在上面的屏幕截图中看到的,我的最后一个命令是 "fc -l". 现在,您可以对命令进行任何更改,并在保存并退出编辑器后再次自动重新运行它。 当您使用长而复杂的命令或参数时,这可能很有用。

重要的提示: 请注意,这也可以是 破坏性的. 例如,如果前面的命令是致命的命令,例如 "rm -fr <some-path>",它会自动执行,您可能会丢失您的重要数据。 因此,您在使用时必须非常小心 fc 命令。

更改默认编辑器以编辑命令

fc 的另一个值得注意的选择是 "e" 用于选择不同的编辑器来编辑命令。 例如,我们可以使用 "nano" 编辑器来编辑最后一个命令,如下所示。

$ fc -e nano

此命令将打开 nano 编辑器(而不是默认编辑器)来编辑最后一个命令。

更改 fc 命令的默认编辑器

您可能会发现使用起来很耗时 -e 每个命令的选项。 要将新编辑器设为默认编辑器,只需设置环境变量 FCEDIT 到你想要的编辑器的名字 fc 使用。

例如,要将“nano”设置为新的默认编辑器,请编辑您的 ~/.profile 或环境文件:

$ vi ~/.profile

添加以下行:

FCEDIT=nano

您还可以使用编辑器的完整路径,如下所示。

FCEDIT=/usr/local/bin/emacs

类型 :wq 保存和 close 文件。 要更新更改,请运行:

$ source ~/.profile

现在,您只需键入“fc”即可编辑最后一个命令 "nano" 编辑。

重新运行最后一个命令而不编辑它

我们已经知道,如果我们不带任何参数运行“fc”,它会使用最新的命令加载编辑器。 有时,您可能不想编辑,而只是执行最后一个命令。 为此,请使用连字符 (-) 符号在末尾,如下所示。

$ echo "Welcome to OSTechNix" Welcome to OSTechNix  $ fc -e - echo "Welcome to OSTechNix" Welcome to OSTechNix

如您所见,即使我使用了 fc 也没有编辑最后一个命令(即 echo “Welcome to OSTechNix”) -e 选项。

请注意,某些选项是特定于 shell 的。 它们可能无法在其他 shell 中工作。 例如,以下选项可用于 zsh 壳。 它们不能在 Bash 或 Ksh shell 中工作。

显示命令执行的时间

要查看命令的运行时间,请使用 -d 如下所示。

fc -ld 1 18:41 exit 2 18:41 clear 3 18:42 fc -l 4 18:42 sudo netctl restart wlp9s0sktab 5 18:42 ls -l 6 18:42 pwd 7 18:42 uname -r 8 18:43 uname -ms 9 18:43 cat ostechnix.txt 10 18:43 echo "Welcome to OSTechNix" 11 18:43 more ostechnix.txt 12 18:43 wc -l ostechnix.txt 13 18:43 cat ostechnix.txt 14 18:43 clear 15 18:43 fc -l

现在您可以看到最近执行的命令的执行时间。

我们还可以使用显示每个命令的完整时间戳 -f 选项。

 fc -lf  1 4/5/2018 18:41 exit  2 4/5/2018 18:41 clear  3 4/5/2018 18:42 fc -l  4 4/5/2018 18:42 sudo netctl restart wlp9s0sktab  5 4/5/2018 18:42 ls -l  6 4/5/2018 18:42 pwd  7 4/5/2018 18:42 uname -r  8 4/5/2018 18:43 uname -ms  9 4/5/2018 18:43 cat ostechnix.txt  10 4/5/2018 18:43 echo "Welcome to OSTechNix"  11 4/5/2018 18:43 more ostechnix.txt  12 4/5/2018 18:43 wc -l ostechnix.txt  13 4/5/2018 18:43 cat ostechnix.txt  14 4/5/2018 18:43 clear  15 4/5/2018 18:43 fc -l  16 4/5/2018 18:43 fc -ld

当然,欧洲人可以使用欧洲日期格式 -E 选项。

 fc -lE  2 5.4.2018 18:41 clear  3 5.4.2018 18:42 fc -l  4 5.4.2018 18:42 sudo netctl restart wlp9s0sktab  5 5.4.2018 18:42 ls -l  6 5.4.2018 18:42 pwd  7 5.4.2018 18:42 uname -r  8 5.4.2018 18:43 uname -ms  9 5.4.2018 18:43 cat ostechnix.txt  10 5.4.2018 18:43 echo "Welcome to OSTechNix"  11 5.4.2018 18:43 more ostechnix.txt  12 5.4.2018 18:43 wc -l ostechnix.txt  13 5.4.2018 18:43 cat ostechnix.txt  14 5.4.2018 18:43 clear  15 5.4.2018 18:43 fc -l  16 5.4.2018 18:43 fc -ld  17 5.4.2018 18:49 fc -lf

TL;博士

  • 当不带任何参数运行时,fc 将在默认文本编辑器中加载最新的命令。
  • 当使用数字参数运行时,fc 会使用具有该指定数字的命令加载编辑器。
  • 当使用字符串参数运行时,fc 会加载以该指定字符串开头的最新命令。
  • 当使用 fc 的两个参数运行时,参数指定一系列命令的开始和结束。

笔记: 在最近的 BASH 版本中不推荐使用某些选项。

有关更多详细信息,请参阅手册页。

$ man fc

相关阅读:

  • 在 Linux 中重复上一个命令的不同方法
  • 如何在 Linux 中从 Bash 历史记录中清除特定命令
  • 如何在 Linux 中清除命令行历史记录

CLI命令行fc命令历史LinuxLinux基础Linux命令Linux技巧