1. 命令行歷史:
在命令行中輸入命令,shell會記錄每一個執行過的歷史在內存中,當用戶退出時,shell會將記錄的命令歷史追加到當前用戶的~/.bash_history文件中。當用戶再次登錄時,shell會讀取該用戶家目錄的.bash_history文件
2. history命令:
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令歷史
-d offset: 刪除歷史中指定的第offset個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p: 展開歷史參數成多行,但不存在歷史列表中
-s: 展開歷史參數成一行,附加在歷史列表後
3. 歷史命令的用法:
使用上下鍵瀏覽從前執行的命令,按回車執行
ctrl-r來在命令歷史中搜索命令
(reverse-i-search)`’:
Ctrl+g:從歷史搜索模式退出
要重新調用前一個命令中最後一個參數
!$ 表示
Esc, .(點擊Esc鍵後鬆開,然後點擊 . 鍵)
Alt+ .(按住Alt鍵的同時點擊 . 鍵)
重複前一個命令
① 按上鍵並回車
② 輸入!!並回車
③ 輸入!-1並回車
④ Ctrl+p並回車
!:0 執行前一條命令(去除參數)
Ctrl + n 顯示當前歷史中的下一條命令,但不執行
Ctrl + j 執行當前命令
!n 執行history命令輸出對應序號n的命令
!-n 執行history歷史中倒數第n個命令
!string 重複前一個以“string”開頭的命令
!?string 重複前一個包含string的命令
!string:p 僅打印命令歷史,而不執行
!$:p 打印輸出 !$ (上一條命令的最後一個參數)的內容
!*:p 打印輸出 !*(上一條命令的所有參數)的內容
^string 刪除上一條命令中的第一個string
^string1^string2 將上一條命令中的第一個string1替換爲string2
4. 調用歷史參數:
command !^ 利用上一個命令的第一個參數做cmd的參數
command !$ 利用上一個命令的最後一個參數做cmd的參數
command !* 利用上一個命令的全部參數做cmd的參數
command !:n 利用上一個命令的第n個參數做cmd的參數
command !n:^ 調用第n條命令的第一個參數
command !n:$ 調用第n條命令的最後一個參數
command !n:m 調用第n條命令的第m個參數
command !n:* 調用第n條命令的所有參數調用歷史參數
command !string:^ 從命令歷史中搜索以 string 開頭的命令,並獲取它的第一個參數
command !string:$ 從命令歷史中搜索以 string 開頭的命令,並獲取它的最後一個參數
command !string:n 從命令歷史中搜索以 string 開頭的命令,並獲取它的第n個參數
command !string:* 從命令歷史中搜索以 string 開頭的命令,並獲取它的所有參數
5. 命令歷史相關環境變量:
HISTSIZE:命令歷史記錄的條數
HISTFILE:指定歷史文件,默認爲~/.bash_history
HISTFILESIZE:命令歷史文件記錄歷史的條數
HISTTIMEFORMAT=“%F %T “ 顯示時間
HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2開頭的歷史
控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups 默認,忽略重複的命令,連續且相同爲“重複”
ignorespace 忽略所有以空白開頭的命令
ignoreboth 相當於ignoredups, ignorespace的組合
erasedups 刪除重複命令
export 變量名="值“
存放在 /etc/profile 或 ~/.bash_profile