簡體   English   中英

我可以使用 tput 推送/彈出屬性嗎?

[英]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 用一個更廣泛的程序取代了它,該程序的initreset子命令(超過程序的一半)是從 Eric Allman 編寫的 BSDtset的重置功能中合並的。

tput與 push/pop 完全不同,因為它必須依賴於詢問終端當前的視頻屬性是什么(只有少數終端可以這樣做)。

一些終端可以/能夠做到這一點,例如, XTerm Control Sequences中提到的 DEC VT420 的DECRQSS控件。 大多數不這樣做(甚至將其限制為 xterm 模仿器)。

tput與終端功能一起工作; terminfo(5)中沒有預定義的處理堆棧。

這並不是說有人可能會開發像tput這樣的應用程序,它可以與支持堆棧的終端一起工作,通過支持推送/彈出或設置/獲取控件。 (xterm 兩者都做)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM