history  


 命令行历史 

        保存你输入的命令历史。可以用它来重复执行命令

        登录shell时,会读取命令历史文件中记录下的命令~/.bash_history

        登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中

      选项:

         -c: 清空列表  清空的是内存可以用 -r再读回来

                           -d #: 删除指定的历史命令 可以一次删多条   命令号  条数

                           -a: 追加当前会话的命令历史至历史文件中去;

                           -w: 把历史列表中的所有命令追加到文件中,也可以后面加文件路径,保存到别的文件中

                            history  # 显示最近的多少条命令

                            -s以单条记录追加 ARG 到历史列表中(伪造历史)

                           -r   可以把文件的内容读入历史文件中

                            #    最近的#条记录

     history快捷方式:

        !#: #为命令历史列表中的命令编号;可用执行第#条命令;

                        !!: 执行上一条命令;

                        !-#: 执行命令历史列表中的倒数第#条命令;

                        !string: 执行命令历史列表中的最近一次以string开头的命令;

                        !$: 引用上个命令的最后一个参数; ESC后松开再按 .

                    ctrl+r  [想要搜索的内容] 可以在当前搜索并显示以前的命令历史

      

     调用历史参数               

                             !n:^ 调用第n条命令的第一个参数

                             !n:$ 调用第n条命令的最后一个参数

                             !m:n 调用第m条命令的第n个参数 

                             !n:* 调用第n条命令的所有参数

                       n可以是数字也可以是字符                 

     命令历史相关的环境变量

            HISTSIZE:命令历史中可以保存的命令的个数;

                                  HISTFILE: 命令历史文件;

                                  HISTFILESIZE:命令历史文件可以保存的命令的个数;

                                  HISTCONTROL: 控制命令历史的生成;

               HISTCONTROL=ignoredups: 忽略记录重复的命令;连续的相同命令才为重复;

               HISTCONTROL=ignorespace: 不记录以空白字符开头的命令;

               HISTCONTROL=ignoreboth: 同时具有上面两种特性

               也可以HISTCONTROL="ignoredups:ignorespace"中间用冒号隔开

           注意:这种修改只对当前shell有效!


history其他的几种用法

1、使用 HISTTIMEFORMAT 显示时间戳

         HISTTIMEFORMAT=“%F %T“  %F表示日期  %T表示时间

                            [root@VM_18_121_centos ~]# HISTTIMEFORMAT="%F %T "

         [root@VM_18_121_centos ~]# history 

        1  2016-07-27 09:56:57  

        2  2016-07-24 22:47:33 yum update -y

        3  2016-07-24 22:50:20 yum install -y httpd

        4  2016-07-24 22:51:57 mkdir ~/confbak

       2、使用 Ctrl+R 搜索命令历史

                         (reverse-i-search)`tr': yum -y install php-gd php-ldap php-odbc 

                      (reverse-i-search)`tr': tree -CL 2 /dev/

       3、使用 HISTSIZE 控制历史命令记录的总行数

                          [root@VM_18_121_centos ~]# HISTSIZE=1001          

        [root@VM_18_121_centos ~]# echo $HISTSIZE

        1001

只针对当前shell有效

                 或者在[root@VM_18_121_centos ~]# vim ~/.bash_profile 追加

                      HISTSIZE=1001

                      HISTFILESIZE=1001

                只针对当前用户有效

        4、使用 HISTIGNORE 忽略历史中的特定命令

                      [root@VM_18_121_centos ~]# export HISTIGNORE="history:ls:ls -l"