history命令详解

  

Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 。html

>History命令语法:
[www.linuxidc.com@linux]# history [n]
[www.linuxidc.com@linux]# history [-c]
[www.linuxidc.com@linux]# history [-raw] histfileslinux

参数:
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保存的全部历史命令,而且给它们编了号,咱们可使用“叹号接编号”的方式运行特定的历史命令.shell

语法说明:
[www.linuxidc.com@linux]# [!number] [!command] [!!]
参数说明:
number :第几个指令的意思; 
command  :指令的开头几个字母 
! :上一个指令的意思!vim

History命令实战
1.出全部的历史记录:
[www.linuxidc.com@linux] # history安全

2.只列出最近10条记录:
[www.linuxidc.com@linux] # history 10 (注,history和10中间有空格)bash

3.使用命令记录号码执行命令,执行历史清单中的第99条命令
[www.linuxidc.com@linux] #!99 (!和99中间没有空格)函数

4.重复执行上一个命令
[www.linuxidc.com@linux] #!!命令行

5.执行最后一次以rpm开头的命令(!表明的是字符串,这个String能够随便输,Shell会从最后一条历史命令向前搜索,最早匹配的一条命令将会获得执行。)
[www.linuxidc.com@linux] #!rpmhtm

6.逐屏列出全部的历史记录:
[www.linuxidc.com@linux]# history | moreblog

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”

相关文章
相关标签/搜索