我正在关注 William Shots 的《Linux 命令行》。据我了解,>
操作员将标准输出保存到文件,并<
从文件中获取标准输入。
如果键盘是默认标准输入并且<
仅从某个文件获取输入,那么为什么ls -l
不等同于包含的ls < some_params.txt
位置?some_params.txt
-l
提前致谢
答案1
为什么
ls -l
不等于ls < some_params.txt
wheresome_params.txt
will contains-l
?
因为命令行不是标准输入!
ls
这里不是一个很好的例子,因为它不使用标准输入。它只是处理它获得的命令行选项,浏览一些目录,并将列表打印到标准输出。
但考虑一下类似的事情cat -n
。它-n
从命令行获取标志,然后从标准输入读取,添加行号并打印到标准输出。如果没有< filename
,输入来自终端(即键盘)。有了它,它就来自一个文件。
您可以做的是使用命令替换将文件的内容插入到命令行。ls $(cat some_params.txt)
(或ls $(< some_params.txt)
在支持它的外壳中)会按照您的建议进行。