Язык программирования, о котором я знаю больше всего, - это Java. В настоящее время мне нужно написать довольно много «сценариев оболочки» для автоматизации моих серверов. Есть ли что-то вроде «оболочки Java», чтобы я мог писать сценарии оболочки на Java?
Нет никакого реального требования, что «сценарии оболочки» должны быть написаны на языке оболочки, вы можете делать все с помощью C или даже Ассемблера, если хотите.
В контексте сценариев оболочки оболочка - это не что иное, как интерпретатор языка программирования, как Perl или PHP, но сильно оптимизированный для работы, которую вы в основном выполняете с помощью сценария оболочки.
В долгосрочной перспективе я бы посоветовал вам изучить bash или что-то в этом роде, что на самом деле несложно, потому что оболочки очень ограничены в своих возможностях, так что изучать особо нечего.
Вы можете стать отличным и использовать groovysh. Я кое-что сделал с этим, но считаю perl или bash / sh наиболее полезными для выполнения административных скриптов. Такой язык приложений, как Java, добавляет много накладных расходов, когда все, что вам нужно делать, это выполнять команды ОС и искать текст.
Некоторые из более легких языков jvm имеют оболочки, но они являются интерфейсами для интерпретатора, а не настраиваемыми диалектами для системного администрирования. Хорошая системная оболочка должна иметь отличную поддержку процессов и дескрипторов файлов, а также иметь краткий синтаксис и встроенные функции, а я не думаю, что это существует в Java.
Вы можете смешивать программирование со сценариями с такими вещами, как chef, puppet, vlad и т. Д., Но это означает сначала изучение сценариев bash, потому что эти языки вполне разумно делегируют команды оболочке. Такие языки, как Ruby, Perl и Python, менее подробны, и вы увидите, что они часто используются. Многословие Java и некоторые из ее основных ценностей (делать все в jvm, не оставлять ide) делают ее очень плохо подходящей для этой задачи.
Да, есть. Я использовал BeanShell время от времени, хотя в настоящий момент он не находится в активной разработке. Это интерпретатор стандартного синтаксиса Java, а также при необходимости поставляется с графическим интерпретатором / средой.
Вы можете написать свои сценарии оболочки, как описано в документации BeanShell, но для этого вам нужно сделать файл jar Beanshell доступным для вашей установки Java (например, поместить его в /ext/lib
папку вашей установки JRE), иначе java не найдет bsh.Interpreter
класс.
Тем не менее, я бы также рекомендовал более внимательно изучить параметры настройки оболочки (вы не упомянули свою среду, но рекомендация TiZon с bash хороша при использовании Linux). Использование полнофункционального языка программирования общего назначения, такого как Java, будет мешать только при попытке продуктивно выполнять задачи, подобные оболочке, например. грамм. перемещение файлов, вызов команд и тому подобное.
Вам, наверное, стоит взглянуть на Сценарии Bash.
я написал jpad.io чтобы позволить запускать java-сценарии оболочки и интерактивные сниппеты, а также обеспечить хорошую визуализацию результатов. Это показывает, что я имею в виду:
Чтобы скопировать файл, используя его в качестве языка сценариев, вы должны использовать: 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"));
Что вы также можете запустить из командной строки как:
> 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
Да, добавьте beanshell .jar в каталог Javahome / jre / lib / ext, и тогда вы сможете запускать такие сценарии:
java bsh.Interpreter myscript.bsh
PowerShell, объектно-ориентированная оболочка, которая может использовать библиотеки C #, был открыт и доступен для Linux.