从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小牛队:
- 创build你的shell脚本。
-
使您的shell脚本可执行:
chmod +x your-shell-script.sh
-
将您的脚本重命名为
.app
后缀:mv your-shell-script.sh your-shell-script.app
- 将该脚本拖到OSX扩展坞。
-
将您的脚本重命名为
.sh
后缀:mv your-shell-script.app your-shell-script.sh
- 在Finder中右键单击该文件,然后单击“获取信息”选项。
- 在窗口的底部,将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脚本
-
在你最喜欢的文本编辑器中创build你的shell脚本,例如:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(这运行w32可执行文件,使用单声道框架)
-
保存shell脚本,对于我的例子“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 ...."
– 这是在第一步中创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
-
保存你的苹果脚本为filename.scpt,在我的情况下RunKeepass.scpt
-
保存为…你的苹果,并将文件格式更改为应用程序,导致在我的情况下RunKeepass.app
-
将你的应用程序文件复制到你的应用程序
在脚本编辑器中:
do shell script "/full/path/to/your/script -with 'all desired args'
”
保存为应用程序包。
只要你想要做的就是获得脚本的效果,这将工作正常。 你不会看到STDOUT或STDERR。
有人写了…
我只是设置以“.sh”结尾的所有文件以打开terminal。 它工作正常,你不需要改变你想运行的每个shell脚本的名字。