Le langage de programmation que je connais le plus est Java. Actuellement, je dois écrire pas mal de "scripts shell" pour automatiser mes serveurs. Existe-t-il quelque chose comme un "Java Shell" pour que je puisse écrire les scripts shell en Java?
Le langage de programmation que je connais le plus est Java. Actuellement, je dois écrire pas mal de "scripts shell" pour automatiser mes serveurs. Existe-t-il quelque chose comme un "Java Shell" pour que je puisse écrire les scripts shell en Java?
Réponses:
Vous pouvez devenir groovy et utiliser groovysh. J'ai fait certaines choses avec ça, mais je trouve que perl ou bash / sh sont les plus utiles pour faire des scripts d'administration. Un langage d'application comme Java ajoute beaucoup de surcharge lorsque tout ce que vous avez à faire est d'exécuter des commandes du système d'exploitation et de rechercher du texte.
Il n'y a aucune exigence réelle que les "scripts shell" doivent être écrits dans un langage shell, vous pouvez tout faire avec C ou même Assembler, si vous aimez ça.
Dans le contexte des scripts shell, le shell n'est rien de plus qu'un interpréteur pour un langage de programmation, tout comme Perl ou PHP, mais fortement optimisé pour le type de travail que vous effectuez principalement avec un script shell.
À long terme, je suggère que vous appreniez le bash ou quelque chose, ce qui n'est pas vraiment difficile parce que les obus sont très limités dans leurs capacités de sorte qu'il n'y a pas trop à apprendre.
Certaines des langues jvm plus légères ont des shells, mais ce sont des frontaux pour l'interpréteur, pas des dialectes personnalisés pour l'administration système. Un bon shell système doit avoir une excellente prise en charge des processus et des descripteurs de fichiers et avoir une syntaxe et des fonctions intégrées concises, et je ne pense pas que cela existe en Java.
Vous pouvez mélanger la programmation avec le script avec des choses comme chef, marionnette, vlad, etc., mais cela signifie d'abord apprendre le script bash, car ces langages délèguent très raisonnablement les commandes au shell. Les langages comme Ruby, Perl et Python sont moins verbeux et vous les verrez beaucoup utilisés. La verbosité de Java et certaines de ses valeurs fondamentales (faites tout dans le jvm, ne quittez pas l'ide) le rendent très mal adapté à la tâche.
Oui il y a. J'utilise BeanShell de temps en temps, même s'il n'est pas en cours de développement actif pour le moment. Il s'agit d'un interpréteur pour la syntaxe Java standard et est également fourni avec un interpréteur / environnement graphique, si nécessaire.
Vous pouvez écrire vos scripts shell comme décrit dans les documents BeanShell , mais vous devrez mettre le fichier jar Beanshell à la disposition de votre installation Java pour cela (par exemple, le placer dans le /ext/lib
dossier de votre installation JRE), sinon java ne trouvera pas la bsh.Interpreter
classe .
Cependant, je recommanderais également de regarder de plus près vos options de filtrage de shell (vous n'avez pas mentionné votre environnement, mais la recommandation de TiZon avec bash est cool lorsque vous utilisez Linux). L'utilisation d'un langage de programmation polyvalent comme Java ne gênera que lorsque vous tenterez d'être productif avec des tâches de type shell, par exemple en déplaçant des fichiers, en invoquant des commandes et autres.
Vous devriez probablement jeter un œil à Bash Scripting .
J'ai écrit jpad.io pour permettre l'exécution de "scripts shell" java et d'extraits interactifs tout en fournissant une belle visualisation des résultats. Cela montre ce que je veux dire:
Pour copier un fichier en l'utilisant comme langage de script, vous utiliseriez: 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"));
Que vous pouvez également exécuter à partir de la ligne de commande en tant que:
> 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
PowerShell, un shell orienté objet qui peut utiliser des bibliothèques C #, a été ouvert et est disponible pour Linux .