在Swift中运行terminal / shell命令时发生了什么?

时间:2017-03-20 21:22:04

标签: swift shell nstask

我花了相当多的时间研究如何在Swift中运行特定的终端/ shell命令。

问题是,我害怕实际运行任何代码,除非我知道它的作用。 (我在过去执行终端代码时运气很差。)

我发现this question似乎告诉我如何运行命令,但我对Swift来说是全新的,我想知道每条线的作用。

此代码的每一行有什么作用?

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

2 个答案:

答案 0 :(得分:3)

  • /bin/sh调用shell
  • -c将实际的shell命令作为字符串
  • rm -rf ~/.Trash/*删除垃圾箱中的所有文件

-r表示递归。 -f意味着被迫。您可以通过阅读终端中的man页面了解有关这些选项的更多信息:

man rm

答案 1 :(得分:1)

当我写这个问题时,我发现我能找到很多答案,所以我决定发布问题并回答它以帮助像我这样的人。

//makes a new NSTask object and stores it to the variable "task"
let task = NSTask() 

//Tells the NSTask what process to run
//"/bin/sh" is a process that can read shell commands
task.launchPath = "/bin/sh" 

//"-c" tells the "/bin/sh" process to read commands from the next arguments
//"rm -f ~/.Trash/*" can be whatever terminal/shell command you want to run
//EDIT: from @CodeDifferent: "rm -rf ~/.Trash/*" removes all the files in the trash
task.arguments = ["-c", "rm -rf ~/.Trash/*"]

//Run the command
task.launch()


task.waitUntilExit()

" / bin / sh"更清楚地描述here.