使用Linux的过程中,在处理很长的并且包含复杂的语法的命令时,如果不小心犯了一点小错误,需要重新输入整个命令以及参数,直到命令执行成功为止。另一种选择是使用 fc 命令编辑并重新运行前一个命令,而无需重新输入整个命令以及参数。
fc 命令是 fix command 的缩写,是一个内建命令,它能列出、编辑、重新执行最近在交互shell中输入的命令,你可以使用指定的编辑器编辑并运行最近输入的命令,而不需要重新输入整个命令。
fc命令的语法如下:
[root@ecs-centos-7 ~]# fc --h
fc: usage: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
使用指定的编辑器编辑,默认是 vi 编辑器, 在下面的例子中ls /home/tt
命令在 vi 中编辑,把 ls 改成 cd,在保存退出的时候会执行 cd /home/tt
命令, 具体的结果如下:
[root@ecs-centos-7 ~]# fc -l
657 ls /home/tt
658 fc -l
[root@ecs-centos-7 ~]# fc -e vi 657
ls /home/tt
"/tmp/bash-fc-27929723442" 1L, 12C written
cd /home/tt
[root@ecs-centos-7 tt]# pwd
/home/tt
[root@ecs-centos-7 tt]#
列出最近的历史命令,默认是16条
[root@ecs-centos-7 ~]# fc -l
1 date
2 cd ~
3 fc -l
4 fc -lr
5 ls /home/tt
6 chage -l
[root@ecs-centos-7 ~]# fc -l -3
4 fc -lr
5 ls /home/tt
6 chage -l
[root@ecs-centos-7 ~]#
[root@ecs-centos-7 wl]# fc -l 530
530 date
531 chage -l tt
532 chage -h
533 chage -l root
534 fc -l
[root@ecs-centos-7 wl]# fc -l 531 534
531 chage -l tt
532 chage -h
533 chage -l root
534 fc -l
逆序显示历史命令,一般都是跟 -l 参数一起使用,下面是使用 -r 选项的例子。fc -l 选项显示的是从1到2行的命令。执行 fc -lr 显示的命令行数要包括前面 fc -l 的命令,所以结果会比前面多一行,执行逆序之后的行数是从3到1行, 具体的结果如下:
[root@ecs-centos-7 ~]# fc -l
1 date
2 cd ~
[root@ecs-centos-7 ~]# fc -lr
3 fc -l
2 cd ~
1 date
[root@ecs-centos-7 ~]#
显示历史命令时不显示行号,一般都是跟-l参数一起使用, 下面的例子中没有显示行号
[root@ecs-centos-7 tt]# fc -l
1 date
2 chage -l tt
[root@ecs-centos-7 tt]# fc -ln
date
chage -l tt
fc -l
[root@ecs-centos-7 tt]#
-s [pat=rep] [command] 把 pat 命令替换成 rep 命令并执行,下面的例子把 ls /home/tt
替换成 cd /home/tt
命令,执行成功之后,当前目录变成了 /home/tt
命令执行结果如下:
[root@ecs-centos-7 tt]# fc -l
1 date
2 ls /home/tt
[root@ecs-centos-7 tt]# fc -s cd=ls 2
ls /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 -l
1 ls /home/tt
2 chage -l
3 date
上面是历史命令列表,执行 fc -s 'da'
命令会执行最近一个以 'da' 开头的命令,下面是具体的执行结果
[root@ecs-centos-7 ~]# fc -s 'da'
date
Mon Jun 29 20:26:33 CST 2020
[root@ecs-centos-7 ~]# fc -s 'l'
ls /home/tt
[root@ecs-centos-7 ~]# fc -s
ls /home/tt
从上面的结果来看,执行 fc -s 'da'
会执行最近一条以 'da' 开头的命令,也即 date 命令。
执行 fc -s 'l'
命令会执行最近一条以 'l' 开头的命令,也即 ls /home/tt
命令,紧接着执行 fc -s
命令,会再次执行一次 ls /home/tt
命令
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有