Linux =他のLinuxシェルの代わりに「Javaシェル」のようなものはありますか?


8

私が最もよく知っているプログラミング言語はJavaです。現在、サーバーを自動化するには、かなり多くの「シェルスクリプト」を作成する必要があります。Javaでシェルスクリプトを記述できるように、「Javaシェル」のようなものはありますか?


16
ハンマーさえあれば、すべてが釘のように見えます。たぶん、あなたはいくつかの新しいプログラミング言語、特に現在の仕事により適したものを学ぶ時がきたのかもしれません。
ジュリアーノ

ハンマーにはさまざまな形とサイズがあるので、目の前の作業に適したものを選択できることに気づいたことがありますか?
John Gardeniers、2011

ポイントは、時々、ネジを取り付けなければならないということです。
DutchUncle

まあ、ハンマーに関して:標準化は重要な「成功の原則」の1つです。もちろん、より専門的でより適切なものは常に存在しますが、これはほとんどの場合、多くのオーバーヘッドを追加します。私はプログラマーではありません。私はより「ビジネス経済」の人です...だから、Javaシェル(緩いタイピングを使って...)はすばらしいでしょう...すべての答えをありがとう...
jens

2
コマンドシェルとしてjavaを使用することとスクリプト言語としてjavaを使用することの間には大きな違いがあります。
tylerl 2011

回答:


4

groovyを取得してgroovyshを使用できます。私はそれでいくつかのことをしましたが、perlまたはbash / shが管理スクリプトを実行するのに最も役立つと思います。Javaのようなアプリケーション言語では、OSコマンドを実行してテキストを検索するだけで、多くのオーバーヘッドが発生します。


Groovyの+1。Groovy構文を使用していても、JVMおよび完全なJava APIにアクセスできます。しかし、Java開発者であれば、それほど難しくはありません。Groovyの大きな推進力の1つは、システムに依存しないスクリプトを作成する機能です。最良の部分-ソースを変更せずにWindows、Linux、OS Xで動作します。ああ、そうです、WindowsでCygwinを使用してnixベースのスクリプトを実行できますが、その場合はCygwinを処理する必要があります(面白くない)。
マイク

実際、bashスクリプトをgroovyshに置き換えるのは非常に難しいのは事実です。しかし、それは正しい方向へのステップであり、実際のシェル(たとえば、「grash」)のように機能させるためのいくつかの(廃止された概念はあります)ようです...最後に、bashを学ぶ必要があります。しかし、私はgroovyshについて聞いたことがなかったので、「Javaシェル」を使用するのが最善の方法だと思います...
jens

11

「シェルスクリプト」をシェル言語で作成する必要があるという本当の要件はありません。Cやアセンブラーですべてを実行できます。

シェルスクリプトのコンテキストでは、シェルは、PerlやPHPと同じように、プログラミング言語のインタープリターにすぎませんが、シェルスクリプトで主に行う種類の作業に大きく最適化されています。

長期的には、bashか何かを学ぶことをお勧めします。これは、シェルの能力が非常に制限されているので、学習することが多すぎないため、それほど難しくありません。


1
cまたはシェル以外の言語で管理プログラムを作成する場合の主な問題は、ランタイムがその言語で使用できることを確認することです。ほとんどのLinuxシステムには、インストール時にbash、csh、perl、および時にはpythonが付属していますが、Javaはありません。
Jeff Strunk

3

より軽いjvm言語のいくつかはシェルを持っていますが、それらはインタプリタのフロントエンドであり、sysadminingのカスタムの方言ではありません。優れたシステムシェルは、優れたプロセスとファイル記述子をサポートし、簡潔な構文とビルトインを備えている必要があり、Javaには存在しないと思います。

chef、puppet、vladなどのプログラミングとスクリプトを組み合わせることができますが、これらの言語は非常に賢明な方法でコマンドをシェルに委任するため、最初にbashスクリプトを学習することを意味します。Ruby、Perl、Pythonなどの言語は冗長性が低く、よく使用されます。Javaの冗長性とそのコア値の一部(jvmですべてを実行し、ideを残さない)により、Javaはタスクに非常に不適切です。


3

はいあります。現時点ではBeanShellは活発に開発されていませんが、時々使用しています。これは、標準のJava構文のインタープリターであり、必要に応じてグラフィカルインタープリター/環境も付属しています。

BeanShell docsで説明されているようシェルスクリプトを記述できますが、Beanshell jarファイルをJavaインストールで使用できるようにする必要があります(たとえば/ext/lib、JREインストールのフォルダーに配置する)。そうしないと、javaがbsh.Interpreterクラスを見つけられません。

しかし、私はあなたのシェルsciptingオプションをさらに詳しく見ることをお勧めします(あなたはあなたの環境について言及しませんでしたが、Linuxを使用する場合、bashでのTiZonの推奨は素晴らしいです)。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

はい、Beanshell .jarをJavahome / jre / lib / extディレクトリに追加すると、次のようにスクリプトを起動できます。

java bsh.Interpreter myscript.bsh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.