重定向运算符、标准输入和命令参数

重定向运算符、标准输入和命令参数

我正在关注 William Shots 的《Linux 命令行》。据我了解,>操作员将标准输出保存到文件,并<从文件中获取标准输入。

如果键盘是默认标准输入并且<仅从某个文件获取输入,那么为什么ls -l不等同于包含的ls < some_params.txt位置?some_params.txt-l

提前致谢

答案1

为什么ls -l不等于ls < some_params.txtwhere some_params.txtwill contains -l

因为命令行不是标准输入!

ls这里不是一个很好的例子,因为它不使用标准输入。它只是处理它获得的命令行选项,浏览一些目录,并将列表打印到标准输出。

但考虑一下类似的事情cat -n。它-n从命令行获取标志,然后从标准输入读取,添加行号并打印到标准输出。如果没有< filename,输入来自终端(即键盘)。有了它,它就来自一个文件。

您可以做的是使用命令替换将文件的内容插入到命令行。ls $(cat some_params.txt)(或ls $(< some_params.txt)在支持它的外壳中)会按照您的建议进行。

相关内容