Fala pessoal, nesse tutorial vou estar ensinando como executar comandos do terminal com Javascript e Node.js.
Recentemente estava trabalhando em um projeto onde eu precisava obter algumas informações à respeito do servidor que estava rodando algumas APIs em Node.js, como quantidade de RAM usada, carga média e uso de cada core do processador, pesquisando encontrei uma lib para Node.js, onde é possível executar comandos na máquina e obter o resultado utilizando apenas Javascript.
ShellJS – Unix shell commands for Node.js
ShellJS é o nome da lib que lhe permite executar comandos Unix na sua aplicação Node.js.
O uso dessa lib é bem simples, pois ela possui inúmeras funções que representam comandos e você pode digitar qualquer comando utilizando a função exec().
Exemplos de utilização:
Primeiramente, faça o require do módulo shelljs:
const shell = require('shelljs');
Executando um comando qualquer:
// whoami: retorna o usuário atual shell.exec('whoami'); // rafael
Checando se o Git está instalado:
if (!shell.which('git')) { shell.echo('Desculpe, esse script requer que você possua o Git instalado,'); }
Copiando um arquivo:
shell.cp('/home/user/arquivo-origem.txt', '/home/user/pasta-qualquer/arquivo-destino.txt');
Copiando uma pasta e todos os seus arquivos:
shell.cp('-R', '/home/user/pasta-origem/*', '/home/user/pasta-destino');
Obtendo o diretório atual:
console.log(shell.pwd().stdout);
Criando um arquivo:
shell.touch('nome-do-arquivo.txt');
Criando um arquivo de texto com conteúdo:
const text = 'Hello ShellJS!'; shell.echo(text).to('nome-do-arquivo.txt'); // Hello ShellJS!
Adicionando um conteúdo no fim de um arquivo já existente:
// Cria um arquivo com um texto inicial shell.echo('Rafael Laurindo!').to('file.txt'); // Rafael Laurindo! // Adiciona o conteúdo no fim arquivo const content = 'https://rafaellaurindo.com.br'; shell.echo(content).toEnd('file.txt'); // Rafael Laurindo! // https://rafaellaurindo.com.br
Checando a existência de um determinado arquivo:
if(shell.test('-f', '/caminho/ate/o/arquivo.txt')) { console.log('Arquivo encontrado!'); } else { console.log('Arquivo não encontrado!'); }
Checando a existência de uma determinada pasta:
if(shell.test('-d', '/caminho/ate/a/pasta')) { console.log('Pasta encontrada!'); } else { console.log('Pasta não encontrada!'); }
Você também pode executar essas funções sem precisar repetir sempre o prefixo shell.nomeDaFuncao().
Para utilizar dessa seguinte forma, você deve adicionar todas as funções do módulo ShellJS de forma global.
Segue o código de como utilizar as funções de forma global:
const shell = require('shelljs/global'); // Ex1: Criando um arquivo touch('nome-do-arquivo.txt'); // Ex1: Criando um arquivo touch('nome-do-arquivo.txt');
Essas são apenas algumas das funções disponibilizadas pelo ShellJS. Você pode ver todas as funções disponíveis no site oficial do módulo http://documentup.com/shelljs/shelljs.
Até a próxima!