管道命令正确显示了结果。当我尝试使用它时,cat或>不会显示输出
我尝试用不同的空格运行命令,但这没有帮助
sort spiderman.txt | cat > superman.txt
sort spiderman.txt | > superman.txt
在上面的第一个代码中cat没有显示它的输出(cat命令没有显示superman.txt的内容),但是如果我单独编写了cat命令,它将显示内容
在第二个命令中,superman.txt没有任何反应 理想情况下,它应该替换了superman.txt的所有内容,并替换为spiderman.txt的排序内容,但是什么也没有发生。
答案 0 :(得分:0)
如果您尝试进行简单的输出重定向,则不应该通过管道(|
)进行管道传输(>
):
sort spiderman.txt > superman.txt
如果您想显示内容并重定向到文件-也许您正在寻找的是tee
?
sort spiderman.txt | tee superman.txt
说明:
tee实用程序将标准输入复制到标准输出,从而以零个或多个文件进行复制。输出没有缓冲。
答案 1 :(得分:0)
superman.txt
(无命令)的处理方式如下:
superman.txt
已打开以进行写作和删节cat
。 cat
是必需的命令,它可以从标准输入中读取并将其写入标准输出。
有时候,我觉得有些奇怪,因为更多的shell没有提供最小的内置功能,这些内置功能只是简单地将输入复制到输出而没有多余的装饰,从而避免了不得不分叉和执行zsh
。 (我应该说“不”而不是“更多”,因为我不知道有什么任何外壳。bash
可能会困扰我,如果我不停地搜索文档以找到它的话。 )
(某些shell在处理命令行时会优化掉一个额外的fork;但是cat
不是其中的一个。fork一次fork为管道的写端创建一个进程,然后再次fork到运行ksh
。我相信exec
可以直接直接cat
cat
而不是不必要地分叉,在这种情况下,内置{{1}}就没必要了。)< / p>