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


241

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

echo "Some Text"

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

답변:


427

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

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

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

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

준다

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


2
꽤 근사하다. 올바르게 이해하면 이스케이프 삽입과 동일하지만 VT100이 아닌 다른 터미널에서 작동합니다.
JamesRat

맞습니다-TERM 값에 따라 적절한 코드를 찾습니다.
psmears

2
텍스트에 밑줄을 그어야하는 경우 변수를 추가 할 수 있습니다. 주석 표시에서 백틱이 제거됩니다. 답변에 동일한 형식을 사용하십시오. UNDERLINE =tput smul
jayem

3
tput함께 멋진 명령입니다 명령의 많은 여러 가지 작업.
Drew Noakes

OP 가하는 것과 비슷한 것이지만 motd파일을 사용하려고 합니다. 해당 인스턴스에서 $bold$normal변수를 어떻게 / 어떻게 정의 합니까?
Matt

74

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

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

설명:

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

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

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

1
좋은 설명입니다. 기능이 [0m제공 하는 기능을 둘러
Jeremy

그래도\033[0m
Jeremy

1
3-이탤릭체 , 최소한 곤창
David Tabernero M.

Strikethrough가 Ubuntu 및 기타 인기있는 플랫폼에서 지원되기를 바랍니다.
다크 스타 1

45

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


감사. 이스케이프 시퀀스의 다른 목록을 찾았지만 연결 한 것이 매우 광범위합니다!
JamesRat

18
문자열 끝에서 굵게 서식을 중지하는 것을 잊지 마십시오. echo -e "\033[1mSome Text\033[0m"그렇지 않으면 터미널의 다음 줄도 굵게 표시됩니다.
mems

이 솔루션은 PHP-CLI에서도 작동하며 다른 솔루션에 비해 유리합니다.
David

당신은 문제가 기억이 있다면 \033당신이 사용할 수있는 \e것처럼echo -e "\e[1msome text\e[0m"
펠리페 알바레즈

1
진수 및 이스케이프 시퀀스 JS (JavaScript)를 허용한다
팻 웃음

14

이론적으로 그렇게 :

# 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 )

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.