开发者社区> 问答> 正文

linux中的ls 为什么不支持管线(pipe line)?

linux的shell命令中为什么一些支持管线一些不支持?它们的实现方式有什么区别?
如何写一个支持管线命令的程序?用C或shell script给我演示一下都可以
谢谢!

展开
收起
a123456678 2016-06-22 14:10:12 2226 0
1 条回答
写回答
取消 提交回答
  • 本想简短写在Honwhy的评论区的,结果越写越长了。。。

    你把两个不同的东西混为一谈了。管道沟通的是 标准输入输出(stdin/stdout),ls命令接受的路径是 命令行参数 。

    看你举的例子cat file | ls,目的是用ls列出file文件中的每一行路径的内容。

    ls是以类似ls /path/to/file这种方式调用的,你需要的不是管道,而是ls $(cat file)

    你混乱的原因可能是因为,相当多命令是同时可以接受两者的,比如cat(但行为不一样了)。但没有人规定一定要同时支持两者。

    加多个例子,刚才写的时候没想起来:

    vim编辑文件时用的命令是vim file,但如果要从stdin读入编辑内容的话就需要使用echo "gagagagaggaga" | vim -。

    在vim后面加上一个参数-来告诉vim调整行为,改为从stdin读入内容。

    小尾巴:

    如果你的提问对你造成了很多困扰,但却被很多人认为没有价值、懒得回答、甚至点反对。你的学习很可能正处于“溺水”状态。没有准备好基本救生装备(相应专业的基础知识框架),就进入到深水区,被大量需要基础知识支撑的相对高级内容淹没,茫无头绪。

    尤其在自学成风的计算机领域这种情况非常常见,我自己之前也在这上面浪费很多时间。这个时候建议应该去找到至少一本自己领域内的经典书籍,拒绝速成的诱惑,将知识体系从基础扎实的梳理一遍。这是我体验过最快的学习方法。

    2019-07-17 19:45:28
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载