码迷,mamicode.com
首页 > 系统相关 > 详细

2017-7-18-每日博客-关于Linux下的history的常用命令.doc

时间:2017-07-24 21:24:07      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:and   oca   字母   ng2   file   his   快捷键   命令操作   res   

History

 

history命令可以用来显示曾执行过的命令。执行过的命令默认存储在HOME目录中的.bash_history文件中,可以通过查看该文件来获取执行命令的历史记录。需要注意的是.bash_history不包含当前会话所执行的命令,执行过的命令在关机时才会写入文件,除非执行命令history -w

常用参数:
1.n 显示n个最近的记录

History 3

 


2.-w <文件> 覆盖原有文件或者将记录写入一个新文件
用法示例:
将所有执行过的命令写入history.txt文件中
$ history -w history.txt 或者
$ history -w & cp ~/.bash_history history.txt

3.-c 参数:将目前的shell中的所有 history 内容全部消除,下图是执行效果,执行history -c命令后,之前的所有的记录都清除啦。

 

4.在每个用户目录都有一个.bash_history文件,里面记录了该用户的所有命令操作,无论这个用户是直接登录的还是通过xshell ssh方式过来的。

那么,首先必然有一个root用户,所有在/root/.bash_history里面记录了root用户的命令操作,你可以用catvim等工具来查看。
另外,假设你还有一个用户叫做XXX,那么在/home/XXX/.bash_history里面就记录了XXX用户的命令操作。

 

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

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

参数:
:数字,要列出最近的 n 笔命令列表
-c :将目前的shell中的所有 history 内容全部消除
-a :将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles,则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell history 记忆中
-w :将目前的 history 记忆内容写入 histfilesLinux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认保存1000条,你也可以更改这个值。如果你键入 history, history会向你显示你所使用的前1000个历史命令,并且给它们编了号,你会看到一个用数字编号的列表快速从屏幕上卷过。你可能不需要查看1000个命令中的所有项目, 当然你也可以加入数字来列出最近的 n 笔命令列表。linuxhistory命令不仅仅让我们可以查询历史命令而已. 我们还可以利用相关的功能来帮我们执行命令。运行特定的历史命令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 (,history10中间有空格)

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 当中,如果这个档案被解析的话,后果不堪设想!

