linux history命令使用解讀
命令行歷史
當(dāng)執(zhí)行命令后,系統(tǒng)默認(rèn)會(huì)在內(nèi)存記錄執(zhí)行過的命令
當(dāng)用戶正常退出時(shí),會(huì)將內(nèi)存的命令歷史存放對(duì)應(yīng)歷史文件中,默認(rèn)是 ~/.bash_history
登錄shell時(shí),會(huì)讀取命令歷史文件中記錄下的命令加載到內(nèi)存中 登錄進(jìn)shell后新執(zhí)行的命令只會(huì)記錄在內(nèi)存的緩存區(qū)中;這些命令會(huì)用戶正常退出時(shí)“追加”至命令歷史文件中利用命令歷史。
可以用它來重復(fù)執(zhí)行命令,提高輸入效率
1. 命令:history
history [-c] [-d offset] [n] history -anrw [filename] history -ps arg [arg...]
2. 常用選項(xiàng)
| 選項(xiàng) | 說明 |
|---|---|
| -c | 清空命令歷史 |
| -d offset | 刪除歷史中指定的第 offset 個(gè)命令 |
| n | 顯示最近的 n 條歷史 |
| -a | 追加本次會(huì)話新執(zhí)行的命令歷史列表至歷史文件 |
| -r | 讀歷史文件附加到歷史列表 |
| -w | 保存歷史列表到指定的歷史文件 |
| -n | 讀歷史文件中未讀過的行到歷史列表 |
| -p | 展開歷史參數(shù)成多行,但不存在歷史列表中 |
| -s | 展開歷史參數(shù)成一行,附加在歷史列表后 |
3. 命令歷史相關(guān)環(huán)境變量
| 變量 | 說明 |
|---|---|
| HISTSIZE | 命令歷史記錄的條數(shù) |
| HISTFILE | 指定歷史文件,默認(rèn)為~/.bash_history |
| HISTFILESIZE | 命令歷史文件記錄歷史的條數(shù) |
| HISTTIMEFORMAT="%F %T $(whoami) " | 顯示時(shí)間和用戶 |
| HISTIGNORE="str1:str2*:..." | 忽略str1命令,str2開頭的歷史 |
| HISTCONTROL | 控制命令歷史的記錄方式 ignoredups 是默認(rèn)值,可忽略重復(fù)的命令,連續(xù)且相同為“重復(fù)” ignorespace 忽略所有以空白開頭的命令 ignoreboth 相當(dāng)于ignoredups, ignorespace的組合 erasedups 刪除重復(fù)命令 |
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. 調(diào)用命令行歷史
# 重復(fù)前一個(gè)命令方法 重復(fù)前一個(gè)命令使用上方向鍵,并回車執(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命令輸出對(duì)應(yīng)序號(hào)n的命令 |
| !-n | 執(zhí)行history歷史中倒數(shù)第n個(gè)命令 |
| !string | 重復(fù)前一個(gè)以“string”開頭的命令 |
| !?string | 重復(fù)前一個(gè)包含string的命令 |
| !string:p | 僅打印命令歷史,而不執(zhí)行 |
| !$:p | 打印輸出 !$ (上一條命令的最后一個(gè)參數(shù))的內(nèi)容 |
| !*:p | 打印輸出 !*(上一條命令的所有參數(shù))的內(nèi)容 |
| ^string | 刪除上一條命令中的第一個(gè)string |
| ^string1^string2 | 將上一條命令中的第一個(gè)string1替換為string2 |
| !:gs/string1/string2 | 將上一條命令中所有的string1都替換為string2 |
# 要重新調(diào)用前一個(gè)命令中最后一個(gè)參數(shù),三種方式 1. !$ # 表示前一個(gè)命令中最后一個(gè)參數(shù) 2. Esc, . # 點(diǎn)擊Esc鍵后松開,然后點(diǎn)擊 . 鍵 3. Alt+ . # 按住Alt鍵的同時(shí)點(diǎn)擊 . 鍵
| header 1 | header 2 |
|---|---|
| command !^ | 用上一個(gè)命令的第一個(gè)參數(shù)做command的參數(shù) |
| command !$ | 利用上一個(gè)命令的最后一個(gè)參數(shù)做command的參數(shù) |
| command !* | 利用上一個(gè)命令的全部參數(shù)做command的參數(shù),如 ls !* |
| command !:n | 利用上一個(gè)命令的第n個(gè)參數(shù)做command的參數(shù) |
| command !n:^ | 調(diào)用第n條命令的第一個(gè)參數(shù) |
| command !n:$ | 調(diào)用第n條命令的最后一個(gè)參數(shù) |
| command !n:m | 調(diào)用第n條命令的第m個(gè)參數(shù) |
| command !n:* | 調(diào)用第n條命令的所有參數(shù) |
| command !string:^ | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第一個(gè)參數(shù) |
| command !string:$ | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的最后一個(gè)參數(shù) |
| command !string:n | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第n個(gè)參數(shù) |
| command !string:* | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的所有參數(shù) |
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux Shell echo命令/printf命令/test命令使用及說明
本文介紹了Linux常用的echo、printf和test命令的用法和功能,對(duì)字符串輸出、格式化顯示以及條件測(cè)試進(jìn)行了簡(jiǎn)明講解,并提供了相關(guān)示例,適合腳本編寫參考2025-10-10
SpringBoot整合Activiti7的實(shí)現(xiàn)代碼
這篇文章主要介紹了SpringBoot整合Activiti7的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明
這篇文章主要介紹了gdb調(diào)試中設(shè)置監(jiān)控點(diǎn)watch,rwatch,awatch的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Linux內(nèi)核宏container_of的深度剖析
今天小編就為大家分享一篇關(guān)于Linux內(nèi)核宏container_of的深度剖析,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02

