Cuando ejecuto el siguiente comando en Terminal.app:
echo -e "a\tb\tc\td\te\tf\tg\tyo"
Debería obtener la siguiente salida (usando una ventana de 40 columnas para que las líneas no se ajusten aquí, y reemplazando las pestañas con espacios para que se muestre la cantidad correcta de espacio aquí):
a b c d e
f g yo
Pero en su lugar, obtengo esta salida:
a b c d e y
o
Como puede ver, faltan f
y g
.
Después de probar varias cadenas, creo que el problema es que una pestaña al final de una línea no avanza la salida a la siguiente línea, sino que deja al cursor de salida un carácter antes de que finalice la línea. Por ejemplo (aún suponiendo un terminal de 40 columnas), 4 pestañas colocan el cursor en la posición 32 de la línea 1. Otra pestaña debe colocar el cursor en la posición 0 de la línea 2, pero en cambio, el cursor está en la posición 39 de la línea 1, dejando espacio para que se imprima un carácter más, e incluso en ese punto, el cursor no avanza a la siguiente línea, por lo que otra pestaña nos regresará a la posición 39. Por lo tanto, hay un número ilimitado de cadenas (de un solo carácter + pestaña) será ignorado en silencio.
He experimentado con una variedad de:
- shells (incluidos
bash
,sh
ycsh
) - anchos de terminal (incluidas 40 columnas, 80 y muchas otras)
- tipos de terminales (incluidos
vt100
yxterm-color
) - codificaciones de caracteres terminales (incluidos
UTF-8
yascii
) - configuración del terminal (incluido
Escape non-ASCII input
)
Además, un amigo ejecutó comandos similares en un sistema Linux con un terminal diferente y no encontró el mismo error.
¿Alguien sabe como arreglar esto? Estaría muy agradecido, ya que este error hace que sea difícil depurar algunos scripts de shell hechos en casa que se ejecutan en archivos separados por pestañas.