curl -s ipinfo.io | jq -r '.ip, .city'可一次性获取公网IP及城市名,需先安装jq;若不装jq,可用sed替代实现相同效果。

你需要在Mac终端里一次性获取当前公网IP地址和它所在的地理位置(比如城市、国家、运营商),而不是分开查两次或打开浏览器。
用curl调用ipinfo.io获取IP+地理信息
这一步操作起来很简单,直接在终端里运行一条命令就能拿到结构化结果。
打开“终端”(Command + 空格 → 输入“终端” → 回车)。
输入并执行:curl ipinfo.io,然后按回车。
终端会返回一段JSON格式文本,里面包含【ip】、【city】、【region】、【country】、【org】等字段,例如:{"ip":"203.0.113.42","city":"Shanghai","region":"Shanghai","country":"CN","org":"AS4837 China Education and Research Network Center"}。
如果只想看纯IP地址,加管道过滤:curl ipinfo.io | grep '"ip":' | cut -d'"' -f4;想单独提取城市,就用curl ipinfo.io | grep '"city":' | cut -d'"' -f4。
用curl调用ipapi.co获取更细粒度地理数据
这个服务默认返回带经纬度、时区、邮政编码的完整地理信息,适合需要精准定位的场景。
在终端中输入:curl ipapi.co/json,回车执行。
响应体是标准JSON,字段比ipinfo.io更多,例如包含latitude、longitude、timezone、postal等。注意:免费版每小时最多1000次请求,超限会返回429错误。
若返回内容含HTML或报错,说明网络被拦截或DNS解析失败,可先试ping ipapi.co确认连通性。
快速提取IP和城市名的一行命令
当你只需要终端里一眼扫出IP和城市,不想看整段JSON,可以用这个组合命令:
第一步:curl -s ipinfo.io 获取原始响应;
第二步:用jq解析(如未安装,先运行brew install jq);
第三步:执行:curl -s ipinfo.io | jq -r '.ip, .city',输出效果为两行——第一行是IP,第二行是城市名。
这行命令依赖jq工具,不装jq会报错command not found;若不想装额外工具,可用sed替代:curl -s ipinfo.io | sed -n 's/.*"ip":"\([^"]*\)".*/\1/p; s/.*"city":"\([^"]*\)".*/\1/p'。

















