Existe-t-il un shell JavaScript?

30

Récemment, je travaille avec JS et je suis très enthousiaste à propos de ce langage. Je sais qu'il existe node.js pour exécuter JS côté serveur, mais existe-t-il un shell qui utilise JS comme langage de script? Si une telle chose existe, est-elle utilisable et stable?

Junior
la source

Réponses:

17

Cela vous semble-t-il souhaitable?

// 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 oui, ShellJS pourrait être intéressant, c'est

une implémentation portable (Windows incluse) des commandes shell Unix au-dessus de l'API Node.js.

Je ne sais pas si cela pourrait être utilisé comme un shell de connexion complet. (Peut-être avec un peu d'emballage?)

Vous pourriez dire que ce n'est pas vraiment un shell, mais connaissez-vous TermKit ? Il est fait de Node.js + Webkit, vous pouvez utiliser JS pour l'étendre (je suppose); le langage shell est toujours Bash (-ish).

sr_
la source
Eh bien, ça a l'air cool! Je vais essayer.
J-unior
Techniquement, je ne considère pas vraiment cela comme un shell car il ne suit pas la cmd argumentssyntaxe. Par exemple, pshajoute une telle syntaxe au langage perl de ma compréhension, il apparaît donc plus comme un shell typique gnp.github.io/psh Il pourrait y avoir un contre-exemple mais je ne l'ai pas encore trouvé.
William
Comment définirais-je cela comme mon shell de connexion? Encore une fois, je veux quelque chose comme ça, mais je ne suis tout simplement pas convaincu que c'est ça.
William
Toujours bash-ish, nous pourrions utiliser à la sed({i:1}, 'BUILD_VERSION', 'v0.1.2', file)place. Il serait préférable d'utiliser les fonctions asynchrones avec wait, donc le parallèle serait plus rapide.
inf3rno
Le lien ShellJS est rompu.
yO_
8

Mozilla INC propose un javascriptshell : voir Introduction_to_the_JavaScript_shell

Exemple de shell dans un système :

$ js
js> str = "welcome on *nix side" 
"welcome on *nix side"
js> str.indexOf("nix");          
12
js> 

Aucun problème détecté depuis que je l'utilise à des fins de test.

Gilles Quenot
la source
Ceci est disponible sur certaines / plusieurs distributions Linux maintenant sous forme de jspackage.
goldilocks
8

Si vous utilisez Ubuntu ou tout autre système basé sur Debian, vous pouvez installer rhino (depuis Mozilla.org).

sudo apt-get install rhino

Il fournit js via des alternatives:

=== /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 ===

Donc, appeler rhino ou js vous donnera un shell JavaScript.

Modifier (2014-06-30):

rhino est bon pour tester rapidement du code javascript dans un fichier, mais ce n'est pas un shell interactif, donc il ne prend pas en charge le style d'édition GNU readline. Pour le travail interactif, vous pouvez préférernodejs: sur Ubuntu / debiansudo apt-get install nodejs. Cela devrait fournir unjsshellplus interactif(invoquer en utilisant la commandejs) où vous pouvez éditer des lignes et rappeler l'historique avec les flèches haut / bas. Pour une liste plus longue d'options, voir https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

arielf
la source
0

Dans Chrome et Firefox, si vous appuyez sur F12, cela fait apparaître des outils de développement. Là-bas, vous pouvez trouver un onglet appelé console, où vous pouvez taper et tester des scripts JavaScript. Il a un code complet et d'autres fonctionnalités aussi.

Communauté
la source
5
Je pense que vous n'avez pas compris la question. J'ai posé des questions sur le shell UNIX . Mais merci pour la volonté d'aider de toute façon.
J-unior
1
Cela répond à la question " existe-t-il un shell qui utilise JS comme langage de script? ". Rien dans la question ne parle d'une alternative à bashou zsh(etc.)
roaima