什麼是history 在Linux系統日積月累的使用中,我們會輸入很多命令。而在我們想重覆上一個命令時,通過使用方向鍵向上翻就可以查看我們已經輸入和使用過的命令。那大家有沒有想過這個命令保存在什麼地方,最大又會保存多少條記錄了?今天我們就來學習 history 命令。 & ...
什麼是history
在Linux系統日積月累的使用中,我們會輸入很多命令。而在我們想重覆上一個命令時,通過使用方向鍵向上翻就可以查看我們已經輸入和使用過的命令。那大家有沒有想過這個命令保存在什麼地方,最大又會保存多少條記錄了?今天我們就來學習history命令。
從history字面意思就可以知道該命令主要用於查看用戶曾經輸入和使用過的命令。使用該命令可以減少我們日常重覆輸入命令的次數。其常用選項如下所示:
選項 | 說明 |
---|---|
-c | 清除歷史命令 |
-d offset | 刪除指定位置的history命令 |
-a | 添加新的歷史命令記錄 |
-r | 從historyfile讀取歷史記錄做為當前的歷史記錄 |
-w | 將當前的歷史記錄保存並覆蓋到historyfile中 |
常用用法
重覆上一次的執行命令
在日常使用過程中,最常用的場景就是==重覆執行上一次的命令==,對於這種場景,我想大家用得最多應當是使用方向鍵向上或向下進行翻滾來實現吧。但可以實現這種場景共有4種方法,分別如下:
- 使用方向鍵向上或向下翻滾,按Enter鍵
- 輸入!!,按Enter鍵
- 輸入!-1,按Enter鍵
- 輸入Ctrl+P,按Enter鍵
重覆執行指定的命令
在日常使用過程,我們不僅僅希望執行上一次的命令,而是想執行指定的歷史命令時,則有兩種方法
- 指定ID,則可以使用!HistoryID,如我們想執行historyID為1993的命令,則可以按以下形式進行輸入
[root@localhost ~]# !1993
- 指定命令進行模糊查詢,則可以使用!HistoryCmd,==這裡搜索的命令從最後一條歷史記錄向前搜索,找到滿足條件的命令即執行==,示例如下:
[root@localhost ~]# cat -n ~/.bash_history | grep du
562 du -ah --exclude="*/.*" .
564 du -ah .
565 du -ah . | more
566 du -ah --exclude="*/.*" .
567 du -h --max-depth=1 /
568 du -h --max-depth=1 / | sort -hr
[root@localhost ~]# !du
#找到離當前最近執行的命令
du -h --max-depth=1 / | sort -hr
搜索曾經執行的命令
在Window中如果大家要搜索文件常用快捷鍵Ctrl+F,而Linux中搜索曾經執行過的命令則使用快捷鍵Ctrl+R
# 在當前Shell中按Ctrl+R,而後輸入命令即可
(reverse-i-search)`du': cat -n ~/.bash_history | grep du
給歷史命令添加時間戳
# 預先定義一個環境變數
[root@localhost ~]# export HISTTIMEFORMAT=' %F %T '
root@localhost ~]# history
1009 2018-08-14 23:18:22 pidof sshd
1010 2018-08-14 23:18:22 pidof -o 1995
1011 2018-08-14 23:18:22 pidof sshd -o 1995
清除歷史命令
雖然歷史命令方便和減少日常需要輸入執行命令的時間,但也會存在安全隱患。如果不小心在歷史命令輸入連接其他Linux的地址、MySQL等密碼。一旦出現系統被黑掉或被非管理員看到,則可能存在嚴重的隱患,這時候大家肯定會想到清除歷史命令。這時可以使用-c選項
[root@localhost ~]# history -c
在使用以下選項,就真的把歷史命令給清空了嗎?答案當然不是。在下次重新登錄後,歷史命令依然存在,這是什麼原因?
-c 選項只是暫時把Linux系統記憶體中的歷史命令給清空,當用戶退出時,就不會有歷史命令記錄追加到.bash_history中,當用戶重新登錄後,系統會重新加文件.bash_history,而歷史命令便又會重新顯示出來了。
真正能完全清空歷史命令的做法如下:
- 方法一:
[root@localhost ~]# history -c ; history -w
- 方法二:清空~/.bash_history文件
[root@localhost ~]# echo "" > ~/.bash_history
history配置
- 設置歷史記錄時間:
[root@localhost ~]# export HISTTIMEFORMAT=' %F %T '
- 控制歷史命令記錄個數
#設置記憶體中保存的命令記錄個數
[root@localhost ~]# export HISTSIZE=300
# 設置.bash_history中保存的命令記錄個數
[root@localhost ~]# export HISTFILESIZE=300
- 更改預設保存文件
系統預設配置會將歷史命令保存到~/.bash_history中,如果要保存到其他文件,可以按以下方法進行更改
[root@localhost ~]# export HISTFILE=~/.historycmd.txt
- 其他配置
# 清除整個命令歷史記錄中的重覆記錄
[root@localhost ~]# export HISTCONTROL=erasedups
# 忽略命令歷史記錄中連續重覆的記錄
[root@localhost ~]# export HISTCONTROL=ignoredups
# 忽略命令歷史記錄中以空格開始的記錄
[root@localhost ~]# export HISTCONTROL=ignorespace
# 忽略命令歷史記錄的重覆記錄和以空格開始的記錄
[root@localhost ~]# export HISTCONTROL=ignoreboth
本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註: