openは通常、アプリケーションの起動を指示するとすぐに制御を返す。-Wを付けると、起動したアプリケーションが終了するまでopenコマンド自体がブロックされる。
-Wで終了を待つ
$ open -W -a TextEdit a.txt
TextEditを起動した後、そのウィンドウを閉じてアプリケーションが終了するまで、openコマンドはブロックされる。-Wを付けない場合は、アプリケーションの起動を指示した直後にopenコマンドは終了する。
-nと組み合わせて$EDITORとして使う
manページでは、-Wは-nと組み合わせて$EDITOR環境変数用のコマンドとして使うのに適していると説明されている。
$ export EDITOR="open -n -W -a TextEdit"
-nで既存のTextEditインスタンスに影響を与えず新規インスタンスを起動し、-Wでそのインスタンスの終了を待つことで、git commitのようにエディタの終了を待って処理を続けるツールでも利用できる。
参考
open command - Open a file, folder or URL\第一線のプログラマーの行動原理を学べる!/
