从 OS X Dock 执行 Shell 脚本?

如何设置从 MacOSX 底座执行的 shell 脚本?似乎只要创建一个快捷方式就可以在我的编辑器中打开该文件。是否需要设置一个标志来告诉它运行,而不是打开它进行编辑?

119446 次浏览

我认为这个帖子可能会有帮助: http://forums.macosxhints.com/archive/index.php/t-70973.html

转述一下,您可以使用. command 扩展名重命名它,或者创建一个 AppleScript 来运行 shell。

如果不需要终端窗口,只需创建一个 shell 脚本 Example并将其移动到文件名 Example.app/Contents/MacOS/Example,就可以使任何可执行文件成为应用程序。您可以像任何其他应用程序一样将这个新应用程序放在您的停靠点中,然后单击执行它。

注意: 应用程序的名称必须与脚本名称完全匹配。因此,顶级目录必须是 Example.app,而 Contents/MacOS子目录中的脚本必须命名为 Example,并且该脚本必须是可执行的。

如果您确实需要显示终端窗口,我没有一个简单的解决方案。您可以使用 Applecript 做一些事情,但这并不是很干净。

只要你的脚本是可执行的,没有任何扩展,你可以将它拖动到 Dock 的右侧(文档侧) ,当你点击它时,它会在终端窗口中运行,而不是打开一个编辑器。

如果你想要一个扩展名(比如 foo.sh) ,你可以到 Finder 中的文件信息窗口,修改那个特定脚本的默认应用程序(TextEdit,TextMate,不管你的电脑默认设置是什么)。Sh 文件)到终端。然后它将直接执行,而不是在文本编辑器中打开。同样,你必须把它拖到码头的右侧。

您可以通过一个步骤创建 Automator 工作流-“ Run Shell Script”

然后 File > Save As,并改变文件格式为“应用程序”。当您打开应用程序时,它将运行 Shell 脚本步骤,执行命令,完成后退出。

这样做的好处是,真的的操作非常简单,您可以非常容易地获取用户输入(比如,选择一组文件) ,然后将其传递给 shell 脚本的输入(或者传递给 stdin,或者作为参数)。

(自动化器在 /Applications文件夹中!)

Example workflow

在脚本编辑器中:

do shell script "/full/path/to/your/script -with 'all desired args'

除了捆绑。

只要你想做的只是得到脚本的效果,这将工作的罚款。您不会看到 STDOUT 或 STDERR。

我知道这很老套,但万一对别人有帮助的话:

如果你需要运行一个脚本,并希望终端弹出,这样你就可以看到结果,你可以像深渊骑士说,并改变扩展到。指挥官。如果你双击它,它会打开一个终端窗口并运行。

但是,我需要在自动化程序或 appleScript 中运行它。因此,为了让它打开一个新的终端,我从“ run shell script”运行的命令是“ open myShellScript.command”,它在一个新的终端中打开。

正如 Joe 提到的,创建 shell 脚本,然后创建一个用于调用 shell 脚本的 apple 脚本,将实现这一点,并且非常方便。

贝壳脚本

  1. 在您喜欢的文本编辑器中创建 shell 脚本,例如:

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (使用 mono 框架运行 w32可执行文件)

  2. 为我的示例“ StartKeepass.sh”保存 shell 脚本

苹果手稿

  1. 打开 AppleScript 编辑器,并调用 shell 脚本

    do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges

    • 用于调用外部 shell 命令的 apple 脚本命令
    • "sh ...."-这是在第一步中创建的 shell 脚本(完整路径)(你也可以运行直接命令,我可以省略 shell 脚本,在这里运行 mono 命令)
    • user name-声明要以特定用户的身份运行命令
    • "<enter username here>-用你的用户名(保持引号)取代“ josh”
    • 声明你的密码
    • "<enter password here>"-用密码(保持引号)替换“ mypass”
    • with administrative privileges-声明希望作为管理员运行

创建您的应用程序

  1. 将您的应用程序脚本保存为 filename.scpt,在我的例子中是 RunKeepass.scpt

  2. 另存为... ... 并将文件格式更改为 application,结果在我的例子中是 RunKeepass.app

  3. 将应用程序文件复制到应用程序文件夹

有人写道。

我只是设置所有以“ . sh”结尾的文件用 Terminal 打开 很好,而且您不必更改每个 shell 脚本的名称 想要逃跑。

关于 OSX 小牛队:

  1. 创建您的 shell 脚本。
  2. 使您的 shell 脚本可执行:

    chmod +x your-shell-script.sh
    
  3. Rename your script to have a .app suffix:

    mv your-shell-script.sh your-shell-script.app
    
  4. Drag the script to the OSX dock.
  5. Rename your script back to a .sh suffix:

    mv your-shell-script.app your-shell-script.sh
    
  6. Right-click the file in Finder, and click the "Get Info" option.
  7. At the bottom of the window, set the shell script to open with the terminal.

Now when you click on the script in the dock, A terminal window will pop up and execute your script.

Bonus: To get the terminal to close when your script has completed, add exit 0 to the end and change the terminal settings to "close the shell if exited cleanly" like it says to do in this SO answer.

Pip install mac-appify

我在接受的解决方案上遇到了麻烦,但是这个命令对我很有效。

安装

pip install mac-appify

快跑

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/appify ~/bin/webex_start.sh ~/Desktop/webex.app

在 macOS Monterey 12.3中实现这一点的确切步骤

  1. 打开 Automator
  2. - > New
  3. 选择 Application
  4. 转到 Library-> Utilities
  5. 双击 Run Shell Script
  6. 输入任何你想运行的命令。例如,尝试这个命令来切换黑暗模式:
osascript -e 'tell app "System Events" to tell appearance preferences to set dark mode to not dark mode'
  1. - > Save
  2. 将保存的文件拖动到 Dock,完成!