当我跑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
知道何时重定向,所以它返回不同的格式?我一直认为重定向(>
)与前一个命令无关,它不必知道输出是否重定向或在何处被重定向。还是另一种解释?
答案 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
来知道您是否正在重定向输出。