Esses "caracteres estranhos" são seqüências de escape para colorir a saída.
Isso imprimirá esse número na cor azul:
echo -e '3[01;34m10107290391453[0m'
Veja man console_codes
para mais detalhes.
Você pode dizer a ls
em que casos deve produzir cores:
--color[=WHEN]
colorize the output; WHEN can be 'never', 'auto', or 'always' (the default); more info below
Parece que seu ls
é, na verdade, um alias para ls --color=always
. (Digite type ls
para verificar.)
Normalmente, ls --color=auto
fará a coisa certa: imprimirá cores na tela, mas não em arquivos.
Se você realmente quer a cor em seu arquivo, você precisa decidir se deseja ver as seqüências de escape reais ou as cores interpretadas.
Por exemplo, o comando less
será o padrão para imprimir as seqüências reais, mas você pode dizer para mostrar as cores com a opção -R
:
-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI "color" escape sequences are output in "raw" form.
Experimente less textfile
vs. less -R textfile
.