Tenemos un Arduino Yun Rev 2 con extroot configurado a través del boceto YunDiskExpander en una microSD Sandisk de 32 GB particionado para tener 512 MB para extroot.
Curiosamente, sin embargo, cada vez que usamos ls, los resultados van precedidos de un [
dígito (normalmente 1
), ;
dos dígitos más (normalmente 34
), la letra m
y luego obtenemos el nombre del archivo o carpeta, que luego siempre se [m
le añade. Esto también parece ocurrir en todos los caracteres cuando se ejecuta vim en Arduino.
Accedemos a él a través del monitor de serie disponible públicamente como boceto de terminal. Estos personajes inesperados están obstaculizando notablemente el desarrollo, por lo que cualquier ayuda sería muy apreciada.
Respuesta1
Las cosas que describiste son (partes de)secuencias de escaperesponsable de cambiar el color de primer plano del texto. En mi Debian ls
puedo generar el siguiente resultado de ejemplo:
^[[01;34mfoobar^[[0m
donde ^[
representa un solo carácter: carácter de escape ( 0x1b
). Los terminales que admiten esto, después de recibir dichos datos, deberían imprimir foobar
en azul. No mencionaste ceros y mis pruebas indican que eso ^[[1;34mfoobar^[[m
también funciona, por lo que probablemente ls
generas la última forma.
ls
intenta colorear su salida pero parece que los caracteres de escape se pierden en la transmisión por cualquier motivo o se transmiten correctamente pero su terminal los ignora (ni imprime su representación ni reconoce las secuencias de control que siguen). En efecto ves:
[1;34mfoobar[m
Puro ls
sin opciones no debería usar colores,POSIXNo dice nada sobre los colores. Aún así, las implementaciones pueden brindarle la opción de colorear la salida y es común que ls
sea un alias para ls --color=auto
. Por lo general, esto funciona bien y es posible que los usuarios ni siquiera sepan que se trata del alias. Comprueba si este escenario se ajusta a tu caso: invocar alias ls
. Supongo que sí.
Soluciones posibles:
- anular la opción a pedido:
ls --color=no
; - omita el alias a pedido:
command ls
; - destruir el alias (una vez por sesión de shell):
unalias ls
; - averigüe en qué script de inicio está definido el alias y elimine la línea relevante o coméntela; Esta es una solución permanente.