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
,文件 test3
是 cat
的输入流,但 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
我试图了解输入重定向的工作原理,以便我可以在我正在构建的 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
,文件 test3
是 cat
的输入流,但 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