Linux = Gibt es so etwas wie eine "Java Shell" anstelle anderer Linux Shells?

8

Die Programmiersprache, die ich am meisten kenne, ist Java. Derzeit muss ich ziemlich viele "Shell-Skripte" schreiben, um meine Server zu automatisieren. Gibt es so etwas wie eine "Java Shell", damit ich die Shell-Skripte in Java schreiben kann?

jens
quelle
16
Wenn Sie nur einen Hammer haben, sieht alles aus wie ein Nagel . Vielleicht ist es Zeit für Sie, einige neue Programmiersprachen zu lernen, insbesondere diejenigen, die für Ihren aktuellen Job besser geeignet sind.
Juliano
Haben Sie jemals bemerkt, dass Hämmer in allen Formen und Größen erhältlich sind, sodass Sie einen auswählen können, der für den jeweiligen Job geeignet ist?
John Gardeniers
Ich denke, der Punkt ist, dass wir manchmal Schrauben montieren müssen.
DutchUncle
Nun, in Bezug auf den Hammer: Standardisierung ist / kann eines der wichtigsten "Erfolgsprinzipien" sein. Natürlich gibt es immer etwas Spezialisierteres und Angemesseneres, aber dies erhöht in den meisten Fällen den Aufwand erheblich ... Mein Problem ist, dass ich eigentlich nur einen Prototyp erstellen muss. Ich bin KEIN Programmierer. Ich bin eher ein "Business Economics" -Typ. Eine Java-Shell (mit loser Eingabe ...) wäre also großartig gewesen. Vielen Dank für all Ihre Antworten ...
jens
2
Es gibt einen großen Unterschied zwischen der Verwendung von Java als Befehlsshell und der Verwendung von Java als Skriptsprache.
Tylerl

Antworten:

4

Sie können groovig werden und groovysh verwenden. Ich habe einige Dinge damit gemacht, aber ich finde Perl oder Bash / Sh am nützlichsten, um Administrationsskripte zu erstellen. Eine Anwendungssprache wie Java verursacht viel Aufwand, wenn Sie lediglich Betriebssystembefehle ausführen und Text suchen müssen.

JOTN
quelle
+1 für Groovy. Sie können auf die JVM und die vollständige Java-API zugreifen, allerdings mit Groovy-Syntax. Aber wenn Sie ein Java-Entwickler sind, ist es nicht so schwer, sich darauf einzulassen. Einer der großen Vorteile von Groovy ist die Fähigkeit, systemunabhängige Skripte zu schreiben - für die Bereitstellung, zum Testen und für alles. Das Beste daran: Funktioniert unter Windows, Linux und OS X, ohne die Quelle zu ändern. Oh, und ja, Sie könnten Cygwin unter Windows verwenden, um nix-basierte Skripte auszuführen, aber dann müssten Sie sich mit Cygwin befassen (kein Spaß).
Mike
Eigentlich ist es sehr schwierig, Bash-Scripting durch Groovysh zu ersetzen. Aber es ist der Schritt in die richtige Richtung und es scheint, dass es einige (obwohl eingestellte Versuche) gibt, damit es eher wie eine echte Shell funktioniert (zum Beispiel "Grash") ... Am Ende muss ich Bash lernen. Aber ich hatte noch nie von Groovysh gehört und ich denke, es ist der beste Versuch, eine "Java-Shell" zu haben ...
Jens
11

Es gibt keine wirkliche Anforderung, dass "Shell-Skripte" in einer Shell-Sprache geschrieben sein müssen. Sie können alles mit C oder sogar Assembler machen, wenn Sie das mögen.

Im Kontext von Shell-Skripten ist die Shell nichts anderes als ein Interpreter für eine Programmiersprache, genau wie Perl oder PHP, aber stark optimiert für die Art von Arbeit, die Sie meistens mit einem Shell-Skript ausführen.

Langfristig würde ich vorschlagen, dass Sie Bash oder etwas lernen, was nicht wirklich schwierig ist, da die Fähigkeiten von Muscheln sehr begrenzt sind, so dass es nicht zu viel zu lernen gibt.

