描述

fc (Fix Commands 的缩写)是个 shell 内置命令,用于在交互式 shell 里列出、编辑和执行最近输入的命令。你可以用你喜欢的编辑器编辑最近的命令并再次执行,而不用把它们整个重新输入一遍。除了可以避免重复输入又长又复杂的命令,它对修正拼写错误来说也很有用。因为是 shell 内置命令,大多 shell 都包含它,比如 Bash 、 Zsh 、 Ksh 等。在这篇短文中,我们来学一学在 Linux 中使用 fc 命令。

fc 命令教程及示例

列出最近执行的命令

执行不带其它参数的 fc -l 命令,它会列出最近 16 个命令。

$fc -l

507fish

508fc -l

509sudo netctl restart wlp9s0sktab

510ls -l

511pwd

512uname -r

513uname -a

514touch ostechnix.txt

515vi ostechnix.txt

516echo"Welcome to OSTechNix"

517sudo apcman -Syu

518sudo pacman -Syu

519more ostechnix.txt

520wc -lostechnix.txt

521cat ostechnix.txt

522clear

-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 -lostechnix.txt

more ostechnix.txt

clear

这样行号就不再显示了。

如果想以某个命令开始,只需在 -l 选项后面加上行号即可。比如,要显示行号 520 至最近的命令,可以这样:

$fc -l520

520ls -l

521pwd

522uname -r

523uname -a

524echo"Welcome to OSTechNix"

525sudo apcman -Syu

526cat ostechnix.txt

527wc -lostechnix.txt

528more ostechnix.txt

529clear

530fc -ln

531fc -l

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

$fc -l520525

520ls -l

521pwd

522uname -r

523uname -a

524echo"Welcome to OSTechNix"

525sudo apcman -Syu

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

$fc -lp

521pwd

522uname -r

523uname -a

524echo"Welcome to OSTechNix"

525sudo apcman -Syu

526cat ostechnix.txt

527wc -lostechnix.txt

528more ostechnix.txt

529clear

530fc -ln

531fc -l

532fc -l520

533fc -l520525

534fc -l520

535fc -l522

536fc -ll

要列出所有 pwd 和 more 之间的命令,你可以都使用起始字母,像这样:

$fc -lpm

或者,使用开始命令的首字母以及结束命令的行号:

$fc -lp528

或者都使用行号:

$fc -l521528

这三个命令都显示一样的结果。

编辑并执行上一个命令

我们经常敲错命令,这时你可以用默认编辑器修正拼写错误并执行而不用将命令重新再敲一遍。

编辑并执行上一个命令:

$fc

这会在默认编辑器里载入上一个命令。

你可以看到,我上一个命令是 fc -l。你可以随意修改,它会在你保存退出编辑器时自动执行。这在命令或参数又长又复杂时很有用。需要注意的是,它同时也可能是毁灭性的。比如,如果你的上一个命令是危险的 rm -fr ,当它自动执行时你可能丢掉你的重要数据。所以,小心谨慎对待每一个命令。

更改默认编辑器

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

$fc -enano

这个命令会打开 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 toOSTechNix

$fc -e -

echo"Welcome to OSTechNix"

Welcome toOSTechNix

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

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

显示命令的执行时间

想要知道命令是在什么时候执行的,可以用 -d 选项:

fc -ld

118:41exit

218:41clear

318:42fc -l

418:42sudo netctl restart wlp9s0sktab

518:42ls -l

618:42pwd

718:42uname -r

818:43uname -a

918:43cat ostechnix.txt

1018:43echo"Welcome to OSTechNix"

1118:43more ostechnix.txt

1218:43wc -lostechnix.txt

1318:43cat ostechnix.txt

1418:43clear

1518:43fc -l

这样你就可以查看最近命令的具体执行时间了。

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

fc -lf

14/5/201818:41exit

24/5/201818:41clear

34/5/201818:42fc -l

44/5/201818:42sudo netctl restart wlp9s0sktab

54/5/201818:42ls -l

64/5/201818:42pwd

74/5/201818:42uname -r

84/5/201818:43uname -a

94/5/201818:43cat ostechnix.txt

104/5/201818:43echo"Welcome to OSTechNix"

114/5/201818:43more ostechnix.txt

124/5/201818:43wc -lostechnix.txt

134/5/201818:43cat ostechnix.txt

144/5/201818:43clear

154/5/201818:43fc -l

164/5/201818:43fc -ld

当然,欧洲的老乡们还可以使用 -E 选项来显示欧洲时间格式。

fc -lE

25.4.201818:41clear

35.4.201818:42fc -l

45.4.201818:42sudo netctl restart wlp9s0sktab

55.4.201818:42ls -l

65.4.201818:42pwd

75.4.201818:42uname -r

85.4.201818:43uname -a

95.4.201818:43cat ostechnix.txt

105.4.201818:43echo"Welcome to OSTechNix"

115.4.201818:43more ostechnix.txt

125.4.201818:43wc -lostechnix.txt

135.4.201818:43cat ostechnix.txt

145.4.201818:43clear

155.4.201818:43fc -l

165.4.201818:43fc -ld

175.4.201818:49fc -lf

fc 用法总结

