如何将输出重定向到文件以便先前重定向的输出不会丢失?

如何将输出重定向到文件以便先前重定向的输出不会丢失?

我对这一切还很陌生,试图运行一个基本的批处理文件来将一些命令输出到文档中。

在我添加更多回声之前它运行正常。

例子:

echo "Failed Drives" > Report.rtf
symdisk list -failed >>Report.rtf
echo =====================================================>>Report.rtf

symcfg list -env_data -service_state failed >>Report.rtf
echo =====================================================>>Report.rtf

symcfg -thin -pool -GB list >>Report.rtf
echo =====================================================>>Report.rtf


explorer Report.rtf

因此,上述操作可以正常工作,但是如果我想在每个命令上方添加一些回声来解释该命令的作用,它实际上会忽略前一个命令。

如果symcfg -thin -pool -GB list我在命令上方添加一个,echo "Pool Capacity" > Report.rtf它将忽略我之前的所有脚本并只输出该命令。

答案1

这里

command > filename
将命令输出重定向到文件

command >> filename
附加到文件中

该链接解释了 Windows CMD 的这些操作符。我选择它是因为您使用的标签。在 POSIX shell 中,它们基本上是相同,所以答案也适用于Unix / Linux中的常见shell。

在您的原始代码中,除第一个命令外,所有命令都使用>>。这很有意义。通过>在中间使用,您可以创建“额外”命令截短写入文件之前。

并不是忽略了前面的命令。它们输出的是覆盖通过您的“额外”命令。

使用>>

答案2

另一种方法是一次性重定向所有内容:

> "Report.rtf" (
    echo Failed Drives
    symdisk list -failed
    echo =====================================================

    symcfg list -env_data -service_state failed
    echo =====================================================

    echo Pool Capacity
    symcfg -thin -pool -GB list
    echo =====================================================
)

由于单个文件 I/O 操作,速度会稍微快一些,但这会阻止您在所有重定向命令完成之前读取文件。

相关内容