这 fc 命令,简称 F九 Commands 是一个 shell 内置命令,用于在交互式 shell 中列出、编辑和重新执行最近输入的命令。 您可以在您喜欢的编辑器中编辑最近输入的命令并运行它们,而无需重新键入整个命令。 该命令有助于纠正之前输入的命令中的拼写错误,避免重复冗长复杂的命令。 由于它是 shell 内置的,它在大多数 shell 中都可用,包括 Bash、Zsh、Ksh 等。在这个简短的教程中,我们将学习在 Linux 中使用 fc 命令。
内容
使用 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
列出特定范围内的命令,例如 520 到 525, 做:
$ 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
看到之间的一切 pwd
到 more
命令,你可以使用:
$ fc -l p m
或者,使用起始命令命令的首字母和结束命令的行号的组合:
$ fc -l p 528
或者,只是开始和结束命令的行号:
$ fc -l 521 528
所有这三个命令都将显示相同的结果。
自动编辑并重新运行最后一个命令
有时,您可能拼错了先前的命令。 在这种情况下,您可以使用默认编辑器轻松编辑命令的拼写错误并执行它,而无需再次重新键入。
要编辑最后一个命令并重新运行它,请执行以下操作:
$ fc
这将在默认编辑器中打开您的最后一个命令。
正如您在上面的屏幕截图中看到的,我的最后一个命令是 "fc -l"
. 现在,您可以对命令进行任何更改,并在保存并退出编辑器后再次自动重新运行它。 当您使用长而复杂的命令或参数时,这可能很有用。
重要的提示: 请注意,这也可以是 破坏性的. 例如,如果前面的命令是致命的命令,例如 "rm -fr <some-path>"
,它会自动执行,您可能会丢失您的重要数据。 因此,您在使用时必须非常小心 fc
命令。
更改默认编辑器以编辑命令
fc 的另一个值得注意的选择是 "e"
用于选择不同的编辑器来编辑命令。 例如,我们可以使用 "nano"
编辑器来编辑最后一个命令,如下所示。
$ fc -e nano
此命令将打开 nano 编辑器(而不是默认编辑器)来编辑最后一个命令。
您可能会发现使用起来很耗时 -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技巧