温馨提示×

centos aliases支持通配吗

小樊
39
2026-09-18 04:13:19
栏目: 智能运维

在 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

总结

  • ❌ CentOS alias 不支持通配符匹配
  • ✅ 通配、参数处理请用 shell function
  • alias 只适合“短命令替换”

如果你有具体使用场景(比如想用 alias 做什么通配操作),我可以帮你写成函数版本。

0 踩