使用Linux的过程中,在处理很长的并且包含复杂的语法的命令时,如果不小心范了一点小错误,需要重新输入整个命令以及参数,直到命令执行成功为止。另一种选择是使用 fc 命令编辑并重新运行前一个命令,而无需重新输入整个命令以及参数。

fc简介

fc 命令是 fix command 的缩写,是一个内建命令,它能列出、编辑、重新执行最近在交互shell中输入的命令,你可以使用指定的编辑器编辑并运行最近输入的命令,而不需要重新输入整个命令。

fc命令的语法如下:

[root@ecs-centos-7 ~]# fc --hfc: usage: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]

-e 选项

使用指定的编辑器编辑,默认是 vi 编辑器, 在下面的例子中 ls /home/tt 命令在 vi 中编辑,把 ls 改成 cd,在保存退出的时候会执行 cd /home/tt 命令, 具体的结果如下:

[root@ecs-centos-7 ~]# fc -l657      ls /home/tt658      fc -l[root@ecs-centos-7 ~]# fc -e vi 657ls /home/tt"/tmp/bash-fc-27929723442" 1L, 12C writtencd /home/tt[root@ecs-centos-7 tt]# pwd/home/tt[root@ecs-centos-7 tt]#

-l 选项

列出最近的历史命令,默认是16条

  • 不带参数,默认显示最近的16条命令
[root@ecs-centos-7 ~]# fc -l1        date2        cd ~3        fc -l4        fc -lr5        ls /home/tt6        chage -l
  • 显示最近的指定行数,下面的命令显示最近的3行
[root@ecs-centos-7 ~]# fc -l -34        fc -lr5        ls /home/tt6        chage -l[root@ecs-centos-7 ~]#
  • 指定起始行号,显示从指定行号到末尾行的命令,下面的命令显示行号为530到末尾行的命令
[root@ecs-centos-7 wl]# fc -l 530530      date531      chage -l tt532      chage -h533      chage -l root534      fc -l
  • 指定起始行号以及结束行号,显示指定行号区间的命令,下面的命令显示行号从531-534的命令
[root@ecs-centos-7 wl]# fc -l 531 534531      chage -l tt532      chage -h533      chage -l root534      fc -l

-r 选项

逆序显示历史命令,一般都是跟 -l 参数一起使用,下面是使用 -r 选项的例子。fc -l 选项显示的是从1到2行的命令。执行 fc -lr 显示的命令行数要包括前面 fc -l 的命令,所以结果会比前面多一行,执行逆序之后的行数是从3到1行, 具体的结果如下:

[root@ecs-centos-7 ~]# fc -l1        date2        cd ~[root@ecs-centos-7 ~]# fc -lr3        fc -l2        cd ~1        date[root@ecs-centos-7 ~]#

-n 选项

显示历史命令时不显示行号,一般都是跟-l参数一起使用, 下面的例子中没有显示行号

[root@ecs-centos-7 tt]# fc -l1        date2        chage -l tt[root@ecs-centos-7 tt]# fc -ln         date         chage -l tt         fc -l[root@ecs-centos-7 tt]#

-s 选项

-s [pat=rep] [command] 把 pat 命令替换成 rep 命令并执行,下面的例子把 ls /home/tt 替换成 cd /home/tt命令,执行成功之后,当前目录变成了 /home/tt 命令执行结果如下:

[root@ecs-centos-7 tt]# fc -l1        date2        ls /home/tt[root@ecs-centos-7 tt]# fc -s cd=ls 2ls /home/tt[root@ecs-centos-7 tt]# pwd/home/tt[root@ecs-centos-7 tt]#

小技巧

一个有用的小技巧, 使用 fc -s 'pre' 可以自动运行最近一个以 'pre' 开头的命令,输入 fc -s 命令 可以再次执行这个命令。

[root@ecs-centos-7 ~]# fc -l1        ls /home/tt2        chage -l3        date

上面是历史命令列表,执行 fc -s 'da' 命令会执行最近一个以 'da' 开头的命令,下面是具体的执行结果

[root@ecs-centos-7 ~]# fc -s 'da'dateMon Jun 29 20:26:33 CST 2020[root@ecs-centos-7 ~]# fc -s 'l'ls /home/tt[root@ecs-centos-7 ~]# fc -sls /home/tt

