透過正規表示式對終端進行全域著色

透過正規表示式對終端進行全域著色

我知道許多程式都使用顏色 - (vim、ack、color-ls 等),但仍然有很多情況下您只能使用黑白。

有些腳本會根據正規表示式為輸出著色(即“使任何與'狗'匹配的東西變成紅色”),但這些腳本必須使用管道呼叫- 例如:“> cat myfile | color dogs red”,這對任何東西都是無用的互動的。

我正在尋找的是掛鉤終端模擬器(或實際執行此操作的終端)並為與給定正則表達式匹配的任何內容著色的東西,獨立於我目前使用的 shell 或程式。如果這也適用於 ncurses,那就太棒了。我有太多單色程序,如果我可以指定關鍵字列表以在出現或鍵入時突出顯示/著色,那就太好了。

我使用Guake控制台,它可能使用GNOME Terminal,我不知道GNOME是否已經有這個功能。

答案1

簡短版本是:為什麼,是的,您可以像任何其他程式一樣透過管道輸出 shell 的輸出。

從那裡,你可以使用任何你喜歡的東西,比如說

$ bash | sed "$(echo -e "s@dog@\e[31mdog\e[0m@g; s@more here@more here@g;")"

我想我應該添加我的“彩虹”。享受:

for((b=0;$b<8;b++)); do echo -ne "\e[4${b}m4$b : "; \
  for((f=0;$f<8;f++)); do echo -ne "\e[3${f}m3${f}"; done; echo -e "\e[0m"; done

答案2

我仍在尋找具有此功能的 Linux 終端模擬器,但對於那些在 macOS X 上閱讀本文的人:

  • 得到iTerm2(如果您在 OS X 上執行大量命令列工作,無論如何您都會需要這個),請轉到“設定 > 設定檔 > 進階”,然後按一下“觸發器”下的“編輯”。在那裡,您可以添加帶有正規表示式的觸發器,例如^.*\[ERROR\].*$,並將操作設為“突出顯示文字”,並將參數設為“紅色前景”之類的內容。

答案3

可能有比這更好的解決方案,但您也許可以使用 Expect 來完成一些簡單的事情:http://expect.nist.gov/。如果您不想使用 TCL,則可以使用許多其他程式設計/腳本語言的期望庫。

一般來說,TCL 用於自動化互動式程序,但也可以使它們具有互動性。

我會給你一些開始的程式碼,但我自己已經有一段時間沒有使用它了。

答案4

我很確定 KDE Konsole(至少 KDE3 版本)可以做到這一點,但我沒有看到 KDE4 中的支援。

用 grep 做這樣的事情:

grep -C 99999 --color <whatever>

這應該突出顯示匹配項,但具有足夠的上下文以構成整個文件。

相關內容