Useless Use of Cat Award
a day ago
- 无用使用Cat奖:通过cat命令将单个文件的内容管道传递给另一个命令是浪费且不必要的;应使用输入重定向或将文件作为参数直接传递。
- 无用使用echo:在反引号中使用echo命令将变量传递给其他命令通常是多余的;除非需要特定的空格处理,否则应直接使用变量或更简单的结构。
- 无用使用ls在循环中:在for循环中使用ls *是低效的,因为通配符扩展本身就能处理文件列表;直接使用通配符模式,并避免使用反引号,以保证代码更安全和简洁。
- 无用使用wc -l配合grep:使用grep配合wc -l来计数行数通常是不必要的;应使用grep -c .进行计数,或使用grep -q检查输出,或者依赖退出码。
- 危险使用kill -9:避免使用kill -9,因为它会强制终止进程而不允许清理;应先尝试使用像15、2或1这样的信号进行优雅关闭,仅将-9作为最后手段。
- 无用使用反引号:过度使用反引号可能导致命令行长度限制(ARG_MAX)问题,以及对于包含空格或换行符的文件名产生意外行为;应考虑使用while read循环或xargs作为更安全的替代方案。
- 复杂命令的替代方案:对于简单的字段提取,优先使用像cut这样的简单工具而非awk,并利用shell内置功能进行大小写转换或字符删除等任务,避免不必要的复杂性。
- 脚本编写最佳实践:使用if语句直接检查命令的退出码,而不是检查$?,并避免使用带有不必要正则表达式或繁重工具的冗余结构进行简单任务。