Terminal

會話崩潰後恢復失去的終端命令

  • November 13, 2017

幾天前,我正在使用 Guake 執行一個相當長的命令(下載一個帶有wget復雜選項的網站)。我在手術完成之前暫停了我的筆記型電腦,並且幾天沒有使用它。不幸的是,我的電池沒電了。再次登錄後,該命令沒有出現在.bash_history文件中,所以在使用.

有沒有辦法可以恢復這個命令?它可能寫在其他地方嗎?Guake 文件夾中似乎沒有與 bash 歷史記錄等效的內容。

不,您可能無法恢復該命令。預設情況下,~/.bash_history僅當您退出 shell 會話時才會寫入該文件。這是Bash Manual中的相關段落:

當一個啟用了歷史的 shell 退出時,最後$HISTSIZE幾行從歷史列表複製到名為$HISTFILE. 如果histappend設置了 shell 選項(請參閱Bash Builtins),則將這些行附加到歷史文件中,否則將覆蓋歷史文件。如果HISTFILE未設置,或者如果歷史記錄文件不可寫,則不保存歷史記錄。保存歷史記錄後,歷史記錄文件被截斷為不超過$HISTFILESIZE行。如果HISTFILESIZE未設置或設置為 null、非數值或小於零的數值,則不會截斷歷史文件。

也就是說,如果您想避免這種情況在未來發生,您可以採取一些措施。您可能希望將以下內容添加到您的~/.bash_profile:

shopt -s histappend
export HISTSIZE=-1
export HISTFILESIZE=-1
PROMPT_COMMAND='history -a;history -n'

有關此主題的進一步討論,請參閱以下文章:

引用自:https://unix.stackexchange.com/questions/403889