
예를 들어, 굵은 녹색의 접두사를 원한다면 Green=$(tput bold; tput setaf 2)
. 그러면 $Green이 "\E[1m\E[32m")으로 설정됩니다. 그러나 Ansi 터미널에서는 "\E[1;32m""일 수도 있습니다.
tput으로 이 작업을 수행할 수 있습니까? 아니면 너무 많은 것을 요구하고 있습니까?
답변1
아니요, tput은 (일반적으로) 이 작업을 수행하지 않습니다. 해당 조합이 없는 사전 정의/표준 터미널 기능만 사용할 가능성이 높기 때문입니다.
ncurses를 사용하면 사용자 정의 기능으로 자신만의 터미널 설명을 정의할 수 있으며 tput이 이를 사용하여 작동합니다.
다음과 같은 것이 색상을 결합합니다.
infocmp -x >foo
printf '\tfgbg=\\E[3%p1%;4%p2%dm,\n' >>foo
sudo tic -x foo
그런 다음 (예는 8색의 경우입니다)
tput fgbg 4 0
전경을 파란색으로, 배경을 검정색으로 설정합니다. 그러나 많은 가능성이 있습니다. 사전 정의된 기능을 사용하면 노력이 덜 듭니다.
답변2
이것을 보는 또 다른 방법은 당신이심지어 할 수 있다이러한 방식으로 제어 시퀀스를 결합하는 것은 터미널 제품군에 특정한 것이며, 이는 termcap/terminfo 모델이 아닙니다. 제어 시퀀스를 위한 44년 된 ECMA-48 모델이 요즘 널리 퍼져 있지만, termcap/terminfo는 이를 따르지 않는 터미널 유형을 허용하도록 설계되었습니다. 실제로 항상 이러한 방식으로 제어 시퀀스를 결합할 수 있는 것은 아닙니다.