每天要敲三四次 cd ~/Work/company/portal 再 ls -al,手指都记住了。macOS 现在默认 shell 是 zsh,加一条 alias 能省下这些重复输入,但写错文件就永远不生效。
写进 ~/.zshrc
zsh 启动读的是 ~/.zshrc,老教程里说的 .bash_profile 在当前系统上不生效。用编辑器打开它,没有就新建,追加一行 alias ll='ls -alF',保存后执行 source ~/.zshrc,当前窗口立刻生效,新开窗口也会自动加载。改完发现没反应,先 echo $SHELL 看是不是 zsh。
alias ll='ls -alF'alias gs='git status'别名只在交互式 shell 里有效
写进脚本、cron、CI 配置里都不认 alias,除非显式打开 expand_aliases。这就是本地测试正常、放进部署脚本却报 command not found 的原因。要复用的逻辑写成函数,或者放一个可执行脚本到 ~/bin,再把目录加进 PATH。
要传参数就用函数
alias 接不了参数。想一条命令建目录并进去,只能写函数:
mkcd() { mkdir -p $1 && cd $1 }函数放在同一个文件里照样会被加载。路径带空格时给变量加引号,和写普通脚本没区别。
常用的一小撮
ll 看详细列表,la 连隐藏文件一起列,.. 回上级,... 回两级。git 的缩写最多,gs、gd、gl 各管一块。别名攒多了容易忘,按用途分组写、每行加注释,半年后还看得懂。也可以单独建一个文件,在 .zshrc 里 source 进来。
几个容易忽略的点
alias 覆盖同名命令不会提醒,别去改 cd、ls 之外的高频命令,日子久了换台机器就手残。查看现有别名直接敲 alias,临时取消用 unalias ll,只对当前窗口有效。想知道某条定义在哪,grep -n 'alias ll' ~/.zshrc 最快。PATH 相关的别名没用,那是环境变量的事,得 export。
别名适合缩短固定命令,逻辑一复杂就该换函数。把 rm 改成 rm -i 这类保护性别名,在别人的机器上会直接删文件,谨慎。