【问题标题】:How to run a shell script using Spotlight?如何使用 Spotlight 运行 shell 脚本?
【发布时间】:2011-02-22 02:14:47
【问题描述】:

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

【问题讨论】:

    标签: macos spotlight


    【解决方案1】:

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

    【讨论】:

    • 它可以工作,但出现带有消息[Process completed] 的终端,必须手动关闭。有没有办法避免这种情况?
    • @ChakradarRaju 您可以更改您的终端首选项以在该过程完成时关闭窗口。或者,您可以将您的 shell 脚本包装在一个应用程序包中 - 然后它根本不会弹出窗口。 See this. 最后,您可以制作一个小应用程序来运行 shell 脚本,并将其设置为运行所有或特定 shell 脚本的默认值。
    • 我试图传递一个参数,但无法成功。有没有办法做到这一点?我用 echo "Parameter $1" 创建了一个简单的脚本,但是当我执行 "myscript.command anything" 时无法识别它
    • 你可以通过在你的shell脚本末尾执行一段AppleScript来关闭终端窗口,例如:osascript -e 'tell application "Terminal" to close (every window whose name contains "<script_name>.command")' &只需调整你的脚本名称。
    • 记得使用chmod u+x /path/to/file授予它执行权限
    【解决方案2】:

    我还想补充一点,如果你需要在运行命令后终端窗口消失,你可以设置终端设置来做到这一点。

    shell退出时在设置>>shell>>下。

    这仍然会让终端运行,但脚本至少会自行清理。

    我用它来编写一个脚本来隐藏和显示桌面图标。

    【讨论】:

      【解决方案3】:

      从 MacOS >= 10.0 开始,使终端窗口在完成后消失:

      Terminal > Preferences > 选择您的默认配置文件

      然后Shell > When the shell exits 选择Close if the shell exited cleanly

      【讨论】:

        【解决方案4】:

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

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

        do shell script "touch ~/testfile"
        

        用您选择的代码替换 touch ~/testfile - 正如您所见,它不需要有 .command 后缀,也不需要实际上是脚本。

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

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

        【讨论】:

          猜你喜欢
          • 2016-06-13
          • 2014-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多