我正在尝试以编程方式调用fdesetup(FileVault配置工具)来添加用户,以便可以使用其凭据来解锁FileVault。通过这种方式,他们将能够获得单一的登录体验。
相应的终端命令是:
...$ sudo fdesetup add -inputplist < pathtomyconfigplist.plist
终端可以正常使用。
是否可以将这些参数传递给Process.arguments?
let process : Process = Process()
process.launchPath = "/usr/bin/fdesetup"
process.arguments = ["add", "-inputplist < pathtomyconfigplist.plist"]
process.launch()
上面的代码返回:
fdesetup: unrecognized option `-nputplist < pathtomyconfigplist.plist'
Error: Unrecognized option. (-)
我也尝试过:
process.arguments = ["add", "-inputplist", "<", "pathtomyconfigplist.plist"]
但这没有任何回报,当我打电话给&#39; sudo fdesetup list&#39;时,没有添加用户。
所以,我不确定我的问题是将配置文件传递给stdin还是与&#39; - &#39;在选项inputplist之前。
有什么想法吗?
答案 0 :(得分:2)
< path...
之类的东西不是参数。它们实际上由您的shell解释,并独立于您的程序处理。要模拟shell的功能,您始终可以process.standardInput
将plist
文件的句柄指定为FileHandle
。
>
,<
和|
等指令以及X=y
等变量赋值都是影响命令运行方式的shell功能,以及输入和输出的位置处理完毕。