如何检测stderr是否从脚本中连接到终端?

pru*_*nat 2 bash shell

我想试验终端和彩色输出,但同时我想让stdout/stderr重定向到文件,而不必处理这些转义序列.

有没有办法检查是否stderr从shell脚本中连接到终端?

Jon*_*ler 11

标准错误stderr的文件描述符是2. test或者[命令(通常是内置的shell)有一个选项-t,用于测试文件描述符是否连接到终端:

if [ -t 2 ]
then : stderr is a terminal
else : stderr is not a terminal
fi
Run Code Online (Sandbox Code Playgroud)