普通 alias 不支持动态参数,因其仅为静态文本替换;需用函数封装逻辑并用 alias 指向该函数,如 mkcd() { mkdir -p "$1" && cd "$1"; }; alias mkcd=mkcd。

为什么不能直接用 alias 带参数?
alias 是纯文本替换机制,只做静态展开。它不会解析或传递 `$1`、`$@` 等位置参数。例如:
错误写法(不会生效):alias grepf='grep -r "$1" .' —— `$1` 在定义时就被当作字面量,运行时不会被替换。
正确做法:函数 + alias 组合
把逻辑封装成函数,再让 alias 成为它的快捷入口。这是最常用、最可靠的方式。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
- 打开你的 shell 配置文件:
nano ~/.bashrc(bash 用户)或nano ~/.zshrc(zsh 用户) - 在文件末尾添加函数定义和对应 alias,例如:
gof() { cd "$1" && ls -la; }<br>
alias go=gof
- 保存退出后,执行
source ~/.bashrc(或source ~/.zshrc)重载配置 - 之后就能直接运行:
go ~/Downloads→ 自动进入 Downloads 目录并列出详细内容
几个实用带参函数示例
以下可直接复制进配置文件使用:
-
创建并进入目录:
mkcd() { mkdir -p "$1" && cd "$1"; }<br> alias mkcd=mkcd -
搜索当前目录下所有含关键词的文件名(不搜内容):
ff() { find . -type f -name "*$1*" | head -20; }<br> alias ff=ff -
快速启动 Python 服务(带端口参数):
pyserver() { python3 -m http.server "${1:-8000}"; }<br> alias serve=pyserver(不传参默认用 8000)
注意事项
函数中务必用双引号包裹 "$1"、"$@" 等参数,避免路径含空格时报错;
函数名和 alias 名可以相同(如 mkcd() { ... }; alias mkcd=mkcd),便于记忆;
如果函数需要访问环境变量或别名,确保它们已在函数定义前加载。










