Eu tenho uma pergunta rápida.
É normal que o bash (eu estou usando o 4.4.11) não esteja exibindo linhas / texto que é separado / final com simples \r
?
Fiquei um pouco surpreso ao ver esse comportamento:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
Mas o texto "olá novamente" ainda está lá, de alguma forma "oculto":
$ echo "$a" |od -w32 -t x1c
0000000 68 65 6c 6c 6f 0d 61 67 61 69 6e 0d 67 65 6f 72 67 65 0d 0a
h e l l o \r a g a i n \r g e o r g e \r \n
E assim que brincamos com o bash, tudo bem ... Mas isso é um risco potencial à segurança? E se o conteúdo da variável "a" vier do mundo exterior e incluir "comandos ruins" em vez de apenas olá?
Outro teste, um pouco inseguro desta vez:
$ a=$(printf "ls;\rGeorge\n")
$ echo "$a"
George
$ eval "$a"
0 awkprof.out event-tester.log helloworld.c oneshot.sh rightclick-tester.py tmp uinput-simple.py
<directory listing appears with an error message at the end for command George>
Imagine um oculto em rm
vez de um oculto ls
.
Mesmo comportamento ao usar echo -e:
$ a=$(echo -e "ls;\rGeorge\r\n"); echo "$a"
George
Sou eu que faço algo errado ...?