xcrun simctl pbcopyとxcrun 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\第一線のプログラマーの行動原理を学べる!/
