为rm命令设置别名,避免解析独立星号参数
配置rm命令阻止含独立星号的执行
最简方法是通过shell别名覆盖rm命令,添加参数检查逻辑:
- 打开你的shell配置文件(bash环境用
~/.bashrc,zsh环境用~/.zshrc),添加以下内容:
alias rm='_safe_rm() { for arg in "$@"; do if [ "$arg" = "*" ]; then echo "错误:禁止使用独立星号参数" >&2 return 1 fi done command rm "$@" }; _safe_rm'
- 保存文件后,执行
source ~/.bashrc(bash环境)或source ~/.zshrc(zsh环境),或者重启终端使配置生效。
这个别名的逻辑很直接:遍历所有传入的参数,一旦发现单独的*就输出错误并终止,否则调用真正的rm命令(用command rm避免触发别名递归)。
测试场景:
- 输入
rm -f * .txt时,会直接报错,不会执行删除操作 - 输入
rm *.txt时,shell会先将*.txt展开为匹配的文件名,不会作为单独的*传入函数,因此可以正常执行
内容的提问来源于stack exchange,提问作者user5759106
相关产品推荐
相关产品推荐

