Gnu

是否可以保存“bc”命令行歷史記錄?

  • September 16, 2020

bash有一個方便的文件.bash_history,它保存命令的歷史記錄,並且在下次執行bash歷史記錄時會填充保存的命令。

是否可以以bc相同的方式將命令歷史記錄保存到文件中,然後在啟動時載入它以保留 bc 歷史記錄?

我嘗試閱讀GNU bc 手冊,其中提到readlinelibedit. 從ldd /usr/bin/bc我看到我的用途readlinereadline功能。這個功能是實現還是我需要修補?write_historyread_history``bc``bc

如果您對程序中內置的命令行編輯功能不滿意,可以通過rlwrap執行它。這是一個圍繞命令行處理器(REPL)的包裝器,可讓您在發送每一行之前對其進行編輯。Rlwrap 使用 readline 庫並為每個命令分別保存歷史記錄。

執行rlwrap bc不會為您做任何事情,因為 rlwrap 檢測到您bc想要進行自己的命令行編輯,因此 rlwrap 會自行關閉。由於您確實需要 rlwrap 的命令行編輯功能而不是底層命令,因此請執行

rlwrap -a bc

命令歷史記錄將保存在~/.bc_history.

依賴 rlwrap 而不是使用程序自己的 readline 集成的主要缺點是 rlwrap 不能做任何上下文相關的完成。例如,python頂層完成已知變數和欄位,但rlwrap python不能這樣做。由於 bc 似乎沒有任何自定義完成,rlwrap -a bc因此不會失去 bc 的功能。

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