Программа, работающая в текстовом терминале / консоли, может манипулировать текстом, отображаемым в ее консоли, различными способами (сделать текст жирным, переместить курсор, очистить экран и т. Д.). Это достигается путем печати специальных последовательностей символов, называемых «escape-последовательности» (поскольку они обычно начинаются с Escape, ASCII 27).
Если стандартный вывод поступает на терминал, который понимает эти escape-последовательности, отображение терминала будет соответственно изменяться.
Если вы перенаправите стандартный вывод в файл, в файле появятся escape-последовательности (обычно это не то, что вам нужно).
Не существует полного стандарта для escape-последовательностей, но большинство терминалов используют последовательности, введенные VT100 , со многими расширениями. Это то, что понимают большинство терминалов под Unix / Linux (xterm, rxvt, konsole) и другие, такие как PuTTY.
На практике вы не будете напрямую жестко кодировать escape-последовательности в вашем программном обеспечении (хотя могли бы), а будете использовать библиотеку для их печати, такую как ncurses или GNU readline , упомянутые выше , Это позволяет совместимость с различными типами терминалов.