Pipe

為什麼將輸出重定向到文件會生成表?

  • July 23, 2018

我想設置一個 cron 作業來定期記錄測量值。USB記憶棒安裝在路由器中:

user@router:/tmp/home/root# uname -a

Linux 路由器 2.6.36.4brcmarm #2 SMP PREEMPT Sun Mar 20 16:06:18 EDT 2016 armv7l GNU/Linux

user@router:/tmp/home/root# curl http://THERMOSTAT/tstat/humidity  >> /tmp/mnt/USBstick/CT80_data/C14HumidityData.txt

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100    18    0    18    0     0     80      0 --:--:-- --:--:-- --:--:--    83

為什麼將輸出附加(>>)到文件會產生上表?

不附加時不生成該表:

curl http://THERMOSTAT/tstat/humidity
{"humidity":51.00}

是否有抑製表響應的命令選項?

這是 curl 的進度表。從man curl

PROGRESS METER
   curl  normally displays a progress meter during operations, indicating the
   amount of transferred data, transfer speeds and estimated time left,  etc.
   The  progress  meter  displays number of bytes and the speeds are in bytes
   per second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is
   1024 bytes. 1M is 1048576 bytes.

   curl  displays this data to the terminal by default, so if you invoke curl
   to do an operation and it is about to write data to the terminal, it  dis‐
   ables  the  progress meter as otherwise it would mess up the output mixing
   progress meter and response data.

   If you want a progress meter for HTTP POST or PUT requests,  you  need  to
   redirect  the  response  output  to  a file, using shell redirect (>), -o,
   --output or similar.

   It is not the same case for FTP upload as that operation does not spit out
   any response data to the terminal.

   If  you  prefer  a  progress  "bar"  instead  of  the  regular  meter, -#,
   --progress-bar is your friend. You can also  disable  the  progress  meter
   completely with the -s, --silent option.

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