设为首页 收藏本站
查看: 976|回复: 0

[经验分享] Linux中history详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-29 09:22:16 | 显示全部楼层 |阅读模式
  在Linux中,shell会将我们曾经执行过的命令保存起来,提供命令历史服务。那么,我们如何查看历史命令、历史命令是如何记录的,命令历史又能够为我们提供什么帮助呢?

  在用户家目录下,我们查看文件列表,可以看到一项.bash_history的文件,在默认情况下,此文件就是用户的历史文件,记录了用户的操作历史。由于每个用户拥有单独的家目录,所以每个用户拥有独立的历史文件。
  [iyunv@luolmcentos7 ~]# ls -al
  total 10476
  -rw-------.  1 root root   14207 Jul 27 22:04 .bash_history
  在正常情况下,历史命令读取与记录的过程如下:
  当我们以bash登录Linux主机之后,系统会主动由~/.bash_history读取以前曾经执行过的命令,至于~/.bash_history会记录几条数据,是由变量HISTFILESIZE的设定值来决定的;登录后新执行的命令只会记录在缓存中,在注销时,系统会将最近的HISTFILESIZE条命令记录到记录文件中。

  我们可以使用history命令来查看、编辑历史命令,具体用法如下:
  history [-c] [-d offset] [n]
  history -anrw [filename]
  history -ps arg [arg...]
                   n:数字,列出最近的n条命令行   
    wKioL1eZYN6zv_flAAAUMKXYLcA849.jpg
                   -c:将目前的shell中的所有history内容全部消除
                   -d offset:删除历史中指定的命令
    wKiom1eZYBnhD7EXAAAXX4Asla0791.jpg
  -a:将目前新增的history命令新增入histfiles中,若没有加histfiles,则默认写入~/.bash_history中
                   -n:将历史文件中未读取到命令历史中的命令读取到历史列表
                   -r:将histfiles的内容读到目前这个shell的history记忆中
                   -w:将目前的history记忆内容写入histfiles中
                   -p:展开历史参数成多个行,但不存在历史列表中
                   -s:展开历史参数成一行,将参数附加在历史列表后
  命令历史的存在对于用户来说是用途很大的,在执行命令的时候,我们可以通过history配合"!"来引用曾经执行过的命令或命令中的参数。

  !!:重复最后一条命令
                   !n:重复历史中编号为n的命令
  !-n:重复倒数第n条命令
                   !handle:重复以handle中的字符组成的字符串开始的最后一条命令
                   !?handle:重复包含handle中的字符组成的字符串的最后一条命令
                   !:0:前一条命令的名称
                   !^:前一条命令的第一个参数
  !:n:前一条命令的第n个参数
                   !$:前一条命令的最后一个参数,也可用Esc,.或者ALT+.来调用
                   !*:前一条命令的所有参数,命令名除外
                   Ctrl+r:在命令历史中搜索命令
  各命令历史方式可以合并历史表达式,如:
  !-2:0 -R !^ !-3:2
  表示:倒数第二条命令的名称,加上-R,再加上前一条命令的第一个参数,以及倒数第三条命令的第二个参数。
  !handle1:0 !handle2:2 !-3:*
  表示:以handle1中的字符组成的字符串开始的最后一条命令的名称,加上一handle2中的字符组成的字符串开始的最后一条命令的第二个参数,以及倒数第三条命令的所有参数
   wKiom1eZZQDxjRqhAAAeUEt-1PM160.jpg
  对于history一些属性的设置同样是由一些变量来定义的,history相关的变量主要有以下几个:
  HISTSIZE:命令历史记录的条数
                   HISTFILE:指定历史文件,默认为~/.bash_history
                   HISTFILESIZE:命令历史文件记录历史的条数
   wKioL1eZZuLihmvAAAAQ_KsImCc541.jpg
                   HISTTIMEFORMAT="%F %T ":命令历史中显示时间
   wKioL1eZZ9_wjsTVAAAde7xVfMo821.jpg
  HISTIGNORE="str1:str2...":忽略string1,string2历史(string需为命令的全部命令行)     HISTCONTROL:控制命令历史的记录方式
    ignoredups:忽略重复的命令(系统默认);连续且相同方为“重复”;
                             ignorespace:忽略所有以空白开头的命令;
                             ignoreboth:ignoredups+ignorespace;
                             erasedups:删除重复命令;
  以上就是与history相关的查看、调用与变量的解释,熟练使用history,是一个有效提升Linux使用效率的方法。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250975-1-1.html 上篇帖子: RHEL 7 更改主机名 下篇帖子: Ubuntu16.04系统搭建web环境apache2-mysql-php7 history Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表