Знак вопроса в квадрате - это символ замены Unicode. Консоль Linux напечатает это в двух случаях:
Последний уже давно присутствует в ядре, как видно из этой ссылки на console.c в 2.2.26 , которая имеет соответствующий комментарий:
1869 /* If the original code was a control character we
1870 * only allow a glyph to be displayed if the code is
1871 * not normally used (such as for cursor movement) or
1872 * if the disp_ctrl mode has been explicitly enabled.
1873 * Certain characters (as given by the CTRL_ALWAYS
1874 * bitmap) are always displayed as control characters,
1875 * as the console would be pretty useless without
1876 * them; to display an arbitrary font position use the
1877 * direct-to-font zone in UTF-8 mode.
1878 */
и устанавливается любым из две escape-последовательности :
1051 case 11: /* ANSI X3.64-1979 (SCO-ish?)
1052 * Select first alternate font, lets
1053 * chars < 32 be displayed as ROM chars.
1054 */
1055 translate = set_translate(IBMPC_MAP,currcons);
1056 disp_ctrl = 1;
1057 toggle_meta = 0;
1058 break;
1059 case 12: /* ANSI X3.64-1979 (SCO-ish?)
1060 * Select second alternate font, toggle
1061 * high bit before displaying as ROM char.
1062 */
1063 translate = set_translate(IBMPC_MAP,currcons);
1064 disp_ctrl = 1;
1065 toggle_meta = 1;
1066 break;
1040 case 10: /* ANSI X3.64-1979 (SCO-ish?)
1041 * Select primary font, don't display
1042 * control chars if defined, don't set
1043 * bit 8 on output.
1044 */
1045 translate = set_translate(charset == 0
1046 ? G0_charset
1047 : G1_charset,currcons);
1048 disp_ctrl = 0;
1049 toggle_meta = 0;
1050 break;
Последний (если TERM
- это linux
) можно записать как
tput rmpch
с помощью этой функции:
exit_pc_charset_mode rmpch S3 Exit PC character
display mode
или
tput sgr0
, но не , команды reset
или stty
.
Дополнительная литература:
rmpch