当不带任何参数时,fc 将上一个命令载入默认编辑器。

当带一个数字作为参数时,fc 将数字指定的命令载入默认编辑器。

当带一个字符作为参数时,fc 将最近一个以指定字符开头的命令载入默认编辑器。

当有两个参数时,它们分别指定需要列出的命令范围的开始和结束。

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

$man fc

好了,今天就这些。希望这篇文章能帮助到你。

打开APP精彩内容

点击阅读全文

Linux命令fc,来学一学在Linux中使用fc命令相关推荐

  1. python 执行shell命令行效率提升_在python脚本中执行shell命令的方法

    使用Python处理一个shell命令或一个执行一个shell脚本,一般情况下,有以下三种方法,以下我们来看: 第一种方法是使用os.system的方法 os.system(" cmd&qu ...

  2. ffmpeg命令 抓屏_使用FFmpeg从视频中截图的命令 | 学步园

    截取一张352x240尺寸大小的,格式为jpg的图片: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg 把视频的前30帧转换成一个A ...

  3. 资深老师讲解CAD中的旋转命令,值得一学!

    资深老师讲解CAD中的旋转命令,值得一学! 在使用CAD绘制图形的过程中,小伙伴们可能会遇到一种情况,当图形绘制完成后发现图形的角度与实际需求有所偏差,这个时候我们就需要用到CAD中的旋转命令来调整图 ...

  4. Linux后台开发系列之「08.15 个 gdb 调试基础命令」

    代码键盘 版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! gdb 简介 gdb 是 UNIX 及 UNIX-like 下的调试工具,在 Linux 下一般都 ...

  5. linux history存放位置,Linux中history历史命令使用方法详解

    当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升.事实上,一旦你掌握了我在下面给出的15个有关Linux history历史命令 ...

  6. Linux中的history命令

    通过history命令可以查看我们在系统中输入过的命令 history命令的一些常用参数 -c  清空内存中命令历史 -d #  删除指定的历史命令,比如 history -d 100 ,就是删除第1 ...

  7. Linux中的MAN命令

    学习Linux的同学,都会使用man来查阅一些命令的帮助信息,常见的使用方法就是"man 命令名称"这样简单的格式.本文就对man命令简要介绍一下. l man命令的章节 man就 ...

  8. linux 终端最大化命令,11个让你吃惊的Linux终端命令

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 命令行日常系快捷键 如下的快捷方式非常有用,能够极大的提升你的工作效率:CTRL + U - 剪切光标前的内容 CTRL ...

  9. linux计算圆周率程序,科学网—[转载]关于Linux中使用bc命令计算圆周率(π):可以计算上千位或上万位,顺便评测CPU的计算能力 - 张成岗的博文...

    Posted on 2020-12-19 20:28  520_1351  阅读(149)  评论(0)  编辑  收藏 Linux系统中,我们可以安装bc计算器用来计算pi值(π圆周率) 在玩的同时 ...

  10. linux命令kill_什么是Linux中的kill命令?

    linux命令kill Need to kill a running process? The kill command in Linux is built for just that. No ope ...

最新文章

  1. linux下163YUM源配置
  2. vmware克隆server2008R2造成SID冲突
  3. python 占位符_5分钟让你用Python作出最精美的Powerpoint
  4. The 16th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple
  5. 给你的ABAP对象打上标签(Tag)
  6. java 批量入库oracle_java操作Oracle数据库——ARRAY、TABLE类型批量入库
  7. 动态指定DataGrid中多个参数的超链接列(downmoon)
  8. atitit 高并发之道 attilax著.docx 1. 概念 2 2. 并发一般涉及如下几个方面: 4 2.1. 多线程编程(已过时,不介绍) 4 2.2. 异步编程 4 2.3. 并行编程
  9. 基于基本面因子的量化交易模型解析
  10. CH341/CH340Linux驱动使用教程
  11. journalctl命令
  12. 全球及中国手机塔防游戏行业研究及十四五规划分析报告(2022)
  13. VS code,Live Server更改默认浏览器
  14. 什么是拦截器?什么是过滤器?
  15. python functools.reduce使用_Python的functools.reduce用法
  16. LoadRunner监控Oracle
  17. 官方文档翻译《The Libra Blockchain》之执行交易(二)
  18. Sea.js 使用总结(1)
  19. 九年义务教育的精英,遇上十年寒窗苦读的翘楚,必将擦出耀眼的火花!
  20. android ratingbar不可点击,Android评分控件RatingBar使用实例解析

热门文章

  1. 读书笔记|《高质量读研:教你如何写论文、做科研》 张军平
  2. 历史进程中的AI研究院:探索新航线,锚定新坐标
  3. 2022年,大厂项目管理的数字化之路:4步走向成功
  4. 诸葛亮写给儿子的一封信,只有86个字!
  5. 对比:iPhone 11 Pro vs iPhone 12 Pro vs iPhone 12 Pro Max
  6. python生成相似句子_python-确定两个句子相似程度的算法
  7. 终于有人把隐私计算讲明白了
  8. 一个程序员6年的浏览器收藏夹
  9. Springboot 整合 jasypt 实现配置文件敏感信息加密,详细步骤
  10. 读书三得:向钱穆大师学习读书方法