Kann tput mit kombinierten Funktionen verwendet werden?

Kann tput mit kombinierten Funktionen verwendet werden?

Wenn ich beispielsweise das Präfix für fettes Grün haben möchte, könnte ich Folgendes tun Green=$(tput bold; tput setaf 2). Dadurch würde $Green auf "\E[1m\E[32m" gesetzt. Auf einem Ansi-Terminal hätte es aber genauso gut "\E[1;32m" sein können.

Kann dies mit tput gemacht werden, oder verlange ich zu viel?

Antwort1

Nein, tput wird dies (normalerweise) nicht tun, da Sie wahrscheinlich nur die vordefinierten/standardmäßigen Terminalfunktionen verwenden, die diese Kombination nicht haben.

Mit ncurses könnten Sie Ihre eigene Terminalbeschreibung mit einer benutzerdefinierten Fähigkeit definieren, und tput würde damit arbeiten.

So etwas würde die Farben kombinieren:

infocmp -x >foo
printf '\tfgbg=\\E[3%p1%;4%p2%dm,\n' >>foo
sudo tic -x foo

Dann (das Beispiel ist für 8 Farben)

tput fgbg 4 0

würde den Vordergrund auf blau und den Hintergrund auf schwarz setzen. Es gibt jedoch viele Möglichkeiten. Die Verwendung der vordefinierten Funktionen erfordert weniger Aufwand.

Antwort2

Eine andere Sichtweise ist, dass man weiß, dass mankann sogarSteuersequenzen auf diese Weise zu kombinieren, ist eine Sache, die nur für die jeweilige Terminalfamilie gilt und nicht das Termcap/Terminfo-Modell ist. Während das 44 Jahre alte ECMA-48-Modell für Steuersequenzen heutzutage weit verbreitet ist, sind Termcap/Terminfo so konzipiert, dass es Terminaltypen zulässt, die sich nicht daran halten. Es ist nicht so, dass man Steuersequenzen tatsächlich immer auf diese Weise kombinieren kann.

verwandte Informationen