[bash] Bash에서 굵은 텍스트를 어떻게 출력합니까?

화면에 텍스트를 인쇄하는 Bash 스크립트를 작성 중입니다.

echo "Some Text"

텍스트 형식을 지정할 수 있습니까? 대담하게하고 싶습니다.



답변

가장 호환 가능한 방법은 tput터미널에 보낼 올바른 시퀀스를 찾는 것입니다 .

bold=$(tput bold)
normal=$(tput sgr0)

당신은 변수 사용할 수 있습니다 $bold$normal형식 일에를 :

echo "this is ${bold}bold${normal} but this isn't"

준다

이것은 대담 하지만 이것은 아닙니다


답변

문자열에 스타일을 적용하려면 다음과 같은 명령을 사용할 수 있습니다.

echo -e '\033[1mYOUR_STRING\033[0m'

설명:

  • echo -e--e옵션은 이스케이프 된 (백 슬래시) 문자열이 해석됨을 의미합니다.
  • \ 033- 이스케이프 된 시퀀스는 스타일의 시작 / 끝을 나타냅니다.
  • 소문자 m- 시퀀스의 끝을 나타냅니다
  • 1- 굵은 체 속성 (자세한 내용은 아래 참조)
  • [0m- 모든 속성, 색상, 서식 등을 재설정합니다.

가능한 정수는 다음과 같습니다.

  • 0- 보통 스타일
  • 1- 굵게
  • 2- 희미
  • 3- 이탤릭체
  • 4- 밑줄
  • 5- 깜박임
  • 7-
  • 8- 보이지 않는

답변

bash가 vt100 호환 터미널에서 실행 중이며 사용자가 서식 지원을 명시 적으로 해제하지 않은 것으로 가정합니다.

먼저 옵션을 echo사용하여 에서 특수 문자에 대한 지원을 설정하십시오 -e. 나중에 ESC[1m다음과 같이 ansi escape sequence를 사용하십시오 .

echo -e "\033[1mSome Text"

ansi escape sequence에 대한 자세한 내용은 여기를 참조하십시오 : ascii-table.com/ansi-escape-sequences-vt-100.php


답변

이론적으로 그렇게 :

# BOLD
$ echo -e "\033[1mThis is a BOLD line\033[0m"
This is a BOLD line

# Using tput
tput bold
echo "This" #BOLD
tput sgr0 #Reset text attributes to normal without clear.
echo "This" #NORMAL

# UNDERLINE
$ echo -e "\033[4mThis is a underlined line.\033[0m"
This is a underlined line. 

그러나 실제로는 대신 “고강도”색상으로 해석 될 수 있습니다.

(출처 : http://unstableme.blogspot.com/2008/01/ansi-escape-sequences-for-writing-text.html )


답변