iOSシミュレータのデータディレクトリを開くスクリプト
これはInfocom Advent Calendar 2023 21日目の記事です.
iOSシミュレータの名前からデータディレクトリ(~/Library/Developer/CoreSimulator/Devices/<DEVICE_UUID>/data
)を開くスクリプトを作りました.
環境
- mac OS: 13.5 (Ventura)
- jq: 1.7
スクリプト
open-simdir.sh
#!/bin/bash
# show usage
if [[ $# -lt 1 ]]; then
echo "$0 device_name [booted]" >&2
exit 1
fi
device_name=$1
if [[ $2 == booted ]]; then
booted=booted
fi
paths=`xcrun simctl list -j devices ${booted} | jq -r ".devices[][] | select(.name == \"${device_name}\") | .dataPath"`
for path in $paths; do
echo "opening $path"
open "$path"
done
このように使います.
# "iPhone 15" という名前のシミュレータのデータディレクトリを開く
open-simdir.sh "iPhone 15"
# ブートしている "iPhone 15" という名前のシミュレータのデータディレクトリを開く
open-simdir.sh "iPhone 15" booted
説明
iOSシミュレータの情報はxcrun simctl list -j
でJSON形式で取得できます.
デバイスに関する情報は.devices.[][]
にあるので,name
とbooted
で検索してdataPath
を特定し,open
コマンドでディレクトリを開いています.
$ xcrun simctl list -j | jq '.devices[][] | { name, dataPath, booted }' | head
{
"name": "iPhone SE (3rd generation)",
"dataPath": "/Users/otti/Library/Developer/CoreSimulator/Devices/39B997CD-A1FB-4FCD-B7F4-70F27029540A/data",
"booted": null
}
{
"name": "screenshot-iphone65",
"dataPath": "/Users/otti/Library/Developer/CoreSimulator/Devices/2B4D0E62-7B92-4C21-A051-0345ACAE9AA0/data",
"booted": null
}