给初学者的 fc 示例教程
2018-04-23 19:10
357 查看
fc(Fix Commands 的缩写)是个 shell 内置命令,用于在交互式 shell 里列出、编辑和执行最近输入的命令。你可以用你喜欢的编辑器编辑最近的命令并再次执行,而不用把它们整个重新输入一遍。除了可以避免重复输入又长又复杂的命令,它对修正拼写错误来说也很有用。因为是 shell 内置命令,大多 shell 都包含它,比如 Bash 、 Zsh 、 Ksh 等。在这篇短文中,我们来学一学在 Linux 中使用
fc命令。
fc 命令教程及示例
列出最近执行的命令
执行不带其它参数的fc -l命令,它会列出最近 16 个命令。
$ fc -l507 fish508 fc -l509 sudo netctl restart wlp9s0sktab510 ls -l511 pwd512 uname -r513 uname -a514 touch ostechnix.txt515 vi ostechnix.txt516 echo "Welcome to OSTechNix"517 sudo apcman -Syu518 sudo pacman -Syu519 more ostechnix.txt520 wc -l ostechnix.txt521 cat ostechnix.txt522 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 520520 ls -l521 pwd522 uname -r523 uname -a524 echo "Welcome to OSTechNix"525 sudo apcman -Syu526 cat ostechnix.txt527 wc -l ostechnix.txt528 more ostechnix.txt529 clear530 fc -ln531 fc -l
fc -l的参数即可,比如 520 至 525:
除了使用行号,我们还可以使用字符。比如,要列出最近一个$ fc -l 520 525520 ls -l521 pwd522 uname -r523 uname -a524 echo "Welcome to OSTechNix"525 sudo apcman -Syu
pwd至最近一个命令之间的所有命令,只需要像下面这样使用起始字母即可:
要列出所有$ fc -l p521 pwd522 uname -r523 uname -a524 echo "Welcome to OSTechNix"525 sudo apcman -Syu526 cat ostechnix.txt527 wc -l ostechnix.txt528 more ostechnix.txt529 clear530 fc -ln531 fc -l532 fc -l 520533 fc -l 520 525534 fc -l 520535 fc -l 522536 fc -l l
pwd和
more之间的命令,你可以都使用起始字母,像这样:
或者,使用开始命令的首字母以及结束命令的行号:$ fc -l p m
或者都使用行号:$ fc -l p 528
这三个命令都显示一样的结果。$ fc -l 521 528
编辑并执行上一个命令
我们经常敲错命令,这时你可以用默认编辑器修正拼写错误并执行而不用将命令重新再敲一遍。编辑并执行上一个命令:
这会在默认编辑器里载入上一个命令。$ fc
你可以看到,我上一个命令是
fc -l。你可以随意修改,它会在你保存退出编辑器时自动执行。这在命令或参数又长又复杂时很有用。需要注意的是,它同时也可能是毁灭性的。比如,如果你的上一个命令是危险的
rm -fr <some-path>,当它自动执行时你可能丢掉你的重要数据。所以,小心谨慎对待每一个命令。
更改默认编辑器
另一个有用的选项是-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 -ld1 18:41 exit2 18:41 clear3 18:42 fc -l4 18:42 sudo netctl restart wlp9s0sktab5 18:42 ls -l6 18:42 pwd7 18:42 uname -r8 18:43 uname -a9 18:43 cat ostechnix.txt10 18:43 echo "Welcome to OSTechNix"11 18:43 more ostechnix.txt12 18:43 wc -l ostechnix.txt13 18:43 cat ostechnix.txt14 18:43 clear15 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/
相关文章推荐
- 给初学者的 fc 示例教程
- 为初学者提供的 uniq 命令教程及示例
- 为初学者准备的 ln 命令教程(5 个示例)
- 写给大数据开发初学者的话 | 附教程
- 【Arduino官方教程】数字处理示例(五):按键状态变化检测
- 推荐10个适合初学者的 HTML5 入门教程
- 【Arduino官方教程】数字处理示例(九):音调跟随器
- 微信公众平台开发者的入门教程-PHP源码示例
- 全新java初学者实践附加教程4――――图形编程
- 推荐10个适合初学者的 HTML5 入门教程
- SpringMVC详细示例实战教程
- 初学者asp.net学习教程之进步流程
- 【Arduino官方教程第一辑】示例程序 5-3 If条件判断
- Appium简明环境搭建教程及示例运行
- 转 一套针对初学者的JavaScript教程
- jQuery 入门教程(28): jQuery UI Datepicker 示例(一)
- 全新java初学者实践教程1-8
- java初学者实践教程20-异常处理
- HTML5加app教程-mui开发示例演示
- 史上最全最强SpringMVC详细示例实战教程