我是linux的新手。当我尝试这个时,我一直在学习cat命令。
harish@harish-Lenovo-G50-45:~$ cat file
Videos/Arrow/Season*
harish@harish-Lenovo-G50-45:~$ cat file | ls -l
该命令显示当前文件夹的内容而不是文件中提到的文件夹..但是当我这样做时
harish@harish-Lenovo-G50-45:~$ cat file
Videos/Arrow/Season*
harish@harish-Lenovo-G50-45:~$ ls -l $(cat file)
预期文件夹的内容正确显示。为什么我不能在这种情况下使用管道?
答案 0 :(得分:0)
在第一个示例中,您将cat file
的输出传递给ls -l
的输入。由于ls -l
不接受任何输入,因此它不会对cat file
的输出执行任何操作。但是在第二个示例中,您使用$(cat file)
将cat file
的输出放在传递给ls -l
的参数的位置,而这次ls -l
的文本在file
内{ {1}}在适合的地方做某事。这里的问题是注意到程序的标准输入和程序的参数之间的区别。标准输入是您在C中调用scanf
时所拥有的输入;并且参数是在作为参数传递给主过程的argv
指针中获得的。