有点好奇`mysql -e`输出格式&没有重定向

时间:2015-01-07 03:57:48

标签: mysql command-line stdout

当我跑mysql -u user -p -e 'select id from db.users limit 1'时,我得到了:

+------+
| id   |
+------+
| 8434 |
+------+

当我将输出/标准输出重定向到某个文件,例如mysql -u user -p -e 'select id from db.users limit 1' > /tmp/a.txt,然后我cat /tmp/a.txt时,我得到了:

id
8434

那么那些小格式字符串会去哪里?这是否意味着mysql知道何时重定向,所以它返回不同的格式?我一直认为重定向(>)与前一个命令无关,它不必知道输出是否重定向或在何处被重定向。还是另一种解释?

2 个答案:

答案 0 :(得分:3)

通过添加-B选项

,您将获得相同的输出
    mysql -B -u user -p -e 'select id from db.users limit 1'

然后你会看到

 id       
 8434 

此外,mysql命令测试cout是否为tty,以切换输出格式。 正如您在mysql {{1}}命令中所看到的那样。

答案 1 :(得分:0)

要在重定向时获得相同的花式表格式,请在您的mysql命令中添加-t标志或--table

+----+--------+
| id | name   |
+----+--------+
|  1 | Quincy |
+----+--------+

对于您的问题,mysql在后台使用isatty来知道您是否正在重定向输出。