shell中的反引号执行命令和管道执行命令有什么区别?

ygtzz
  • 566
wc -l `find ./ -name *.py`
find . -name "*.py" | xargs wc -l

反引号的命令执行方式,与管道的执行方式,有什么区别呢,哪种更好?

回复
阅读 353
2 个回答

关于shell中通过反引号执行“不好用”的原因看这里

a) wc -l $(find) b) find | xargs wc -l

区别大概是:

  • a) 同一时间只有一个进程在跑;b) 在同一时间有3个进程
  • a) wcfind 执行完前不会执行,输出有延迟;b) wc 实时输出

    • 场景:如果想实时查看日志
  • a) 在接收 find 输出时用的 buffer 比 b) | 管道用的 buffer 更大, 且不设上限(我猜,没看过bash的实现)

    • 场景:如果把 find 替换为 cat 20G.log
Feng_Yu
  • 10.3k

我还寻思着这个不好用了出自哪呢?一看文章来源CSDN,我就想发这个表情

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