Articulo de referencia

Secuencia de escape

En informática , una secuencia de escape es una secuencia de caracteres que tiene un significado semántico especial basado en una convención establecida que especifica un prefij...

En informática , una secuencia de escape es una secuencia de caracteres que tiene un significado semántico especial basado en una convención establecida que especifica un prefijo de carácter de escape además de la sintaxis del resto del texto de una secuencia. [ 1 ] [ 2 ] Una convención puede definir cualquier código de carácter particular como prefijo de secuencia. Algunas convenciones usan un carácter normal, imprimible como la barra invertida (\) o el signo de ampersand (&). Otras usan un carácter no imprimible (también llamado carácter de control) como el escape ASCII .

Las secuencias de escape se remontan al menos al código Baudot de 1874. [ 3 ] [ 4 ] [ 5 ]

Ejemplos

Transmisión de datos

Un uso común de una secuencia de escape es eliminar caracteres de control de un flujo de datos para evitar que active su función de control por error. El carácter de control se reemplaza por un carácter de escape y uno o más caracteres subsiguientes. Tras escapar del contexto normal en el que el carácter de control habría provocado una acción, la secuencia se reemplaza por el carácter eliminado. [ 6 ] Para transmitir el carácter de escape, se envían dos copias. [ 7 ]

Texto literal

Las secuencias de escape se utilizan con frecuencia en literales de caracteres y cadenas para expresar caracteres que no se pueden imprimir o que entran en conflicto con la sintaxis de los caracteres o cadenas. Por ejemplo, es posible que los caracteres de control no estén permitidos en un archivo fuente o que tengan efectos secundarios indeseables si se introducen en un comando.

Una característica de C y de muchos lenguajes de programación influenciados por él es que el inicio de una secuencia de escape en dichos literales de texto está marcado por una barra invertida ( \). [ 8 ] [ 9 ] Ejemplos comunes de estas secuencias de escape al estilo C incluyen \r, \ny \tpara los caracteres de retorno de carro , salto de línea y tabulación , respectivamente. Para tener en cuenta el hecho de que usar un carácter imprimible para escape hace que ese carácter pierda su significado normal, \\se proporciona una secuencia de dos caracteres de barra invertida ( ) para expresar una sola barra invertida. También hay una secuencia de escape que expresa cualquier carácter por su valor de código ASCII . Por ejemplo, la barra invertida se puede expresar como \x5co \134, que especifican el valor del código del carácter en notación hexadecimal y octal , respectivamente. Del mismo modo, la e minúscula se puede expresar como \145y el dígito 7 como \067.

Una barra invertida seguida inmediatamente de un salto de línea (que necesariamente está fuera de un literal de cadena) no marca una secuencia de escape. En cambio, puede interpretarse como "Ignorar el salto de línea": el preprocesador de C une la línea con la siguiente. [ 10 ]

Citando escape

Cuando se necesita un carácter de escape dentro de una cadena literal, existen dos estrategias comunes:

  • Delimitador doble Por ejemplo, 'He didn''t do it.'[ 7 ]
  • Secuencia de escape secundaria : por ejemplo, el comando del símbolo del sistemaecho Cut^&Paste muestra "Cortar y pegar" escapando el operador ampersand con un circunflejo ( ^) [ 6 ].

