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'. */
バッシュ固有\[と\]実際にに翻訳されている\001と\002でy.tab.c:7640。
注:あなたが使用している場合はbashをのprintfかecho -e、そして、あなたのテキストがある場合\001や\002、すぐに番号の前に、あなたがヒットよ、bashの進エスケープを処理するとき、それはあまりにも多くの一桁を食べるようになり、バグを- 、される\00142進として解釈されます014(ASCII "2"が続く)、正しい8進数01(ASCII "42"が続く)の代わりに。このため、代わりに16進バージョン\x01を\x02使用してください。
echo -e "\001\e[31m\002RED"期待どおりに動作します。ありがとう!