从OS X Dock执行Shell脚本?

如何设置一个shell脚本来从Mac OSX的dock中执行? 看来只需创build一个快捷方式将在我的编辑器中打开该文件。 有一个标志,我需要设置的地方告诉它运行,而不是打开它进行编辑?

您可以使用一个步骤创buildAutomator工作stream程 – “运行Shell脚本”

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

这样做的好处是非常简单,你可以很容易地获得用户input(比如select一堆文件),然后将它传递给shell脚本的input(stdin或者参数)。

(Automator在你的/Applications文件夹中!)

工作流程示例

如果您不需要terminal窗口,只需将example.sh移动到example.sh.app/Contents/MacOS/example.sh即可将任何可执行文件创build为应用程序。 您可以将应用程序像其他任何地方一样放置在您的Dock中,并通过点击执行。

如果你确实需要显示terminal窗口,我没有一个简单的解决scheme。 你可能可以用Applescript做些事情,但这不是很干净。

我知道这是旧的,但如果对别人有帮助,

如果你需要运行一个脚本,并希望terminalpopup,所以你可以看到你可以做的结果,如深渊骑士说,并将扩展名为.command。 如果你双击它将打开一个terminal窗口并运行。

我然而需要这个从automator或者appleScript运行。 因此,为了打开一个新的terminal,我从“运行shell脚本”运行的命令是“打开myShellScript.command”,并在新的terminal中打开。

在OSX小牛队:

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

     chmod +x your-shell-script.sh 
  3. 将您的脚本重命名为.app后缀:

     mv your-shell-script.sh your-shell-script.app 
  4. 将该脚本拖到OSX扩展坞。
  5. 将您的脚本重命名为.sh后缀:

     mv your-shell-script.app your-shell-script.sh 
  6. 在Finder中右键单击该文件,然后单击“获取信息”选项。
  7. 在窗口的底部,将shell脚本设置为使用terminal打开。

现在,当您点击停靠栏中的脚本时,会popup一个terminal窗口并执行您的脚本。

奖励:为了让你的脚本完成后terminalclosures,joinexit 0到最后,并改变terminal设置为“closuresshell如果干净地退出”就像它说的在这个回答 。

只要你的脚本是可执行文件,并且没有任何扩展名,你可以将它拖拽到Dock的右边(Document side),当它被点击而不是打开编辑器时,它将在terminal窗口中运行。

如果你想有一个扩展名(比如foo.sh),你可以到Finder的文件信息窗口,并且改变这个特定脚本的默认应用程序(TextEdit,TextMate,无论你的计算机上设置了什么默认值.sh文件)到terminal。 然后它将执行而不是在文本编辑器中打开。 再一次,你将不得不把它拖到Dock的右侧。

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

为了解释,您可以使用.command扩展名对其进行重命名,或创build一个AppleScript来运行该shell。

正如joe提到的,创buildshell脚本,然后创build一个调用shell脚本的applescript脚本,将会实现这一点,而且非常方便。

Shell脚本

  1. 在你最喜欢的文本编辑器中创build你的shell脚本,例如:

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

    (这运行w32可执行文件,使用单声道框架)

  2. 保存shell脚本,对于我的例子“StartKeepass.sh”

苹果脚本

  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

    • do shell script – applescript命令来调用外部shell命令
    • "sh ...." – 这是在第一步中创build的shell脚本(完整path)(您也可以运行直接命令,我可以省略shell脚本,并在这里运行我的mono命令)
    • user name – 声明为你要运行的命令作为一个特定的用户
    • "<enter username here> – 用你的用户名(用引号括起)ex”josh“
    • password – 向applescript声明您的密码
    • "<enter password here>" – 用你的密码(保留引号)ex“mypass”
    • with administrative privileges – 声明您希望以pipe理员身份运行

创build您的.APP

  1. 保存你的苹果脚本为filename.scpt,在我的情况下RunKeepass.scpt

  2. 保存为…你的苹果,并将文件格式更改为应用程序,导致在我的情况下RunKeepass.app

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

在脚本编辑器中:

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

保存为应用程序包。

只要你想要做的就是获得脚本的效果,这将工作正常。 你不会看到STDOUT或STDERR。

有人写了…

我只是设置以“.sh”结尾的所有文件以打开terminal。 它工作正常,你不需要改变你想运行的每个shell脚本的名字。