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

kon*_*ion 6 io-redirection

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

如果键盘是默认的标准输入并且<只从某个文件中获取该输入,为什么ls -l不等同于ls < some_params.txtwhere some_params.txtwill contain -l

提前致谢

ilk*_*chu 13

为什么ls -l不等于ls < some_params.txtwheresome_params.txt会包含-l

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

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

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

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