如何在我的快捷菜单栏应用程序中运行终端命令?

时间:2015-09-21 06:53:11

标签: objective-c xcode swift terminal

我已经创建了一个菜单栏应用程序,我想在按

时运行此命令
rm -rf ~/.Trash/*

我目前的代码是:

@IBAction func toggleClicked(sender: NSMenuItem) {

    let task = NSTask()
    task.launchPath = "/bin/sh"
    task.arguments = ["rm", "-rf", "~/.Trash/*"]
    task.launch()
    task.waitUntilExit()

}

但是当我运行它时,我收到以下错误:

/bin/rm: /bin/rm: cannot execute binary file

我真的不明白为什么我收到此错误,因为我可以打开终端并运行/ bin / sh,然后输入rm -rf~ / .Trash / *并且它按预期工作。

修改

我试图将命令更改为此但没有任何反应:

    task.launchPath = "/bin/rm"
    task.arguments = ["-rf", "~/.Trash/*"]

1 个答案:

答案 0 :(得分:1)

要从命令行字符串中读取/bin/sh,需要传递-c参数。

您的代码需要更改如下:

    let task = NSTask()
    task.launchPath = "/bin/sh"
    task.arguments = ["-c", "rm -rf ~/.Trash/*"]
    task.launch()
    task.waitUntilExit()