创建 bash 脚本以在 Mac OS X 中打开 URL

创建 bash 脚本以在 Mac OS X 中打开 URL

我希望 OS X 能够智能地打开gitURL,首先尝试打开其仓库页面GitHub,然后又回到类似GitBox.app

我发现这个问题非常有用,我创建了一个 Automator 应用程序来包装一个 bash 脚本(它可以完成所有智能操作),并使用RC默认应用设置 OS X 以使用我的自动程序应用程序打开git://URL。

这不起作用,所以我尝试了一些调试。我将我的 bash 脚本设置为将其参数输出到/tmp/output.txt,结果显示该脚本没有获取任何命令行参数。如果我将 OS X 设置为使用相同的自动操作应用程序作为文件的默认应用程序*.txt,则 bash 脚本会正确地获取文件路径作为第一个参数,但它不适用于 URL。有什么想法可以让它工作吗?

另外,我正在运行 10.7。

编辑:以下是 Automator 应用程序的快照: Automator 应用程序

下面是该简单 bash 脚本的文本(我实际上不会使用它来打开 URL git://,但它表明缺少参数):

rm -f /tmp/output.txt
echo $0 >> /tmp/output.txt
echo $* >> /tmp/output.txt

我得到的唯一输出/tmp/output.txt是:

-

答案1

它不是那样工作的,因为 OS X 不会像其他平台那样处理文件、文件夹和 URL,它们只是其他系统上关联程序的命令行参数。Automator 程序真的只能处理文件和文件夹。


您需要创建一个基于 AppleScript 的应用程序,该应用程序响应open location

打开 AppleScript 编辑器,并粘贴以下代码(当然要更改脚本):

on open location myURL
    do shell script "echo " & myURL & " > /Users/danielbeck/test"
end open location

节省作为应用程序。然后选择刚刚创建的应用程序包,右键单击,显示包装内容Contents/Info.plist,然后使用文本编辑器(plutil如果是二进制,则在命令行上转换为 XML 后)或 Apple 开发者工具中的默认编辑器进行编辑。

将以下内容添加到其顶层结构(屏幕截图是它在当前 Xcode 中的样子,XML 是您在文本编辑器中添加的内容):

在此处输入图片描述

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>openme</string>
        </array>
        <key>CFBundleURLName</key>
        <string>AppleScript Testing URL</string>
    </dict>
</array>

这会将openme://URL 与该应用程序关联。保存,将程序移至其他文件夹并返回以更新启动服务,然后通过openme://在 Web 浏览器的地址栏中输入 URL 来测试它:

在此处输入图片描述

当然,您需要openme用您的 shell 脚本替换git并调用它。echo

相关内容