tput을 결합 기능과 함께 사용할 수 있나요?

tput을 결합 기능과 함께 사용할 수 있나요?

예를 들어 굵은 녹색 접두사를 원할 경우 다음과 같이 할 수 있습니다 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는 이 모델을 따르지 않는 터미널 유형을 허용하도록 설계되었습니다. 실제로 이러한 방식으로 제어 시퀀스를 결합하는 것이 항상 가능한 것은 아닙니다.

관련 정보