Devolver el cursor del terminal al inicio de línea con el ajuste habilitado
Estoy escribiendo un filtro (en una tubería destinada a una salida de terminal) que a veces necesita "sobrescribir" una línea que acaba de ocurrir. Funciona pasando stdin a stdout carácter por carácter hasta que\n
Se alcanza, y luego se invoca un comportamiento especial. Mi problema se refiere a cómo volver al principio de la línea.
Lo primero que pensé fue usar un\r
o la secuencia ANSI\033[1G
. Sin embargo, si la línea era lo suficientemente larga para ajustarse en el terminal (y por lo tanto causó que se desplace), estos solo moverán el cursor de vuelta a la posición actual.físico línea.
Mi segunda idea fue hacer un seguimiento de la longitud de la línea (número de caracteres pasados desde el anterior\n
), y luego echo\b
que muchas veces Sin embargo, eso va mal si la línea contiene caracteres de control o secuencias de escape (¿y posiblemente Unicode?).
Aparte de buscar todas las secuencias especiales y usar esto para ajustar el número de personajes, ¿hay alguna forma sencilla de lograrlo?