运行 打开位置 AppleScript 的终端命令
Run a Terminal command on open location AppleScript
我想在调用自定义 url 时在终端中 运行 命令。
示例:
我想打开一个终端,然后 运行 当有人在浏览器中打开 myapp://hello 或当有人执行 open "myapp://hello" 时回显 "hello myapp://hello" =15=]
我是 apple script 的新手,所以我搜索了很多但无法得出有效的代码片段。
我试过了:
on open location this_URL
display alert this_URL
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
end open location
将 Info.plist 更新为:
.....
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>myapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
....
这段代码只是打开一个终端,而不是 运行echo 命令。
代码的独立部分:
on open location this_URL
display alert this_URL
end open location
和
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
完美运行。
但是组合不起作用....
请告诉我一些解决方法。
提前致谢
我认为这是授权问题。
我不知道为什么,但是当我们在 plist 中添加 CFBundleURLTypes 时,macOS 会阻止我们向终端发送事件。
所以这是一个解决方法:
制作 2 个应用程序,而不是如下所示的一个应用程序
应用程序 1:url 处理程序
因此这将处理传入的 url 将其复制到剪贴板并启动第二个应用程序。
它的 applescript 如下:
on open location this_URL
set the clipboard to this_URL
tell application "/path/to/app2.app" to activate
end open location
将 CFBundleURLTypes 添加到其 plist
应用程序 2:终端处理程序
它将从剪贴板读取 url,然后在终端上读取 运行。
它的 applescript 如下:
tell application "Terminal"
set this_URL to ( the clipboard as text )
do script "echo 'hello " & this_URL & "'"
activate
end tell
set the clipboard to ""
我想在调用自定义 url 时在终端中 运行 命令。
示例:
我想打开一个终端,然后 运行 当有人在浏览器中打开 myapp://hello 或当有人执行 open "myapp://hello" 时回显 "hello myapp://hello" =15=]
我是 apple script 的新手,所以我搜索了很多但无法得出有效的代码片段。
我试过了:
on open location this_URL
display alert this_URL
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
end open location
将 Info.plist 更新为:
.....
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>myapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>
....
这段代码只是打开一个终端,而不是 运行echo 命令。 代码的独立部分:
on open location this_URL
display alert this_URL
end open location
和
tell application "Terminal"
reopen
do script "echo 'hello " & this_URL & "'"
activate
end tell
完美运行。
但是组合不起作用....
请告诉我一些解决方法。
提前致谢
我认为这是授权问题。
我不知道为什么,但是当我们在 plist 中添加 CFBundleURLTypes 时,macOS 会阻止我们向终端发送事件。
所以这是一个解决方法:
制作 2 个应用程序,而不是如下所示的一个应用程序
应用程序 1:url 处理程序
因此这将处理传入的 url 将其复制到剪贴板并启动第二个应用程序。 它的 applescript 如下:
on open location this_URL
set the clipboard to this_URL
tell application "/path/to/app2.app" to activate
end open location
将 CFBundleURLTypes 添加到其 plist
应用程序 2:终端处理程序
它将从剪贴板读取 url,然后在终端上读取 运行。 它的 applescript 如下:
tell application "Terminal"
set this_URL to ( the clipboard as text )
do script "echo 'hello " & this_URL & "'"
activate
end tell
set the clipboard to ""