0

例如,mysql命令

mysql -e 'show databases'

+--------------------------+
| Database                 |
+--------------------------+
| information_schema       |
| mysql                    |
| performance_schema       |
+--------------------------+

但是当你重定向到一个文件时,内容是不同的,例如

mysql -e 'show databases' > /tmp/test.txt
cat /tmp/test.txt

Database
mysql
performance_schema
4

2 回答 2

4

这是通过使用调用检查 STDOUT 是否连接到 TTY 来完成的isatty()(在 C 中,用等效语言替换您选择的语言)。

于 2012-10-27T05:14:03.183 回答
2

对于 Python,您可以使用sys.stdout.isatty().

test.py

import sys

if sys.stdout.isatty():
    print 'Yep'
else:
    print 'Nope'

还有一个演示:

$ python2 test.py                                         
Yep
$ python2 test.py | cat
Nope
$ python2 test.py > test.txt
$ cat test.txt
Nope
于 2012-10-27T05:15:36.617 回答