我正在尝试将输出(错误或成功)写入文件。使用其他命令,我可以毫无问题地执行此操作,但是以下命令只会写入终端,但不会写入文件。如果我直接在终端中运行,我可以在屏幕上看到输出,并且文件将被创建,但将为空。
命令是
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 unreachable
forsudo ip r add default via 192.168.1.254
和SIOCADDRT: Network is unreachable
for sudo route add default gw 192.168.1.254
which 在这些条件下是预期的
答案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