test1 > test2 < test3 中的输入重定向

Input redirection in test1 > test2 < test3

我试图了解输入重定向的工作原理,以便我可以在我正在构建的 shell 中模拟它。假设我们创建了 3 个文件:

echo this is test 1 > test1
echo this is test 2 > test2
echo this is test 3 > test3

然后我们尝试使用像 cat test1 > test2 < test 3 这样的命令来重定向输入和输出。 test2 的内容将变为:this is a test1。我希望它们成为 this is a test 3,因为这是最后一次“操作”。我错了什么?提前致谢!

PS 如果您可以 指导 我获得有关在具有上述复杂命令时重定向如何工作的指南,我将不胜感激!

cat 在具有非选项参数时不会从标准输入读取,除非这些参数之一指定标准输入。在您提供的示例中,cat test1 > test2 < test3,文件 test3cat 的输入流,但 cat 忽略它,因为您没有指定 -作为论据。如果您改为执行 cat test1 - > test2 < test3,那么 cat 将读取其标准输入,但 test2 的最终内容将不仅仅是 test3 的内容,而是 [=] 的串联22=] 和 test3.

也许你应该试试这些实验:

cat test1 - > test2 < test3
cat > test2 < test3
cat - test1 - > test2 < test3
cat - - test1 test1 > test2 < test3

另外,或许看看

< test3 cat > test2
cat < test3 - test1 > test2