
Mac OS Xのコマンドラインからマウントされたすべてのドライブとディスクを即座に取り出す
次回コマンドラインで、Macに接続されているマウントされたボリューム、ハードドライブ、ディスク、ディスクイメージ、外付けドライブなどをすべて取り外す必要がある場合は、便利なosascriptコマンド文字列を使えば、それらをすべて一挙に取り外すことができます。これは、ターミナルで頻繁に作業し、ワークステーションをすぐに片付けて出発したい場合に最適ですが、SSH接続を介してMacをリモート管理したり、シェルスクリプトに追加したりするなど、様々な用途にも非常に便利です。
osascriptをご存知ない方のために説明すると、osascriptはAppleScriptのコマンドラインインターフェースで、ターミナルからAppleScriptやOSA言語のスクリプトを実行できます。機能は非常にシンプルで、AppleScriptエディタに記述するスクリプトやステートメントを入力するだけで、OS X内のGUIアプリを起動することなく、ターミナルからすべての処理を実行できます。それでは、osascriptを使ってMacにマウントされているすべてのボリュームをイジェクトしてみましょう。
ターミナル経由でマウントされたすべてのボリューム、ドライブ、ディスクイメージを取り出す
ターミナルから、次のコマンド文字列を 1 行で実行します。
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
コマンドラインではいつものことですが、コマンド構文全体が1行に収まっていることを確認してください。ターミナルウィンドウが非常に大きく設定されていない限り、おそらく行送りになると思いますが、問題ありません。
Enterキーを押してコマンドを実行するとすぐに、ボリュームの取り出しが開始されます。ディスクイメージとネットワークボリュームは即座に取り出されますが、外付けハードドライブは取り出し前にまず回転を開始します。一部のドライブの回転を待つ必要がある場合でも、タスク全体は非常に高速で、それ以上の操作は必要ありません。
hdiutilやdiskutilツールなど、他にも方法はありますが、マウントポイントを使わずにすべてを取り出すことができるosascriptを使った方法がおそらく最も高速です。もしボリュームを一括で取り出す別の方法、例えばMac OS XとLinuxの両方で使えるようなクロスプラットフォーム対応の方法をご存知でしたら、ぜひコメント欄でお知らせください。
これを頻繁に使用する場合は、コマンドの長さを短縮するために、bash_profile にエイリアスを追加することを検討してください。そのためには、.bash_profile に次のようなコードを追加するだけです。
alias ejectall='osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)''
これにより、コマンド文字列全体ではなく、「ejectall」のみを入力できるようになります。
もちろん、これは少し高度な方法であり、ほとんどの Mac ユーザーにとっては、取り出しキーを押したままにするか、OS X Finder でサイドバーからディスクを見つけて名前の上にマウスを移動し、取り出しボタンをクリックする方が便利です。