En C y muchos lenguajes relacionados, el carácter de escape es la barra invertida ( \). El carácter de comilla simple se puede codificar como '\''ya que '''no es válido. Como un literal de cadena está delimitado por comillas dobles ( "), el contenido no puede contener una comilla doble a menos que se escape ( "\"") o mediante una secuencia que especifique el código del carácter de comilla doble ( \x22).

En Perl o Python 2 , la siguiente sintaxis no es válida:

"Nancy dijo "¡ Hola mundo ! " a la multitud."

Esto se puede solucionar insertando una barra invertida para escapar:

Imprime "Nancy dijo '¡Hola mundo!' a la multitud."

Alternativamente, lo siguiente utiliza "\x" para indicar que los dos caracteres subsiguientes son dígitos hexadecimales; "22" es el valor ASCII hexadecimal para las comillas dobles.

Imprime "Nancy dijo '¡Hola Mundo!' a la multitud."

C , C++ , Java y Ruby permiten los mismos dos estilos de escape con barra invertida. PostScript y el formato de texto enriquecido (RTF) también utilizan escapes con barra invertida. La codificación quoted-printable utiliza el signo igual como carácter de escape. URL y URI utilizan codificación porcentual para entrecomillar caracteres con un significado especial, como los caracteres no ASCII.

Secuencias de escape ANSI

El terminal VT52 utilizaba comandos de dígrafos simples como escape-A. Sin el prefijo del carácter de escape, Asimplemente significaba la letra A, pero como parte de la secuencia de escape escape-A, tenía un significado diferente. El VT52 también admitía parámetros. No era un lenguaje de control directo codificado como sustitución.

El terminal VT100 posterior implementó el estándar de secuencias de escape ANSI más sofisticado (ahora ECMA-48) para funciones como el control del movimiento del cursor, el conjunto de caracteres y las mejoras de visualización. La serie HP 2640 contaba quizás con las secuencias de escape más elaboradas para los modos de bloque y carácter, la programación de teclas y sus etiquetas virtuales, los vectores gráficos e incluso el guardado de datos en cintas o discos.

En Windows (y MS-DOS ), se puede usar una utilidad, ANSI.SYS , [ 11 ]$e para habilitar la compatibilidad con secuencias de escape ANSI. En DOS, mediante el comando PROMPT , y en Windows de 16 bits, mediante una ventana de comandos. En sistemas Unix y similares , las secuencias de escape ANSI generalmente son compatibles con el intérprete de comandos . El auge de las aplicaciones con interfaz gráfica de usuario (GUI) ha reducido el uso de secuencias de escape, pero aún se puede ofrecer la posibilidad de crear aplicaciones de texto a pantalla completa.

Secuencia de control

Una secuencia de control es una secuencia de caracteres que cambia el estado de un periférico de computadora en lugar de transmitir la información normal que representan dichos caracteres. En una secuencia de escape ANSI, el prefijo de la secuencia de escape, llamado introductor de secuencia de control , puede ser ASCII ESC (decimal 27) seguido de [o CSI (decimal 155). Algunos sistemas notables que no utilizaban un carácter de escape para las secuencias de control son:

  • El conjunto de comandos de Hayes define una secuencia de control modal+++ , , que cambia del modo de comando al modo en línea. Para asegurar que la secuencia se interprete como una secuencia de control en lugar de estar integrada en el contenido, el remitente interrumpe la comunicación durante un segundo antes y después de enviar +++. Cuando el módem detecta la condición, cambia del modo normal (envío de caracteres al teléfono) a un modo de comando en el que los datos se interpretan como un comando. El envío del comando O cambia de nuevo al modo normal. [ 12 ] [ 13 ] [ 14 ] [ 15 ]
  • Secuencias de control de terminal Data General , [ 16 ] [ 17 ] [ 18 ] pero a menudo todavía se las llamaba secuencias de escape, y el uso muy común de "escapar" caracteres especiales en lenguajes de programación y parámetros de línea de comandos hoy en día a menudo utiliza el carácter de "barra invertida" para comenzar la secuencia.

Las secuencias de escape en las comunicaciones se utilizan comúnmente cuando una computadora y un periférico tienen un solo canal a través del cual enviar información de ida y vuelta (por lo que las secuencias de escape son un ejemplo de señalización en banda ). [ 19 ] [ 20 ] Eran comunes cuando la mayoría de las terminales tontas usaban ASCII con 7 bits de datos para la comunicación, y a veces se usaban para cambiar a un conjunto de caracteres diferente para caracteres "extranjeros" o gráficos que de otro modo estarían restringidos por los 128 códigos disponibles en 7 bits de datos. Incluso las terminales relativamente "tontas" respondían a algunas secuencias de escape, incluidas las impresoras Teletype mecánicas originales (en las que se basaban los "teletipos de vidrio" o VDU) respondían a los caracteres 27 y 31 para alternar entre los modos de letras y cifras.

Tecla Esc

Muchos teclados de ordenador tienen una tecla Esc ( abreviatura de escape ), aunque generalmente no se usa para introducir una secuencia de escape. El editor de texto vi usa la tecla para salir del modo de entrada. [ 21 ] Algunas aplicaciones usan la tecla para cancelar una operación o navegar hacia arriba en un nivel de un contexto anidado. [ 22 ]

Véase también

Referencias

  1. "Secuencia de escape (concepto general)" .
  2. "Caracteres" . Los tutoriales de Java .
  3. "¿Qué es ASCII? The Economist lo explica" . The Economist . 9 de junio de 2013.
  4. "Código Baudot y CCITT" . El código Baudot, inventado en 1870 y patentado en 1874 por J. Baudot, es […]
  5. "Guía para el uso de conjuntos de caracteres en Europa" . Elementos C0 y C1 de caracteres de control [...] un código de 5 bits patentado por Jean-Maurice-Emile Baudot (1845-1903) en 1874.
  6. 1 2 "El intérprete de comandos de Windows NT" . 20 de febrero de 2014.
  7. 1 2 "Edición de apóstrofes ('aaa') (Referencia del lenguaje FORTRAN 77)" . Dentro del campo, dos apóstrofes consecutivos […]
  8. "Secuencias de escape" . 3 de agosto de 2021. Las combinaciones de caracteres que consisten en una barra invertida seguida de una letra o de una combinación de dígitos se denominan secuencias de escape .\
  9. "Secuencias de escape" . IBM .
  10. "ISO/IEC 9899:201x Borrador del Comité N1570" (PDF) . 5.1.1.2 Fases de traducción, 2.: Cada instancia de un carácter de barra invertida ( ) seguida inmediatamente de un carácter de nueva línea se elimina, uniendo las líneas de origen físicas para formar líneas de origen lógicas. [...]\
  11. "17. Comprensión de ANSI.SYS - Edición especial con MS-DOS® 6.22, tercera edición [ Libro ] " . www.oreilly.com .
  12. "Conjunto básico de comandos AT de Hayes" . 05/02/2011. +++ - "Secuencia de escape": este comando inicia una secuencia de escape para devolver el módem al modo de comandos en línea.
  13. "Conceptos básicos de programación de módems" . Cuando un módem está en modo de comandos, puede aceptar comandos de usted.
  14. "Capítulo 5 – Comandos AT" (PDF) .
  15. "Resumen de registros y conjunto de comandos AT para módulos de módem analógico" . Cisco .
  16. "Datos generales terminales: discusión de" . Servidor FTP ( FTP ).(Para ver los documentos, consulte Ayuda:FTP )
  17. "¿Qué es una terminal?" . www.kermitproject.org .
  18. "Software de emulación de terminal Data General DG210 DG211" .
  19. "Secuencia de escape" .
  20. "Glosario del manual de terminales e impresoras" . vt100.net .
  21. "Doce comandos útiles de "vi" . Comandos de vi […] Presionar la tecla Esc (Escape) es como […]
  22. "Cinco usos inesperados de la tecla Esc" . PCworld . 29 de octubre de 2009.