Gibt es eine JavaScript-Shell?

30

Vor kurzem habe ich mit JS gearbeitet und ich bin sehr begeistert von dieser Sprache. Ich weiß, dass es node.js gibt, um JS auf dem Server auszuführen, aber gibt es eine Shell, die JS als Skriptsprache verwendet? Wenn so etwas existiert, wie brauchbar und stabil ist es?

Junior
quelle

Antworten:

17

Sieht das für Sie wünschenswert aus?

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

Wenn ja, könnte ShellJS interessant sein, ist es

Eine portable (Windows eingeschlossen) Implementierung von Unix-Shell-Befehlen auf der Node.js-API.

Ich bin mir jedoch nicht sicher, ob dies als vollwertige Anmeldeshell verwendet werden kann. (Vielleicht mit etwas Verpackung?)

Sie könnten argumentieren, dass es nicht wirklich eine Shell ist, aber kennen Sie TermKit ? Es besteht aus Node.js + Webkit. Sie können JS verwenden, um es zu erweitern (ich vermute). Die Shell-Sprache ist immer noch Bash (-ish).

sr_
quelle
Nun, das sieht cool aus! Ich werde es versuchen.
J-unior
Eigentlich halte ich das nicht für eine Shell, da sie nicht der cmd argumentsSyntax folgt . Zum Beispiel pshsolchen Syntax der Sprache Perl aus meinem Verständnis fügt hinzu , so dass es eher wie eine typische Schale erscheint gnp.github.io/psh Es könnte ein Gegenbeispiel sein , aber ich habe es noch nicht finden.
William
Wie würde ich dies als meine Login-Shell festlegen? Ich möchte wieder so etwas, aber ich bin einfach nicht überzeugt, dass es das ist.
William
Trotzdem könnten wir sed({i:1}, 'BUILD_VERSION', 'v0.1.2', file)stattdessen Bash-ish verwenden . Wäre besser, asynchrone Funktionen mit wait zu verwenden, so wäre parallel schneller.
Inf3rno
ShellJS-Verbindung ist unterbrochen.
yO_
8

Wenn Sie auf Ubuntu oder einem anderen Debian-basierten System arbeiten, können Sie Rhino (von Mozilla.org) installieren.

sudo apt-get install rhino

Es liefert js über Alternativen:

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

Wenn Sie also entweder rhino oder js aufrufen , erhalten Sie eine JavaScript-Shell.

Bearbeiten (30.06.2014):

rhino ist gut, um schnell Javascript-Code in einer Datei zu testen, aber es ist keine interaktive Shell, so dass es den GNU-Readline-Stil für die Bearbeitung nicht unterstützt. Für interaktive Arbeiten bevorzugen Sie möglicherweisenodejs: auf Ubuntu / debiansudo apt-get install nodejs. Dies sollte eine interaktiverejsShellbieten(mit dem Befehl aufrufenjs), in der Sie Zeilen bearbeiten und den Verlauf mit den Auf- / Ab-Pfeiltastenaufrufenkönnen. Eine längere Liste der Optionen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Shells

Arielf
quelle
0

Wenn Sie in Chrome und Firefox F12 drücken, werden Entwicklertools aufgerufen. Dort finden Sie eine Registerkarte namens console, auf der Sie JavaScript-Skripts eingeben und testen können. Es hat Code-Vervollständigung und andere Funktionen.

Gemeinschaft
quelle
5
Ich glaube, Sie haben die Frage nicht verstanden. Ich habe nach der UNIX- Shell gefragt . Aber danke für die Bereitschaft trotzdem zu helfen.
Junior
1
Dies beantwortet die Frage " Gibt es eine Shell, die JS als Skriptsprache verwendet? ". Nichts in der Frage spricht über eine Alternative zu bashoder zsh(etc.)
Roaima