Чтобы немного уточнить комментарии Кена и Джонатана: побег здесь - это общая концепция.Это в основном подразумевает изменение интерпретации чего-либо.Экранирующий символ в ASCII происходит от машин телетайпа, где появление ESC изменило толкование следующего символа.Он одинаково используется многими терминалами.Например, появление ESC перед строкой [2J
приводит к тому, что строка (т. Е. Символы [
, 2
и J
) не отображаются на терминале, а интерпретируются каккоманда " очистить весь экран ".Таким образом, escape-символ изменил интерпретацию mode .
Однако прямого способа ввода ASCII-символа не существует (поскольку нажатие клавиши ESC на клавиатуре обычно меняет режим вваш редактор, терминал или что-то еще), и даже если вы можете, разрешенный набор символов языка C не включает его.Теперь вам нужен второй уровень побега: C имеет собственный символ для побега: \
.Это меняет значение следующего символа (ов).Например, обратный слеш прецедента изменяет значение (интерпретацию) следующего символа n
на новую строку.Кроме того, \x
(или \0
соответственно) позволяет синтаксическому анализатору C интерпретировать следующие два (три) символа как шестнадцатеричное (восьмеричное) число - вместо самих символов - и вставлять символ, соответствующий этому самому кодучисло.Поскольку код ASCII для escape имеет номер 27 (десятичный) или 1b (шестнадцатеричный) или 33 (восьмеричный) соответственно, вы генерируете управляющий символ ASCII в C на \x1b
или \033
.
Другими словами, вы сбегаете в C с помощью \
, чтобы сгенерировать escape-символ ASCII, который, в свою очередь, вызывает экранирование на вашем терминале.