關于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功能的實現。

        小總結加發現的一個小秘密,望批評指正?。。?/p>

原創文章,作者:liu-linux,如若轉載,請注明出處:http://www.www58058.com/69250

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

相關推薦

  • N26-第十四周

    1、系統的INPUT和OUTPUT默認策略為DROP;[root@centos7 ~]# iptables -P INPUT DROP[root@centos7 ~]# iptables -P OUTPUT DROP1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務…

    Linux干貨 2017-06-20
  • DNS和BIND配置(第二部分)

    接第一部分課后練習 三、課后練習: 2、配置反向解析: 步驟一:寫主配置文件:改成與上個實驗相同,也可以自己寫一個簡單的配置文件,如下: [root@localhost tmp]# cat named.conf.new options { directory  "/var/named&qu…

    Linux干貨 2016-10-17
  • http狀態碼大全

    狀態值:100 客戶端應當繼續發送請求。這個臨時響應是用來通知客戶端它的部分請求已經被服務器接收,且仍未被拒絕??蛻舳藨斃^續發送請求的剩余部分,或者如果請求已經完成,忽略這個響應。服務器必須在請求完成后向客戶端發送一個最終響應。 狀態值:101 服務器已經理解了客戶端的請求,并將通過Upgrade 消息頭通知客戶端采用不同的協議來完成這個請求。在發送完這個…

    Linux干貨 2016-11-01
  • linux的文件類型

    linux的文件類型 linux其中的一個哲學思想就是一切皆文件,今天我們就來學習一下linux系統中的文件類型。linux不同于windows,有多種多類的文件類型,文件類型的判斷也不是以文件的后綴為標準的。linux中一共有七種文件類型,分別是:普通文件、目錄、字符設備文件、塊設備文件、套接字文件、命名管道文件和符號鏈接文件。那么接下來我們就分別看看每種…

    Linux干貨 2016-10-27
  • 程序包管理及定時任務

    程序包管理及定時任務

    Linux干貨 2018-01-01
  • 通過堡壘機代理SSH運行Ansible(譯)

    有一種常見的網絡安全模式是阻止私有網絡外部對應用服務器的所有連接(指除了業務數據外其它的連接,如后臺管理系統和內部業務系統。譯者注),然后使用 DMZ 區域中的 堡壘機 來選擇性的將到服務器的流量加入白名單。 我們有這樣的一個服務器池,只允許來自特定 IP 地址的 SSH 流量。這些服務器還由 Ansible…

    Linux干貨 2015-02-14
欧美性久久久久