从上面的结果来看,执行 fc -s 'da'会执行最近一条以 'da' 开头的命令,也即 date 命令。

执行 fc -s 'l' 命令会执行最近一条以 'l' 开头的命令,也即 ls /home/tt 命令,紧接着执行 fc -s命令,会再次执行一次 ls /home/tt 命令

列出历史命令_Linux 下如何使用 fc 命令相关推荐

  1. linux下打开配置文件命令_Linux下用户权限相关命令

    09.Linux下用户权限相关命令 用户权限的基本概念: 用户 是Linux 系统工作中重要的一环,用户管理包括 用户 与 组 管理 在Linux系统中,不论是由本机或是远程登陆系统,每个系统都必须拥 ...

  2. oracle 查看监听命令_linux下使用Oracle常用命令

    进入Oracle用户 1 su - oracle 以dba身份进入sql语句 1 sqlplus / as sysdba 启动数据库相关命令 启动数据库 1 startup 启动监听(关闭监听的命令l ...

  3. java sftp命令_linux下如何使用sftp命令

    from:   http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html 36351 sftp 是一个交互式文件传输程式.它 ...

  4. 在CMD命令行下关闭进程的命令

    [重要]在CMD命令行下关闭进程的命令 ━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos中的作 ...

  5. linux查代替命令,Linux下查/删/替 命令(转)

    ▪查看某目录下所有文件的个数: [root@localhost1 opt]# ls -l |grep "^-"|wc -l ▪查看某目录下所有文件的个数,包括子目录里面的: [ro ...

  6. linux 测试串口命令,Linux 下测试串口的命令microcom

    昨天应为要测试主板上的串口,查了一下,可以使用microcom 这条命令进行测试. 命令使用方法很简单: Usage: microcom [-d DELAY] [-t TIMEOUT] [-s SPE ...

  7. Node.js 在命令行下执行Console.log()命令时,第二行会打印undefined的原因

    转载:http://blog.csdn.net/chy555chy/article 问题描述:在命令行下执行Console.log()命令后,第一行会以 "正常的白字" 输出log ...

  8. linux fc文件下载,Linux 下如何使用 fc 命令

    使用Linux的过程中,在处理很长的并且包含复杂的语法的命令时, 如果不小心犯了一点小错误,需要重新输入整个命令以及参数,直到命令执行成功为止.另一种选择是使用 fc 命令编辑并重新运行前一个命令,而 ...

  9. linux mysql dump命令_linux下mysql命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

最新文章

  1. Accurate self-correction of errors inlong reads using de Bruijn graphs LoRMA使用de Bruijn图对长read中的错误
  2. 对深拷贝与浅拷贝的再次理解
  3. [trustzone]-TZC400学习总结
  4. Spark Streaming实现实时WordCount,DStream的使用,updateStateByKey(func)实现累计计算单词出现频率
  5. vue 过滤器 filters
  6. ThinkPHP3.2.3分页中文参数乱码问题及解决
  7. 第四十六讲 ASP.NET实例编程(五)
  8. 详细安装sqlmap详细教程
  9. 解决Microsoft Store 下载报错(错误 0x800706D9)
  10. Linux系统管理----centos7系统进程管理
  11. opencv分量法、加权平均法、最大值法、平均值法灰度化
  12. 防saq注入_盛大在线另一分站某SQL注入
  13. GPRS模块发送短信
  14. 北航提出基于语言桥接的时空交互来进行准确指向性视频对象分割
  15. 微信公众平台三方授权登录(Java实现)
  16. SQL Server 端口映射访问方法
  17. Windows子系统WSL
  18. 关于bitlocker加密后的格式化
  19. QString::number()
  20. xcode 编译 c

热门文章

  1. sumdiv 算术基本定理的推论
  2. Centos/linux开放端口
  3. selenium与python自动化测试模拟登录百度
  4. spring + groovy 转
  5. debian8安装Odoo中的Barcode Scanner Hardware Driver模块时,提示没有evdev
  6. xcode6 iOS SDK 8.1隐藏系统状态栏
  7. 字符串指针与一维指针数组的区别
  8. 如何使用libgdx编写一个简单的游戏(一)— 雏形
  9. Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别
  10. 运用反射时报错java.lang.NoSuchMethodException,以解决,记录一下