一尘不染

在Linux中,如何测试程序的输出是进入实时终端还是文件?

linux

当您使用git时,它似乎神奇地知道标准输出是通过管道还是进入文件以及何时将其显示在控制台上。例如,如果您启用了颜色并且

git status

它将为列出的不同类别的文件着色输出。但是,如果您这样做

git status | less

要么

git status > status.txt

它会删除linux颜色格式,并且您只会看到纯色文本。

如何git检测其命令的输出是否要归档到终端?


阅读 211

收藏
2020-06-07

共1个答案

一尘不染

isatty(int fd)将检查fd是指终端还是其他设备。它是unistd.hGNU C库的一部分。

手册页:http :
//linux.die.net/man/3/isatty

isatty顺便说一句:如果您想从另一个程序中读取程序,但又想以为您的程序是人类,那么有一种方法可以做到。您可以使用伪终端(pty)。例如,expected使用了此技术。

2020-06-07