在Linux的实际使用过程中,我们经常会有运行以前运行过的很多命令的需求,利用上下方向键来翻阅命令历史(向下箭头会向前翻阅)的方法大家用的比较多,而利用history的相关命令可以比上下方向键更快速、有效。
在Linux系统中,你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认保存1000条,你也可以更改这个值。
$HISTSIZE 设置bash会员期间历史包含的命令数量
$HISTFILESIZE 设置历史文件中实际存储的命令数量
1. 使用Ctrl+R来搜索历史命令使用方法是:键入Ctrl +R然后输入关键字。 在以下示例中,我搜索“hadoop”,则显示以前的命令中含有”hadoop”的命令“”, 当看到你要的命令后按回车键,就可以重新执行这条命令了。
比如输入CTRL+R,出现reverse-i-search后,输入hadoop,出现如下的以前我们键入过的命令:(reverse-i-search)`hadoop: hadoop jar test.jar com.test.HadoopTest hdfs://rhel1:9000/
然后按回车键即可执行该命令。
2. History命令语法:
[test@linux]# history [n]
[test@linux]# history [-c]
[test@linux]# history [-raw] histfiles
参数:
n :数字,要列出最近的 n 笔命令列表
-c :将目前的shell中的所有 history 内容全部消除
-a :将目前新增的history 指令新增入 histfiles 中,若没有加histfiles ,
则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history记忆中
-w :将目前的 history 记忆内容写入 histfiles
如果你键入 history,history会向你显示你所使用的前1000个历史命令,并且给它们编了号,你会看到一个用数字编号的列表快速从屏幕上卷过。你可能不需要查看1000个命令中的所有项目,当然你也可以加入数字来列出最近的 n 笔命令列表。
linux中history命令不仅仅让我们可以查询历史命令而已. 我们还可以利用相关的功能来帮我们执行命令。
3. 利用!来运行特定的历史命令
语法说明:
[test@linux]# [!number] [!command] [!!]
参数说明:
number :第几个指令的意思;
command :指令的开头几个字母
! :上一个指令的意思!
4. History命令实战
列出所有的历史记录:
[test@linux] # history
只列出最近10条记录:
root@rhel1-> history 10
1002 ps -aux|grep java
1003 ps -aux
1004 ps -aux|grep java
1005 ls
1006 ps -aux|grep java
1007 HISTSIZE
1008 echo $HISTSIZE
1009 hadoop jar URLCat5.jar com.power.ListStatus hdfs://rhel1:9000/
1010 history
1011 history 10
使用命令记录号码执行命令,执行历史清单中的第1006条命令
root@rhel1-> !1006
ps -aux|grep java
root 8852 0.0 0.0 105024 3008 pts/0 S+ 06:46 0:00 grep java
重复执行上一个命令
root@rhel1-> !!
ps -aux|grep java
root 8854 0.0 0.0 105024 3072 pts/0 S+ 06:46 0:00 grep java
执行最后一次以hadoop开头的命令(!?
?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)
root@rhel1-> !hadoop清空history历史命令的记录
root@rhel1-> history -c
因为上面的history已经清空,可以看到已经查不到记录了
root@rhel1-> history
16 history