의 readline 라이브러리는 받아 \001
와 \002
(ASCII의 SOH 및 STX 인쇄 할 수없는 텍스트 구분 기호로). readline 을 사용하는 모든 응용 프로그램에서도 작동합니다 .
에서 lib/readline/display.c:243
의 bash는 소스 코드 :
243 /* Current implementation:
244 \001 (^A) start non-visible characters
245 \002 (^B) end non-visible characters
246 all characters except \001 and \002 (following a \001) are copied to
247 the returned string; all characters except those between \001 and
248 \002 are assumed to be `visible'. */
bash는 특이 \[
하고는 \]
사실에 번역 \001
과 \002
에서 y.tab.c:7640
.
참고 : 사용하는 경우 bash는 의를 printf
하거나 echo -e
, 당신의 텍스트가있는 경우 \001
또는 \002
즉시 번호 앞에, 당신은 칠 것이다 배쉬 진수 이스케이프 처리 할 때이 한 자리에서 너무 많이 먹는 원인이 버그 - 즉, \00142
진수로 해석됩니다 올바른 8 진수 01 (ASCII "42") 대신 014 (ASCII "2")가옵니다. 이러한 이유로 16 진수 버전 \x01
을 \x02
사용하십시오.
echo -e "\001\e[31m\002RED"
예상대로 작동합니다. 감사!