As seqüências de escape têm muito em comum com o conceito de comunicação fora da banda :
Às vezes, também é usado para descrever quais comunicações as pessoas chamam de caracteres shift, como o ESC que lidera as seqüências de controle para muitos terminais ou os indicadores de mudança de nível nos antigos códigos Baudot de 5 bits.
Digamos que você esteja transferindo arquivos por uma porta serial e negocie com o computador do outro lado: "OK, aqui está o arquivo". Como no caso geral, todos os caracteres podem ser caracteres válidos (se for um arquivo ASCII), você tem alguns problemas:
- Como você sabe onde fica o final do fluxo?
- Alguns esquemas usam ASCII NUL (zero) para finalizar, como strings em alguns idiomas, mas você não pode ter esse caractere no arquivo. Isso não é permitido em algumas configurações, como transferências de arquivos. Zero pode ser um caractere válido.
- Você pode enviar o tamanho esperado primeiro, mas e se precisar abortar?
Várias pessoas ao longo da história da computação implementaram muitos métodos diferentes para contornar esse problema.
No caso de strings literais em uma linguagem de programação, é um problema semelhante. A primeira citação diz "aqui vem a string - comece a ler até obter outra citação". Obviamente, você tem o problema de enviar um caractere de citação, então eles inventaram a sequência de escape da barra. Se você vir uma barra e depois uma citação, é uma citação literal, não o fim da sequência. Infelizmente, você acabou de engolir uma aranha para comer uma mosca, porque agora você não pode enviar a combinação literal de aspas. Assim, você pode escapar de uma barra com outra barra. Então barra-barra significa barra, barra-cotação significa cotação. Isso permitiu que eles usassem barras para outros caracteres não imprimíveis ou difíceis de imprimir, como retornos de carro, linhas de alimentação, guias etc.