在没有打开命令的情况下使用给定的 URL 地址从终端运行 Safari

Mar*_*zek 10 safari terminal command-line macos

我在从终端打开 Safari 时遇到问题。我试过的命令是

/Applications/Safari/Contents/MacOS/Safari http://www.example.com
Run Code Online (Sandbox Code Playgroud)

Safari 打开并尝试导航到 url:

file:///Current/Terminal/Path/Here/http:/www.example.com
Run Code Online (Sandbox Code Playgroud)

我知道,我可以使用open

open -a safari http://www.example.com
Run Code Online (Sandbox Code Playgroud)

但我不能。更大的图景非常复杂:我实际上是在尝试从命令行 .NET 应用程序(使用单声道运行)运行浏览器。我使用System.Process.NET 类来运行命令,并且我必须能够控制进程(获取进程 ID,检查它是否处于活动状态,必要时将其杀死,等等)。使用open命令不会返回正确的进程ID(我尝试使用open-W开关-也没有帮助)。

Mat*_*ler 6

一种解决方案将在 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"'
Run Code Online (Sandbox Code Playgroud)

注意:您需要等待才能运行 AppleScript,因为 Safari 尚未启动。这sleep 1可能并不适用于所有情况,因为它实际上取决于 Safari 需要多长时间启动。