是否可以像這張圖片一樣在 linux 控制台上覆蓋彩色文本?
我為各種需求做了很多 bash 腳本。最近我開始感到在它們之上實施各種指標的衝動。
在自動無人值守安裝腳本知道正在執行哪個操作期間會很酷。
另外.. 有一個狀態欄顯示實際進度的百分比可能會很好。
在 Linux(最好是 Debian)中有一些庫和命令,比如我的模型,用於操作終端輸出?
(以下命令是假模型,只是為了讓讀者理解)
txtoverlay -k head -c azure “MyString 在所有命令之上”
或者
txtovelay -k 尾 -c 綠色 -a 右"
$$ Completition: 57 % $$" 或者
txtovelay -k 帆布 -c 天藍色 -b 深藍色 -l 2 -t 5 -w 68 -h 50
生成類似以下圖形模型的東西?
甚至一些更複雜的疊加層..
基本上這個概念在 HTML 中可能是相同的,在主網頁上有一些 DIV,位置:固定
<div id="MyDiv1" style="position:fixed; color: #00ffff; top: 0px; left: 0px; padding: 10px"></div> <div id="MyDiv2" style="position:fixed; color: #00ff00; bottom: 0px; right: 0px; padding: 10px; text-align: right"></div>
並且在腳本期間不時地執行各種命令,例如:
document.getElementById("MyDiv1").innerHTML = "Step 5: Installing NET-TOOLS package in progress..<br>-------------------------" document.getElementById("MyDiv2").innerHTML = "[Completition: 57 % ]"
是的,你可以做這些事情。*僅關注如何將彩色文本放置在特定位置的問題,*一種直接但有點低級的路線是使用該
tput
實用程序。tput
有許多命令,在terminfo
數據庫的幫助下,操作終端螢幕。例如tput cup 23 4
,將游標移動到終端的第 23 行第 4 列。其他幾個例子:tput ed # clear to end of screen tput setaf 2 # set foreground color to bright green tput cubl # move cursor left one space tput rev # turn on reverse video mode tput sc # save the cursor position tput rc # restore the cursor position
您可能還會發現該實用程序的
stty
用途。例如,如果您想確定目前螢幕的尺寸,您可以這樣做stty size
。我之前為我的一些實用程序建構了一個粗略的“GUI”,將螢幕分成兩個部分。**頂部是固定高度的標題。底部包含(滾動)命令輸出。**我只使用 Bash 腳本和
tput
+來做到這一點stty
。我只是通過反複試驗發現了很多,但是網上有一些不錯的資源,例如http://linuxcommand.org/lc3_adv_tput.php見
man tput
和man 5 terminfo
。對於後者,您尤其需要向下滾動到Predefined Capabilities部分。基於terminfo的螢幕操作可能有更高級別的抽象,但如果您有相對簡單的要求
tput
,這是一個不錯的選擇。(我相信tput
是此處另一個答案中提到的ncurses包的一部分。)**編輯:**我應該補充一點,因為聽起來你想要在所有螢幕上顯示其中的一些功能,你可以通過編寫一個
tput
如上所述使用的 shell 腳本並PROMPT_COMMAND
在該腳本中指向環境變數來完成此操作,這樣每次你的提示被刷新。如果您想要更頻繁地刷新,那麼您必須讓一些程序在後台執行,同時仍連接到您的螢幕。這不僅僅是我在這個答案中試圖咬掉的。