셸에서 텍스트 강조 표시

셸에서 텍스트 강조 표시

나는 쉘에서 텍스트의 배경을 강조하기 위해 다음 방법을 사용해 왔습니다.

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 4ANSI 색상 코드를 사용하십시오(여기서 4는 ANSI 색상 파란색 숫자).

관련 정보