Swift 调用系统命令, https://github.com/QiuZhiFei/swift-commands 。
Commands
模块,使用系统命令字符串,并返回标准输出。
API documentation can be found here.
import Commands
Execute shell commands.
let result = Commands.Task.run("bash -c ls")
Or
let result = Commands.Bash.run("ls")
Execute python scripts.
let result = Commands.Task.run("python main.py")
Execute python commands.
let result = Commands.Task.run("python -c import base64; print(base64.b64encode('qiuzhifei').decode('ascii'))")
Or
let result = Commands.Python.run("import base64; print(base64.b64encode('qiuzhifei').decode('ascii'))")
Execute ruby scripts.
let result = Commands.Task.run("ruby main.rb")
Execute ruby commands.
let result = Commands.Task.run("ruby -e require 'base64'; puts Base64.encode64('qiuzhifei')")
Or
let result = Commands.Ruby.run("require 'base64'; puts Base64.encode64('qiuzhifei')")
Create a shortcut name for a command.
let node = Commands.Alias("/usr/local/bin/node", dashc: "-e") let result = node.run("console.log('qiuzhifei')")
Commands.ENV.global["http_proxy"] = "http://127.0.0.1:7890"
Commands.ENV.global.add(PATH: "/Users/zhifeiqiu/.rvm/bin")
let request: Commands.Request = "ruby -v" let result = Commands.Task.run(request)
Or
let request = Commands.Request(executableURL: "ruby", arguments: "-v") let result = Commands.Task.run(request)
Change environment variables
var request: Commands.Request = "ruby -v" request.environment?.add(PATH: "/usr/local/bin") request.environment?["http_proxy"] = "http://127.0.0.1:7890" request.environment?["https_proxy"] = "http://127.0.0.1:7890" request.environment?["all_proxy"] = "socks5://127.0.0.1:7890" let result = Commands.Task.run(request)
Returns the Commands.Result
of running cmd in a subprocess.
let result = Commands.Task.run("ruby -v") switch result { case .Success(let request, let response): debugPrint("command: \(request.absoluteCommand), success output: \(response.output)") case .Failure(let request, let response): debugPrint("command: \(request.absoluteCommand), failure output: \(response.errorOutput)") }
To use the Commands
library in a SwiftPM project, add the following line to the dependencies in your Package.swift
file:
let package = Package( // name, platforms, products, etc. dependencies: [ .package(url: "https://github.com/qiuzhifei/swift-commands", from: "0.5.0"), // other dependencies ], targets: [ .target(name: "<command-line-tool>", dependencies: [ .product(name: "Commands", package: "swift-commands"), ]), // other targets ] )
You can use CocoaPods to install Commands
by adding it to your Podfile
:
pod 'Commands', '~> 0.5.0'
git clone https://github.com/QiuZhiFei/swift-commands cd swift-commands && open Package.swift
1 jdjingdian 2021-09-01 19:36:54 +08:00 请教一下,如果是需要 sudo 的命令呢?是否可以静默执行? |
2 qiuzhifei OP @jdjingdian 不可以 和 terminal 使用 sudo 是一致的 |