如何创建一个AppleScript应用程序来运行一组终端命令。

8

我应该怎样创建一个 AppleScript 命令,当我运行脚本时(或者在Finder中双击它),它会执行一系列终端命令?这组命令完全移除 MySQL,而且经常手动输入它们已经变得很麻烦了。这些命令是:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm /etc/my.cnf

还有另一个命令sudo nano /etc/hostconfig,它打开一个文件,我需要从文件中删除一行,但这似乎太难编码了,所以我想我可以手动完成。但使用一个脚本自动完成这个任务将是非常有帮助的。

这只是一堆这样的命令吗?

do shell script (...)

感谢您,Hristo。
3个回答

16

是的,您需要使用do shell script

然而,对于以超级用户(sudo)身份执行的命令,您应该使用with administrator privileges。因此,对于sudo rm /usr/local/mysql,您应该这样做:

do shell script "rm /usr/local/mysql" with administrator privileges
如果您的命令列表很长,那么将所有命令放入单个shell脚本文件中,然后使用do shell script执行该shell脚本可能会更容易:
do shell script "/path/to/shell/script" with administrator privileges

当我执行do shell script "rm /usr/local/mysql" with administrator privileges时,它给了我一个错误并告诉我/usr/local/mysql是一个目录。实际上,那是指向另一个目录的符号链接...问题出在哪里? - Hristo
尝试执行 rm -rf /usr/local/mysql - indragie

16

实际上您不需要使用AppleScript - 只需将所有shell命令放在一个文本文件中,并给它加上.command后缀,并确保它是可执行的(例如chmod +x my_script.command)- 这将使它在Finder中可以双击。


4
“.command” 后缀不太够用 - 您还需要包括 shebang(即将 #!/bin/bash 添加为文本文件的第一行),并且添加文件的执行权限 (即运行 chmod +x /path/to/file.command)。顺便说一下,与使用 AppleScript 相比,使用这种方法的最大优势在于它在终端中运行,因此您实际上可以与脚本交互(如果要使用 nano 编辑文件,则非常重要)。 - Gordon Davisson
@Gordon:是的,说得好,我应该说它需要是一个带有shebang行的可执行shell脚本。 - Paul R
1
请注意,尽管在.command文件中使用sudo命令,您仍需要输入密码。如果您希望脚本自动运行,可以参考以下链接中的一些技巧:http://askubuntu.com/questions/155791/how-do-i-sudo-a-command-in-a-script-without-being-asked-for-a-password - ericsoco

0
我发现.scpt文件效果最好,但这只是个人喜好。
打开“脚本编辑器”并添加以下命令:
sudo rm -rf /usr/local/mysql; sudo rm -rf /usr/local/mysql*; sudo rm -rf /Library/StartupItems/MySQLCOM; sudo rm -rf /Library/PreferencePanes/My*; sudo rm -rf /Library/Receipts/mysql*; sudo rm -rf /Library/Receipts/MySQL*; sudo rm /etc/my.cnf; say job completed successfully" with administrator privileges

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接