xcrun simctl renameは、既存のシミュレータデバイスの名前を変更するサブコマンドである。

基本的な使い方

rename <device> <name>の形式で実行する。

$ xcrun simctl rename "TIL Rename Before" "TIL Rename After"

エラーがなければ何も出力されず、終了コードは0になる。 UUIDは変更されず、名前だけが変わる。

$ xcrun simctl list devices | grep "TIL Rename"
    TIL Rename After (59AEA37A-3690-4209-AA46-2C3472480B17) (Shutdown)

起動中のデバイスでも名前を変更できる

参考: xcrun simctl cloneでiOSシミュレータデバイスを複製する

cloneは起動中のデバイスに対して実行するとエラーになるが、renameは起動中(Booted)のデバイスに対してもエラーにならず実行できる。

$ xcrun simctl boot "TIL Rename After"
$ xcrun simctl rename "TIL Rename After" "TIL Rename While Booted"
$ xcrun simctl list devices | grep "TIL Rename"
    TIL Rename While Booted (59AEA37A-3690-4209-AA46-2C3472480B17) (Booted)

$ xcrun simctl shutdown "TIL Rename While Booted"

存在しないデバイスを指定するとエラーになる

存在しない名前やUUIDを指定すると、Invalid deviceエラーになり終了コードが0以外になる。

$ xcrun simctl rename "Nonexistent Device XYZ" "Whatever"
Invalid device: Nonexistent Device XYZ

既存デバイスと同じ名前に変更できる

参考: xcrun simctl createでiOSシミュレータデバイスを新規作成する

createと同様、rename後の名前が既存デバイスと重複してもエラーにならない。

$ xcrun simctl rename "TIL Rename Second" "TIL Rename While Booted"
$ xcrun simctl list devices | grep "TIL Rename While Booted"
    TIL Rename While Booted (59AEA37A-3690-4209-AA46-2C3472480B17) (Shutdown)
    TIL Rename While Booted (DC317D4C-1622-4781-A853-DBB2F43A53D1) (Shutdown)

同名デバイスが複数ある場合は1台しか変更されない

参考: xcrun simctl deleteでiOSシミュレータデバイスを削除する

deleteと同様、<device>に名前を指定して同名デバイスが複数存在する状態でrenameを実行しても、そのうち1台しか名前が変更されない。

$ xcrun simctl rename "TIL Rename While Booted" "TIL Renamed By Name"
$ xcrun simctl list devices | grep "TIL Rename"
    TIL Rename While Booted (59AEA37A-3690-4209-AA46-2C3472480B17) (Shutdown)
    TIL Renamed By Name (DC317D4C-1622-4781-A853-DBB2F43A53D1) (Shutdown)

名前だけを頼りに同名デバイスをまとめて操作したい場合、deleteと同じく1回の実行では処理し切れない前提でスクリプトを組む必要がある。 確実に対象を指定したい場合は、名前ではなくUUIDを指定するのがよい。