>& "在 Korn shell 中是否有效?-6ren"> >& "在 Korn shell 中是否有效?-我正在尝试重定向 UNIX 命令的 STDOUT/STDERR 并附加到 korn shell 中的日志文件。 rm -rf file1 >>& 日志文件 这个命令可以在 ksh 中工作还是一个典型的-6ren">
gpt4 book ai didi

bash - 此重定向 ">>& "在 Korn shell 中是否有效?

转载 作者:行者123 更新时间:2023-11-29 09:36:00 24 4
gpt4 key购买 nike

我正在尝试重定向 UNIX 命令的 STDOUT/STDERR 并附加到 korn shell 中的日志文件。

rm -rf file1 >>& 日志文件

这个命令可以在 ksh 中工作还是一个典型的 bash 命令?上面的命令会造成什么伤害?

最佳答案

我使用这种形式将标准输出和标准错误重定向到同一个文件。

ls -ld . fred > no_fred 2>&1

刚刚在 Red Hat Linux 4 的 Korn shell 中测试过。 no_fred 包含:

ls: fred: No such file or directory
drwxrwxr-x 2 user group 1024 Apr 27 17:41 .

">"实际上是 1>,表示重定向文件描述符 1(标准输出)。 “2>”重定向标准错误,因为标准错误是文件描述符 2。“&1”表示“无论你用文件描述符 1 做什么”。因此,总而言之,这意味着“将标准输出转储到文件中,并将标准错误一起转储到文件中。”

此方法的一个优点是错误消息出现在正确的位置。例如,对于编译失败的文件,编译器的错误消息将在您的 makefile 中的编译命令之后立即出现。

>>& 构造可能会将命令的输出附加到日志文件,并将其放在后台。我不确定它对标准错误有什么影响。我刚刚查阅了 Bolsky/Korn 1989,它甚至不在那里,所以也许其他人可以解析它的作用。

更新:如果您的命令中有任何管道,那么标准早期阶段的错误会最先出现,作为产生错误的命令运行。由于只有标准输出通过管道进行路由,因此它将当整个管道完成时,所有这些都会立即出现。

关于bash - 此重定向 ">>& <filename>"在 Korn shell 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795294/

24 4 0