Ir al contenido

Leer, enviar y esperar

Cómo leer el historial de una terminal, enviar texto o una interrupción al proceso, y esperar una condición antes del paso siguiente.

Ver Markdown

Tres operaciones forman el ciclo de trabajo con cualquier proceso en la Terminal: leer lo que escribió, enviar lo que quieres y esperar a que llegue a un estado antes del paso siguiente. En la interfaz, las tres son gestos directos — desplazar, escribir, mirar. Por línea de comandos tienen contrato propio, y ese contrato es lo que hace predecible la automatización.

Leer el historial

En la interfaz, el historial es el propio contenido del panel: desplázate hacia atrás para ver lo que pasó.

Por línea de comandos, la lectura tiene tres modos, y elegir el modo correcto evita sorpresas:

Modo Qué devuelve Cuándo usarlo
Página delimitada Un bloque acotado, con el cursor para continuar desde ahí Quieres seguir sin releer todo
Solo lo nuevo Únicamente la salida desde una lectura anterior Ya leíste hasta cierto punto y quieres lo que vino después
Sesión retenida completa Todo lo que aún está guardado Necesitas el contexto completo de lo que quedó

Reglas que valen para todos los modos:

  • Sin cursor y sin límite, la lectura pagina la sesión retenida y devuelve todo lo que existe.
  • El cursor que devuelve una lectura es lo que pasas a la lectura siguiente para recibir solo lo nuevo.
  • Hay techo por lectura y techo para la sesión completa. Cuando lo más antiguo ya fue descartado, el resultado lo dice en lugar de fingir completitud.
  • Los modos son mutuamente excluyentes: pedir la sesión completa junto con un límite de líneas, o un límite de líneas junto con un cursor, es error de argumento.
  • La lectura prioriza la pantalla viva. Si el proceso dibuja una interfaz de pantalla completa (un agente, un editor de terminal), la lectura legible muestra esa pantalla renderizada; el texto bruto sigue disponible en la lectura estructurada.
  • Un panel sin sesión viva falla con aviso, en lugar de devolver una lectura vacía: el panel existe, pero no hay nada ejecutándose en él.

Enviar texto

  • El texto puede venir directo en la llamada o de un archivo. Para textos de varias líneas, usa un archivo: las comillas del shell estropean saltos de línea y citas en un texto largo.
  • Enviar no implica que se haya dado Enter ni que el proceso haya entendido: hay que pedir Enter explícitamente cuando quieres que la línea se envíe.
  • Un envío rechazado falla el comando. Si la respuesta dice que el envío no fue aceptado, el paso siguiente no debe tratarse como si lo hubiera sido.
  • Interrumpir es distinto de enviar. La interrupción entrega la señal de parada al proceso — es el equivalente de una cancelación, y puede interrumpir trabajo en curso de un agente.

Esperar antes de enviar

Escribir a un proceso que aún no está listo es la causa más común de texto mezclado. La espera existe para eso:

  • Esperar a que el proceso termine — útil para comandos que terminan solos.
  • Esperar a que la interfaz del agente quede ociosa — esto es lo que quieres antes de enviar el primer mensaje a un agente que acaba de subir.
  • La espera tiene techo de tiempo y un valor predeterminado; si el techo es demasiado corto, la espera expira aunque el proceso siga vivo.
  • Una condición no satisfecha falla el comando. Encadenar envío y espera sin mirar el resultado enmascara tanto un envío rechazado como una espera expirada.

Secuencia recomendada

  1. Crear la sesión (con el agente, si es el caso).
  2. Esperar la condición que dice que el proceso está listo.
  3. Leer lo que ya está en pantalla — es lo que confirma que la interfaz tomó el control.
  4. Enviar el texto, pidiendo Enter.
  5. Esperar de nuevo antes de leer el resultado.
  6. Leer solo lo nuevo, desde el cursor de la lectura anterior.

Por línea de comandos

Las opciones exactas de lectura, envío, interrupción y espera — incluidos los techos y los modos mutuamente excluyentes — están en Referencia de comandos de la Terminal.