Sven
quelle
1
Das Hauptproblem beim Schreiben von Verwaltungsprogrammen in einer anderen Sprache als c oder einer Shell besteht darin, sicherzustellen, dass die Laufzeit für Ihre Sprache verfügbar ist. Die meisten Linux-Systeme werden zur Installationszeit mit bash, csh, perl und manchmal python geliefert, haben jedoch kein Java.
Jeff Strunk
3

Einige der leichteren JVM-Sprachen haben Shells, aber dies sind Frontends für den Interpreter, keine benutzerdefinierten Dialekte für die Systemadministration. Eine gute System-Shell muss eine hervorragende Unterstützung für Prozess- und Dateideskriptoren sowie eine präzise Syntax und integrierte Funktionen aufweisen, und ich glaube nicht, dass dies in Java vorhanden ist.

Sie können Programmieren mit Skripten mit Dingen wie Chefkoch, Puppe, Vlad und dergleichen mischen, aber das bedeutet, dass Sie zuerst Bash-Skripte lernen, da diese Sprachen Befehle vernünftigerweise an die Shell delegieren. Sprachen wie Ruby, Perl und Python sind weniger ausführlich und werden häufig verwendet. Die Ausführlichkeit von Java und einige seiner Grundwerte (alles im JVM tun, die Idee nicht verlassen) machen es für die Aufgabe sehr ungeeignet.

Tobu
quelle
3

Ja da ist. Ich habe BeanShell von Zeit zu Zeit verwendet, obwohl es derzeit nicht aktiv entwickelt wird. Es ist ein Interpreter für die Standard-Java-Syntax und wird bei Bedarf auch mit einem grafischen Interpreter / einer grafischen Umgebung geliefert.

Sie könnten Ihre Shell-Skripte wie in den BeanShell-Dokumenten beschrieben schreiben , müssten jedoch die Beanshell-JAR-Datei für Ihre Java-Installation verfügbar machen (z. B. in den /ext/libOrdner Ihrer JRE-Installation legen ), da Java sonst die bsh.InterpreterKlasse nicht findet .

Ich würde jedoch auch empfehlen, sich Ihre Shell-Scipting-Optionen genauer anzusehen (Sie haben Ihre Umgebung nicht erwähnt, aber die Empfehlung von TiZon mit bash ist unter Linux cool). Die Verwendung einer vollwertigen Allzweck-Programmiersprache wie Java wird nur dann stören, wenn Sie versuchen, mit Shell-ähnlichen Aufgaben produktiv zu sein, z. B. Dateien verschieben, Befehle aufrufen und dergleichen.

Axel Knauf
quelle
2

Ich habe jpad.io geschrieben , um das Ausführen von Java- "Shell-Skripten" und interaktiven Snippets zu ermöglichen und gleichzeitig eine schöne Visualisierung der Ergebnisse zu ermöglichen. Das zeigt was ich meine:

JPad ​​Java REPL

Um eine Datei mit dieser Skriptsprache zu kopieren, verwenden Sie: http://jpad.io/example/1I/fileio

final File file = new File("outt.csv");
Object o = new int[] {1,2,3};
JPad.writeCsv(o, file);
java.nio.file.Files.copy(file.toPath(), Paths.get("copy.csv"));

Was Sie auch über die Befehlszeile ausführen können:

 > jpad fileio.jpad
 > dir
 29/04/2017  13:30    <DIR>          .
 29/04/2017  13:30    <DIR>          ..
 29/04/2017  13:30                16 copy.csv
 29/04/2017  13:30               160 fileio.jpad
 29/04/2017  13:30                16 outt.csv
Ryan Hamilton
quelle
0

Ja, fügen Sie die Beanshell .jar in Ihr Javahome / jre / lib / ext-Verzeichnis ein, und dann können Sie Skripte wie folgt starten:

java bsh.Interpreter myscript.bsh
Djangofan
quelle