Answers:
您可以通过一个步骤创建Automator工作流程-“运行Shell脚本”
然后File > Save As
,将“文件格式”更改为“应用程序”。当您打开应用程序时,它将运行Shell脚本步骤,执行命令,并在完成后退出。
这样做的好处是它确实非常简单,并且您可以非常容易地获得用户输入(例如,选择一堆文件),然后将其传递给Shell脚本的输入(传递给stdin或作为参数)。
(Automator在您的/Applications
文件夹中!)
open -a SomeAppThing.app --args --etc=2
则应重点关注。另外,您也可以使用Applescript(例如osascript -e 'tell application "Google Chrome" to activate'
)进行聚焦
如果不需要“终端”窗口,只需创建一个shell脚本Example
并将其移至filename 即可将任何可执行文件设置为Application Example.app/Contents/MacOS/Example
。您可以将此新应用程序像放置其他应用程序一样放置在您的扩展坞中,然后单击以执行它。
注意:应用程序的名称必须与脚本名称完全匹配。因此必须是顶级目录,Example.app
并且Contents/MacOS
子目录中Example
的脚本必须命名为,并且脚本必须是可执行的。
如果确实需要显示终端窗口,则没有简单的解决方案。您可能可以使用Applescript做一些事情,但这不是很干净。
example.sh.app
,而不仅仅是example.app
。如果这些应用程序不匹配,您将收到有关损坏的应用程序的警告
.app
以该结构结尾的文件夹,该文件夹将被视为可执行应用程序。如果要在Finder中查看该文件夹的内容,则需要右键单击它并选择“查看包内容”(因为双击它会运行该应用程序)。在终端中,它似乎只是一个文件夹。(我不确定Finder是否会让您自己将文件夹重命名为.app;您可能需要在终端中进行重命名。)
在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
现在,当您单击扩展坞中的脚本时,将弹出一个终端窗口并执行您的脚本。
奖励:要在脚本完成后关闭终端,请添加exit 0
到末尾,然后将终端设置更改为“如果干净退出则关闭外壳”,就像在此SO答案中所说的那样。
我知道这很旧,但如果对其他人有帮助的话:
如果您需要运行脚本并希望弹出终端以查看结果,可以像Abyss Knight所说的那样将扩展名更改为.command。如果双击它,它将打开一个终端窗口并运行。
但是,我需要它从automator或appleScript运行。因此,要使它打开新的终端,我从“运行shell脚本”运行的命令是“ open myShellScript.command”,它在新的终端中打开。
只要您的脚本是可执行的并且没有任何扩展名,您都可以按原样将其拖动到Dock的右侧(文档侧),并且单击该脚本将在终端窗口中运行,而不用打开编辑器。
如果您想要扩展名(如foo.sh),则可以转到Finder中的文件信息窗口,并从该脚本的任何内容(TextEdit,TextMate,在计算机上为.sh文件)到终端。然后它将只执行而不是在文本编辑器中打开。同样,您必须将其拖动到Dock的右侧。
我认为该线程可能会有所帮助:http : //forums.macosxhints.com/archive/index.php/t-70973.html
换句话讲,您可以使用.command扩展名将其重命名,或者创建一个AppleScript来运行该Shell。
如joe所述,创建外壳程序脚本,然后创建一个applescript脚本来调用该外壳程序脚本即可完成此任务,并且非常方便。
在您喜欢的文本编辑器中创建Shell脚本,例如:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(使用mono框架运行w32可执行文件)
保存外壳脚本,例如我的示例“ StartKeepass.sh”
打开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
do shell script
-applescript命令来调用外部shell命令"sh ...."
-这是在第一步中创建的Shell脚本(完整路径)(您也可以运行直接命令,我可以省略Shell脚本,只在此处运行我的mono命令)user name
-向applescript声明您要以特定用户身份运行命令"<enter username here>
-用您的用户名(保留引号)代替“乔什”password
-向applescript声明您的密码"<enter password here>"
-用“ mypass”代替您的密码(保留引号)with administrative privileges
-声明您要以管理员身份运行将您的applescript保存为filename.scpt,在我的情况下为RunKeepass.scpt
另存为...您的applescript并将文件格式更改为application,在我的情况下导致RunKeepass.app
将您的应用程序文件复制到您的应用程序文件夹