11
为什么Shell无法自动修复“猫的无用使用”?[关闭]
很多人使用单行代码和包含代码的脚本 cat "$MYFILE" | command1 | command2 > "$OUTPUT" 第cat一种通常称为“猫的无用使用”,因为从技术上讲,它需要启动一个新进程(通常是/usr/bin/cat),如果已经执行了该命令,则可以避免这种情况 < "$MYFILE" command1 | command2 > "$OUTPUT" 因为shell只需启动command1,只需将其stdin指向给定文件即可。 Shell为什么不自动执行此转换?我觉得“猫的无用使用”语法更容易阅读,shell应该有足够的信息来自动摆脱无用的cat。的cat是在POSIX标准定义,因此壳应该允许执行它在内部,而不是在路径使用二进制的。Shell甚至可以只包含一个参数版本的实现,并在路径中回退到二进制。