shell進程會在其會話中保存此前用戶提交執行過的命令,可以用它來重複執行命令;包括關機之前的指令。在exit之前,你所操作的歷史命令都是儲存在內存中,所以你只需要history就能找到在這之前的命令,exit之後,內存中的歷史命令會保存在.bash_history中,以便再次登錄能夠查看之前操作的歷史命令。
現在就讓我們看看history命令的具體用法
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps [arg]
-c 清空歷史命令
-d offset 刪除歷史命令中的第offset個命令
n 顯示最近的n條命令
-a 追加本次會話新執行的命令歷史列表中至歷史文件
-r 讀取歷史文件附加到歷史列表
-w 保存歷史列表到指定的歷史文件
-n 讀取歷史文件中未度過的行到歷史列表
-p 展開歷史參數成多行,但不存在歷史列表中
-s 展開歷史參數或行附加到歷史列表後
還有歷史命令相關的環境變量
HISTSIZE 歷史命令記錄的數量
HISTFILE 指定歷史命令文件(默認爲~/.bash_history)
HISTFILESIZE 命令歷史文件記錄歷史的數量
HISTGNORE="str1:str2*" 忽略str1,str2開頭的歷史
HISTCONTROL
ignoredups(默認) :忽略重複的命令,注:連續相同的爲重複
igonrespace :忽略所有空白開頭的命令
igonreboth :二者合一
erasedips :刪除重複命令
基於歷史命令的一些命令,及用法
重複前一個命令
1、向上方向鍵
2、!!
3、! -1
4、ctrl +p
!:0 執行前一條命令(去除參數)
ctrl+n 顯示當前歷史命令中的下一條命令
ctrl+j執行當前命令
!n 執行歷史命令中第n條歷史命令
!-n 執行歷史命令中倒數n條歷史命令
!string 重複前一個一“string”開頭的命令
!?string 重複前一個包含“string”的命令
!string:p 僅打印歷史命令但不執行
!$:p 打印輸出!$(上一個命令的最後一個參數)的內容
! :p 打印輸出!(上一條命令所有參數)的內容
^string 刪除上一條歷史命令中第一個string
^string1^string2 將上一條歷史命令中的第一個string1替換爲string2
!:gs/string1/string2 將上一條歷史命令中所有的string1替換爲string2
ctrl + r 搜索歷史命令
ctrl + g 退出歷史搜索模式
重新調用前一個命令中最後一個參數:!$