我有一个 bash 脚本,事实上可能有很多,我希望能够用它们在 OSX 的 finder 中打开文件。
这是一个非常非常简单的概念,但由于某种原因,bash 脚本在 Finder 的“打开方式”对话框中显示为灰色。
我知道有多种使用 applescript 或打包为应用程序的方法...但我还没能弄清楚这些,而且我真的不想为了这项简单的任务而学习另一种语言——有人可以告诉我如何做到这一点吗?
谢谢!
答案1
这不可能。启动服务使用应用程序标识符,而 bash 脚本没有它们。
您需要使用 Automator 创建一个包装应用程序。
- 启动 Automator
- 选择应用
- 寻找运行 Shell 脚本动作并将其添加到右侧。
- 传递输入作为参数
- 把你的脚本放进去
- 保存在某处
这是我的版本,使用咆哮命令行实用程序:
结果:
您可以看到此更改对~/Library/Preferences/com.apple.LaunchServices.plist
您全部更改:
(“测试”是我为 Automator 应用程序起的名字)
答案2
我按照 Daniel Beck 的说明进行了一些修改,使其可以用于我想在 Mac 上的 Chrome(Firefox 也可以)中打开的 URL 文件。
我使用的脚本是:
sed 's/^URL=/URL=/' "$1" | grep -m 1 '^URL=' | sed 's/^URL=//' | tr -d '\r' | xargs open -a "Google Chrome"
这将从典型的 URL 文件中解析出 URL= 行,如下所示:
[InternetShortcut]
URL=http://www.docircuits.com/pricing
IDList=
HotKey=0
IconFile=O:\Apps\Firefox\Data\profile\shortcutCache\4t0JW4mY1qRPhiYz1fY3dw==.ico
IconIndex=0
将 Automator 脚本保存到某个位置,例如 ~/Library 目录。我将它命名为 OpenUrl.app。
现在转到某个 URL 文件并打开“获取信息”弹出窗口。将“打开方式”命令更改为 OpenUrl.app 脚本。只使用一个命令进行测试或单击“更改全部...”第一次单击时出现错误,但第二次似乎有效。
在开发此程序时,我确实遇到了“运行 Shell 脚本”错误,但这是由于脚本中的实际错误造成的。我认为 Daniel 的脚本的关键问题是它无法处理您尝试打开的文件名中的空格。
答案3
使用reattach-to-user-namespace
,无论是回购或使用brew install reattach-to-user-namespace
。这在 Sierra 中有效,但我不确定是否适用于其他操作系统。
安装后,在 bash 脚本中使用它,如下所示:
重新连接到用户命名空间打开 a_cool_file.png