根据输出重定向显示不同的结果

时间:2012-10-27 05:10:45

标签: shell stdout

例如,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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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