在 CentOS(以及一般的 Bash 环境)里,alias 本身是不支持通配符(*、? 等)参数的。
alias 只是简单文本替换,替换后不会做参数解析或模式匹配。例如:
alias rm='rm -i'
你执行:
rm *.log
实际变成:
rm -i *.log
✅ 这里 * 是 shell 自己展开 的,不是 alias 支持的
❌ alias 不能根据参数内容做判断或匹配
alias clean='rm *.log' # 可以
alias clean*= 'rm' # ❌ 不支持
你不能写:
alias git*='git status'
myrm() {
rm -i "$@"
}
或者更复杂的:
clean() {
rm -f "$@"*.log
}
把它放进:
~/.bashrc
然后:
source ~/.bashrc
| 需求 | 推荐方式 |
|---|---|
| 固定命令替换 | alias |
| 带参数 / 通配 | function |
| 命令前缀匹配 | function |
| 自动补全 | compgen / complete |
如果你有具体使用场景(比如想用 alias 做什么通配操作),我可以帮你写成函数版本。