无法将某些命令的输出重定向到文件

无法将某些命令的输出重定向到文件

我正在尝试将输出(错误或成功)写入文件。使用其他命令,我可以毫无问题地执行此操作,但是以下命令只会写入终端,但不会写入文件。如果我直接在终端中运行,我可以在屏幕上看到输出,并且文件将被创建,但将为空。

命令是

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.254SIOCADDRT: Network is unreachablefor sudo route add default gw 192.168.1.254which 在这些条件下是预期的

答案1

对于bash

ip r add default via 192.168.1.254 &> outfile.txt

或其他 shell 的标准形式:

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

相关内容