web-dev-qa-db-ja.com

openコマンドを使用せずに、指定されたURLアドレスでターミナルからSafariを実行します

端末からSafariを開くことができません。私が試したコマンドは

/Applications/Safari/Contents/MacOS/Safari http://www.example.com

Safariが開き、次のURLに移動しようとします。

file:///Current/Terminal/Path/Here/http:/www.example.com

私は知っています、openを使用してそれを行うことができます:

open -a safari http://www.example.com

しかし、私はできません。全体像はかなり複雑です。実際には、コマンドライン.NETアプリケーション(モノを使用して実行されています)からブラウザーを実行しようとしています。私が使う System.Processコマンドを実行する.NETクラス。プロセスを制御できる必要があります(プロセスIDを取得し、アクティブかどうかを確認し、必要に応じて強制終了するなど)。 openコマンドを使用しても正しいプロセスIDが返されません(open-Wスイッチ-どちらも役に立ちません)。

9
MarcinJuraszek

1つの解決策はこれを2回行うでしょう

  • サファリを開く
  • AppleScriptを使用してURLを開くtell application "Safari" to open location "http://www.google.com"

これがワンライナーです:

/Applications/Safari.app/Contents/MacOS/Safari & sleep 1 && osascript -e 'tell application "Safari" to open location "http://www.google.com"'

注意:Safariはまだ開始されていないため、AppleScriptを実行する前に待機する必要があります。 sleep 1mightは、Safariの起動に必要な時間に実際に依存するため、すべてのケースで機能するわけではありません。

6