给初学者的 fc 示例教程
创始人
2024-03-01 22:42:46
0

fcFix 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 -a
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 -lr

-n 选项用于隐藏行号。

$ fc -ln
 nano ~/.profile
 source ~/.profile
 source ~/.profile
 fc -ln
 fc -l
 sudo netctl restart wlp9s0sktab
 ls -l
 pwd
 uname -r
 uname -a
 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 -a
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

要列出一段范围内的命令,将始、末行号作为 fc -l 的参数即可,比如 520 至 525:

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

除了使用行号,我们还可以使用字符。比如,要列出最近一个 pwd 至最近一个命令之间的所有命令,只需要像下面这样使用起始字母即可:

$ fc -l p
521 pwd
522 uname -r
523 uname -a
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 -l。你可以随意修改,它会在你保存退出编辑器时自动执行。这在命令或参数又长又复杂时很有用。需要注意的是,它同时也可能是毁灭性的。比如,如果你的上一个命令是危险的 rm -fr ,当它自动执行时你可能丢掉你的重要数据。所以,小心谨慎对待每一个命令。

更改默认编辑器

另一个有用的选项是 -e ,它可以用来为 fc 命令选择不同的编辑器。比如,如果我们想用 nano 来编辑上一个命令:

$ fc -e nano

这个命令会打开 nano 编辑器(而不是默认编辑器)编辑上一个命令。

如果你觉得用 -e 选项太麻烦,你可以修改你的默认编辑器,只需要将环境变量 FCEDIT 设为你想要让 fc 使用的编辑器名称即可。

比如,要把 nano 设为默认编辑器,编辑你的 ~/.profile 或其他初始化文件: (LCTT 译注:如果 ~/.profile 不存在可自己创建;如果使用的是 bash ,可以编辑 ~/.bash_profile

$ vi ~/.profile

添加下面一行:

FCEDIT=nano
# LCTT译注:如果在子 shell 中会用到 fc ,最好在这里 export FCEDIT

你也可以使用编辑器的完整路径:

FCEDIT=/usr/local/bin/emacs

输入 :wq 保存退出。要使改动立即生效,运行以下命令:

$ source ~/.profile

现在再输入 fc 就可以使用 nano 编辑器来编辑上一个命令了。

不编辑而直接执行上一个命令

我们现在知道 fc 命令不带任何参数的话会将上一个命令载入编辑器。但有时你可能不想编辑,仅仅是想再次执行上一个命令。这很简单,在末尾加上连字符(-)就可以了:

$ echo "Welcome to OSTechNix"
Welcome to OSTechNix

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

如你所见,fc 带了 -e 选项,但并没有编辑上一个命令(例中的 echo " Welcome to OSTechNix")。

需要注意的是,有些选项仅对指定 shell 有效。比如下面这些选项可以用在 zsh 中,但在 Bash 或 Ksh 中则不能用。

显示命令的执行时间

想要知道命令是在什么时候执行的,可以用 -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 -a
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 -a
 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 -a
 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

fc 用法总结

  • 当不带任何参数时,fc 将上一个命令载入默认编辑器。
  • 当带一个数字作为参数时,fc 将数字指定的命令载入默认编辑器。
  • 当带一个字符作为参数时,fc 将最近一个以指定字符开头的命令载入默认编辑器。
  • 当有两个参数时,它们分别指定需要列出的命令范围的开始和结束。

更多细节,请参考 man 手册。

$ man fc

好了,今天就这些。希望这篇文章能帮助到你。更多精彩内容,敬请期待!


via: https://www.ostechnix.com/the-fc-command-tutorial-with-examples-for-beginners/

作者:SK 选题:lujun9972 译者:Dotcra 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

小米集团:第四季度营收10...
3月18日下午消息,小米集团(HKEX: 1810)今日发布了20...
2025-03-18 22:14:46
企业级AI应用的10个问题
不管我们是哪种姿态,AI都不再是天外飞仙,而是全方位、深层次、大范...
2025-03-17 06:42:03
关闭CentOS系统XWi...
在CentOS系统中关闭X Window的指南 对于服务器管理员或...
2025-03-11 06:13:09
港股“AI牛”行情演绎,近...
每经编辑:肖芮冬 在科技牛行情催化下,近半年港股通科技指数涨超83...
2025-03-07 16:53:58
如何在CentOS中使用f...
在Linux系统中,文件与目录的高效管理是日常运维和开发工作的基础...
2025-03-06 06:21:32
如何在CentOS上安装X...
在CentOS系统中安装XFCE桌面环境的完整指南 对于希望为ce...
2025-03-04 12:26:25

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...