Я смотрю на некоторый специфичный для Linux код, который выводит подобные:
\r\x1b[J>
к стандартному.
Я это понимаю <ESC>[J
представляет удаление содержимого экрана из текущей строки вниз, но что здесь делает?
Я также вижу следующее:
>user_input\n\r>
где user_input — текст, введенный пользователем. Но какова цель здесь?
Характер '\r'
является возврат каретки. Возвращает курсор в начало строки.
Часто используется в интернет-протоколах совместно с символом новой строки ('\n'
), чтобы отметить конец строки (большинство стандартов определяет его как "\r\n"
, но некоторые допускают неправильное решение). В Windows пара перевода строки с возвратом каретки также используется в качестве конца строки. В старой операционной системе Macintosh (до OSX) в качестве конца строки вместо перевода строки использовался один возврат каретки, в то время как в UNIX и UNIX-подобных системах (например, Linux и OSX) используется один перевод строки.
Управляющий персонаж \r
перемещает курсор (текстовый курсор.k.a) в крайнее левое положение в текущей строке.
От Википедия
Системы на основе ASCII или совместимого набора символов используют либо LF
(Перевод строки, ‘\ n’, 0x0A, 10 в десятичном виде) или CR (возврат каретки, ‘\ r’,
0x0D, 13 в десятичном виде) по отдельности или CR, за которым следует LF (CR + LF,
‘\ r \ n’, 0x0D0A). Эти символы основаны на командах принтера:
перевод строки показал, что одна строка бумаги должна выходить из
принтер, таким образом, дал указание принтеру продвинуть бумагу на одну строку, и
возврат каретки указывает, что каретка принтера должна вернуться в
начало текущей строки. Некоторые редкие системы, такие как QNX
до версии 4 использовался ASCII RS (разделитель записей, 0x1E, 30 в
десятичный знак) как символ новой строки.
FWIW — это часть управления кареткой — от управляющих слов мэйнфрейма до управления кареткой Windows / UNIX / FORTRAN. Управление кареткой может быть реализовано на уровне языка, как это делает FORTRAN, или в масштабе всей системы, как это делают UNIX и Windows.
\n
возникла из-за ограничений ранних пользовательских интерфейсов PDP — терминала tty. Пойди в музей, если хочешь увидеть.
Очень простой момент: разница между \ n \ r объясняется выше. Но все эти объяснения действительно говорят о том, что управление кареткой зависит от реализации.
[J
является частью escape-последовательностей ANSI и того, что они делают на «терминале, соответствующем стандартам».
DOS имел обыкновение иметь ANSI.SYS, чтобы обеспечить: цвета, подчеркивание, полужирный, используя эти последовательности.
http://ascii-table.com/ansi-escape-sequences.php
Хорошая ссылка на вопрос: what does some odd looking string in the output do?
\r
возврат каретки так же \n
перевод строки.