用於搜尋並突出顯示終端緩衝區中文字的 Bash 腳本命令

用於搜尋並突出顯示終端緩衝區中文字的 Bash 腳本命令

我需要模擬選擇(突出顯示)終端緩衝區中的文字。它已經過去很久了,所以所有 grep/awk/sed/重定向的東西都不相關。另外,我不希望在標準輸出格式化期間突出顯示它。我需要它以未突出顯示的方式進入標準輸出,然後突出顯示它。模擬選擇。

這是場景...

Bash 腳本呼叫「ls -1」並將下列內容輸出到 stdout,然後輸出到終端緩衝區?

$ ls -1
a.txt
b.txt
c.txt

現在我需要一個可以放入 Bash 腳本中的命令來尋找並突出顯示“b.txt”。

喜歡:

$ termsearch b.txt
a.txt
[b.txt]
c.txt

其中“termsearch”是我認為我需要的組合命令,它將 b.txt 轉換為白色背景的黑色文字(突出顯示),其餘文字為黑色背景白色。我認為問題在於您無法像這樣真正編輯緩衝區並更改文字樣式。

我可以互動地使用螢幕來尋找“b.txt”,但它沒有突出顯示(主要目標),而且我不知道是否可以編寫螢幕命令腳本。所以我已經放棄銀幕了。腳本命令只是將標準輸出轉儲到文件,但我不想搜尋文件。我需要搜尋終端緩衝區並在螢幕上突出顯示結果,而無需更多標準輸出。我想要的已經出來了,只是需要突出顯示。

我認為 ncurses 是可行的方法,但我從未用它編寫過程式碼,而且它看起來很複雜。因此,在我深入研究之前,我想問是否有人可以想出另一種方法來做到這一點,並驗證 ncurses 甚至可以做我想做的事情。

答案1

簡短:不,你不能

更長:你不能這樣做的原因是終端通常不允許程式複製文本他們的螢幕。可以透過迂迴路徑讓 GUI 應用程式從終端螢幕選擇文本,然後您知道文字是什麼, 和在哪裡是的,原則上您可以在終端機中發出命令,告訴它使用任何顏色重新繪製螢幕的該部分。但這只是假設(除非有人最近編寫了一個程式來做到這一點)。

順便說一句,一旦文字滾動離開可見螢幕,終端也不會對其進行修改。

答案2

我會用vim.

對於你的具體情況,我會做

vim .

然後vim將向我顯示一個窗口,其中包含目錄中的所有文件。我可以使用 進行搜索/,然後按 來開啟文件Enter

只需確保搜尋突出顯示已啟用

:set hlsearch

對於不同的命令,也許這就足夠了:

echo "one\ntwo\nthree" | vim -

相關內容