今回も前回と同様にiPhoneで動作するシェルのa-Shellを使います。今回はiCloud Driveを利用します。ですので、iCloud,iCloud Driveを利用できるように設定しておく必要があります。なお、iCloud Driveの容量は問いません。とはいえ、全く空きがない状態ではファイルの転送などができませんので、10KBほどは空けておいてもらえば十分でしょう。
なお、a-Shellをインストールすると自動的にiCloud Drive上にa-Shellフォルダが生成されます。ファイルのやり取りは、このa-Shellフォルダ内で行うことになります。
iCloud Drive利用時の注意点
a-ShellのいいところはiCloud Driveに簡単にアクセスでき、ローカルドライブと区別なく使える点です。iCloud Driveはクラウド上にあるため複数のiPhoneでファイルを共有でき、Macからでもアクセスすることができます。
このためiCloud経由でMacとiPhoneのa-Shellとのファイルのやり取りが簡単にできます。また、a-ShellではダイレクトにiCloud Drive上のファイルを操作できます。
なお、iCloud Driveをa-Shellで利用するにあたっては若干の注意点があります。異なるiOSのバージョンを使用している場合、下位バージョンで作成(もしくはコマンド処理)したファイルは上位バージョンでは、そのまま見たり処理することができますが、その逆はできないようです。つまり上位バージョンで作成したファイルへのアクセスは下位バージョンのiOSからは見ることができません。筆者が試した限りでは上位バージョンで作成したファイルは表示されずアクセスもできませんでした。
異なるバージョンのiOSで作成されたファイル等はMacでは問題なく見たりアクセスすることができます。どうしても異なるiOSでやり取りする場合はパソコンであるMac+iCloud Driveを経由するのがよさそうです。
iCloud Driveにアクセスする
それでは早速iCloud Driveにアクセスしてみましょう。cd ~とするとa-ShellがあるiPhone上のホームディレクトリに移動します。
cd ~
これと同様にcdコマンドを使って~の後にiCloudの文字を指定します。(大文字小文字は判別されますので間違えないように入力してください)
cd ~iCloud
これでiCloud Drive上に移動しました。ここでls -laとするとディレクトリ内容が表示されます。
a-Shellディレクトリ(フォルダ)の内容はMacからでも確認できます。今は何もないので図のような表示になります。
何もファイルがないので1つファイルを作成してみましょう。echoとリダイレクトを使ってテキストファイルを作成します。
echo 12345 > a.txt
catコマンドで内容を確認しておきます。
cat a.txt
作成したファイルをMac上で確認してみましょう。iCloud Driveのa-Shellフォルダを開きます。
先ほどa-Shellで作成したa.txtというファイルがあります。開くとa-Shellで作成した内容になっているのが確認できます。もし、アクセスできない、ファイルが見当たらない場合はiCloud Driveが満杯になっている、アカウントが異なっている、macOSやiOSのバージョンが古いという可能性もあります。ネットワークが不安定な場合やiCloud側に問題がある場合も動作しません。何度やってもうまく行かない場合は時間をおいて試してみてください。
iCloud Driveのファイルをローカルにコピーする
それでは次にiCloud DriveにあるファイルをiPhoneのローカルディスク内にコピーしてみましょう。先ほどiCloud Drive上にa.txtファイルを作成しましたので、これをiPhoneローカルのホームディレクトリ内にあるDocumentsディレクトリ内にコピーしてみます。まず、カレントディレクトリはiCloud Driveとし、カレントディレクトリにa.txtファイルがあるものとします。先ほどの手順でa.txtファイルを作成していれば、そのままの状態ということになります。
ファイルのコピーはcpコマンドを使います。iCloud Driveはネットワーク上(クラウド上)にありますが、それを気にすることなく普通のコピーコマンドであるcpを使えるのは大変楽です。なお、ネットワーク上のファイルをコピーするコマンドとしてscpやrsyncがあります。a-Shellではscpコマンドが利用できますが、これについては次回以降で説明します。
それではcpコマンドでiCloud Drive上にあるa.txtファイルをiPhoneローカルのホームディレクトリ内にあるDocumentsディレクトリにコピーします。以下のようにcpの後にコピー元のファイル名を指定し、半角空白で区切ってからコピー先のディレクトリパス(とファイル名)を指定します。
cp a.txt ~/Documents/
正しくコピーされたか確認してみましょう。とりあえずカレントディレクトリをホームディレクトリ内のDocumentsディレクトリにします。
cd ~/Documents/
カレントディレクトリを変更したらlsコマンドでディレクトリ内容を確認してみましょう。
ls -la
a.txtファイルがあるのが確認できます。もし、見当たらない場合はカレントディレクトリがiPhoneの中のホームディレクトリ内のDocumentsかどうか確認してください。カレントディレクトリのパスはpwdコマンドを使えば確認できます。それでも、見当たらない場合はcpコマンドでもう一度ファイルをコピーしてみてください。なお、ネットワーク経由なので、どこかで障害が発生していたり遅延があるとコピーされるまでに時間がかかる場合があります。
コピーしたファイルの内容を確認してみましょう。catコマンドを使えば確認できます。
cat a.txt
iCloud Driveのファイルを削除する
iPhoneのローカル上にa.txtファイルをコピーしたのでiCloud Drive上のファイルは削除してしまいましょう。削除はrmコマンドの後に半角空白で区切って削除するファイルパス(ファイル名)を指定します。以下のようにするとiCloud Drive上にあるa-Shellフォルダ内にあるa.txtファイルが削除されます。
rm ~iCloud/a.txt
削除されたか確認してみましょう。lsコマンドのオプションの後に表示させたいディレクトリパスを指定します。
ls -la ~iCloud
ファイルは削除されています。iCloud DriveなのでMacからでもファイルが削除されたのが確認できます。
iCloud Drive上のa.txtファイルを削除してしまったので、今度はiPhoneのローカル側からiCloud Driveにa.txtファイルをコピーしてみましょう。今回はカレントディレクトリの場所は問いません。フルパスでコピー元とコピー先を指定するからです。
cp ~/Documents/a.txt ~iCloud/
iCloud Drive上なのでMacでもファイルがコピーされたことを確認できます。確認や操作はMacの方がiPhoneよりも楽でしょう。
場所を選択する
ここまではディレクトリの移動はcdコマンドを使いました。しかし、フォルダやディレクトリ構造が複雑になってくるとcdコマンドでパスを指定して移動するのは大変です。パスに英語以外の言語(日本語や中国語、アラビア語、絵文字)が入ると入力すら難しい可能性もあります。
そんな時に便利なのがpickFolderコマンドです。このコマンドを入力すると図のようなフォルダ(ディレクトリ)選択画面になります。
pickFolder
移動したいフォルダを選択します。するとフォルダの中身が表示されます。よければ画面右上にある「開く」の文字をタップすると移動先のディレクトリが決定します。
画面左上にあるブラウズをタップするとより細かく指定することができます。最近使った項目や共有フォルダなどにもアクセスできます。(アクセス権限がないフォルダやファイルはダメです)
パスを保存する(ブックマーク)
pickFolderで場所を選択できるのは簡単ですが、複数の場所を選択したりするのは大変です。そんな時に便利なのがブックマーク機能です。a-Shellには現在のカレントディレクトリのパスをブックマークするbookmarkコマンドが用意されています。また、ブックマークしたリストを表示するshowmarkコマンドが用意されています。
それではbookmarkコマンドから使ってみましょう。まず、iCloud Driveのa-Shellフォルダ内にtestフォルダを作成します。Mac上で作成しても構いませんし、a-Shellでmkdir testのようにコマンドを使って作成しても構いません。
pickFolderコマンドを使ってtestフォルダを選択します。すると、カレントディレクトリがiCloud Drive上のa-Shellフォルダ内のtestフォルダになります。
現在のカレントディレクトリをブックマークするにはbookmarkコマンドの後に任意の名前を指定します。ここでは、一文字のtにします。
bookmark t
これでブックマークされました。どのように登録されているか確認するにはshowmarksコマンドを使います。
showmarks
一番最後に登録したtのブックマークがあるのが確認できます。ブックマークに登録してしまえば後はcd ~tとすることでカレントディレクトリを変更できます。以下の例ではローカルディレクトリ(Documents)から、登録したブックマーク先へ移動します(確認のために上位ディレクトリであるa-Shellにも移動しています)。なお、ブックマークしてあるパスの場合、プロンプトにはパス名ではなく登録したブックマーク名が表示されます。
登録したブックマーク名を変更することもできます。この場合、renamemarkコマンドを使います。renamemarkの後に半角空白で区切って変更前のブックマーク名を指定します。その後に半角空白を入れてから新しいブックマーク名を入力します。ブックマークのパスにいる場合、リターンキーを押せばプロンプトも変更されるので確認しやすいでしょう。また、showmarksコマンドを入力してブックマーク名一覧を表示して確認することもできます。