日期:2014-05-16  浏览次数:20684 次

菜鸟问一个简单问题,关于管道和ls与cat
假定我有一个文件f1,其中内容是/root
我可以通过cat f1|grep ro
可以得到结果 /root 搜索成功

但是为什么cat f1|ls

却不是等同于ls /root的输出效果呢???它只是在我当前的路径下执行了ls

------解决方案--------------------
有些意思,是不是定向到的标准输出、输入端口不一样呢?
------解决方案--------------------
ls是打印目录,grep是扫描文档。
------解决方案--------------------
ls不管标准输入,只管命令行参数,所以应该用命令行替换。
C/C++ code

ls $(cat f1)

------解决方案--------------------
管道后一个命令接收前一个命令的正确输出信息,前一个命令产生的标准输出流作为后一个命令的标准输入流,因为ls命令不支持标准输入,所以数据会被丢弃,一般管道命令后接的命令为文本处理命令。
------解决方案--------------------
看了大家之后,才知道楼主是问这个...

ls是接受命令行参数的,不是读标准输入的。

cat f1 | xargs ls