让我们考虑一下:
cat | cat
哪一个从stdin
终端读取,哪一个写入stdout
终端?为什么?
尤其是,它是如何运作的:
cat < uns2.txt > ss2.txt | sort
我无法理解什么更重要:>
vs |
答案 0 :(得分:1)
每个程序选择如何解释其参数。像许多Unix实用程序一样, cat 被写为过滤器;在命令行没有文件名的情况下,它从标准输入读取并写入标准输出。这使它比例如更方便 tr ,仅从标准输入读取。
我无法理解什么更重要:&gt; vs |
现在我们讨论shell的功能,而不是它调用的程序。如果没有重定向,shell会将标准输入和输出(以及错误)附加到终端。重定向,好吧,重定向的东西。
使用<
,shell打开右边的文件,并将该描述符替换为标准输入。使用|
,shell创建一个管道,并使用管道的写入端将程序的标准输出替换为左侧,并使用管道的读取端将程序的标准输入替换为右侧。被调用的程序(例如 cat )继续“写入stdout”; shell简单地改变了“stdout”的含义。
根据这些信息,您可以回答自己的问题:猫之间的|
会将左侧的输出重定向到右侧的输入。第一个 cat 继续从标准输入读取,第二个cat继续写入标准输出。
正如评论中所提到的,关于Unix shell的书可能对你有用。你不能一次只学习这类问题。