OSX“打开” bash脚本


8

我有一个bash脚本,实际上可能有许多脚本,我希望能够使用它在OSX finder中打开文件。

这是一个非常非常简单的概念,但是由于某种原因,bash脚本在查找程序“打开方式”对话框中显示为灰色。

我收集到有多种使用applescript或打包作为应用程序的方法...但是我还无法弄清楚其中的任何一种,我真的不想为了这种琐碎的任务而选择另一种语言-有人可以喂我怎么做吗?

谢谢!

Answers:


11

这是不可能的。Launch Services与应用程序标识符一起使用,而bash脚本没有它们。

您需要使用Automator创建包装器应用程序。

  1. 启动自动器
  2. 选择应用
  3. 查找“ 运行Shell脚本”操作并将其添加到右侧。
  4. 将输入作为参数传递
  5. 将脚本放在那里
  6. 保存在某处

这是我的版本,使用Growl命令行实用程序:

在此处输入图片说明

结果:

在此处输入图片说明


~/Library/Preferences/com.apple.LaunchServices.plist当您全部更改时,您可以看到此更改对的影响:

在此处输入图片说明

(“ Test”是我为Automator应用程序指定的名称)


谢谢。我试了一下,但尝试打开由Automator创建的应用程序,它只是说“运行Shell脚本”操作遇到错误。检查操作的属性,然后尝试再次运行工作流。这是我一段时间以来看到的最没有帮助的错误消息了!
富裕

@Rich是否可以与运行Shell脚本操作中的默认脚本一起使用?还是没有呢?您还记得更改过关输入首选项吗?您是否尝试双击您的应用程序,将文件拖到您的应用程序中,还是只打开关联的文件?如果您以其他方式启动它会怎样?
丹尼尔·贝克

谢谢。不确定您如何看待默认目录的输出,因为它只调用cat,但似乎没有错误。该应用程序不是从非标准位置调用我的脚本,而是在/ usr / local / bin中创建了一个脚本,然后发现如果我尝试运行该脚本,它会抱怨符号链接级别太多(1 ?! )因此,我只是将脚本复制到了那里,现在看来可以正常工作了。谢谢!
富裕

1

我按照丹尼尔·贝克(Daniel Beck)的说明进行了一些修改,并使它适用于我想在Mac上的Chrome中打开的URL文件(Firefox也可以使用)。

我使用的脚本是:

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脚本的关键问题在于它无法处理您试图打开的文件名中的空格。


-1

使用reattach-to-user-namespace,无论是从回购或用brew install reattach-to-user-namespace。这在Sierra中有效,我不确定其他操作系统。

安装后,可以在bash脚本中使用它,如下所示:

重新附加到用户命名空间打开a_cool_file.png


这似乎无法回答问题。OP希望使用Finder的“打开方式”功能通过Bash脚本打开文件。在Tmux和Screen下提供剪贴板支持对此无济于事,特别是因为没有迹象表明Tmux或Screen甚至参与其中。
8bittree
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.