Cuando ejecuto el siguiente comando en Terminal.app:
echo -e "a\tb\tc\td\te\tf\tg\tyo"
Debería obtener la siguiente salida (utilizando una ventana de 40 columnas para que las líneas no se enrollen aquí, y sustituyendo los tabuladores por 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, el f
y g
no están.
Después de probar varias cadenas, creo que el problema es que un tabulador al final de una línea no hace avanzar la salida a la siguiente línea, sino que deja el cursor de salida un carácter antes del final de la línea. Por ejemplo (todavía asumiendo un terminal de 40 columnas), 4 tabulaciones ponen el cursor en la posición 32 de la línea 1. Otro tabulador debería poner el cursor en la posición 0 de la línea 2, pero en su lugar 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 otro tabulador nos devolverá a la posición 39. Por lo tanto, un número ilimitado de cadenas (de un solo carácter + tabulador) serán ignoradas silenciosamente.
He experimentado con una variedad de:
- conchas (incluyendo
bash
,sh
ycsh
) - anchos de terminal (incluyendo 40 columnas, 80, y muchos otros)
- tipos de terminales (incluyendo
vt100
yxterm-color
) - codificaciones de caracteres de los terminales (incluyendo
UTF-8
yascii
) - ajustes del terminal (incluyendo
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 cómo arreglar esto? Se lo agradecería mucho, ya que este error está dificultando la depuración de algunos shell scripts caseros que se ejecutan en archivos separados por tabulaciones.