linux history命令使用解讀
命令行歷史
當執(zhí)行命令后,系統(tǒng)默認會在內存記錄執(zhí)行過的命令
當用戶正常退出時,會將內存的命令歷史存放對應歷史文件中,默認是 ~/.bash_history
登錄shell時,會讀取命令歷史文件中記錄下的命令加載到內存中 登錄進shell后新執(zhí)行的命令只會記錄在內存的緩存區(qū)中;這些命令會用戶正常退出時“追加”至命令歷史文件中利用命令歷史。
可以用它來重復執(zhí)行命令,提高輸入效率
1. 命令:history
history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...]
2. 常用選項
| 選項 | 說明 |
|---|---|
| -c | 清空命令歷史 |
| -d offset | 刪除歷史中指定的第 offset 個命令 |
| n | 顯示最近的 n 條歷史 |
| -a | 追加本次會話新執(zhí)行的命令歷史列表至歷史文件 |
| -r | 讀歷史文件附加到歷史列表 |
| -w | 保存歷史列表到指定的歷史文件 |
| -n | 讀歷史文件中未讀過的行到歷史列表 |
| -p | 展開歷史參數(shù)成多行,但不存在歷史列表中 |
| -s | 展開歷史參數(shù)成一行,附加在歷史列表后 |
3. 命令歷史相關環(huán)境變量
| 變量 | 說明 |
|---|---|
| HISTSIZE | 命令歷史記錄的條數(shù) |
| HISTFILE | 指定歷史文件,默認為~/.bash_history |
| HISTFILESIZE | 命令歷史文件記錄歷史的條數(shù) |
| HISTTIMEFORMAT="%F %T $(whoami) " | 顯示時間和用戶 |
| HISTIGNORE="str1:str2*:..." | 忽略str1命令,str2開頭的歷史 |
| HISTCONTROL | 控制命令歷史的記錄方式 ignoredups 是默認值,可忽略重復的命令,連續(xù)且相同為“重復” ignorespace 忽略所有以空白開頭的命令 ignoreboth 相當于ignoredups, ignorespace的組合 erasedups 刪除重復命令 |
4. 持久保存變量
以上變量可以 export 變量名=“值” 形式存放在 /etc/profile 或 ~/.bash_profile
示例
[root@centos ~]#cat .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH export HISTCONTROL=ignoreboth export HISTTIMEFORMAT="%F %T " [root@centos ~]# [root@centos /]#history 5 123 2021-03-25 15:52:15 cd ~ 124 2021-03-25 15:52:16 pwd 125 2021-03-25 15:52:18 cd / 126 2021-03-25 15:52:19 pwd 127 2021-03-25 15:52:30 history 5 [root@centos /]#
5. 調用命令行歷史
# 重復前一個命令方法 重復前一個命令使用上方向鍵,并回車執(zhí)行 1. 按 !! 并回車執(zhí)行 2. 輸入!-1 并回車執(zhí)行 3. 按 Ctrl+p 并回車執(zhí)行 使用up(向上)和down(向下)鍵來上下瀏覽從前輸入的命令 ctrl-r來在命令歷史中搜索命令 (reverse-i-search)`': Ctrl+g:從歷史搜索模式退出
| header 1 | header 2 |
|---|---|
| !:0 | 執(zhí)行前一條命令(去除參數(shù)) |
| !n | 執(zhí)行history命令輸出對應序號n的命令 |
| !-n | 執(zhí)行history歷史中倒數(shù)第n個命令 |
| !string | 重復前一個以“string”開頭的命令 |
| !?string | 重復前一個包含string的命令 |
| !string:p | 僅打印命令歷史,而不執(zhí)行 |
| !$:p | 打印輸出 !$ (上一條命令的最后一個參數(shù))的內容 |
| !*:p | 打印輸出 !*(上一條命令的所有參數(shù))的內容 |
| ^string | 刪除上一條命令中的第一個string |
| ^string1^string2 | 將上一條命令中的第一個string1替換為string2 |
| !:gs/string1/string2 | 將上一條命令中所有的string1都替換為string2 |
# 要重新調用前一個命令中最后一個參數(shù),三種方式 1. !$ # 表示前一個命令中最后一個參數(shù) 2. Esc, . # 點擊Esc鍵后松開,然后點擊 . 鍵 3. Alt+ . # 按住Alt鍵的同時點擊 . 鍵
| header 1 | header 2 |
|---|---|
| command !^ | 用上一個命令的第一個參數(shù)做command的參數(shù) |
| command !$ | 利用上一個命令的最后一個參數(shù)做command的參數(shù) |
| command !* | 利用上一個命令的全部參數(shù)做command的參數(shù),如 ls !* |
| command !:n | 利用上一個命令的第n個參數(shù)做command的參數(shù) |
| command !n:^ | 調用第n條命令的第一個參數(shù) |
| command !n:$ | 調用第n條命令的最后一個參數(shù) |
| command !n:m | 調用第n條命令的第m個參數(shù) |
| command !n:* | 調用第n條命令的所有參數(shù) |
| command !string:^ | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第一個參數(shù) |
| command !string:$ | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的最后一個參數(shù) |
| command !string:n | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第n個參數(shù) |
| command !string:* | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的所有參數(shù) |
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Linux Shell echo命令/printf命令/test命令使用及說明
本文介紹了Linux常用的echo、printf和test命令的用法和功能,對字符串輸出、格式化顯示以及條件測試進行了簡明講解,并提供了相關示例,適合腳本編寫參考2025-10-10
SpringBoot整合Activiti7的實現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合Activiti7的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11
gdb調試中設置監(jiān)控點watch,rwatch,awatch的區(qū)別及說明
這篇文章主要介紹了gdb調試中設置監(jiān)控點watch,rwatch,awatch的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

