javascript - 打开终端并通过 JS/NodeJS 执行 CLI 命令

标签 javascript node.js user-interface ubuntu terminal

有什么方法/代码片段可以让我们打开 Ubuntu 终端并通过 JavaScript/Node.js 或任何基于 UI 的语言执行终端命令?

最佳答案

您可以通过 childProcess native API 从 nodeJs 运行任何 shell 命令(无需安装任何依赖项)

简单方法

var { exec } = require('child_process'); // native in nodeJs

const childProcess = exec('git pull');

处理日志和错误的代码段

我经常有一堆 cli 命令要处理,所以我创建了这个简单的帮助程序。它处理错误、退出并可以在您的脚本中等待以匹配不同的场景

async function execWaitForOutput(command, execOptions = {}) {
    return new Promise((resolve, reject) => {
        const childProcess = exec(command, execOptions);

        // stream process output to console
        childProcess.stderr.on('data', data => console.error(data));
        childProcess.stdout.on('data', data => console.log(data));
        // handle exit
        childProcess.on('exit', () => resolve());
        childProcess.on('close', () => resolve());
        // handle errors
        childProcess.on('error', error => reject(error));
    })
}

我可以这样使用:

await execWaitForOutput('git pull');
// then
await execWaitForOutput('git pull origin master');
// ...etc

关于javascript - 打开终端并通过 JS/NodeJS 执行 CLI 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53597822/

相关文章:

javascript - JavaScript 中未调用函数

node.js - Apollo 服务器健康检查没有被调用

javascript - 从 JavaScript 对象中删除属性,由 Mongoose 的 "findOneAndUpdate"方法返回

node.js - 套接字 : Namespace & WS protocol

objective-c - cocoa UI 更改

Java:Netbeans 中的 JLayeredPane

javascript - 正则表达式:如何拆分和替换包含数字的字符串?

javascript - JSlint - 'function' 在定义之前已被使用'

javascript - 在移动设备上按下汉堡包图标时覆盖内容的问题

c++ - 显示未显示在 qt 中其他类的文本框中