1. 概述
Shell可以使用在线编辑器或fc命令处理当前或历史的命令。
允许你快速修正命令,及重复执行一个命令,从而提升你的工作效率。
2. 命令历史文件
Shell在命令历史文件中保存你曾经输入的命令,这个文件在用户的HOME目录下,命名为.bash_history。
保存的命令数目由环境变量HISTSIZE指定。
有两种方式访问命令历史文件:使用fc命令,或使用在线编辑器。
3. fc 命令
fc命令可以列出,或编辑与重新执行历史文件命令。
1、显示命令历史文件:
fc -l[nr] [range]
选项说明:
n 不显示命令编号
r 反序显示命令列表
[range] 表示一个范围,有以下几种方式指定:
n1 [n2] 指定命令的起止编号,从n1到n2
-count 显示最近count条命令
string 向后搜索直到匹配string字样的命令
示例:fc -l -5
2、编辑命令历史文件
fc [-e editor] [-r] [range]
或
fc -s old=new command
示例1:fc -2,此时打开一个vi编辑窗口,编辑完毕退出vi时命令自动执行。
示例2:
ls a
fc -s a=b -1
此时执行ls b
从实用效果来看,这种方式不如下面将要介绍的在线编辑器方式方便易用。
4. 在线编辑器
以vi编辑模式为例,首先执行命令进入vi编辑模式:
set -o vi
之后,在命令行按<Esc>即可使用vi指令进行命令的浏览编辑,如:j,k可以上下翻阅历史命令,h,l可以在当前命令中移动光标位置
很多的vi指令都可以使用,比如移动/删除/替换/插入等。
常用方式:在命令行按<Esc>,然后输入斜线/string(vi中的查找指令)根据关键字string查找之前执行过的历史命令,按n继续查找(或者使用?反向查找)。
找到之后可选对命令进行编辑,满意之后直接回车执行。
如:<Esc>之后,/ls查找之前执行过的包含ls的指令。