zsh可通过自定义提示符+curl动态显示公网ip:定义带超时和校验的get_public_ip函数,单引号嵌入prompt,并推荐60秒缓存及国内备用api以提升响应速度与稳定性。
zsh 本身不直接显示公网 ip,但可以通过自定义提示符(prompt)+ 外部命令(如 curl)实现在终端提示符中动态显示当前公网 ip。关键在于:用命令获取 ip、把结果嵌入 prompt 变量、避免每次渲染都卡顿。
添加公网 IP 到 zsh 提示符
在 ~/.zshrc 中追加以下内容:
(推荐使用轻量 API,避免超时或限流)
# 定义获取公网 IP 的函数(带超时和错误兜底)
get_public_ip() {
local ip=$(curl -s --max-time 2 https://api.ipify.org 2>/dev/null | tr -d '\r\n')
if [[ -n "$ip" && "$ip" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
echo "?$ip"
else
echo "??"
fi
}
<h1>将函数嵌入提示符(注意:必须用单引号,防止提前执行)</h1><p>PROMPT='$(get_public_ip) %F{blue}%n%F{white}@%F{green}%m %F{yellow}%~ %F{white}%# %f'
</p>
保存后运行 source ~/.zshrc 生效。
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
优化体验:缓存 IP 减少请求频率
频繁调用 API 会影响终端响应速度,建议加入 60 秒缓存:
- 用临时文件记录上次获取时间和 IP
- 函数先检查缓存是否有效,仅过期时重查
- 即使网络失败也不阻塞提示符(返回 “??” 或保留旧值)
替代 API(国内更稳定)
如果 api.ipify.org 访问慢或失败,可换为:
curl -s https://ifconfig.mecurl -s https://icanhazip.com- 国内可用:
curl -s https://myip.ipip.net | awk -F ':' '{print $2}' | awk '{print $1}'(需处理中文冒号)
注意事项
该功能依赖 curl 和网络连接;若终端启动时无网,提示符仍会正常显示(显示 ??);不建议在 PROMPT 中执行耗时命令(如 ping 或复杂解析),否则敲命令会有明显延迟。










