我已经创建了一个菜单栏应用程序,我想在按
时运行此命令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/*"]
答案 0 :(得分:1)
要从命令行字符串中读取/bin/sh,需要传递-c参数。
您的代码需要更改如下:
let task = NSTask()
task.launchPath = "/bin/sh"
task.arguments = ["-c", "rm -rf ~/.Trash/*"]
task.launch()
task.waitUntilExit()