當前位置: 首頁>>技術教程>>正文


bash – 如何手動保存終端曆史記錄?

, , ,

問題描述

據我了解,當終端退出時,曆史文件會更新。但有時我的電腦崩潰了,終端沒有幹淨地退出,然後我從我的曆史記錄中丟失了那些令人討厭的命令。我怎樣才能讓它立即刷新,這樣即使我的計算機出現故障,條目仍然會出現在那裏?目前我正在使用 this 解決方法,但我覺得應該有更好的方法。

我在 Ubuntu 12.10 上使用 gnome-terminal。

最佳方案

您從 Super-Users 站點提供的鏈接中的答案不一定被視為 history 命令默認行為的 ‘workarounds’。 bash shell 有一些理智的、開箱即用的默認行為。

我強烈建議閱讀 How can I avoid losing any history lines? 以解釋對 history 的這些修改正在做什麽。此外,還有一些合理的擔憂需要注意,為什麽這不是 history 命令的默認行為。

  • 性能 – 由於您使用 history -a 保存每個窗口中的每個命令,因此 .bash_history 文件可能會變得非常大,並且需要更多資源來加載 bash shell。這可能會導致更長的啟動時間(對於您的終端會話,而不是整個係統啟動本身。)。

  • 組織 -(來自上述文章)“同時交互式 shell(對於給定用戶)的曆史命令將交織在一起。因此,曆史不是一個保證命令的順序列表,因為它們在單個 shell 中執行。”

如果您擔心進一步保護 bash shell 和 . bash_history文件通過審計,看看這篇文章:How do I log history or “secure” bash against history removal?

有時(例如係統不穩定或電源故障),我發現以下命令很有用。

將以下行添加到您的 ~/.bashrc 文件中:

unset HISTFILESIZE
HISTSIZE=3000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

shopt -s histappend

請務必使用命令 source ~/.bashrc 獲取 .bashrc 文件

次佳方案

對問題“如何手動保存終端曆史記錄?”的最簡單、有效的答案:

history -a

也可能值得考慮切換到 zsh,它具有 setopt inc_append_history(“在執行之前保存每個命令”)。

這個問題也很相關:Is it possible to make writing to .bash_history immediate?

第三種方案

手動將 bash 曆史保存到文件:

history -w ~/history.txt
vim ~/history.txt

它將曆史記錄導出到一個名為 history.txt 的文件中。然後您可以使用您喜歡的編輯器查看它。

http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/ 複製的答案

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/11993.html,未經允許,請勿轉載。