나는 쉘에서 텍스트의 배경을 강조하기 위해 다음 방법을 사용해 왔습니다.
tput smso;printf " TEXT ";tput rmso;
를 사용하지 않고 어떻게 동일한 목표를 달성할 수 있습니까 tput
(printf의 색상과 같은 형식 지정을 의미함 \e[0m
)?
답변1
이스케이프 시퀀스는 터미널에 따라 다를 수 있습니다. 이는 tput
.tputs를 사용하여 변수 값을 기반으로 데이터베이스에서 올바른 이스케이프 시퀀스를 찾습니다 $TERM
.
내 터미널에서:
$ tput smso | sed -n l
\033[3m$
$ tput rmso | sed -n l
\033[23m$
그래서 나는 이것을 할 수 있습니다 :
$ printf '\033[3m%s\033[23m\n' "stand out"
하지만 이것이 다른 터미널에서도 작동하는지 확실하지 않습니다.
매번 호출 하고 싶지 않다면 tput
한 번 실행하고 출력을 저장할 수 있습니다.
smso=$(tput smso) rmso=$(tput rmso)
printf '%s\n' "${smso}stand out${rmso}"
이것은 smso
"실행 모드 하이라이트"이며 많은 터미널이 텍스트를 돋보이게 하기 위해 역방향 비디오를 사용하지만 역방향 비디오에서는 작동하지 않습니다. tput rev
취소하여 비디오를 반전시키려는 경우 tput sgr0
, 배경색을 설정하려면 tput setab 4
ANSI 색상 코드를 사용하십시오(여기서 4는 ANSI 색상 파란색 숫자).