Bash

非管道格式字元

  • July 22, 2020

在我的機器上,該命令mysql -e "show databases"生成以下輸出:

$ mysql -e "show databases

+--------------------+
| Database           |
+--------------------+
| information_schema |
| database1          |
| database2          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

但是,當我將它傳遞給任何命令(或重定向到文件)時,格式就會消失:

$ mysql -e "show databases" | cat

Database
information_schema
database1
database2
mysql
performance_schema
sys

我認為格式可能來自stderr,但似乎並非如此:

$ mysql -e "show databases" 2>/dev/null

+--------------------+
| Database           |
+--------------------+
| information_schema |
| database1          |
| database2          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

為什麼格式化字元不通過管道?我可以改變這種行為嗎?

MySQL 更改輸出

$$ format $$當管道從標準輸出更改為另一個應用程序時。 要保留此格式,請使用--table選項或使用--tabbedor --vertical

引用自:https://unix.stackexchange.com/questions/599759