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

8

Язык программирования, о котором я знаю больше всего, - это Java. В настоящее время мне приходится писать довольно много «сценариев оболочки» для автоматизации моих серверов. Есть ли что-то вроде «Java Shell», чтобы я мог писать сценарии оболочки на Java?

Jens
источник
16
Если у вас есть только молоток, все выглядит как гвоздь . Возможно, пришло время изучить некоторые новые языки программирования, особенно те, которые лучше подходят для вашей текущей работы.
Джулиано
Вы когда-нибудь замечали, что молотки бывают всех форм и размеров, чтобы вы могли выбрать тот, который подходит для работы под рукой?
Джон Гарденье
Я думаю, что дело в том, что иногда мы должны устанавливать винты.
DutchUncle
Что касается молотка: стандартизация является / может быть одним из ключевых «принципов успеха». Конечно, всегда есть что-то более специализированное и более подходящее, но это добавляет много накладных расходов в большинстве случаев ... Моя проблема в том, что мне действительно нужно всего лишь прототипировать что-то. Я НЕ программист, я больше "бизнес-экономист", ребята ... Так что Java-оболочка (со свободным набором текста ...) была бы отличной ... Спасибо за все ваши ответы ...
jens
2
Существует огромная разница между использованием Java в качестве командной оболочки и использованием Java в качестве языка сценариев.
Тайлер

Ответы:

4

Вы можете получить Groovy и использовать Groovysh. Я кое-что с этим сделал, но считаю perl или bash / sh наиболее полезными для выполнения сценариев администратора. Язык приложений, такой как Java, добавляет много накладных расходов, когда все, что вам нужно, это выполнять команды ОС и искать текст.

JOTN
источник
+1 для Groovy. Он позволяет вам получить доступ к JVM и полному Java API, хотя и с синтаксисом Groovy. Но если вы Java-разработчик, то это не так сложно. Одним из главных преимуществ Groovy является возможность написания независимых от системы сценариев - для развертывания, для тестирования, для чего угодно. Лучшая часть - работает на Windows, Linux и OS X без изменения источника. О, да, вы можете использовать Cygwin в Windows для запуска сценариев на основе nix, но тогда вам придется иметь дело с Cygwin (не весело).
Майк
На самом деле это правда, что bash-скрипты очень сложно заменить на groovysh. Но это шаг в правильном направлении, и, похоже, есть некоторые (хотя и не принятые к сведению), чтобы заставить его работать больше как настоящая оболочка (например, "grash") ... В конце мне придется изучить bash. Но я не слышал о groovysh, и я думаю, что это лучшая попытка иметь "java shell" ...
jens
11

Нет реального требования, чтобы «сценарии оболочки» были написаны на языке оболочки, вы можете делать все с C или даже с Assembler, если вам это нравится.

В контексте сценариев оболочки оболочка является не более чем интерпретатором языка программирования, такого как Perl или PHP, но сильно оптимизирована для той работы, которую вы в основном выполняете со сценарием оболочки.

В долгосрочной перспективе я бы посоветовал вам изучить bash или что-то еще, что на самом деле не сложно, потому что снаряды очень ограничены в своих возможностях, так что не так уж много нужно учить.

Свен
источник
1
Основной проблемой при написании административных программ на языке, отличном от c или shell, является обеспечение доступности среды выполнения для вашего языка. Большинство систем Linux поставляются с bash, csh, perl и иногда с python во время установки, но у них не будет Java.
Джефф Странк
3

Некоторые из более легких языков jvm имеют оболочки, но они являются интерфейсом интерпретатора, а не обычными диалектами для системного администрирования. Хорошая системная оболочка должна иметь отличную поддержку дескрипторов процессов и файлов, иметь краткий синтаксис и встроенные функции, и я не думаю, что она существует в Java.

Вы можете смешивать программирование со сценариями с такими вещами, как chef, puppet, vlad и тому подобное, но это означает, что сначала нужно изучить сценарии bash, потому что эти языки довольно разумно делегируют команды оболочке. Такие языки, как Ruby, Perl и Python, менее многословны, и вы увидите, что они часто используются. Многословие Java и некоторые его основные ценности (делайте все в jvm, не оставляйте ide) делают его очень плохо приспособленным для этой задачи.

Tobu
источник
3

Да, есть. Время от времени я использую BeanShell , хотя в данный момент он не активно разрабатывается. Это интерпретатор для стандартного синтаксиса Java, а также поставляется с графическим интерпретатором / средой, если требуется.

Вы можете написать свои сценарии оболочки, как описано в документации по BeanShell , но для этого вам необходимо сделать jar-файл Beanshell доступным для вашей установки Java (например, поместить его в /ext/libпапку вашей установки JRE), иначе java не найдет bsh.Interpreterкласс ,

Тем не менее, я бы также порекомендовал поближе взглянуть на параметры настройки оболочки (вы не упомянули свою среду, но рекомендация TiZon с bash хороша при использовании Linux). Использование полноценного языка программирования общего назначения, такого как Java, будет мешать только при попытке продуктивно выполнять задачи, подобные оболочке, например, перемещать файлы, вызывать команды и тому подобное.

Аксель Кнауф
источник
2

Я написал jpad.io, чтобы позволить запускать java "сценарии оболочки" и интерактивные фрагменты, а также обеспечивать хорошую визуализацию результатов. Это показывает, что я имею в виду:

JPad ​​Java REPL

Чтобы скопировать файл, используя его в качестве языка сценариев, вы должны использовать: 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
Райан Гамильтон
источник
0

Да, добавьте beanhell .jar в каталог Javahome / jre / lib / ext, и затем вы сможете запускать сценарии следующим образом:

java bsh.Interpreter myscript.bsh
djangofan
источник