Shell

有沒有像貓一樣有歷史的東西?

  • September 30, 2018

這是關於一個迭代工作的程序 - 從標準輸入獲取輸入並將結果傳遞給標準輸出。有一組需要傳遞給該程序的已知文本,我已將它們放入文件中begin.txt。所以我可以設置一個管道

cat begin.txt - | myprogram

問題稍後出現 - 如果我想發送我已經輸入的內容(稍作修改),箭頭不起作用,因為沒有歷史記錄cat

  1. 因此,我正在尋找可以保留每行歷史記錄的東西。

最初我嘗試過vim:.! myprogram但是在執行條目(傳遞的文本)myprogram之後退出,然後它的狀態失去了。我需要一種方法來保持程序工作,直到傳遞我的文本/命令。

  1. 是否有可能以vim這種連續方式在管道中充當過濾器的方式執行?

使用rlwrap. 該rlwrap實用程序包裝了您使用它的任何實用程序,以便它獲取 ReadLine 歷史記錄(以及一些 ReadLine 編輯功能,例如您在bash提示符下習慣的功能)。它將歷史記錄儲存在下的文件中$RLWRAP_HOME(或者$HOME如果未設置該變數)。

有了rlwrap,你就可以做到

rlwrap cat begin.txt - | myprogram

下次執行此程序時,您將擁有一個基本歷史記錄,您可以使用您Up-arrowDown-arrow鍵滾動該歷史記錄。預設情況下,歷史記錄將儲存在~/.cat_history.

有關詳細資訊,請參閱rlwrap( man rlwrap) 的手冊。

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