Выполните и получите вывод команды оболочки в узле.js
в узле.js, я хотел бы найти способ получить вывод команды терминала Unix. Есть ли способ сделать это?
function getCommandOutput(commandString){
// now how can I implement this function?
// getCommandOutput("ls") should print the terminal output of the shell command "ls"
}
4 ответа:
вот как я это делаю в проекте, над которым я сейчас работаю.
var exec = require('child_process').exec; function execute(command, callback){ exec(command, function(error, stdout, stderr){ callback(stdout); }); };
пример: получение git user
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", "") }); }); }); };
вы ищете child_process
var exec = require('child_process').exec; var child; child = exec(command, function (error, stdout, stderr) { console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); if (error !== null) { console.log('exec error: ' + error); } });
Как указал Ренато, есть некоторые синхронные пакеты exec там сейчас тоже, см. sync-exec это может быть больше, что вы ищете. Имейте в виду, узел.js предназначен для однопоточного высокопроизводительного сетевого сервера, поэтому, если это то, для чего вы хотите его использовать, держитесь подальше от sync-exec, если вы не используете его только во время запуска или что-то.