ottijp blog

iOSシミュレータのデータディレクトリを開くスクリプト

  • 2023-12-30

これは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.[][]にあるので,namebootedで検索して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
}

refs


ottijp
都内でアプリケーションエンジニアをしています
© 2024, ottijp