关于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

相关推荐

  • Linux基础命令语法

    Linux基础命令语法

    Linux干货 2018-03-11
  • 冥界之王-第8周作业

       1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥:网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,        &nbs…

    Linux干货 2016-10-23
  • 十个让你变成糟糕的程序员的行为

    之前本站发表过《优秀程序员的十个习惯》以及《程序员需要具备的基本技能》,那是我们需要去学习和培养的。这里,我们主要讨论十个糟糕程序员的特征,主要是需要让我们去避免和小心的。 1) 情绪化的思维 如果你开始使用不同颜色的眼光来看待这个世界的话,那么你可能会成为一个很糟糕的程序员。情绪化的思维或态度很有可能会把自己变成一个怪物。相信你经常可以看到很多很糟糕的程序…

    Linux资讯 2015-04-03
  • 定时任务应用示例

    定时任务应用示例 1.每4小时执行一次对/etc目录的备份,备份至/backup目录中,保存的目录名为形如etc-201504020202 mkdir /backup crontab -e * */4 * * * cp -ar /etc/ /backup/etc-$(date +%Y%m%d%H%M) 2.每周2,4,6备份/var/log/messages…

    Linux干货 2017-08-06
  • N25 – week 3 blog

    本周的blog开始使用了代码语言格式,我原本以为自然的才是最好的,orginal的才是最美的,但是我错了。。。我发现同学们都在各种markdown,各种排版。我说过我早已过了care这些的年纪,但是我不能脱离群体单独存在,所以我底下了傲娇的头。 本周开始blog标题改为英文,逼格满满,麦满分~ 下面开始第$wk_num周的作业 [root@dhcp-10-1…

    Linux干货 2016-12-19
  • linux文件系统挂载

    挂载mount 挂载:     将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为 卸载:     为解除此关联关系的过程 把设备关联挂载点:mount Point mount 卸载时:    &…

    Linux干货 2016-08-29