0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

来学一学在Linux中使用fc命令

Linux爱好者 来源:未知 作者:李倩 2018-04-26 15:29 次阅读

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

fc 命令教程及示例

列出最近执行的命令

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

$fc-l

507fish

508fc-l

509sudonetctlrestartwlp9s0sktab

510ls-l

511pwd

512uname-r

513uname-a

514touchostechnix.txt

515viostechnix.txt

516echo"Welcome to OSTechNix"

517sudoapcman-Syu

518sudopacman-Syu

519moreostechnix.txt

520wc-lostechnix.txt

521catostechnix.txt

522clear

-r 选项用于将输出反向排序。

$fc-lr

-n 选项用于隐藏行号。

$fc-ln

nano~/.profile

source~/.profile

source~/.profile

fc-ln

fc-l

sudonetctlrestartwlp9s0sktab

ls-l

pwd

uname-r

uname-a

echo"Welcome to OSTechNix"

sudoapcman-Syu

catostechnix.txt

wc-lostechnix.txt

moreostechnix.txt

clear

这样行号就不再显示了。

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

$fc-l520

520ls-l

521pwd

522uname-r

523uname-a

524echo"Welcome to OSTechNix"

525sudoapcman-Syu

526catostechnix.txt

527wc-lostechnix.txt

528moreostechnix.txt

529clear

530fc-ln

531fc-l

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

$fc-l520525

520ls-l

521pwd

522uname-r

523uname-a

524echo"Welcome to OSTechNix"

525sudoapcman-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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10986

    浏览量

    206719
  • 编辑器
    +关注

    关注

    1

    文章

    787

    浏览量

    30164

原文标题:给初学者的 fc 示例教程

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令
    的头像 发表于 12-04 14:45 544次阅读
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>中使</b>用htop<b class='flag-5'>命令</b>

    对照DOSLinux的基本命令

    、软盘,光盘的使用与我们通常在DOS与Windows中的使用方法是不样的,不能直接访问,因为Linux中它们都被视为文件,因此访问使用前必须使用装载
    发表于 10-17 19:09

    linux有前途么?

    请问各位linux有前途么?
    发表于 11-18 17:39

    linux怎么???

    linux怎么???
    发表于 12-08 16:56

    我是linux

    我是linux的不知道有没有人学。有的话大家可以讨论讨论
    发表于 01-11 21:42

    【我们Linux之准备篇】善用佳软Vmware安装Linux系统

    不习惯双系统的使用,所以选择使用虚拟机进行Linux相关内容的学习,大家喜欢用什么类型的版本,也欢迎跟帖展示你们的安装方法,拓宽大家的思路,有积分的哦~【我们
    发表于 01-20 21:01

    如何评价《Linux就该这么》这本书?

    的不足,做到查漏补缺,而且此书的作者也一直在更新章节目录,现在已经到了高级部分,所以对于Linux从业者的提高是非常有帮助的。总体来说《Linux就该这么》的内容很通俗易懂,对于新手
    发表于 10-21 13:01

    Linux专业入门-《Linux就该这么

    Linux就该这么》是本面向初学者的入门书籍,注重操作实用性。
    发表于 09-26 09:10

    嵌入式Linux怎么

    `嵌入式Linux怎么?要哪些东西?些人总在纠结,怕走了弯路,怕的东西不符合企业需求。那么今天就从这几点简要分析下嵌入式要学习的内容
    发表于 05-18 15:31

    总结分享linux系统驱动怎么

    的话,也是要花时间去了解那些类、控件的。如果你想学习底层系统,这是我的专长,倒是可以说点。回答这个问题之前,我先回答:不少人问我,到底是驱动还是应用? 我只能说凭兴趣,并且驱动
    发表于 11-11 09:45

    linux嵌入式主要什么

    就知道要什么了C语言基础、C++基础、数据结构、操作系统原理、Linux应用基础、电子电路基础开课前周:入学基础测试与辅导(C语言、C++、linux基础、数据结构、电子电路)第
    发表于 11-05 07:50

    嵌入式Linux哪些东西

    Linux学习之路1——从单片机工程师的角度看嵌入式Linux前言这篇文章简单我们起梳理嵌入式Linux
    发表于 11-23 07:56

    手把手教你Linux常用shell命令

    此笔记由个人整理塞上苍鹰_fly课程来自:正点原子_手把手教你Linux常用shell命令查看版本号uname -a查看当前路径下的文件lsls -l查看文件详情ls -al查看文件详情包括隐藏
    发表于 12-15 07:05

    STM32还是嵌入式linux?哪个好?

    01话 题经常有大学生同学纠结:我到底是STM32还是嵌入式linux。这个问题很多人都会有自己的看法,今天我试着从多个角度,把我了解到的事实讲下,希望对大家有所启发。02STM
    发表于 12-16 07:54

    嵌入式新手应该怎么?

    东西也不用定要记忆,因为实际中很少用到; 2、嵌入式最核心的操作系统,所以操作系统原理也应该是要有所了解的,比如时间片、任务调动等等; 3、Linux基本命令的使用(vi编辑器必须
    发表于 09-08 10:22