linux history命令使用解讀
命令行歷史
當執(zhí)行命令后,系統(tǒng)默認會在內(nèi)存記錄執(zhí)行過的命令
當用戶正常退出時,會將內(nèi)存的命令歷史存放對應歷史文件中,默認是 ~/.bash_history
登錄shell時,會讀取命令歷史文件中記錄下的命令加載到內(nèi)存中 登錄進shell后新執(zhí)行的命令只會記錄在內(nèi)存的緩存區(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. 調(diào)用命令行歷史
# 重復前一個命令方法 重復前一個命令使用上方向鍵,并回車執(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ù))的內(nèi)容 |
!*:p | 打印輸出 !*(上一條命令的所有參數(shù))的內(nèi)容 |
^string | 刪除上一條命令中的第一個string |
^string1^string2 | 將上一條命令中的第一個string1替換為string2 |
!:gs/string1/string2 | 將上一條命令中所有的string1都替換為string2 |
# 要重新調(diào)用前一個命令中最后一個參數(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:^ | 調(diào)用第n條命令的第一個參數(shù) |
command !n:$ | 調(diào)用第n條命令的最后一個參數(shù) |
command !n:m | 調(diào)用第n條命令的第m個參數(shù) |
command !n:* | 調(diào)用第n條命令的所有參數(shù) |
command !string:^ | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第一個參數(shù) |
command !string:$ | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的最后一個參數(shù) |
command !string:n | 從命令歷史中搜索以 string 開頭的命令,并獲取它的第n個參數(shù) |
command !string:* | 從命令歷史中搜索以 string 開頭的命令 ,并獲取它的所有參數(shù) |
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
linux 可執(zhí)行文件與寫操作的同步問題(文件讀寫操作產(chǎn)生的鎖機制)
在哪種系統(tǒng)下都會有文件操作產(chǎn)生的同步問題,今天說說linux下讀寫文件的鎖機制。2013-10-10centos7利用yum安裝lnmp的教程(linux+nginx+php7.1+mysql5.7)
lnmp相信不用多介紹了,大家應該都知道,下面這篇文章主要給大家介紹了關于centos7利用yum安裝lnmp(linux+nginx+php7.1+mysql5.7)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2018-03-03使用Apache HttpClient執(zhí)行GET、POST、PUT和DELETE請求的操作方法
Apache HttpClient 是一個功能強大且靈活的庫,用于在Java中處理HTTP請求,本教程將演示如何使用Apache HttpClient來執(zhí)行GET、POST、PUT和DELETE請求,感興趣的朋友跟隨小編一起看看吧2024-12-12Linux環(huán)境使用crontab命令設置定時周期性執(zhí)行任務【含php執(zhí)行代碼】
這篇文章主要介紹了Linux環(huán)境使用crontab命令設置定時周期性執(zhí)行任務,結(jié)合實例形式較為詳細的分析了crontab命令的功能、應用場景及相關操作注意事項,并附帶了php執(zhí)行代碼供大家參考,需要的朋友可以參考下2019-07-07