У меня есть простой скрипт для преобразования текстового файла с цветными escape-последовательностями в реальные символы. Он работает, если я запускаю его напрямую, но не с помощью sudo.
Чтобы настроить скрипты:
test.txt
\e[1;34mTEST\e[0m\n
test.sh (+ х)
printf "`cat $1`" > test.bin
./test.sh test.txt
затем cat test.bin
дает TEST
в синем.sudo ./test.sh test.txt
затем cat test.bin
дает \e[1;34mTEST\e[0m\n
Что тут происходит?
Ноты:
sudo bash -c "./test.sh test.txt"
дает правильный результат - почему?echo -e
ведет себя так же, как printf
Пытаться sudo -i ./test.sh
.
Я не знаю, есть ли особая потребность в том, чтобы строка с цветовой кодировкой была в отдельном файле, а затем записывала ее в другой, но следующее отлично работает без -i
флаг:
#!/bin/bash
string="\e[1;34mTEST\e[0m\n"
printf "${string}"