Выполнение команд оболочки в Node.js: методы и примеры

Чтобы выполнять команды оболочки с помощью Node.js, вы можете использовать несколько методов. Вот несколько часто используемых подходов:

  1. Модуль дочерних процессов. Модуль дочерних процессов в Node.js позволяет создавать дочерние процессы и выполнять команды оболочки. Вы можете использовать функции execили execSyncдля синхронного или асинхронного запуска команд соответственно.

Пример:

const { exec } = require('child_process');
exec('ls -l', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  if (stderr) {
    console.error(`stderr: ${stderr}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
});
  1. Метод Spawn: метод spawnиз модуля дочерних процессов — это еще один способ выполнения команд оболочки. Он обеспечивает большую гибкость и контроль над выполнением команд, позволяя осуществлять потоковую передачу ввода/вывода и обработку событий.

Пример:

const { spawn } = require('child_process');
const ls = spawn('ls', ['-l']);
ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});
ls.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});
ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});
  1. Библиотека ShellJS: ShellJS — это переносимая библиотека команд оболочки Unix для Node.js, которая предоставляет простой и интуитивно понятный API для запуска команд оболочки.

Пример:

const shell = require('shelljs');
const result = shell.exec('ls -l');
if (result.code !== 0) {
  console.error(`Command execution failed with code ${result.code}`);
  return;
}
console.log(`stdout: ${result.stdout}`);

Это всего лишь несколько методов выполнения команд оболочки в Node.js. Не забывайте соблюдать осторожность при выполнении команд оболочки, поскольку они потенциально могут быть небезопасными, если их неправильно обрабатывать.