猫和猫在一起
Cat and cat piped together
让我们考虑一下:
cat | cat
哪一个从 stdin
终端读取,哪一个写入 stdout
终端,为什么?
特别是,它是如何工作的:
cat < uns2.txt > ss2.txt | sort
我不明白什么更重要:>
vs |
每个程序选择如何解释其参数。像许多 Unix 实用程序一样,cat 被编写为过滤器;在命令行上没有文件名的情况下,它从标准输入读取并写入标准输出。这使得它比例如更方便tr,其中 仅 从标准输入读取。
I cannot understand what is more important: > vs |
现在我们谈论的是 shell 的作用,而不是它调用的程序。在没有重定向的情况下,shell 将标准输入和输出(以及错误)附加到终端。重定向,嗯,重定向 东西。
使用 <
,shell 打开右侧命名的文件,并将该描述符替换为标准输入。使用|
,shell创建一个管道,并将左边程序的标准输出替换为管道的写入端,右边程序的标准输入替换为管道的读取端管道。被调用的程序(例如cat)继续"write to stdout"; shell 只是改变了 "stdout" 的意思。
根据这些信息,您可以回答自己的问题:猫之间的 |
将左侧的输出重定向到右侧的输入。第一个 cat 继续从标准输入读取,第二个 cat 继续写入标准输出。
如评论中所述,一本关于 Unix shell 的书可能对您有用。你不能一次一个问题地学习这类东西。
让我们考虑一下:
cat | cat
哪一个从 stdin
终端读取,哪一个写入 stdout
终端,为什么?
特别是,它是如何工作的:
cat < uns2.txt > ss2.txt | sort
我不明白什么更重要:>
vs |
每个程序选择如何解释其参数。像许多 Unix 实用程序一样,cat 被编写为过滤器;在命令行上没有文件名的情况下,它从标准输入读取并写入标准输出。这使得它比例如更方便tr,其中 仅 从标准输入读取。
I cannot understand what is more important: > vs |
现在我们谈论的是 shell 的作用,而不是它调用的程序。在没有重定向的情况下,shell 将标准输入和输出(以及错误)附加到终端。重定向,嗯,重定向 东西。
使用 <
,shell 打开右侧命名的文件,并将该描述符替换为标准输入。使用|
,shell创建一个管道,并将左边程序的标准输出替换为管道的写入端,右边程序的标准输入替换为管道的读取端管道。被调用的程序(例如cat)继续"write to stdout"; shell 只是改变了 "stdout" 的意思。
根据这些信息,您可以回答自己的问题:猫之间的 |
将左侧的输出重定向到右侧的输入。第一个 cat 继续从标准输入读取,第二个 cat 继续写入标准输出。
如评论中所述,一本关于 Unix shell 的书可能对您有用。你不能一次一个问题地学习这类东西。