Por que o printf funciona de maneira diferente com o sudo?

1

Eu tenho um script simples para converter um arquivo de texto com seqüências de escape de cores para os caracteres reais. Funciona se eu o executar diretamente, mas não com o sudo.

Para configurar os scripts:

test.txt

\e[1;34mTEST\e[0m\n

test.sh (+ x)

printf "'cat $1'" > test.bin
  • A execução de ./test.sh test.txt , em seguida, cat test.binTEST em azul.
  • A execução de sudo ./test.sh test.txt , em seguida, cat test.bin\e[1;34mTEST\e[0m\n

O que está acontecendo aqui?

Notas:

  • A execução de sudo bash -c "./test.sh test.txt" fornece a saída correta - por que isso acontece?
  • echo -e se comporta da mesma forma que printf
por Greg 10.10.2014 / 09:57

1 resposta

2

Experimente sudo -i ./test.sh .

Não sei se existe uma necessidade específica de ter a sequência codificada por cor em um arquivo separado e, em seguida, gravá-la em outro, mas o seguinte funciona bem sem o -i flag:

#!/bin/bash
string="\e[1;34mTEST\e[0m\n"
printf "${string}"
    
por 10.10.2014 / 10:17

Tags