Linux基础知识之history命令详解

 该博文以CentOS6.8_x86_64系统为基础,Xshell 5远程连接CentOS系统,以root身份登录系统。

为什么要学习history命令?

    history命令是Linux的一个内嵌的shell命令,history命令的使用有时会大大缩短我们输入命令的时间,达到节省命令快捷操作的要求。学会history命令之后,我们可以隐藏一些含有敏感信息的命令输入,做到使系统更加安全的目的。我们还可以定时的去清理我们不想要其它用户看到的一些私密的命令。        history命令的常见用法:

         -c:  清空命令历史(使用该命令之后,仅对当前脚本生效,exit退出后重新进入,原来.bash_history的内容会重新读入内存中)

        要想彻底清空历史命令,需要先将.bash_history的内容删除,接着使用history -c,这样才会彻底清空命令历史。blob.png

         -d:  删除历史中指定的命令;(我们想删除命令历史中的117行命令,直接使用history -d 120 即可,然后用history 5查看命令的最后五行,发现原来的120行的history命令被121行的exit命令所取代)blob.png

         #:  显示最近的# 条历史(在上面的history -d xxx命令中已经演示过history #命令的使用过程)

         -a:  追加本次会话新执行的命令历史列表至历史文件(首先cat .bash_history 然后执行 history -a,接着使用tac 倒序查看一下.bash_history 发现我们刚才输入的history -d 120等命令已经输入到.bash_history中)

blob.png

         -n:  读历史文件中未读过的行到历史列表

(当前两个终端登录Linux系统,root(tty1)输入的n多命令,root(tty2)输入m条命令之后将命令历史使用history -a输入到.bash_history中,root(tty1)可以直接执行history -n,将root(tty2)写入到.bash_history直接读取到history命令历史中,-n命令执行过程图太多,暂不发布命令执行的页面。)

         -r:  读历史文件附加到历史列表(将.bash_history重新读取一遍,写入到history执行的内存文件中)

blob.png

         -w:  保存历史列表到指定的历史文件(history -w /PATH/TO/SOMEFILE 将内存中的命令执行的历史列表保存到指定的/PATH/TO/SOMEFILE中,以命令历史输出到/root/history.log为例)

blob.png

         -p:  展开历史参数成多个行,但不存在历史列表中(history -p how are you ?输入之后,命令会被分成how are you?三行显示,用history查看历史,不会出现刚才执行的命令。)

blob.png

         -s:  展开历史参数成一行,附加在历史列表后(只是将想要执行的命令直接输入到history -s COMMAND 之后,不会再系统中执行,只是添加到历史列表后面,通常用于伪造一些历史,添加虚假的历史)

blob.png

        命令历史相关环境变量

        注:以下的命令都是,以命令行模式进行操作,立即生效,但退出后失效。

        HISTSIZE :命令历史记录的条数;

   blob.png

        HISTFILE :指定历史文件,默认为~/.bash_history;
   将历史文件输入的目标该变为/root/history.log2,然后将history -a,同步到新输入目标之中,然后倒序查看一下,发现已经同步到新的位置处,修改仅对当前脚本生效。

  blob.png

        HISTTIMEFORMAT=“%F %T“ 显示时间(查看命令会直接显示命令的执行时间)

  blob.png

      命令扩展:

        HISTTIMEFORMAT="`hostname`%F %T"(会显示更加详细的用户的主机名和登录时间)

  blob.png

        HISTTIMEFORMAT="`tty`%F %T"(显示用户的登录的终端号和登录时间)

  blob.png

        HISTIGNORE=“str1:str2:… “  忽略string1,string2 历史

    会忽略接下来输入凡是有str1:str2的命令都会忽略(命令比较简单,截图较长,暂不粘贴)

        控制命令历史的记录方式:

             环境变量:HISTCONTROL

                 ignoredups :忽略重复的命令;连续且相同方为“重复”

         设置HISTCONTROL=ignoredup后,执行多次ls /etc &>/dev/null,历史记录中只会记录执行命令中的一次执行记录,经多次自己试验,记录的命令为第一次执行ls /etc &>/dev/null的命令执行的时间。

         blob.png

                 ignorespace :忽略所有以空白开头的命令

     设置HISTCONTROL=ignorespace之后,输入 echo nihao ,我们发现命令执行了,但是记录历史中不会出现echo命令的执行过程。

        blob.png

                 ignoreboth :ignoredups, ignorespace

        等同于ignoredups和ignorespace的合集,本博文将不再赘述。

                 erasedups: 删除重复命令

       将删除重复的命令,减小history的大小

注意:命令直接在命令行进行环境变量的设置,执行时间段仅限于该脚本,设置完变量会立即生效,但是exit退出当前脚本之后,环境变量就会失效;将环境变量写入配置文件中,/etc/profile(全局变量,对所有用户有效)或 ~/.bash_profile(单用户模式,仅对该用户有效),写入配置文件中不会立即生效,但是需要重新登录之后生效。

原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/26142

(1)
sjsirsjsir
上一篇 2016-07-26 17:09
下一篇 2016-07-27 09:24

相关推荐

  • rsync+inotify实现数据实时同步备份

    定时备份和实时备份        说到备份,无疑于定时备份和实时同步备份。定时备份可以通过脚本或者Crontab来实现,而实时同步备份可以通过某些接口监控文件的各种变化情况来实现的(比如内核接口inotify);通过对比可以发现对数据信息要求高的环境使用实时同步备份可以更好更有利的保护数据的安全性。 软件介绍之rsyn…

    Linux干货 2015-02-28
  • 【盘点】2017年9-11月运维大会(时间+地点)

    到底未来的运维模式是什么?如今运维人员面临着怎样的转变? 活动家为您精心挑选整理了9-11月七场运维大会希望本文能帮您! CNUTCon 全球运维技术大会2017 大会简介: CNUTCon全球运维技术大会是由InfoQ主办的运维&容器技术盛会。大会为期2天,主要面向各行业对运维&容器技术感兴趣的中高端技术人员。秉承着“同步前沿技术、共享实战…

    2017-08-31
  • TCP常见问题总结

    TCP协议和UDP协议的区别是什么 TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的 TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。 TCP协议…

    Linux干货 2017-09-02
  • N26-第一周博客作业

    1.描述计算机的组成及其功能 完整的计算机系统由硬件和软件两部分组成。 现在大部分的计算机为冯诺依曼体系,主要有五个组成部分:运算器、控制器、存储器、输入设备、输出设备,以下为详细描述。(计算机的CPU由运算器、控制器和一二三层缓存等构成) 运算器:对数据进行算术运算和逻辑运算(对数据进行加工处理) 控制器:分析指令,控制协调输入、输出操作对内存的访问。 存…

    Linux干货 2017-01-02
  • grep常见应用实例

      在我们实际应用中,正则表达式的应用是非常广泛的,今天我就大家分享几个比较常见的正则表达式的应用实例,不周之处,还望高人多多指点!   一:使用正则表达式搜索邮箱地址 二:使用正则表达式搜索手机号 三:使用正则表达式搜索身份证号 四:使用正则表达式取网络配置文件中的IP地址的过程解析   一:使用正则表达式搜索邮箱地址: [r…

    系统运维 2016-08-08
  • MySQL复制: Galera

    MySQL复制: Galera mysql 主从复制 前言 Galera Replication简介 MariaDB-Galera-Server 环境部署 配置步骤 总结 前言 之前介绍了MySQL复制的各种解决方案, 但是我个人还是感觉Galera最好用也最实用, 什么是Galera, 它强大在哪里, 这篇文章就带你认识这个强大的工具 Galer…

    Linux干货 2016-04-28