如何使用Spotlight运行shell脚本?

the*_*tor 32 macos spotlight

有没有办法在Mac OS X 10.6上使用Spotlight运行shell脚本?我希望能够直接从Spotlight调用shell脚本而无需打开终端.

Pau*_*l R 47

使用.command后缀保存shell脚本- 这使得它可以双击,您也应该能够直接从Spotlight运行它.

  • @ChakradarRaju您可以更改终端首选项以在过程完成时关闭窗口.或者,您可以将shell脚本包装在应用程序包中 - 然后它根本不会弹出窗口.[请参阅此内容.](https://mathiasbynens.be/notes/shell-script-mac-apps)最后,您可以创建一个小应用程序来运行shell脚本,并将其设置为运行所有或特定shell脚本的默认设置. (6认同)
  • 记得使用 `chmod u+x /path/to/file` 授予它执行权限 (3认同)
  • 它可以工作,但出现消息“[进程已完成]”的终端,必须手动关闭。有办法避免这种情况吗? (2认同)
  • 我试图传递一个参数,但无法成功。有什么办法吗?我用回显“ Parameter $ 1”创建了一个简单脚本,但是执行“ myscript.command any”时无法识别 (2认同)
  • 您可以通过在 shell 脚本的末尾执行一段 AppleScript 来关闭终端窗口,例如:`osascript -e '告诉应用程序“终端”关闭(名称包含“<script_name>.command”的每个窗口)'& ` 只需调整您的脚本名称。 (2认同)

小智 8

另一种完全避免打开终端的方法:

在 Mac 上打开脚本编辑器,确保从语言下拉列表中选择 AppleScript 并输入

do shell script "touch ~/testfile"
Run Code Online (Sandbox Code Playgroud)

替换touch ~/testfile为您选择的代码 - 正如您所看到的,它不需要具有 .command 后缀,甚至实际上不需要是脚本。

现在转到文件| 导出并从文件格式:下拉列表中选择应用程序。确保所有选项:均未选中,并且从代码签名:下拉列表中选择不进行代码签名。随意命名,将其保存在任意位置。现在,您可以双击新的 AppleScript 应用程序或从 Spotlight 运行它,您的脚本将在不打开终端窗口的情况下运行。

作为一个额外的好处,因为它是 AppleScript,所以它可以与 Mac UI 交互——在显示对话框中显示结果、获取用户输入等。https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/概念/ASLR_fundamentals.html