如何在Bash中获取最近使用的iOS模拟器及其中最新更新应用的文件路径
获取最近运行iOS模拟器中最新构建应用存储路径的Bash实现
直接可用的完整脚本
#!/bin/bash # 依赖jq解析JSON,无jq的版本可参考下文替换本段逻辑 LATEST_SIM_UUID=$(xcrun simctl list devices --json | jq -r '.devices | values[] | sort_by(-.lastBootedAt) | .[0] | select(.isAvailable == true) | .udid') if [ -z "$LATEST_SIM_UUID" ]; then echo "错误:未找到可用的已启动iOS模拟器,请先启动目标模拟器" exit 1 fi # 模拟器应用沙盒存储根目录 SIM_SANDBOX_ROOT="$HOME/Library/Developer/CoreSimulator/Devices/$LATEST_SIM_UUID/data/Containers/Data/Application" # 取修改时间最新的目录即为最新构建的应用沙盒路径 LATEST_APP_SANDBOX=$(ls -td "$SIM_SANDBOX_ROOT"/*/ 2>/dev/null | head -n 1) if [ -z "$LATEST_APP_SANDBOX" ]; then echo "错误:当前模拟器下未找到已安装的应用,请先运行一次目标应用后重试" exit 1 fi echo "最新应用沙盒根路径:" echo "$LATEST_APP_SANDBOX"
使用说明
- 依赖要求:默认脚本使用
jq处理JSON格式的模拟器列表,若未安装可执行brew install jq完成安装;不想安装jq的话可将获取LATEST_SIM_UUID的代码替换为以下纯文本处理逻辑:LATEST_SIM_UUID=$(xcrun simctl list devices | grep -v 'unavailable' | grep '(' | sort -r | head -n 1 | awk -F '[()]' '{print $2}') - 路径使用:输出的路径为iOS应用沙盒的根目录,包含
Documents、Library、tmp三个标准子目录。SQLite数据库通常存放在Documents或Library/Application Support路径下,直接拼接数据库文件名即可得到DBeaver等工具所需的完整连接路径 - 额外需求:如果需要获取应用安装包(.app)的路径,可将脚本中
data/Containers/Data/Application替换为data/Containers/Bundle/Application即可
内容的提问来源于stack exchange,提问作者Micheal Wells
相关产品推荐
相关产品推荐

