【问题标题】:how to create AppleScript app to run a set of terminal commands如何创建 AppleScript 应用程序以运行一组终端命令
【发布时间】:2010-07-01 01:18:57
【问题描述】:

我将如何创建一个 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 (...)

谢谢, 赫里斯托

【问题讨论】:

    标签: macos shell applescript


    【解决方案1】:

    是的,你会使用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 是一个目录。这实际上是一个指向不同目录的符号链接......有什么问题?
    • 试试rm -rf /usr/local/mysql
    【解决方案2】:

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

    【讨论】:

    • .command 后缀还不够——您还必须包含一个 shebang(即添加 #!/bin/bash 作为文本文件的第一行)并向文件添加执行权限(即运行chmod +x /path/to/file.command)。顺便说一句,与 AppleScript 相比,使用此脚本的最大优势在于它在终端中运行,因此您实际上可以与脚本进行交互(如果您想使用例如 nano 来编辑文件,这非常重要)。
    • @Gordon:是的,很好,我应该说它需要是一个带有 shebang 行的可执行 shell 脚本。
    • 请注意,在 .command 中使用 sudo 时,您仍然需要输入密码。如果您希望脚本自行运行,此链接有一些很好的提示:askubuntu.com/questions/155791/…
    【解决方案3】:

    我发现 .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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      相关资源
      最近更新 更多