在linux中,如何测试程序的输出是转到实时终端还是文件?

当您使用 git时,它似乎神奇地知道标准输出是通过管道还是文件显示到控制台时.例如,如果您启用了颜色,那么就可以
git status

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

git status | less

要么

git status > status.txt

删除linux color formatting,你只能看到简单的无色文本.

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

解决方法

isatty(int fd)将检查fd是指终端还是其他东西.它是GNU C库中unistd.h的一部分.

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

顺便说一句:如果你想使用另一个程序读取程序,但是你想愚蠢地认为你的程序是一个人类,那么就有办法做到这一点.你可以使用pseudo-terminal(pty).例如,该技术在expect中使用.

相关文章

insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...