首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在node.js中执行并获取外壳命令的输出

在node.js中执行并获取外壳命令的输出
EN

Stack Overflow用户
提问于 2012-10-18 02:41:11
回答 6查看 152.4K关注 0票数 147

在终端中,我想找到一种方法来获得Unix node.js命令的输出。有没有办法做到这一点?

function getCommandOutput(commandString){
    // now how can I implement this function?
    // getCommandOutput("ls") should print the terminal output of the shell command "ls"
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-10-18 02:47:33

这是我目前正在进行的一个项目中使用的方法。

var exec = require('child_process').exec;
function execute(command, callback){
    exec(command, function(error, stdout, stderr){ callback(stdout); });
};

检索git用户的示例:

module.exports.getGitUser = function(callback){
    execute("git config --global user.name", function(name){
        execute("git config --global user.email", function(email){
            callback({ name: name.replace("\n", ""), email: email.replace("\n", "") });
        });
    });
};
票数 177
EN

Stack Overflow用户

发布于 2018-05-15 00:31:00

如果你使用的是node 7.6以后的版本,并且你不喜欢回调风格,你也可以使用node-util的promisify函数和async / await来获得清晰可读的外壳命令。下面是一个被接受的答案的例子,使用这种技术:

const { promisify } = require('util');
const exec = promisify(require('child_process').exec)

module.exports.getGitUser = async function getGitUser () {
  // Exec output contains both stderr and stdout outputs
  const nameOutput = await exec('git config --global user.name')
  const emailOutput = await exec('git config --global user.email')

  return { 
    name: nameOutput.stdout.trim(), 
    email: emailOutput.stdout.trim()
  }
};

这还有一个额外的好处,那就是在失败的命令上返回拒绝的承诺,这可以在异步代码中使用try / catch处理。

票数 64
EN

Stack Overflow用户

发布于 2018-07-17 21:15:42

感谢Renato answer,我创建了一个非常基本的示例:

const exec = require('child_process').exec

exec('git config --global user.name', (err, stdout, stderr) => console.log(stdout))

它将只打印您的全局git用户名:)

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12941083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档