5.history相关的环境变量
HISTFILE          指定存放历史文件位置,默认位置在~/.bash_profile(针对用户)、 
      /etc/profile(针对全局,如果~/.bash_profile内没有相关环境变量内容则使用全局变量设置
HISTFILESIZE      命令历史文件记录历史的条数 
HISTSIZE          命令历史记录的条数,默认为1000 
HISTTIMEFORMAT="%F %T"  显示命令发生的时间 
HISTIGNORE="str1:str2:..." 忽略string1,string2历史 
HISTCONTROL      包含一下4项,让哪一项生效只需要让其=下面一项即可 
ignoredups:  忽略重复的命令;连续且相同方为“重复” 
ignorespace:  忽略所有以空白开头的命令 
ignoreboth:ignoredups,ignorespace 
erasedups:    删除重复命令

让上述环境变量生效方式:
1、直接在当前shell内输入相关变量,比如我们不想留存命令历史,我们把HISTSIZE设置为0
[root@localhost ~]# HISTSIZE=0 
[root@localhost ~]# history

经测试,成功。不过这种设置的局限性是其作用范围仅仅针对当前shell及其子shell,如果切换用户或登出再登入其设置失效。不过其特点是设置完立刻生效。
下面通过实验说明这个问题
[root@localhost ~]# bash 
[root@localhost ~]# history 
[root@localhost ~]# history

以上结果说明在当前shell内设置history的环境变量后,其作用范围为当前shell及子shell
Last login: Fri Jul 29 17:26:41 2016 from 10.1.250.62 
[root@localhost ~]# history 
    1  history

重新登陆后原有的history环境变量失效
2、另一种让history环境变量生效的方式是修改~/.bash_profile文件
[root@localhost ~]# vi ~/.bash_profile  
# .bash_profile 
  
# Get the aliases and functions 
if [ -f ~/.bashrc ]; then
        . ~/.bashrc 
fi
  
# User specific environment and startup programs 
  
PATH=$PATH:$HOME/bin
HISTTIMEFORMAT="%F %T "        此为新添加的history环境变量,我添加了发生命令操作的时间 
export PATH

wq保存退出。
[root@localhost ~]# history            
    1  history
    2  ll 
    3  cd
    4  hostory 
    5  history
    6  vi ~/.bash_profile  
    7  history

由结果可知变量并没有生效,我们重新登录再尝试下。

 

 

6.通过上面的两个结果,我们可以发现第二种修改配置文件虽然也可以成功修改history环境变量但是其生效需要重新登陆,并不是改完就生效。但是它的特点是此修改始终有效,时效性为永久。

  history命令的使用
-c: 清空命令历史
-d n: 删除历史中指定的命令,n表示命令号
#: 显示最近的#条历史
-a: 追加本次会话新执行的命令历史列表至历史文件,因为多终端所以如果想看当前都发生了什么操作就可以执行-a进行查看
-n: 读历史文件(本地数据)中未读过的行到历史列表(内存数据)
-r: 读历史文件(本地数据)附加到历史列表(内存数据)
-w: 保存历史列表(内存数据)到指定的历史文件(本地数据)
-s: 展开历史参数成一行,附加在历史列表后。用于伪造命令历史
下面来演示上面几种命令的使用
[root@localhost ~]# history 

清空历史
[root@localhost ~]# history -c 
[root@localhost ~]# history 
2016-07-29 20:29:26 history

从历史文件读取之前的命令历史
[root@localhost ~]# history -r  
[root@localhost ~]# history 
   

删除指定命令历史
[root@localhost ~]# history -d 4 
[root@localhost ~]# history 
    

伪造历史命令
[root@localhost ~]# history -s rm -rf /*  做下恶作剧 
[root@localhost ~]# history 
 

我相信任谁输入history看到这个命令都会吓一身汗。


  调用历史参数详解

#cmd !^ : 利用上一个命令的第一个参数做cmd的参数 
#cmd !$ : 利用上一个命令的最后一个参数做cmd的参数 
#cmd !* : 利用上一个命令的全部参数做cmd的参数 
#cmd !:n : 利用上一个命令的第n个参数做cmd的参数 
#!n :调用第n条命令 
#!-n:调用倒数第n条命令 
#!!:执行上一条命令 
#!$:引用前一个命令的最后一个参数同组合键Esc,. 
#!n:^ 调用第n条命令的第一个参数 
#!n:$ 调用第n条命令的最后一个参数 
#!m:n 调用第m条命令的第n个参数 
#!n:* 调用第n条命令的所有参数 
#!string:执行命令历史中最近一个以指定string开头的命令 
#!string:^ 从命令历史中搜索以string 开头的命令,并获取它的第一个参数 
#!string:$ 从命令历史中搜索以string 开头的命令,并获取它的最后一个参数 
#!string:n 从命令历史中搜索以string 开头的命令,并获取它的第n个参数 
#!string:* 从命令历??中搜索以string 开头的命令,并获取它的所有参数

下面通过实验来实践上面的历史参数的具体用法
[root@localhost ~]# history 

我们先使用!!来调用上一条命令

[root@localhost ~]# !! 
history
   

[root@localhost ~]# !h 
history


  常用的快捷键
  重新调用前一个命令中最后一个参数:
  !$ 


  Esc, .(点击Esc键后松开,然后点击. 键)
 这两个很常用,特别是Esc,.

 

2017-7-18-每日博客-关于Linux下的history的常用命令.doc

标签:and   oca   字母   ng2   file   his   快捷键   命令操作   res   

原文地址:http://www.cnblogs.com/suway/p/7230821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!