該博文以CentOS6.8_x86_64系統為基礎,Xshell 5遠程連接CentOS系統,以root身份登錄系統。
為什么要學習history命令?
history命令是Linux的一個內嵌的shell命令,history命令的使用有時會大大縮短我們輸入命令的時間,達到節省命令快捷操作的要求。學會history命令之后,我們可以隱藏一些含有敏感信息的命令輸入,做到使系統更加安全的目的。我們還可以定時的去清理我們不想要其它用戶看到的一些私密的命令。 history命令的常見用法:
-c: 清空命令歷史(使用該命令之后,僅對當前腳本生效,exit退出后重新進入,原來.bash_history的內容會重新讀入內存中)
要想徹底清空歷史命令,需要先將.bash_history的內容刪除,接著使用history -c,這樣才會徹底清空命令歷史。
-d: 刪除歷史中指定的命令;(我們想刪除命令歷史中的117行命令,直接使用history -d 120 即可,然后用history 5查看命令的最后五行,發現原來的120行的history命令被121行的exit命令所取代)
#: 顯示最近的# 條歷史(在上面的history -d xxx命令中已經演示過history #命令的使用過程)
-a: 追加本次會話新執行的命令歷史列表至歷史文件(首先cat .bash_history 然后執行 history -a,接著使用tac 倒序查看一下.bash_history 發現我們剛才輸入的history -d 120等命令已經輸入到.bash_history中)
-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執行的內存文件中)
-w: 保存歷史列表到指定的歷史文件(history -w /PATH/TO/SOMEFILE 將內存中的命令執行的歷史列表保存到指定的/PATH/TO/SOMEFILE中,以命令歷史輸出到/root/history.log為例)
-p: 展開歷史參數成多個行,但不存在歷史列表中(history -p how are you ?輸入之后,命令會被分成how are you?三行顯示,用history查看歷史,不會出現剛才執行的命令。)
-s: 展開歷史參數成一行,附加在歷史列表后(只是將想要執行的命令直接輸入到history -s COMMAND 之后,不會再系統中執行,只是添加到歷史列表后面,通常用于偽造一些歷史,添加虛假的歷史)
命令歷史相關環境變量
注:以下的命令都是,以命令行模式進行操作,立即生效,但退出后失效。
HISTSIZE :命令歷史記錄的條數;
HISTFILE :指定歷史文件,默認為~/.bash_history;
將歷史文件輸入的目標該變為/root/history.log2,然后將history -a,同步到新輸入目標之中,然后倒序查看一下,發現已經同步到新的位置處,修改僅對當前腳本生效。
HISTTIMEFORMAT=“%F %T“ 顯示時間(查看命令會直接顯示命令的執行時間)
命令擴展:
HISTTIMEFORMAT="`hostname`%F %T"(會顯示更加詳細的用戶的主機名和登錄時間)
HISTTIMEFORMAT="`tty`%F %T"(顯示用戶的登錄的終端號和登錄時間)
HISTIGNORE=“str1:str2:… “ 忽略string1,string2 歷史
會忽略接下來輸入凡是有str1:str2的命令都會忽略(命令比較簡單,截圖較長,暫不粘貼)
控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups :忽略重復的命令;連續且相同方為“重復”
設置HISTCONTROL=ignoredup后,執行多次ls /etc &>/dev/null,歷史記錄中只會記錄執行命令中的一次執行記錄,經多次自己試驗,記錄的命令為第一次執行ls /etc &>/dev/null的命令執行的時間。
ignorespace :忽略所有以空白開頭的命令
設置HISTCONTROL=ignorespace之后,輸入 echo nihao ,我們發現命令執行了,但是記錄歷史中不會出現echo命令的執行過程。
ignoreboth :ignoredups, ignorespace
等同于ignoredups和ignorespace的合集,本博文將不再贅述。
erasedups: 刪除重復命令
將刪除重復的命令,減小history的大小
注意:命令直接在命令行進行環境變量的設置,執行時間段僅限于該腳本,設置完變量會立即生效,但是exit退出當前腳本之后,環境變量就會失效;將環境變量寫入配置文件中,/etc/profile(全局變量,對所有用戶有效)或 ~/.bash_profile(單用戶模式,僅對該用戶有效),寫入配置文件中不會立即生效,但是需要重新登錄之后生效。
原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/26142