可能重复:
将数据传输到期望TTY(终端)的Linux程序
我想从非交互式脚本中显示颜色,并且需要告诉shell实际上我的脚本是支持颜色的终端,因此像ls --color=auto
这样的命令将显示颜色(ls有选项--color=always
,但我也想支持所有支持颜色的可能命令)。
我通过python Popen调用我的shell。我尝试设置TERM环境变量,但它不起作用。
subprocess.Popen(['/bin/bash', '-c', command],
env={'TERM':'xterm-color'},
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
有没有一种方法可以告诉bash我是一个终端?
--color = auto
是如何实现的? - The Godfatherisatty(int fd)
。例如,调用isatty(STDOUT_FILENO)
和/或isatty(STDERR_FILENO)
。这应该可以完成任务,并且可能是大多数程序所做的。虽然可能还有其他机制。 - Jo Soisatty
的返回值,显然... - The Godfather