xcrun simctl pbcopyxcrun simctl pbpasteは、iOSシミュレータのペーストボード(クリップボード)をコマンドラインから操作するサブコマンドである。 標準入力からシミュレータへのコピーと、シミュレータの内容の標準出力への出力ができる。

基本的な使い方

シミュレータへのコピー

標準入力の内容をシミュレータのペーストボードにコピーする。

$ echo -n "Hello, Simulator" | xcrun simctl pbcopy booted

デバイスはUDIDで指定するほか、起動中のデバイスであればbootedが使える。

シミュレータの内容の確認

シミュレータのペーストボードの内容を標準出力に表示する。

$ xcrun simctl pbpaste booted
Hello, Simulator

日本語などの非ASCII文字もそのまま扱える。

$ echo -n "こんにちは" | xcrun simctl pbcopy booted
$ xcrun simctl pbpaste booted
こんにちは

Macのクリップボードとの連携

Mac標準のpbcopy/pbpasteと組み合わせると、Macとシミュレータの間でクリップボードの内容をやり取りできる。

Macのクリップボードの内容をシミュレータにコピーする例は以下のとおりである。

$ pbpaste | xcrun simctl pbcopy booted

逆にシミュレータのペーストボードの内容をMacのクリップボードにコピーする場合は以下のとおりである。

$ xcrun simctl pbpaste booted | pbcopy

活用例: テキストフィールドへのペースト経由の入力

シミュレータのテキストフィールドへ自動化ツールでキー入力を送ると、意図せずかな変換されることがある。 キー入力のシミュレーションで送信できるのはASCII文字のみであり、Macの入力ソースがローマ字入力IMEの場合、シミュレータ側でローマ字はひらがなに変換されてしまう。

この問題は、キー入力を経由せずpbcopyでペーストボードに直接テキストをセットし、シミュレータ側でペーストすれば回避できる。

$ echo -n "買い物リスト" | xcrun simctl pbcopy booted

コピー後は対象のテキストフィールドをタップしてフォーカスし、長押しで表示される編集メニューから「ペースト」を選択すればよい。 キー入力を介さないため、IMEの変換設定に影響されず意図した文字列をそのまま入力できる。

参考

simctl - NSHipster