行首的输出重定向

行首的输出重定向

我习惯在行尾指定输出重定向,例如:

echo blah > output.txt

在 Windows 和 *nix 中都是如此。

最近,我看到越来越多的在行首进行重定向的示例,例如:

> output.txt echo blah

再次,这似乎在 Windows 和 *nix 上都有效。

在行首重定向输出有什么好处吗?它的行为与在行末重定向相同吗?还是有一些区别?为什么会有这两个选项?

答案1

对于这样简单的例子,重定向发生在哪里并不重要。这是一个编码风格的选择。Bash 手册说明

(...) 重定向操作符可以位于简单命令之前或内部任何位置,也可以位于命令之后。

什么是简单命令

简单命令是最常见的命令类型。它只是由空格分隔的一串单词,由 shell 的控制操作符之一终止(参见定义)。第一个字通常指定要执行的命令,其余字为该命令的参数。

显然,当有多个重定向命令时,其顺序很重要。

答案2

假设您想写入count: 1一个文件。

对于 Windows,echo count: 1>file.txt将写入count :文件(不带 1),因为 1 被解释为 stdout。您可以使用echo count: 1 >file.txt,但这样就会出现不需要的尾随空格。将重定向放在前面可以避免此问题:>file.txt echo count: 1

不确定这是否也适用于'nix,但我怀疑它确实如此。

相关内容