简短结论:alias 本身不支持参数,但可以通过 函数(function) 来实现“带参数的别名”。
alias 只是简单文本替换,在解析命令行时完成,不会做参数解析。例如:
alias ll='ls -lh'
这是可以的,但下面这种不行:
alias g='git commit -m $1' # ❌ 不支持
$1 在定义 alias 时不会被当作参数处理。
g() {
git commit -m "$1"
}
使用:
g "fix bug"
mkcd() {
mkdir -p "$1" && cd "$1"
}
使用:
mkcd testdir
.bashrc / .zshrc 中永久生效# ~/.bashrc 或 ~/.zshrc
g() {
git commit -m "$1"
}
然后:
source ~/.bashrc
| 场景 | 推荐 |
|---|---|
| 简单命令替换 | alias |
| 需要参数 | function |
| 需要逻辑判断 | function |
| 需要管道、重定向 | function |
❌ 试图在 alias 里用 $1
❌ 把 alias 当函数用
✅ 记住一句话:
alias 负责“缩写”,function 负责“行为”
如果你愿意,我可以帮你把现有的 alias 改成函数,或者给你一些常用带参函数的示例。