macos终端无法列出所有历史wi-fi网络,但可管理已保存的自动连接配置;通过security命令查钥匙串中airport密码条目获取ssid,用networksetup验证并管理首选网络列表。
macos 终端无法直接列出“所有已知 wi-fi 连接”的完整历史记录(如曾经连过但已遗忘的网络),但可以可靠管理当前系统中已保存、可自动连接的 wi-fi 网络配置——这些就是系统真正“记住”的网络。核心操作围绕钥匙串(密码)、网络服务配置和扫描结果展开,不依赖图形界面。
查看所有已保存的 Wi-Fi 网络名称(SSID)
系统把每个已知网络的密码存于登录钥匙串,网络名即为钥匙串条目名。执行以下命令可列出全部:
- security find-generic-password -s "Wi-Fi" -g 2>/dev/null | grep "account:" | sed 's/account://; s/\"//g; s/ //g' —— 仅适用于部分旧版本或自定义命名
- security find-generic-password -D "AirPort network password" -w 2>/dev/null | tr '\n' '\t' | sed 's/\t/ /g' —— 更通用,提取所有 AirPort 类型密码条目的账户名(即 SSID)
- 若返回为空,说明没有保存任何 Wi-Fi 密码;若报错
SecKeychainSearchCopyNext: The specified item could not be found,表示暂无已知网络
删除某个已知 Wi-Fi 的完整配置(含密码与设置)
仅删密码不够,还需清除网络服务层的自动连接偏好。推荐两步走:
- 先删钥匙串中的密码:security delete-generic-password -s "YourNetworkName" -D "AirPort network password"(替换 YourNetworkName 为实际 SSID)
- 再清空该网络在系统偏好设置里的自动加入记录:networksetup -removepreferredwirelessnetwork "Wi-Fi" "YourNetworkName"(服务名请用
networksetup -listallnetworkservices确认) - 执行后该网络将不再出现在“自动加入”列表中,下次需手动输入密码才能连接
批量导出或清理所有已知 Wi-Fi 配置
适合重装前备份或排查异常连接干扰:
- 导出当前所有已保存 SSID 到桌面:security find-generic-password -D "AirPort network password" -w 2>/dev/null > ~/Desktop/saved_wifi_ssids.txt
- 一键清空全部已知 Wi-Fi(谨慎!):for ssid in $(security find-generic-password -D "AirPort network password" -w 2>/dev/null); do security delete-generic-password -s "$ssid" -D "AirPort network password" 2>/dev/null; networksetup -removepreferredwirelessnetwork "Wi-Fi" "$ssid" 2>/dev/null; done
- 注意:此操作不可撤销,且不会影响当前正在连接的网络,只清除“记忆”
验证某个网络是否被系统真正记住
不能只看钥匙串有无密码,还要确认它是否在“首选网络”列表里:
- 运行:networksetup -listpreferredwirelessnetworks "Wi-Fi"(服务名务必准确)
- 输出中显示的网络,才会在信号出现时自动尝试连接;未出现在此列表,即使有密码也不会自动连
- 若想让某网络自动连接,需先连上一次并勾选“记住此网络”,或用
networksetup -addpreferredwirelessnetworkatindex手动添加(需指定索引位置)











