上週曾經為了讓 racket 的互動式介面好用一點,寫了一個小工具,後來又遇到另一個命令列程式有類似的問題(ydict),所以就想要寫一個通用的版本,希望可以一次解決同樣的麻煩。也就是說,我想用類似下列的指令:
$ realineaddon cmd
就讓 cmd 獲得 readline 的功能。後來寫到一半,遇到幾個問題點,本來要開始翻查 man page ,但念頭一轉,我應該不是第一個想作這件事的人吧?找了一下,果然發現 rlwrap 這個好物,rlwrap 不只有我想要的功能,作者還額外提供了:
$ realineaddon cmd
就讓 cmd 獲得 readline 的功能。後來寫到一半,遇到幾個問題點,本來要開始翻查 man page ,但念頭一轉,我應該不是第一個想作這件事的人吧?找了一下,果然發現 rlwrap 這個好物,rlwrap 不只有我想要的功能,作者還額外提供了:
- cmd 可以是 terminal-based program。作者以 pseudo terminal 的方式來傳遞輸入輸出,而不只是單純的 pipe。
- 支援 filter(須以 Perl 撰寫模組)。讓使用者攔截輸入、輸出...可以為文字介面程式操作帶來更多可能性。
rlwrap 的程式碼可讀性也很高,綜合了創意、實作完成度,實在是小程式的精品啊!:-)
留言
張貼留言