Linux

是否可以像這張圖片一樣在 linux 控制台上覆蓋彩色文本?

  • August 20, 2017

我為各種需求做了很多 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 tputman 5 terminfo。對於後者,您尤其需要向下滾動到Predefined Capabilities部分。

基於terminfo的螢幕操作可能有更高級別的抽象,但如果您有相對簡單的要求tput,這是一個不錯的選擇。(我相信tput是此處另一個答案中提到的ncurses包的一部分。)

**編輯:**我應該補充一點,因為聽起來你想要在所有螢幕上顯示其中的一些功能,你可以通過編寫一個tput如上所述使用的 shell 腳本並PROMPT_COMMAND在該腳本中指向環境變數來完成此操作,這樣每次你的提示被刷新。如果您想要更頻繁地刷新,那麼您必須讓一些程序在後台執行,同時仍連接到您的螢幕。這不僅僅是我在這個答案中試圖咬掉的。

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