history命令详解
Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 。
>History命令语法:
[www.linuxidc.com@linux]# history [n]
[www.linuxidc.com@linux]# history [-c]
[www.linuxidc.com@linux]# history [-raw] histfiles
参数:
n :数字,要列出最近的 n 笔命令列表
-c :将目前的shell中的所有 history 内容全部消除
-a :将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles,则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w :将目前的 history 记忆内容写入 histfiles。Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认保存1000条,你也可以更改这个值。如果你键入 history, history会向你显示你所使用的前1000个历史命令,并且给它们编了号,你会看到一个用数字编号的列表快速从屏幕上卷过。你可能不需要查看1000个命令中的所有项目, 当然你也可以加入数字来列出最近的 n 笔命令列表。linux中history命令不仅仅让我们可以查询历史命令而已. 我们还可以利用相关的功能来帮我们执行命令。运行特定的历史命令history会列出bash保存的所有历史命令,并且给它们编了号,我们可以使用“叹号接编号”的方式运行特定的历史命令.
语法说明:
[www.linuxidc.com@linux]# [!number] [!command] [!!]
参数说明:
number :第几个指令的意思;
command :指令的开头几个字母
! :上一个指令的意思!
History命令实战
1.出所有的历史记录:
[www.linuxidc.com@linux] # history
2.只列出最近10条记录:
[www.linuxidc.com@linux] # history 10 (注,history和10中间有空格)
3.使用命令记录号码执行命令,执行历史清单中的第99条命令
[www.linuxidc.com@linux] #!99 (!和99中间没有空格)
4.重复执行上一个命令
[www.linuxidc.com@linux] #!!
5.执行最后一次以rpm开头的命令(!代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行。)
[www.linuxidc.com@linux] #!rpm
6.逐屏列出所有的历史记录:
[www.linuxidc.com@linux]# history | more
7.立即清空history当前所有历史命令的记录
[www.linuxidc.com@linux] #history -c
除了使用history命令,在 shell 或 GUI 终端提示下,你也可以使用上下方向键来翻阅命令历史(向下箭头会向前翻阅),直到你找到所需命令为止。这可以让我们很方便地编辑前面的某一条命令,而不用重复输入类似的命令。History命令的用途确实很大!但需要小心安全的问题!尤其是 root 的历史纪录档案,这是黑客们的最爱!因为不小心的 root 会将很多的重要资料在执行的过程中会被纪录在 ~/.bash_history 当中,如果这个档案被解析的话,后果不堪设想!
原文地址:http://www.linuxidc.com/Linux/2012-01/52868.htm
原文链接:https://www.cnblogs.com/linuxbug/p/4885098.html
history是一条非常实用的shell命令,可以显示出之前在shell中运行的命令,配合last显示之前登录的用户,就可以追溯是哪个用户执行了某些命令。以下详细说明history使用中常见的命令或技巧,在实际系统管理中,应用得当,可以让工作事半功倍。
使用HISTTIMEFORMAT在历史中显示TIMESTAMP
默认情况下,history并不记录命令的执行时间,分析起来很困难。
# 这时候可以配置HISTTIMEFORMAT环境变量,给history记录添加上时间戳
export HISTTIMEFORMAT="%F %T "
把上面的export命令加入到~/.bashrc中即可在登录后自动开启history时间戳了。
其实HISTTIMEFORMAT的格式就是 strftime函数的格式,比如上面的"%F %T ",%F表示显示出Y-M-D格式的日期,%T表示显示出H-M-S这样格式的时间。更多的格式,可以参考 man strftime。
用Ctrl + R搜索历史命令
本人最常使用的history特性,当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl+R然后输入关键字。在以下示例中,我搜索”cat”,则显示以前的命令中含有”cat”的命令“cat anaconda-ks.cfg”。按回车,就可以重新执行这条命令了,而按左箭头键或右箭头键则可以直接修改,改完之后按回车执行,非常方便!
【注:在命令行提示符下按下Ctrl+R,终端将显示如下提示reverse-i-search】
用HISTSIZE控制历史命令的总数
# 内存中的history条数,退出登陆之后会写到~/.bash_history文件里
export HISTSIZE=450
# 文件中存储的最大history条数,文件:~/.bash_history
export HISTFILESIZE=450
# 如果你想禁用history,不让shell记录命令,把HISTSIZE设为0即可
export HISTSIZE=0
使用HISTFILE改变历史文件名
默认情况下,命令历史被储存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登录shell,则新文件将取代.bash_history文件用来储存历史命令。你可以使用这个命令来追踪不同终端中执行的命令,届时只需要将不同终端中所执行的命令保存在不同的历史文件中即可。
[root@rocket ~]# vim ./.bashrc
HISTFILE=/root/my_history
重新登陆可以看到新history file已经生效
使用HISTCONTROL来消除命令历史中的连续重复条目
export HISTCONTROL=ignoredups
使用HISTCONTROL在整个历史中去除重复命令
export HISTCONTROL=erasedups
使用c选项清除所有的历史命令
#清除之前的历史命令
history -c
用HISTIGNORE让history在存储时忽略某些指令
有时你不想在记录里看到诸如“pwd”,ls”之类的基本指令,可以用HISTIGNORE忽略这些指令。
注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls –l”。一定要准确的写出要忽略的指令。
export HISTIGNORE=”pwd:ls:history”