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 17:09
下一篇 2016-07-27 09:24

相關推薦

  • CentOS的啟動流程

                      一個操作系統的開啟與關閉不是我們手動的打開與關閉電源那么簡單。這個過程中涉及太多的內部服務的打開與關閉。而在這個過程中如果出現什么問題,那么以后的某些服務…

    2017-09-01
  • Linux基礎知識之軟件包管理(二)

    (1)CentOS7 yum dnf  yum repository: yum repo 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下,repodata) 文件服務器: ftp:// http:// nfs:// file:/// (2)yum客戶端: 配置文件: /etc/yum…

    Linux干貨 2016-08-24
  • chmod命令詳細用法

    指令名稱 : chmod 使用權限 : 所有使用者 使用方式 : chmod [-cfvR] [–help] [–version] mode file… 說明 : …

    Linux干貨 2016-10-17
  • Linux下計劃任務神器-Crontab

    作為系統運維人員都清楚,在Linux下定義重復性的任務,我們一般會采用crontab來進行:crontab這個指令所設置的工作將會循環的一直進行下去!可循環的時間為分鐘、小時、每日、每月、每周。 crontab計劃任務: 1)常見用法:crontab命令的作用和用法如下:描述:為每個用戶維護周期性的計劃任務文件用法:crontab [-u 用戶][-l|-r…

    Linux干貨 2016-07-22
  • 程序包管理rpm&yum&編譯安裝

    centos6.6程序包管理 二進制應用程序的組成部分: 二進制文件,庫文件,配置文件和幫助文件 程序包管理器:rpm rpm包管理器的前端工具:yum 程序包之間存在依賴關系 rpm的命名方式: name_VERSION_release.arch.rpm     VERSION: major.minor.r…

    Linux干貨 2016-07-07
欧美性久久久久