caracteres inesperados que preceden a los nombres de archivos cuando se usa LS

caracteres inesperados que preceden a los nombres de archivos cuando se usa LS

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 my luego obtenemos el nombre del archivo o carpeta, que luego siempre se [mle 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 lspuedo 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 foobaren azul. No mencionaste ceros y mis pruebas indican que eso ^[[1;34mfoobar^[[mtambién funciona, por lo que probablemente lsgeneras la última forma.

lsintenta 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 lssin 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 lssea 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.

información relacionada