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文章
11319浏览量
209830 -
编辑器
+关注
关注
1文章
806浏览量
31207
原文标题:给初学者的 fc 示例教程
文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论