나는 이것을 가지고있다:
ql_gray='\033[1;30m'
ql_magenta='\033[1;35m'
ql_cyan='\033[1;36m'
ql_orange='\033[1;33m'
ql_green='\033[1;32m'
ql_no_color='\033[0m'
나는 다음과 같이 사용합니다 :
echo "${ql_magenta}quicklock: could not acquire lock with name '${qln}'${ql_no_color}."
하지만 나는 그것을 이해합니다:
\033[1;35mquicklock: could not acquire lock with name '/Users/me/.quicklock/locks/_oresoftware.lock'\033[0m.
제어 문자를 인식하려면 일부 플래그를 설정해야 합니까?
최종 사용자가 제어 문자를 인식할 수 있는지 확인할 수 있는 플래그가 있습니까? 인식되지 않으면 위의 설정을 다음과 같이 설정할 수 있습니다.
ql_gray=''
ql_magenta=''
ql_cyan=''
ql_orange=''
ql_green=''
ql_no_color=''
Bash 버전 3 이상을 지원해야 합니다.
답변1
이를 수행하는 휴대용 방법은 다음을 사용하는 것입니다.tput
:
ql_gray=$(tput setaf 7)
ql_magenta=$(tput setaf 5)
ql_cyan=$(tput setaf 6)
ql_orange=$(tput setaf 3)
ql_green=$(tput setaf 2)
ql_no_color=$(tput sgr0)
이는 현재 터미널 설정을 고려합니다. 공식 색상 목록은 다음 위치에 문서화되어 있습니다.terminfo(5)
맨페이지그러나 실험이 필요할 수 있습니다. 예를 들어 위 목록에서 7은 공식적으로 흰색(그러나 대부분의 터미널에서는 밝은 회색으로 끝남), 3은 공식적으로 노란색(그러나 대부분의 터미널에서는 진한 노란색 또는 주황색으로 나타남)입니다. TERM=dumb
색상을 호출하기 전에 설정하여 색상을 비활성화 할 수 있습니다 tput
.
답변2
bash가 문자열의 이스케이프 시퀀스를 해석하도록 해야 합니다. 다음 방법 중 하나를 사용할 수 있습니다.
echo -e "${ql_gray}..."
printf "%b\n" "${ql_gray}..."
또는 변수를 설정할 때 변수를 평가합니다.
ql_gray=$'\033[1;30m'
그 다음에:
echo "${ql_gray}..."
printf "%s\n" "${ql_gray}..."
답변3
이 플래그를 사용하면 사용하는 대신 제어 문자를 인식합니다 echo
.echo -e
printf
작동할 수도 있습니다. 분명히 POSIX입니다.