在 macOS 的命令行环境中,颜色功能不仅能提升终端的视觉体验,还能通过高亮显示关键信息帮助用户快速识别输出内容,macOS 基于 Unix 系统,其终端(Terminal)应用支持 ANSI 转义码来控制文本颜色、背景色及样式,同时内置的 ls、grep 等命令也支持颜色输出,本文将详细介绍 macOS 命令行颜色的实现方式、配置方法及实际应用场景。

ANSI 转义码:命令行颜色的基础
ANSI 转义码是一组控制终端显示格式的标准代码,通过在文本中嵌入特定序列来改变颜色、样式或光标位置,其基本格式为 \033[参数m,\033 是转义字符(也可写作 \e 或 \x1b),参数为颜色或样式的数值。\033[31m 将后续文本颜色设置为红色,\033[0m 重置所有样式。
常用 ANSI 颜色参数
| 类型 | 参数 | 颜色/样式 | 示例代码 |
|---|---|---|---|
| 前景色 | 30 | 黑色 | \033[30m黑色文本 |
| 前景色 | 31 | 红色 | \033[31m红色文本 |
| 前景色 | 32 | 绿色 | \033[32m绿色文本 |
| 前景色 | 33 | 黄色 | \033[33m黄色文本 |
| 前景色 | 34 | 蓝色 | \033[34m蓝色文本 |
| 前景色 | 35 | 紫色 | \033[35m紫色文本 |
| 前景色 | 36 | 青色 | \033[36m青色文本 |
| 前景色 | 37 | 白色 | \033[37m白色文本 |
| 背景色 | 40 | 黑色背景 | \033[40m黑色背景文本 |
| 背景色 | 41 | 红色背景 | \033[41m红色背景文本 |
| 背景色 | 42 | 绿色背景 | \033[42m绿色背景文本 |
| 背景色 | 43 | 黄色背景 | \033[43m黄色背景文本 |
| 背景色 | 44 | 蓝色背景 | \033[44m蓝色背景文本 |
| 背景色 | 45 | 紫色背景 | \033[45m紫色背景文本 |
| 背景色 | 46 | 青色背景 | \033[46m青色背景文本 |
| 背景色 | 47 | 白色背景 | \033[47m白色背景文本 |
| 样式 | 1 | 加粗 | \033[1m加粗文本 |
| 样式 | 4 | 下划线 | \033[4m下划线文本 |
| 样式 | 0 | 重置所有样式 | \033[0m重置文本 |
实际应用示例
在终端中直接输入带有 ANSI 转义码的文本即可看到颜色效果:
echo -e "\033[31m红色文本\033[0m 和 \033[32m绿色文本\033[0m"
上述命令中,-e 参数使 echo 解释转义码,输出结果为“红色文本 和 绿色文本”,红色文本”显示为红色,“绿色文本”显示为绿色,\033[0m 确保后续文本恢复默认样式。
macOS 终端的颜色配置
macOS 的终端应用支持通过图形界面和配置文件自定义颜色,包括主题、文本颜色、背景色及选中颜色等。

通过图形界面配置
- 打开“终端”应用,点击菜单栏的“终端” > “偏好设置”。
- 在“描述文件”标签页中,选择当前使用的描述文件(如“Basic”)。
- 切换到“颜色”选项卡,可设置:
- “文本颜色”:修改默认文本颜色。
- “选中文本颜色”:修改文本被选中时的背景色。
- “ ANSI 颜色”:启用后支持 8/16 色 ANSI 转义码,勾选“显示 ANSI 颜色”可让终端正确解析颜色代码。
- 点击“颜色”按钮可打开颜色选择器,或选择预设主题(如“Pro”、“Solarized”等)。
通过配置文件自定义
终端的描述文件配置文件位于 ~/Library/Preferences/com.apple.Terminal.plist,但直接编辑该文件较复杂,推荐使用第三方工具如 oh-my-zsh 或 iterm2 进行高级配置。
使用 oh-my-zsh 增强颜色支持
oh-my-zsh 是流行的 zsh 配置框架,内置多种主题(如 agnoster、powerlevel10k),支持 Git 状态、命令提示符等高亮显示:
# 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 更换主题(powerlevel10k)
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
echo 'ZSH_THEME="powerlevel10k"' >> ~/.zshrc
source ~/.zshrc
命令行工具的颜色支持
许多 macOS 内置命令支持颜色输出,通过参数或环境变量控制。
ls 命令:文件类型颜色区分
默认情况下,ls 命令会根据文件类型显示不同颜色:

- 蓝色:目录
- 绿色:可执行文件
- 红色:压缩文件
- 青色:符号链接
若颜色未显示,可检查 CLICOLOR 和 LSCOLORS 环境变量:
# 启用颜色输出 export CLICOLOR=1 # 设置颜色方案(例:目录=蓝色,可执行=绿色) export LSCOLORS=ExFxBxDxCxegedabagacad
grep 命令:高亮匹配文本
grep 命令通过 --color=auto 参数高亮显示匹配文本:
grep --color=auto "关键词" 文件名
macOS 默认已启用此功能,无需额外配置。
tree 命令:目录树颜色显示
安装 tree 命令后,使用 -C 参数启用颜色:
brew install tree tree -C
自定义脚本中的颜色应用
在 Shell 脚本中定义颜色变量,可提升脚本输出可读性:
#!/bin/bash
# 定义颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${RED}错误:操作失败!${NC}"
echo -e "${GREEN}成功:任务完成。${NC}"
echo -e "${YELLOW}警告:请检查输入。${NC}"
将上述脚本保存为 color_test.sh,赋予执行权限后运行即可看到彩色输出。
常见问题与解决方案
终端中颜色显示异常或乱码
原因:终端未正确解析 ANSI 转义码,或 CLICOLOR 环境变量未设置。
解决:
- 检查终端偏好设置中“ANSI 颜色”是否启用。
- 确认
CLICOLOR=1已添加到~/.zshrc或~/.bash_profile。 - 若使用第三方终端(如 iTerm2),确保“Report Terminal Type”设置为
xterm-256color。
如何禁用命令的颜色输出?
原因:某些场景下(如管道处理)颜色代码会干扰文本解析。
解决:
- 使用
--color=never参数(如grep --color=never)。 - 通过
sed命令移除 ANSI 转义码:ls --color=always | sed 's/\x1b\[[0-9;]*m//g'
FAQs
问题 1:如何在 macOS 终端中永久保存颜色配置?
解答:在“终端” > “偏好设置” > “描述文件”中配置颜色后,点击“默认”按钮可将当前配置设为全局默认,或通过编辑 ~/.zshrc 添加环境变量(如 export CLICOLOR=1)并重启终端。
问题 2:如何支持 256 色或真彩色(True Color)输出?
解答:macOS 终端默认支持 8/16 色,若需 256 色,可在描述文件中设置“高级” > “报告终端类型”为 xterm-256color,真彩色(24位)需确保终端支持,并通过 printf 测试:
printf "\x1b[38;2;255;0;0m真红色文本\x1b[0m\n"
