zsh
Z Shell,自 macOS Catalina(2019)起成为 macOS 默认 Shell,同时广泛用于 Linux。兼容 bash 语法,并提供更强的补全、插件生态和配置能力。更通用的终端、登录 Shell 与 chsh 等说明见 终端与Shell;家目录与点文件组织见 文件系统。
配置文件加载顺序
登录 Shell:~/.zprofile → ~/.zshrc
交互 Shell:~/.zshrc
| 文件 | 用途 |
|---|---|
~/.zshrc | 交互式配置(别名、插件、主题) |
~/.zprofile | 登录时执行(环境变量) |
~/.zshenv | 所有 Shell 都加载(最先执行) |
变量
name="World" # 赋值
echo "Hello, $name!"
echo "Hello, ${name}!" # 推荐加花括号
export PATH="$HOME/bin:$PATH" # 导出环境变量
unset name # 删除变量配置 Homebrew 时常在 ~/.zshrc 加入 eval "$(brew shellenv)",见 Homebrew。
数组
fruits=("apple" "banana" "cherry")
echo $fruits[1] # zsh 数组从 1 开始
echo $#fruits # 数组长度
echo $fruits[@] # 所有元素
# 追加
fruits+=("date")补全系统
zsh 补全比 bash 更强大,支持菜单选择:
# 在 ~/.zshrc 中启用
autoload -Uz compinit && compinit
# 补全菜单选择
zstyle ':completion:*' menu select
# 大小写不敏感补全
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'常用内置功能
全局别名
alias -g L="| less"
alias -g G="| grep"
# 使用
ls -la L # 等同于 ls -la | less
cat log.txt G error目录跳转
# 直接输入目录名跳转(无需 cd)
setopt AUTO_CD
# 目录栈
dirs -v # 查看目录栈
cd -1 # 跳回上一目录
cd -2 # 跳回第二个目录扩展 glob
# 递归匹配
ls **/*.md # 所有子目录下的 md 文件
# 排除匹配
ls ^*.md # 非 md 文件
# 按修改时间
ls *(om[1,5]) # 最近修改的 5 个文件Oh My Zsh
最流行的 zsh 配置框架,提供主题和插件管理。安装需联网拉取脚本;若超时或失败,可结合 网络配置 检查代理或 DNS。
# 安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"常用插件
# ~/.zshrc
plugins=(
git # git 别名和补全
z # 智能目录跳转
zsh-autosuggestions # 命令建议(需单独安装)
zsh-syntax-highlighting # 语法高亮(需单独安装)
docker # docker 补全
npm # npm 补全
)安装第三方插件
# zsh-autosuggestions(输入时显示历史建议)
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting(命令语法高亮)
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting常用主题
| 主题 | 特点 |
|---|---|
robbyrussell | 默认主题,简洁 |
agnoster | Git 状态显示,需 Nerd Font |
powerlevel10k | 高度可定制,性能强(需单独安装) |
# ~/.zshrc
ZSH_THEME="robbyrussell"Powerlevel10k
性能最强的 zsh 主题,首次运行向导自动配置。
# 安装(Oh My Zsh)
git clone --depth=1 https://github.com/romkatv/powerlevel10k \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
# ~/.zshrc
ZSH_THEME="powerlevel10k/powerlevel10k"
# 重新配置向导
p10k configure与 bash 的主要差异
| 特性 | zsh | bash |
|---|---|---|
| 数组下标 | 从 1 开始 | 从 0 开始 |
| 补全 | 菜单选择,更强大 | 基础 Tab 补全 |
| 主题/插件 | Oh My Zsh 生态丰富 | 较少 |
| glob 扩展 | 更丰富 | 基础 |
| macOS 默认 | 是(Catalina+) | 否(旧版默认) |