Назад | Перейти на главную страницу

Linux = Есть ли что-то вроде «оболочки Java» вместо других оболочек Linux?

Язык программирования, о котором я знаю больше всего, - это 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.