我有一个简单的脚本,可以将带有颜色转义序列的文本文件转换为实际字符。如果我直接运行它,它会起作用,但使用 sudo 则不起作用。
要设置脚本:
测试.txt
\e[1;34mTEST\e[0m\n
测试文件(+x)
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
答案1
尝试sudo -i ./test.sh
。
我不知道是否需要将颜色编码的字符串放在单独的文件中,然后将其写入另一个文件,但以下操作即使没有标志也可以正常工作-i
:
#!/bin/bash
string="\e[1;34mTEST\e[0m\n"
printf "${string}"