gpt4 book ai didi

linux - linux shell 标准输出和错误输出重定向在组合时如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:43 27 4
gpt4 key购买 nike

我正在尝试了解 linux shell 脚本(bourne、bash)中标准和错误重定向的要点。

示例 1:

cat file1  > output.txt

cat file1  1> output.txt

这会将 file1 的内容重定向到 output.txt。按预期工作。


示例 2:

kat file1  2> output.txt

kat 命令不存在,因此错误被重定向到 output.txt。按预期工作。


示例 3:

cat file1  2>&1 output.txt

因为 cat 是一个有效的命令并且 file1 存在,所以我希望这里的行为与示例 1 相同。相反,我似乎将两个文件的内容都显示在屏幕上。


示例 4:

kat file1  2>&1 output.txt 

因为 kat 不存在,我期望与示例 2 相同的行为。相反,我在屏幕上收到错误消息(“-bash: kat: command not found”)

如许多在线手册中所述,例如: https://www.gnu.org/software/bash/manual/html_node/Redirections.html

最佳答案

问题是 2>&1 只告诉 shell 将文件描述符 2(标准错误)重定向到文件描述符 1(标准输出)。它实际上并不对标准输出进行任何重定向。

为此你必须明确地这样做

cat file1 > output.txt 2>&1

请注意,您必须在最后 执行描述符重定向(在标准输出重定向之后),否则它将不起作用。

这一切都在 the Bash manual page 中进行了解释(参见 the section about redirection)。

关于linux - linux shell 标准输出和错误输出重定向在组合时如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com