一部のコマンドの出力をファイルにリダイレクトできません

一部のコマンドの出力をファイルにリダイレクトできません

出力(エラーまたは成功)をファイルに書き込もうとしています。他のコマンドを使用すると問題なくこれを実行できますが、次のコマンドは端末にのみ記録され、ファイルには記録されません。端末で直接実行すると、画面に出力が表示され、ファイルは生成されますが空になります。

コマンドは

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 unreachablesudo ip r add default via 192.168.1.254SIOCADDRT: Network is unreachablesudo route add default gw 192.168.1.254

ベストアンサー1

バッシュ用

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

おすすめ記事