关于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
下一篇 2017-02-18

相关推荐

  • 初探SElinux

    SELinux介绍: SELinux: Secure Enhanced Linux(安全强化的linux),是美国国家安全局(NSA=The National Security Agency)和 SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6…

    Linux干货 2016-10-09
  • 网络协议端口号查询表

    TCP 0= ReservedTCP 1=TCP Port Service MultiplexerTCP 2=DeathTCP 5=Remote Job Entry,yoyoTCP 7=EchoTCP 11=SkunTCP 12=BomberTCP 16=SkunTCP 17=SkunTCP 18=消息传输协议,skunTCP 19=SkunTCP 20=F…

    Linux干货 2017-08-15
  • bash的重定向

    一、简介         bash的数据流重定向(redirect)是将程序的执结果重新定向到另一文件或者设备。或者把一文件重定向给一程序作为数据来源。默认情况下,命令的执行结果显示在屏幕上。文件系统中,分为:标准输入,标准输出,错误输出。 二、用法   &n…

    Linux干货 2015-08-11
  • linux rpm包管理

    一、概要     RPM:RPM Package Manager(rpm软件包管理器)的缩写。它能将编译好的程序打包一个文件或有限的几个文件,可用于实现安装、卸载、升级、查询等功能。 二、rpm软件包管理 rpm包的命名格式:name-version-relase.arch.rpm 例如:bash-1.1.0-5.el…

    Linux干货 2015-04-27
  • 激情的魅力samba服务(热舞篇)

    正如名称一样的迷人的一个服务,充满了激情。火热的天气中更添加一分悸动,本章就尝试对下面火热的samba服务是要如何破解并掌握于手心中。(本篇当中借鉴了鸟哥私房菜和linux就该这么学还有传说中的中华小题库,通过做题来对于samba进行初步的了解)后续还会添加一篇关于samba服务的文章,作为深度了解。 首先了解下samba的来源,听说作者老道(Tridgwe…

    Linux干货 2017-08-19
  • N21-天天-第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash awk -F: '$NF~"/sbin/nologin" {shell++} $NF!~&qu…

    Linux干货 2016-09-01