Ngôn ngữ lập trình mà tôi biết nhiều nhất là Java. Hiện tại tôi phải viết khá nhiều "shell script" để tự động hóa máy chủ của mình. Có cái gì đó giống như "Java Shell" để tôi có thể viết các tập lệnh shell trong Java không?
Ngôn ngữ lập trình mà tôi biết nhiều nhất là Java. Hiện tại tôi phải viết khá nhiều "shell script" để tự động hóa máy chủ của mình. Có cái gì đó giống như "Java Shell" để tôi có thể viết các tập lệnh shell trong Java không?
Câu trả lời:
Bạn có thể nhận được Groovy và sử dụng Groovysh. Tôi đã làm một số điều với điều đó, nhưng tôi thấy perl hoặc bash / sh là hữu ích nhất để thực hiện các tập lệnh quản trị. Một ngôn ngữ ứng dụng như Java thêm rất nhiều chi phí khi tất cả những gì bạn cần làm là thực thi các lệnh OS và tìm kiếm văn bản.
Không có yêu cầu thực sự rằng "shell script" phải được viết bằng ngôn ngữ shell, bạn có thể làm mọi thứ với C hoặc thậm chí là Trình biên dịch, nếu bạn thích điều đó.
Trong ngữ cảnh của các kịch bản shell, shell không có gì khác hơn là một trình thông dịch cho ngôn ngữ lập trình, giống như Perl hoặc PHP, nhưng được tối ưu hóa rất nhiều cho loại công việc bạn chủ yếu làm với kịch bản shell.
Về lâu dài, tôi sẽ đề nghị bạn học bash hoặc một cái gì đó, điều này thực sự không khó vì đạn rất hạn chế trong khả năng của chúng để không có quá nhiều thứ để học.
Một số ngôn ngữ jvm nhẹ hơn có vỏ, nhưng những ngôn ngữ này là giao diện người phiên dịch, không phải là phương ngữ tùy chỉnh cho sysadmining. Một hệ thống vỏ tốt cần phải có hỗ trợ mô tả tệp và quy trình tuyệt vời và có cú pháp và nội dung ngắn gọn và tôi không nghĩ rằng nó tồn tại trong Java.
Bạn có thể kết hợp lập trình với kịch bản với những thứ như đầu bếp, bù nhìn, vlad và những thứ tương tự, nhưng điều đó có nghĩa là học bash script trước, bởi vì những ngôn ngữ đó, khá hợp lý, ủy thác các lệnh cho trình bao. Các ngôn ngữ như Ruby, Perl và Python ít dài dòng hơn và bạn sẽ thấy chúng được sử dụng rất nhiều. Độ dài của Java và một số giá trị cốt lõi của nó (làm mọi thứ trong jvm, không rời khỏi ide) làm cho nó rất không phù hợp với nhiệm vụ.
Có, có. Thỉnh thoảng tôi vẫn sử dụng BeanShell , mặc dù hiện tại nó không được phát triển tích cực. Nó là một trình thông dịch cho cú pháp Java tiêu chuẩn và cũng đi kèm với một trình thông dịch / môi trường đồ họa, nếu được yêu cầu.
Bạn có thể viết các tập lệnh shell của mình như được mô tả trong các tài liệu BeanShell , nhưng bạn sẽ phải làm cho tệp jar Beanshell có sẵn cho bản cài đặt Java của bạn cho việc này (ví dụ: đặt nó vào /ext/lib
thư mục cài đặt JRE của bạn), nếu không java sẽ không tìm thấy bsh.Interpreter
lớp .
Tuy nhiên, tôi cũng khuyên bạn nên xem xét kỹ hơn các tùy chọn quét vỏ của bạn (bạn không đề cập đến môi trường của mình, nhưng khuyến nghị của TiZon với bash rất tuyệt khi sử dụng Linux). Sử dụng ngôn ngữ lập trình đa mục đích toàn diện như Java sẽ chỉ cản trở bạn khi cố gắng làm việc hiệu quả với các tác vụ giống như vỏ, ví dụ như di chuyển các tệp xung quanh, gọi lệnh và thích.
Có lẽ bạn nên xem Bash Scripting .
Tôi đã viết jpad.io để cho phép chạy java "shell script" và các đoạn tương tác trong khi cũng cung cấp trực quan hóa tốt các kết quả. Điều này cho thấy những gì tôi có nghĩa là:
Để sao chép tệp bằng ngôn ngữ này, bạn sẽ sử dụng: 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"));
Mà bạn cũng có thể chạy từ dòng lệnh như:
> 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
PowerShell, một vỏ hướng đối tượng có thể sử dụng các thư viện C #, đã được mở và có sẵn cho Linux .