关于HISTCONTROL命令及对快捷键Ctrl+o命令的影响

        在linux中环境变量HISTCONTROL可以控制历史的记录方式。

        HISTCONTROL有以下的选项:

            ignoredups         默认,忽略重复命令

            ignorespace        忽略所有一空格开头的命令

            ignoreboth         ignoredups 和 ignorespace 的组合

            erasedups          删除重复命令

        下面我来演示一下HISTCONTROL 及 其选项的用法:

        linux默认忽略连续执行的相同命令,也就是默认设置是ignoredups,

        在生产中我们在输入命令时有时会暴露一些重要信息,如果我们不想将这些重要信息记录在历史命令列表中我们可以将HISTCONTROL变量的改为ignorespace,在命令行更改完变量后,在我们输入命令前加空格再执行,我们的历史列表将不记录此次执行的命令:

            #HISTCONTROL=ignorespace

            # pwd

            /root

            #history

            1 HISTCONTROL=ignorespace

            2 history

            #history

            1 HISTCONTROL=ignorespace

            2 history

            3 history

        pwd 的命令没有被记录,因为前面加了空格,但是执行两次的history却被重复的记录了,因为我们把系统默认的忽略重复命令的变量改成了加空格忽略的变量,这时我们可以更改ignoreboth来解决这个问题:

            #HISTCONTROL=ignoreboth

            # pwd

            /root

            #history

            1 HISTCONTROL=ignoreboth

            2 history

            #history

            1 HISTCONTROL=ignorespace

            2 history

            #hostname
            localhost.localdomain
            #cd

            #hostname
            localhost.localdomain
            #cd

            #history

            1 HISTCONTROL=ignorespace

            2 history

            3 hostname

            4 cd

            5 hostname

            6 cd

        这时就出现了另一个问题,不连续执行的相同的命令被历史命令列表记录了,我们用erasedups可以消除这个效果:

            #HISTCONTROL=earsedups

            #hostname

            localhost.localdomain

            #cd

            #hostname
            localhost.localdomain
            #cd

            #history

            1 HISTCONTROL=ignorespace
            2 hostname

            3 cd

            4 history

        但请注意以上这些在命令行更改的环境变量设置只是临时的,如果用户被注销了,设置会恢复,如果我们想彻底更改这个用户的环境变量,我们可以到用户目录下的.bash_profile文件中进行更改,更改后用命令. . bash_profile来执行配置,如果你想更改所有用户的设置可以到根目录下/etc/profile文件中进行更改,再重启。

        下面我讲命令:

        Ctrl + o 这条命令是执行当前命令,并重新显示本命令:

            #pwd

            /root

            #pwd

            /root

            #pwd

        上面的代码可能不是很好理解,我描述一下,一般当你用Enter执行完一条命令后,提示符后是不会再次出现任何命令的,但是如果你用Ctrl + o来执行命令的话,执行完毕后提示符后面仍然会像是这条命令。

        这个时候我发现了一件奇怪的事情!!!

        当你更改历史记录方式的环境变量为ignorespace  或 ignoreboth 或 erasedups 时,Ctrl + o这条命令将会失效,会如同Enter一样能执行命令,不能在提示符后重新显示刚执行的命令,但是系统默认的ignoredups 历史记录方式环境变量不会影响Ctrl + o功能的实现。

        小总结加发现的一个小秘密,望批评指正!!!

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

(2)
liu-linuxliu-linux
上一篇 2017-02-18 10:37
下一篇 2017-02-18 16:43

相关推荐

  • 配置基于mysql的虚拟用户认证vsftp服务器

    1.安装vsftp、mysql、epel_release(epel源,后面要安装的pam_mysql认证模块需要这个源)、pam_mysql 2.刚装的mysql运行一下/usr/bin/mysql_secure_installation 3.建立数据库vsftpd,建表user,     create database vsftpd; …

    Linux干货 2016-06-22
  • vsphere虚拟机下的Linux在线移除硬盘后的报错处理(基于LVM)

    1)故障描述( vmware虚拟机,在线移除一块被设置为pv格式的硬盘后,提示unknown device错误): 说明:/dev/sdb1 /dev/sdc1 /dev/sdd1是组成/dev/vg_test/lvm_test的PV,这里我们模拟/dev/sdd1硬盘被直接断电了 [root@docker mnt]# pvdisplay…

    Linux干货 2016-07-29
  • 学习一个星期的沿途体会

    人生处处都是坑,只看跳的深不深。下面就来介绍介绍我跳的坑吧!当然我可没打算在此长眠 既然选择了Liunx,那对它的历史就得了解清楚。就如同我们结婚,既然选择了对方,那就要了解他的过去,包容他的未来。           Linux操作系统是一个叫Linus Torvalds的大学生在1991年开发而来。当然,…

    2017-07-16
  • MapReduce数据流

    Hadoop的核心组件在一起工作时如下图所示: 图4.4高层MapReduce工作流水线   MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至所有节点上运行mapping任务,每一个mapping任务都是平等的:mappers没有特定“标识物”与其关联。因此,任意的map…

    Linux干货 2015-05-13
  • 第一周作业

    – 描述计算机的组成及其功能。 – 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。 – 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。 – 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shu…

    Linux干货 2016-12-04
  • 软件包管理

    软件运行与编译过程:程序源代码——预处理——-编译——-汇编——-链接 静态编译:.a 动态编译:.so 二进制程序的组成:二进制文件、库文件、配置文件、帮助文件。 包的命名:1、源代码:name -VERSION.tar.gz或bz2或xz   &nb…

    Linux干货 2017-04-23