Linux基礎知識之history命令詳解

 該博文以CentOS6.8_x86_64系統為基礎,Xshell 5遠程連接CentOS系統,以root身份登錄系統。

為什么要學習history命令?

    history命令是Linux的一個內嵌的shell命令,history命令的使用有時會大大縮短我們輸入命令的時間,達到節省命令快捷操作的要求。學會history命令之后,我們可以隱藏一些含有敏感信息的命令輸入,做到使系統更加安全的目的。我們還可以定時的去清理我們不想要其它用戶看到的一些私密的命令。        history命令的常見用法:

         -c:  清空命令歷史(使用該命令之后,僅對當前腳本生效,exit退出后重新進入,原來.bash_history的內容會重新讀入內存中)

        要想徹底清空歷史命令,需要先將.bash_history的內容刪除,接著使用history -c,這樣才會徹底清空命令歷史。blob.png

         -d:  刪除歷史中指定的命令;(我們想刪除命令歷史中的117行命令,直接使用history -d 120 即可,然后用history 5查看命令的最后五行,發現原來的120行的history命令被121行的exit命令所取代)blob.png

         #:  顯示最近的# 條歷史(在上面的history -d xxx命令中已經演示過history #命令的使用過程)

         -a:  追加本次會話新執行的命令歷史列表至歷史文件(首先cat .bash_history 然后執行 history -a,接著使用tac 倒序查看一下.bash_history 發現我們剛才輸入的history -d 120等命令已經輸入到.bash_history中)

blob.png

         -n:  讀歷史文件中未讀過的行到歷史列表

(當前兩個終端登錄Linux系統,root(tty1)輸入的n多命令,root(tty2)輸入m條命令之后將命令歷史使用history -a輸入到.bash_history中,root(tty1)可以直接執行history -n,將root(tty2)寫入到.bash_history直接讀取到history命令歷史中,-n命令執行過程圖太多,暫不發布命令執行的頁面。)

         -r:  讀歷史文件附加到歷史列表(將.bash_history重新讀取一遍,寫入到history執行的內存文件中)

blob.png

         -w:  保存歷史列表到指定的歷史文件(history -w /PATH/TO/SOMEFILE 將內存中的命令執行的歷史列表保存到指定的/PATH/TO/SOMEFILE中,以命令歷史輸出到/root/history.log為例)

blob.png

         -p:  展開歷史參數成多個行,但不存在歷史列表中(history -p how are you ?輸入之后,命令會被分成how are you?三行顯示,用history查看歷史,不會出現剛才執行的命令。)

blob.png

         -s:  展開歷史參數成一行,附加在歷史列表后(只是將想要執行的命令直接輸入到history -s COMMAND 之后,不會再系統中執行,只是添加到歷史列表后面,通常用于偽造一些歷史,添加虛假的歷史)

blob.png

        命令歷史相關環境變量

        注:以下的命令都是,以命令行模式進行操作,立即生效,但退出后失效。

        HISTSIZE :命令歷史記錄的條數;

   blob.png

        HISTFILE :指定歷史文件,默認為~/.bash_history;
   將歷史文件輸入的目標該變為/root/history.log2,然后將history -a,同步到新輸入目標之中,然后倒序查看一下,發現已經同步到新的位置處,修改僅對當前腳本生效。

  blob.png

        HISTTIMEFORMAT=“%F %T“ 顯示時間(查看命令會直接顯示命令的執行時間)

  blob.png

      命令擴展:

        HISTTIMEFORMAT="`hostname`%F %T"(會顯示更加詳細的用戶的主機名和登錄時間)

  blob.png

        HISTTIMEFORMAT="`tty`%F %T"(顯示用戶的登錄的終端號和登錄時間)

  blob.png

        HISTIGNORE=“str1:str2:… “  忽略string1,string2 歷史

    會忽略接下來輸入凡是有str1:str2的命令都會忽略(命令比較簡單,截圖較長,暫不粘貼)

        控制命令歷史的記錄方式:

             環境變量:HISTCONTROL

                 ignoredups :忽略重復的命令;連續且相同方為“重復”

         設置HISTCONTROL=ignoredup后,執行多次ls /etc &>/dev/null,歷史記錄中只會記錄執行命令中的一次執行記錄,經多次自己試驗,記錄的命令為第一次執行ls /etc &>/dev/null的命令執行的時間。

         blob.png

                 ignorespace :忽略所有以空白開頭的命令

     設置HISTCONTROL=ignorespace之后,輸入 echo nihao ,我們發現命令執行了,但是記錄歷史中不會出現echo命令的執行過程。

        blob.png

                 ignoreboth :ignoredups, ignorespace

        等同于ignoredups和ignorespace的合集,本博文將不再贅述。

                 erasedups: 刪除重復命令

       將刪除重復的命令,減小history的大小

注意:命令直接在命令行進行環境變量的設置,執行時間段僅限于該腳本,設置完變量會立即生效,但是exit退出當前腳本之后,環境變量就會失效;將環境變量寫入配置文件中,/etc/profile(全局變量,對所有用戶有效)或 ~/.bash_profile(單用戶模式,僅對該用戶有效),寫入配置文件中不會立即生效,但是需要重新登錄之后生效。

原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/26142

(1)
sjsirsjsir
上一篇 2016-07-26
下一篇 2016-07-27

相關推薦

  • LAMP三個主機的簡單配置和php-admin,wordpress

    LAMP:組合應用httpd2.4:yum install httpd.2.4php-fpm:yum install php-fpm php-mysqlmysql: yum install mysql 注意:在做實驗時,一定要將iptables和selinux給關了。 http:只需在httpd上寫一個必須的文件/etc/httpd/conf.d/fcgic…

    2017-06-06
  • 淺談群紅包的實現

    前言:紅包是支付的方式, 也是社交的延伸。群紅包在這兩塊領域串聯得很好, 表現尤為的濃墨重彩. 承接上兩篇技術淺談:1). 淺談接龍紅包的技術實現.2). 淺談微信紅包搖一搖的技術實現.這一次, 讓我們談談群紅包的技術實現. 一為是紅包的分配算法, 二為競搶的技術實現. 分配算法:最初玩群紅包的時候, 并沒有意識到分配算法的難度…

    Linux干貨 2015-03-10
  • 從“黑掉Github”學Web安全開發

    Egor Homakov(Twitter: @homakov 個人網站: EgorHomakov.com)是一個Web安全的布道士,他這兩天把github給黑了,并給github報了5個安全方面的bug,他在他的這篇blog——《How I hacked Github again》(墻)說明了這5個安全bug以及他把github…

    Linux干貨 2016-08-15
  • Linux路由實驗

    一    實驗背景:路由器的功能是將不同網段的主機建立通信,本次試驗是在使用linux主機當作路由器,完成主機間通信。如下圖所示 二、實驗環境:主機A和B為CentOS7.2,主機C和D為CentOS6.8,且C和D上分別都有兩塊網卡 三、實驗步驟     注意:為避免干擾項,需將每臺主機…

    Linux干貨 2016-09-07
  • 【N25第三周作業】用戶及權限管理

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who root     pts/0        2016-12-14&nb…

    Linux干貨 2016-12-14
  • man手冊的使用

    在Linux中man的使用頻率應該是很高的,靈活運用它可以讓自己快速的掌握一個不熟悉命令的使用方法。下面來介紹下man 環境CentOS6.8 man – format and display the on-line manual pages 在線使用手冊格式及展示通俗點來說它就是命令的使用手冊。它共分九個章節 1、用戶命令2、系統調用3、C庫調…

    Linux干貨 2016-10-19
欧美性久久久久