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的指令。