我该如何设置一个 shell 脚本,让它能够从 Mac OSX dock 执行?似乎只是创建一个快捷方式会在我的编辑器中打开文件。是否需要在某处设置标志以告诉它运行而不是用编辑器打开呢?
文件 > 另存为
,并将文件格式更改为 "应用程序"。当您打开该应用程序时,它将运行 Shell 脚本步骤,执行命令,并在完成后退出。/应用程序
文件夹中!)open -a SomeAppThing.app --args --etc=2
命令打开这个应用程序,它应该会聚焦。或者你也可以使用苹果脚本来聚焦它(例如 osascript -e 'tell application "Google Chrome" to activate'
)。 - dbrExample
, 并将其移动到文件名Example.app/Contents/MacOS/Example
来将任何可执行文件转换为一个应用程序。你可以像其他应用程序一样将这个新的应用程序放置在Dock中,并通过点击运行它。
注意:应用程序的名称必须与脚本名称完全匹配。因此,顶级目录必须是Example.app
,Contents/MacOS
子目录中的脚本必须命名为Example
,并且该脚本必须是可执行的。example.sh.app
,而不仅仅是 example.app
。如果名称不匹配,您将收到一个关于损坏应用程序的警告。 - Kip.app
结尾并具有相应结构的文件夹,则会将其视为可执行应用程序。如果您想在Finder中查看该文件夹的内容,您需要右键单击它并选择“查看包内容”(因为双击它将运行该应用程序)。在终端中,它将只显示为一个文件夹。(我不确定Finder是否会让您自己将文件夹重命名为 .app;您可能需要在终端中进行重命名。) - Jeremy在OSX Mavericks中:
使您的shell脚本可执行:
chmod +x your-shell-script.sh
将您的脚本重命名为具有 .app
后缀的名称: mv your-shell-script.sh your-shell-script.app
将你的脚本重命名为.sh
后缀:
mv your-shell-script.app your-shell-script.sh
现在,当您单击dock中的脚本时,一个终端窗口将弹出并执行您的脚本。
奖励:为了在脚本完成后关闭终端,请在结尾添加exit 0
,并像此SO答案中所述更改终端设置为“如果干净退出则关闭shell”。
我知道这个问题很老,但如果对其他人有用:
如果你需要运行一个脚本,并希望终端弹出来以便你可以看到结果,你可以像Abyss Knight说的那样,将扩展名更改为.command。如果你双击它,它将打开一个终端窗口并运行。
然而,我需要从自动化或者AppleScript中运行这个脚本。因此,为了让这个脚本在新的终端中打开,我从“运行shell脚本”中运行了以下命令:“open myShellScript.command”,它将在一个新的终端中打开。
do shell script "/full/path/to/your/script -with 'all desired args'
保存为应用程序包。我认为这个帖子可能会有所帮助:http://forums.macosxhints.com/archive/index.php/t-70973.html
换句话说,你可以将其重命名为.command扩展名或创建一个AppleScript来运行shell。
在macOS Monterey 12.3中实现该目标的确切步骤
Automator
文件
-> 新建
应用程序
库
-> 实用工具
运行Shell脚本
osascript -e 'tell app "System Events" to tell appearance preferences to set dark mode to not dark mode'
文件
-> 保存
我对接受的解决方案感到困惑,但这个命令对我有用。
pip install mac-appify
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/appify ~/bin/webex_start.sh ~/Desktop/webex.app