history命令
history命令:用於顯示歷史記錄和執行過的指令命令。history命令讀取歷史命令文件中的目錄到歷史命令緩沖區和將歷史命令緩沖區中的目錄寫入命令文件。該命令單獨使用時,僅顯示歷史命令,在命令行中,可以使用符號!
執行指定序號的歷史命令。例如,要執行第2個歷史命令,則輸入!2
。
history命令:是被保存在內存中的,當退出或者登錄shell時,會自動保存或讀取。在內存中,歷史命令僅能夠存儲1000條歷史命令,該數量是由環境變量 HISTSIZE
進行控制。默認是不顯示命令的執行時間,命令的執行時間,history 已經記錄,只是沒有顯示。
注:如想查詢某個用戶在系統上執行了什么命令,可以使用root用戶身份登錄系統,檢查Home目錄下的用戶主目錄下的“.bash_history”文件,該文件記錄了用戶所使用的命令和歷史信息。
語法:
history(選項)(參數)
選項:
-N: 顯示歷史記錄中最近的N個記錄; -c:清空當前歷史命令; -a:將歷史命令緩沖區中命令寫入歷史命令文件中; -r:將歷史命令文件中的命令讀入當前歷史命令緩沖區; -w:將當前歷史命令緩沖區命令寫入歷史命令文件中; -d<offset>:刪除歷史記錄中第offset個命令 -n<filename>:讀取指定文件
參數:
n:打印最近的n條歷史命令。
實例:
#查看歷史執行記錄
[ljs@vm ~]$ [ljs@vm ~]$ history #查看歷史執行記錄
#查看歷史執行記錄后 5 條
[ljs@vm ~]$ [ljs@vm ~]$ history 5 #查看歷史執行記錄后 5 條
# 使用! 執行歷史命令。 # ! number 執行第幾條命令 [ljs@vm ~]$ [ljs@vm ~]$ !10 #執行歷史記錄第 10 條命令 # !! 執行上一條 [ljs@vm ~]$ [ljs@vm ~]$ !! #執行上一條命令
顯示執行歷史記錄時間:
1、默認情況下,history並不記錄命令的執行時間,分析起來很困難。我們可以使用HISTTIMEFORMAT在歷史中顯示TIMESTAMP。
2、把上面的 export HISTTIMEFORMAT="%F %T " 命令加入到~/.bashrc中即可在登錄后自動開啟history時間戳了。添加完成后,執行source .bashrc 讓其生效。僅針對當前賬號有效。
3、其實HISTTIMEFORMAT的格式就是 strftime函數的格式,比如上面的"%F %T ",%F表示顯示出Y-M-D格式的日期,%T表示顯示出H-M-S這樣格式的時間。
4、用Ctrl+R搜索歷史命令;當你執行了一串相當長的命令之后,你只要用關鍵字搜索一下歷史命令然后重新執行這條命令而不需要將整條命令再輸一遍。方法是:按下Ctrl+R然后輸入關鍵字。如搜索”date”,則顯示歷史的命令中含有”date”的命令 date "+今天是:%F,%A,時間是:%T.准備吃飯去"。按回車,就可以重新執行這條命令了,而按左箭頭鍵或右箭頭鍵則可以直接修改,改完之后按回車執行,非常方便!
【注:在命令行提示符下按下Ctrl+R,終端將顯示如下提示reverse-i-search】
#配置HISTTIMEFORMAT環境變量,給history記錄添加上時間戳
[ljs@vm ~]$ [ljs@vm ~]$ export HISTTIMEFORMAT="%F %T " #配置HISTTIMEFORMAT環境變量,給history記錄添加上時間戳