Linux

無法從某些命令將輸出重定向到文件

  • September 25, 2018

我正在嘗試將輸出(錯誤或成功)寫入文件。使用其他命令,我可以毫無問題地執行此操作,但是以下命令只會寫入終端而不寫入文件。如果我直接在終端中執行,我可以在螢幕上看到輸出,並且文件將被創建但將為空。

命令是

sudo ip r add default via 192.168.1.254 > outfile.txt >&1
sudo ip r add default via 192.168.1.254 | tee -a outfile.txt
sudo /sbin/route add default gw 192.168.1.254 | sudo tee -a outfile.txt

這些將進入啟動腳本(無頭設置)。我無法直接從終端內模擬啟動條件,因此僅直接執行它們並不一定會給我在啟動條件下發生的輸出,這意味著我無法弄清楚導致它們失敗的原因/是什麼。

我直接在終端中執行時的輸出是 RTNETLINK answers: Network is unreachableforsudo ip r add default via 192.168.1.254 並且在這些條件下是預期SIOCADDRT: Network is unreachablesudo route add default gw 192.168.1.254

對於 bash

ip r add default via 192.168.1.254 &> outfile.txt

或其他外殼的標準形式:

ip r add default via 192.168.1.254 >outfile.txt 2>&1

來自man bash

  Redirecting Standard Output and Standard Error
      This  construct allows both the standard output (file descriptor 1) and
      the standard error output (file descriptor 2) to be redirected  to  the
      file whose name is the expansion of word.

      There  are two formats for redirecting standard output and standard er‐
      ror:

             &>word
      and
             >&word

      Of the two forms, the first is preferred.  This is semantically equiva‐
      lent to

             >word 2>&1

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