openは引数がURL形式であれば、-uを付けなくてもURLとして開く。-uは、文字列がローカルのファイルパスとも解釈できてしまう曖昧なケースで、URLとして扱うことを明示するオプションである。
URLはそのまま開ける
$ open "https://ss64.com/mac/open.html"
http/httpsスキームのURLを渡すと、既定のブラウザで開かれる。mailto:のような他のスキームも、対応するアプリケーションが登録されていればそのアプリで開かれる。
$ open "mailto:test@example.com"
このコマンドを実行すると、メールスキームに登録されたMail.appが新規プロセスとして起動する。
$ ps -e -o comm= | grep Mail
/System/Applications/Mail.app/Contents/MacOS/Mail
-uでURLとして解釈を強制する
-uを付けると、そのURLスキームを扱うアプリケーションで確実に開く。マニュアルによれば、文字列がファイルパスとも一致してしまう場合でも、URLとして扱われる。
$ open -u "mailto:test@example.com"
通常のURL文字列であれば-uの有無で挙動に違いは出ないが、URLスキームの文字列とたまたま同名のファイルがカレントディレクトリに存在するような紛らわしいケースでは、-uを付けることでURLとして開かれることが保証される。
参考
open command - Open a file, folder or URL\第一線のプログラマーの行動原理を学べる!/
