Existe um shell JavaScript?

30

Recentemente, tenho trabalhado com JS e estou muito entusiasmado com esta linguagem. Eu sei que existe o node.js para executar o JS no lado do servidor, mas existe um shell que usa o JS como uma linguagem de script? Se tal coisa existe, quão utilizável e estável é?

Júnior
fonte

Respostas:

17

Isso parece desejável para você?

// Replace macros in each .js file
cd('lib');
ls('*.js').forEach(function(file) {
  sed('-i', 'BUILD_VERSION', 'v0.1.2', file);
  sed('-i', /.*REMOVE_THIS_LINE.*\n/, '', file);
  sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file);
});
cd('..');

Nesse caso, o ShellJS pode ser interessante, é

uma implementação portátil (incluída no Windows) de comandos shell do Unix sobre a API do Node.js.

Não tenho certeza se isso poderia ser usado como um shell de login completo, no entanto. (Talvez com algum embrulho?)

Você poderia argumentar que não é realmente uma concha, mas você conhece o TermKit ? É feito de Node.js + Webkit, você pode usar o JS para estendê-lo (eu acho); o idioma do shell ainda é Bash (-ish).

sr_
fonte
Bem, isso parece legal! Vou dar uma chance.
precisa saber é
Tecnicamente, não considero isso um shell porque não segue a cmd argumentssintaxe. Por exemplo, pshadiciona essa sintaxe à linguagem perl do meu entendimento, para que pareça mais com um shell típico gnp.github.io/psh Pode haver um exemplo de contador, mas ainda não o encontrei.
William
Como definir isso como meu shell de login? Novamente, quero algo assim, mas não estou convencido de que é isso.
William
Ainda bash-ish, poderíamos usar em seu sed({i:1}, 'BUILD_VERSION', 'v0.1.2', file)lugar. Seria melhor usar funções assíncronas com aguardar, para que o paralelo fosse mais rápido.
Inf3rno 13/09/19
O link ShellJS está quebrado.
yO_
8

Se você estiver no Ubuntu ou em qualquer outro sistema baseado em debian, poderá instalar o rhino (a partir de Mozilla.org).

sudo apt-get install rhino

Ele fornece js através de alternativas:

=== /usr/bin/js is a symlink... following it
lrwxrwxrwx 1 root root 20 Nov 21 08:54 /usr/bin/js -> /etc/alternatives/js
=== /etc/alternatives/js is a symlink... following it
lrwxrwxrwx 1 root root 14 Nov 21 08:54 /etc/alternatives/js -> /usr/bin/rhino
=== /usr/bin/rhino is owned by package: rhino ===

Portanto, chamar rhino ou js fornecerá um shell JavaScript.

Editar (30/06/2014):

O rhino é bom para testar rapidamente algum código javascript em um arquivo, mas não é um shell interativo, portanto não suporta o estilo de edição de linha de leitura GNU. Para um trabalho interativo, você pode preferirnodejs: no Ubuntu / debiansudo apt-get install nodejs. Isso deve fornecer umjsshellmais interativo(invocar usando o comandojs) onde você pode editar linhas e recuperar o histórico com as teclas de seta para cima / para baixo. Para uma lista mais longa de opções, consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

arielf
fonte
0

No Chrome e Firefox, se você pressionar F12, ele exibirá as ferramentas do desenvolvedor. Lá, você pode encontrar uma guia chamada console, onde você pode digitar e testar scripts JavaScript. Também possui preenchimento de código e outros recursos.

Comunidade
fonte
5
Eu acho que você não entendeu a pergunta. Eu perguntei sobre o shell UNIX . Mas obrigado pela disposição de ajudar de qualquer maneira.
precisa saber é
11
Isso responde à pergunta " existe um shell que usa JS como uma linguagem de script? ". Nada na pergunta fala sobre uma alternativa a bashou zsh(etc)
roaima