Linux = Apakah ada sesuatu seperti “Java Shell” dan bukan shell linux lainnya?

8

Bahasa pemrograman yang saya tahu paling banyak adalah Java. Saat ini saya harus menulis cukup banyak "skrip shell" untuk mengotomatisasi server saya. Apakah ada sesuatu seperti "Java Shell" sehingga saya dapat menulis skrip shell di Jawa?

jens
sumber
16
Jika yang Anda miliki adalah palu, semuanya terlihat seperti paku . Mungkin sudah saatnya bagi Anda untuk mempelajari beberapa bahasa pemrograman baru, khususnya yang lebih cocok untuk pekerjaan Anda saat ini.
Juliano
Apakah Anda pernah memperhatikan bahwa palu datang dalam berbagai bentuk dan ukuran, sehingga Anda dapat memilih satu yang cocok untuk pekerjaan yang Anda lakukan?
John Gardeniers
Saya pikir intinya adalah bahwa, kadang-kadang, kita harus memasang sekrup.
DutchUncle
Mengenai palu: Standardisasi adalah / dapat menjadi salah satu "prinsip sukses" kunci. Tentu saja selalu ada sesuatu yang lebih khusus dan lebih sesuai, tetapi ini menambah banyak overhead dalam banyak kasus ... Masalah saya adalah, saya sebenarnya hanya perlu membuat prototipe sesuatu. Saya TIDAK programmer saya lebih "ekonomi bisnis" guys ... Jadi shell java (dengan longgar mengetik ...) akan menjadi besar ... Terima kasih untuk semua jawaban Anda ...
Jens
2
Ada perbedaan besar antara menggunakan java sebagai shell perintah Anda dan menggunakan java sebagai bahasa scripting.
tylerl

Jawaban:

4

Anda bisa mendapatkan asyik dan menggunakan groovysh. Saya telah melakukan beberapa hal dengan itu, tetapi saya menemukan perl atau bash / sh yang paling berguna untuk melakukan skrip admin. Bahasa aplikasi seperti Java menambahkan banyak overhead ketika semua yang perlu Anda lakukan adalah menjalankan perintah OS dan mencari teks.

JOTN
sumber
+1 untuk Groovy. Ini memungkinkan Anda untuk mengakses JVM dan Java API lengkap, meskipun dengan sintaks Groovy. Tetapi jika Anda seorang pengembang Java maka itu tidak sulit untuk masuk. Salah satu dorongan besar untuk Groovy adalah kemampuan untuk menulis skrip independen sistem - untuk penyebaran, untuk pengujian, untuk apa pun. Bagian terbaik - bekerja pada Windows, Linux dan OS X tanpa mengubah sumber. Oh, dan ya, Anda bisa menggunakan Cygwin di Windows untuk menjalankan skrip berbasis nix tapi kemudian Anda harus berurusan dengan Cygwin (tidak menyenangkan).
Mike
Sebenarnya memang benar bahwa sangat sulit untuk mengganti bash scripting dengan groovysh. Tetapi ini adalah langkah ke arah yang benar dan tampaknya ada beberapa (walaupun dihentikan serangan) untuk membuatnya bekerja lebih seperti shell nyata (misalnya "grash") ... Pada akhirnya saya harus belajar bash. Tapi saya belum pernah mendengar tentang groovysh dan saya pikir ini adalah upaya terbaik untuk memiliki "shell java" ...
jens
11

Tidak ada persyaratan nyata bahwa "skrip shell" harus ditulis dalam bahasa shell, Anda dapat melakukan segalanya dengan C atau bahkan Assembler, jika Anda suka.

Dalam konteks skrip shell, shell tidak lebih dari juru bahasa pemrograman, seperti Perl atau PHP, tetapi sangat dioptimalkan untuk jenis pekerjaan yang sebagian besar Anda lakukan dengan skrip shell.

Dalam jangka panjang, saya menyarankan agar Anda mempelajari bash atau sesuatu, yang tidak terlalu sulit karena kemampuan shell sangat terbatas sehingga tidak ada terlalu banyak untuk dipelajari.

Sven
sumber
1
Masalah utama dengan menulis program administratif dalam bahasa selain c atau shell adalah memastikan runtime tersedia untuk bahasa Anda. Sebagian besar sistem Linux datang dengan bash, csh, perl, dan kadang-kadang python pada saat instalasi, tetapi mereka tidak akan memiliki java.
Jeff Strunk
3

Beberapa bahasa jvm yang lebih ringan memiliki cangkang, tetapi itu adalah ujung-depan untuk penerjemah, bukan dialek khusus untuk sysadmining. Shell sistem yang baik perlu memiliki dukungan proses dan file descriptor yang sangat baik dan memiliki sintaks dan builtin yang ringkas, dan saya tidak berpikir itu ada di Jawa.

Anda dapat menggabungkan pemrograman dengan scripting dengan hal-hal seperti koki, boneka, vlad, dan sejenisnya, tetapi itu berarti belajar bash scripting terlebih dahulu, karena bahasa-bahasa itu, cukup masuk akal, mendelegasikan perintah ke shell. Bahasa-bahasa seperti Ruby, Perl dan Python tidak terlalu bertele-tele dan Anda akan sering melihatnya. Kata kerja Java dan beberapa nilai intinya (melakukan segalanya dalam jvm, jangan meninggalkan ide) membuatnya sangat tidak cocok untuk tugas tersebut.

Tobu
sumber
3

Ya ada. Saya telah menggunakan BeanShell dari waktu ke waktu, meskipun saat ini tidak sedang dikembangkan. Ini adalah interpreter untuk sintaks Java standar dan juga dilengkapi dengan juru bahasa / lingkungan grafis, jika diperlukan.

Anda dapat menulis skrip shell seperti yang dijelaskan dalam dokumen BeanShell , tetapi Anda harus membuat file jar Beanshell tersedia untuk instalasi Java Anda untuk ini (misal, memasukkannya ke /ext/libfolder instalasi JRE Anda), jika tidak, java tidak akan menemukan bsh.Interpreterkelas .

Namun, saya juga merekomendasikan untuk melihat lebih dekat opsi scipting shell Anda (Anda tidak menyebutkan lingkungan Anda, tetapi rekomendasi TiZon dengan bash keren ketika menggunakan Linux). Menggunakan bahasa pemrograman serba guna lengkap seperti Java hanya akan menghalangi ketika mencoba menjadi produktif dengan tugas-tugas seperti shell, misalnya memindahkan file di sekitar, menjalankan perintah dan sejenisnya.

Axel Knauf
sumber
2

Saya menulis jpad.io untuk memungkinkan menjalankan "shell script" java dan potongan interaktif sementara juga memberikan visualisasi yang bagus dari hasilnya. Ini menunjukkan apa yang saya maksud:

JPad ​​Java REPL

Untuk menyalin file menggunakan ini sebagai bahasa scripting Anda akan menggunakan: 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"));

Yang juga bisa Anda jalankan dari baris perintah sebagai:

 > 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
Ryan Hamilton
sumber
0

Ya, tambahkan .jar beanh ke direktori Javahome / jre / lib / ext Anda dan kemudian Anda bisa meluncurkan skrip seperti:

java bsh.Interpreter myscript.bsh
Djangofan
sumber