[英]Can I push/pop attributes with tput?
在這個問題的答案中,它使用了以下內容(簡化):
echo "this is $(tput bold)bold$(tput sgr0) but this isn't"
但是那個tput sgr0
重置了所有的文本屬性。
我想要 output 彩色文本,其中只有一部分是粗體。 所以我想要這樣的東西:
echo "$(tput setaf 1)this is red; $(tput bold)this is bold; $(tput unbold)this is red, but not bold"
但是tput unbold
不是問題。
有沒有辦法推送/彈出終端屬性,以便我可以執行以下操作?
echo "$(tput setaf 1)this is red; $(tput push; tput bold)this is bold; $(tput pop)this is red, but not bold"
否 - tput
沒有推送/彈出的概念。 Just set :就像雙關語一樣, tput
是比tset
更通用的工具,如手冊頁中所述:
- 一年后,SVr3 用一個更廣泛的程序取代了它,該程序的init和reset子命令(超過程序的一半)是從 Eric Allman 編寫的 BSD
tset
的重置功能中合並的。
tput
與 push/pop 完全不同,因為它必須依賴於詢問終端當前的視頻屬性是什么(只有少數終端可以這樣做)。
一些終端可以/能夠做到這一點,例如, XTerm Control Sequences中提到的 DEC VT420 的DECRQSS控件。 大多數不這樣做(甚至將其限制為 xterm 模仿器)。
tput
與終端功能一起工作; terminfo(5)中沒有預定義的處理堆棧。
這並不是說有人可能會開發像tput
這樣的應用程序,它可以與支持堆棧的終端一起工作,通過支持推送/彈出或設置/獲取控件。 (xterm 兩者都做)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.