¿Hay un shell de JavaScript?

30

Recientemente he estado trabajando con JS y estoy muy entusiasmado con este lenguaje. Sé que hay node.js para ejecutar JS en el lado del servidor, pero ¿hay un shell que use JS como lenguaje de script? Si tal cosa existe, ¿qué tan usable y estable es?

Júnior
fuente

Respuestas:

17

¿Te parece deseable?

// 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('..');

Si es así, ShellJS podría ser interesante, es

Una implementación portátil (incluido Windows) de comandos de shell de Unix en la parte superior de la API Node.js.

Sin embargo, no estoy seguro de si esto podría usarse como un shell de inicio de sesión con todas las funciones. (¿Quizás con algo de envoltura?)

Podrías argumentar que no es realmente un caparazón, pero ¿conoces TermKit ? Está hecho de Node.js + Webkit, podría usar JS para extenderlo (supongo); el lenguaje de shell sigue siendo Bash (-ish).

sr_
fuente
Bueno, eso se ve genial! Lo probaré.
J-unior
Técnicamente, realmente no considero que esto sea un shell porque no sigue la cmd argumentssintaxis. Por ejemplo, pshagrego dicha sintaxis al lenguaje perl desde mi punto de vista, por lo que parece más un típico shell gnp.github.io/psh Puede haber un contraejemplo, pero aún no lo he encontrado.
William
¿Cómo establecería esto como mi shell de inicio de sesión? De nuevo, quiero algo como esto, pero no estoy convencido de que sea así.
William
Todavía bash-ish, podríamos usar sed({i:1}, 'BUILD_VERSION', 'v0.1.2', file)en su lugar. Sería mejor usar funciones asíncronas con wait, por lo que paralelo sería más rápido.
inf3rno
El enlace ShellJS está roto.
YO_
8

Si está en Ubuntu o en cualquier otro sistema basado en Debian, puede instalar Rhino (desde Mozilla.org).

sudo apt-get install rhino

Suministra js a travé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 ===

Entonces, llamar a rhino o js te dará un shell de JavaScript.

Editar (2014-06-30):

rhino es bueno para probar rápidamente algún código javascript en un archivo, pero no es un shell interactivo, por lo que no admite el estilo de edición de línea de lectura GNU. Para el trabajo interactivo, puede preferirnodejs: en Ubuntu / debiansudo apt-get install nodejs. Esto debería proporcionar unjsshellmás interactivo(invocar usando el comandojs) donde puede editar líneas y recuperar el historial con las teclas de flecha arriba / abajo. Para obtener una lista más larga de opciones, consulte https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

arielf
fuente
0

En Chrome y Firefox, si presiona F12, se muestran herramientas de desarrollador. Allí podría encontrar una pestaña llamada consola, donde podría escribir y probar los scripts de JavaScript. Tiene finalización de código y otras características también.

Comunidad
fuente
55
Creo que no entendiste la pregunta. He preguntado sobre el shell de UNIX . Pero gracias por la voluntad de ayudar de todos modos.
J-unior
1
Esto responde a la pregunta, " ¿hay un shell que utiliza JS como lenguaje de script? ". Nada en la pregunta habla de una alternativa basho zsh(etc.)
roaima