Readline бібліотека приймає \001і \002(ASCII SOH і STX ) в недрукованих текстових роздільників. Вони також працюють у будь-якій програмі, що використовує лінію читання .
З lib/readline/display.c:243в Баш вихідного коду:
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'. */
Баш -специфічні \[і \]які фактично переведені на \001і \002на y.tab.c:7640.
Примітка. Якщо ви використовуєте bash ' printfабо echo -e, і якщо у вашому тексті є \001або \002безпосередньо перед числом, ви потрапите на баш- помилку, яка змушує його з'їсти одну цифру занадто багато при обробці восьмеричних втеч - тобто \00142буде інтерпретуватися як восьмерична 014 (далі - ASCII "2"), а не правильний восьмеричний 01 (далі - ASCII "42"). З цієї причини використовуйте шістнадцяткову версію \x01і \x02замість цього.
echo -e "\001\e[31m\002RED"працює як очікувалося. Спасибі!