gpt4 book ai didi

linux - 简单的 shell 。混合管道和输出

转载 作者:太空狗 更新时间:2023-10-29 11:36:28 27 4
gpt4 key购买 nike

让我们考虑一下:

 cat > outout.txt | cat > outout2.txt 

我不知道如何解释这样的事情。第二个命令的输入是什么?

最佳答案

当 cat 没有收到文件名参数时,它从 STDIN 获取输入并将其发送到 STDOUT,因此命令链的第一部分的作用是将键入的内容(直到 EOD)放入文件输出。文本文件:

cat > outout.txt

如果一切正常,此命令不会产生任何输出,因此命令链的第二部分没有任何内容可放入 outout2.txt:

cat > outout2.txt

因此文件 outout2.txt 被完整的命令链清空:

$ cat > outout.txt | cat > outout2.txt

但是请注意,如果第一个“cat”调用生成输出,outout2.txt 得到一些输出。例如,如果无法修改 outout.txt,我们将 STDERR 输出发送到 STDOUT:

$ chmod a-w outout.txt
$ cat 2>&1 > outout.txt | cat > outout2.txt

然后 outout.txt 将为空,但以下文本将写入 outout2.txt(消息的确切文本可能取决于您的 shell - 我使用的是 bash 3.2):

-bash: outout.txt: Permission denied

关于linux - 简单的 shell 。混合管道和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696408/

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