Który język skryptowy jest najlepszy? [zamknięte]

Do pisania skryptów automatyzacji procesów na platformie Linux, który język skryptowy będzie lepszy? Shell script, Perl lub Python czy jest coś jeszcze? Jestem dla nich nowy. Więc zastanawiam się, do którego wybrać?

Author: Mansfield, 2008-09-16

21 answers

Odpowiedź brzmi: cokolwiek najlepiej pasuje do pracy!

Moja reguła;

Bash - dla krótkiego skryptu, który może potrzebować pętli for, aby zrobić coś powtarzalnie.

Perl - wszystko, co ma związek z jakimś przetwarzaniem tekstu lub plików, zwłaszcza jeśli jest to jednorazowe. Po prostu zrób brudny, paskudny skrypt Perla i skończ z nim

Python - jeśli jest to coś, co możesz chcieć zrobić ponownie lub coś bardzo podobnego. Więc przynajmniej masz szansę. możliwość ponownego użycia skryptu.

 34
Author: Simon Peverett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:56:14

Przejdź do wszystkich trzech z nich, zacznij od bash/awk/sed oraz fileutils (grep, find itd.), a następnie przenieś się w górę hierarchii abstrakcji za pomocą Perla i Pythona.

W ten sposób będziesz mógł sam zdecydować, który z nich najlepiej pasuje do Twoich potrzeb. Mówię, zacznij od Basha i znajomych, ponieważ są wszechobecne, niektóre maszyny nie będą miały zainstalowanego Perla lub Pythona i poczujesz się tam bezradny, szczególnie w tradycyjnej krainie Uniksa (ie, nie linux)

 8
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:54:13

Przy wyborze języka skryptowego, który pomoże zautomatyzować środowisko linux / unix, najważniejszą rzeczą jest moim zdaniem... Twój zamiennik: -)

Przez co mam na myśli kolejnych / innych sysadminów, którzy być może będą musieli utrzymywać twoje Skrypty. Obecnie pracuję w środowisku, w którym główny Uniksowiec jest prawdziwym szefem skryptów, ale głównie ograniczył się do używania Basha, z niektórymi perlami i windows vbscript wrzuconymi na szczęście. Przynajmniej zmusiło mnie to do odświeżenia mojego Perla.

Zgadzając się z innymi komentarzami tutaj, moja sugestia byłaby opanowaniem Basha - tam, gdzie to możliwe, zrób jak najwięcej w bash, jak większość ludzi to zna i może go utrzymywać / debugować. I będzie najbardziej przenośny. Zastosowanie z sed & awk jest szczególnie wydajne.

Kiedy już to opanujesz, możesz tu wrócić i zapytać "jakiego języka skryptowego powinienem się nauczyć po bashu?" :-)

JB

 7
Author: Jonathan Bourke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:00:05

Myślę, że to zależy od tego, jak skomplikowane są zadania, które chcesz zautomatyzować. Osobiście zawsze korzystałem ze skryptów powłokowych, które umożliwiają wywoływanie awk, sed, grep,find, ls, cat itp. które można połączyć ze sobą, aby zrobić prawie wszystko, co można osiągnąć za pomocą Perla lub Pythona. Z drugiej strony, jeśli procesy, które chcesz zautomatyzować są złożone (np. nie tylko liniowa sekwencja kroków), prawdopodobnie zauważysz, że pisanie skryptów w Perlu lub Pythonie (a nawet w ruby!) jest dużo szybsze i ułatwia ich utrzymanie.

 4
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:52:27
 4
Author: Sev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-23 03:33:19

Używam Perla do wszystkiego poza skrajnie prostymi skryptami.

Ja również 'use warnings', 'use strict', unikaj backsticków, system wywołania jako 'system($command, @and_args)'. A ponieważ lubię to być utrzymywalne: IPC:: Run( dla rur), File:: Fu( dla nazw plików, plików tempfiles, itp), YAML (dla configs lub różnych danych), i Getopt::Helpful (więc pamiętam, jakie były opcje.)

 4
Author: Eric Wilhelm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 22:24:29

Zależy od złożoności i domeny problemu danego zadania.

Skrypty Bash są szybkie i brudne dla prostych zadań automatyzacji systemu. Dla bardziej złożonych rzeczy niż przenoszenie plików i uruchamianie poleceń, osobiście powiedziałbym, że Perl jest następny w kolejce jako defacto sys-admin goto automation tool. Aby bardziej skupić się na ponownym użyciu kodu i czytelności/konserwacji chciałbym zwiększyć go do Pythona lub Ruby.

PHP może być również używany do automatyzacji zadań, jednak nie jest powszechnie akceptowane w tym celu z mojego doświadczenia.

To naprawdę sprowadza się do tego, jaki język najbardziej interesuje Cię nauka, większość może być używana do automatyzacji, oprócz wielu innych rzeczy.

 3
Author: ctcherry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:55:25

Preferuję skrypty powłoki tylko do bardzo małych zadań. Pisanie solidnych skryptów powłoki wymaga dużej wiedzy na temat możliwych pułapek, których uczysz się tylko robiąc. Ale nauka nawet podstaw znacznie zwiększy twoją produktywność!

Jeśli muszę mieć złożoną logikę, zwykle używam Pythona. Przez complex mam na myśli wszystko, co ma więcej niż dwa if-statements =)

Perl jest w porządku, jak na swój pierwotny cel, ale ostrzegam, że wiele perlizmów, których się uczysz, nie ma zastosowania gdziekolwiek indziej.

Python i Ruby są mniej więcej równoważne. Polecam nauczyć się jednego z nich dobrze i sprawdzić samouczek na innych. Wolę Pythona, ale to naprawdę sprowadza się do osobistych preferencji.

Podsumowując: Naucz się podstaw skryptów powłoki. Naucz się przynajmniej Pythona lub Ruby dobrze.

 2
Author: Antti Rasinen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:56:43

Cały czas polecam Pythona. To powinno pozwolić Ci zrobić wszystko. Do małych zadań używam jednak skryptów powłoki.

 1
Author: Vargen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:51:08

Zazwyczaj powiedziałbym, że ten, który znasz najlepiej, który może osiągnąć pożądane rezultaty. Jak wszystkie wojny religijne, i po nauczeniu się dużej liczby języków, zdajesz sobie sprawę, że można zrobić większość rzeczy w większości języków (zauważ, że powiedziałem większość). Używam Perla. Może nie jest tak aktualny jak Python czy Ruby, ale ma ogromne wsparcie bibliotek z CPAN. I nie znalazłem jeszcze niczego, czego nie mogę w nim zrobić. Kiedy to zrobię, spojrzę na inne języki, aby dowiedzieć się, który z nich może wypełnić tę lukę.

Gdybym zaczynał dzisiaj, może wybrałbym Pythona lub Ruby, ale nie wiem o nich wystarczająco dużo, aby podjąć decyzję. Czy któryś z twoich znajomych / kolegów zna języki skryptowe. Może to bardzo pomóc, ponieważ wsparcie podczas nauki nowego języka jest bardzo ważne.

Powodzenia

 1
Author: Xetius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:53:45

No To jest tak:

Perl nie jest najbardziej przyjaznym dla użytkownika językiem skryptowym, ale posiada CPAN (Comprehensive Perl Archive Network), który zawiera tysiące bibliotek, które implementują prawie wszystko, o czym myślisz, a Perl jest naprawdę potężny, jeśli chodzi o Przetwarzanie tekstu. Wadą byłoby to, że kod Perla jest dość trudny do utrzymania (jeśli nie znasz go zbyt dobrze).

Python jest językiem skryptowym, który staje się coraz bardziej popularny wśród programistów. Nie ma takiej społeczności jak CPAN (jeszcze), ale jest bardziej czytelna i łatwiejsza w utrzymaniu. Jest tak szybki jak perl.

Ruby jest najnowszym trendem w językach skryptowych. Ruby jest pełnym OOP, co oznacza, że wszystko jest obiektem. Jego zaletą jest to, że kod jest bardzo czytelny i jest dość łatwy do nauczenia się, jeśli jesteś początkującym. Główną wadą jest jego szybkość wykonania, która jest S * x.

 1
Author: Vhaerun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-07 10:32:46

To zależy od tego, jaki rodzaj automatyzacji robisz, jeśli testujesz autoamtion Perl jest sugerowany, ponieważ Perl jest znacznie potężnymi modułami rozszerzeń poprzez CPAN, internetowy spis modułów Perla. Jeśli potrzebujesz tylko poręcznego narzędzia do uzupełnienia prostego pliku źródłowego, awk jest bardzo wygodny. Jeśli planujesz użyć skryptów do automatyzacji dużego projektu, Perl jest lepszym wyborem z większą liczbą funkcji. Ponownie Python został zaprojektowany od początku jako język obiektowy. Perl 5 ma jakieś o-o dodano funkcje, ale wygląda mi to na niezręczną modernizację. Python ma dobrze zaimplementowane funkcje o-o do wielokrotnego dziedziczenia, polimorfizmu i enkapsulacji.N podsumowanie, wydaje mi się, że Python dominuje w Perlu w większości aplikacji z wyjątkiem dość krótkich aplikacji typu Shell-script, i tam są one z grubsza porównywalne.

 0
Author: GustyWind,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:54:13

Zależy co chcesz robić, regularnie używam wszystkich:

  • powłoka do prostego grupowania poleceń z Być może pętlą lub instrukcją if.
  • Perl, kiedy przeglądam pliki i robię jakąś wymianę tekstu i such rzeczy.
  • Python kiedy potrzeba więcej logiki.

Pod *nix powinieneś użyć odpowiedniego narzędzia do właściwej pracy, która może być trudna dla początkującego, ponieważ jest tak wiele rzeczy do nauczenia (po jakichś 15 latach jako użytkownik *nix wciąż znajduję nowe rzeczy). Moim zaleceniem jest, aby spojrzeć na wszystkie języki szybko, aby zobaczyć, co mogą zrobić, a następnie zacząć używać powłoki do wszystkiego, gdy twoje Skrypty staje się niezgrabny przenieść je do czegoś innego.

 -1
Author: Mr Shark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:59:59

Po prostu napisz swoje polecenia jeden po drugim, umieść je w pliku i uruchom ten plik za pomocą

promp> bash file

I masz swoją pierwszą automatyzację. Następnie zapoznaj się ze zmiennymi bash, pętlami i strukturami sterowania.

 -1
Author: stephanea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:18:22

Popieram Pythona-potężnego, prostego, wydajnego i.. w sumie całkiem fajna, w porównaniu do Perla czy Basha. Również jeśli wiesz, znajdziesz inne zastosowania, jest używany w wielu projektach. I nie tylko jako "klasyczny" język skryptowy, Weźmy na przykład twisted project. To prawda również w przypadku Perla, ale sam wolę Pythona w kolejności wielkości

Podsumowując jednak jest tak, jak zostało powiedziane beofre, upewnij się, że masz odpowiednie narzędzie do pracy...

 -1
Author: Robse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:25:17

Gdybym miał wybrać jeden, musiałby być AWK. Jest lekki, ma małą krzywą uczenia się i ma wiele przydatnych funkcji, takich jak indeks i podstr.

 -1
Author: dogbane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:39:04

Jeśli chcesz mieć prosty program skryptowy "kontrolujący" inny (oczywiście z linii poleceń) program, powinieneś przejrzeć Tcl/Tk, zwłaszcza jego dialekt expect - są one proste i zorientowane na ten cel - bardzo łatwo jest stworzyć skrypt, który kontroluje ftp, a nawet robi z nimi su!

Awk jest bardzo przyjemny w przetwarzaniu plików tekstowych-nie tak potężny jak perl, ale znacznie prostszy i prostszy (i bez okropnej składni).

Oczywiście przebieg może się różnić, więc myślę, że najlepszą odpowiedzią byłoby pytanie: do czego chcesz pisać skrypty? A potem: czy znasz jakiś skrypt językowy? Odpowiedzi na te pytania wskażą Ci język skryptowy, którego powinieneś używać, zgodnie z zaletami/wadami każdego z nich i ich głównym celem.

 -1
Author: Joe Pineda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 23:09:19

Jeśli chcesz minimalistyczne, kompaktowe i szybkie rozwiązanie (szybsze niż Python/Ruby) to - > wybierz język skryptowy LUA :-) Jednak szybkość i zwartość kodu Lua jest osiągana przez relatywnie mały rdzeń języka Lua, więc jeśli chcesz "baterie w zestawie" (aka. bardzo duże "standardowe" biblioteki) wtedy Lua nie jest dla Ciebie. Poza tym chłopaki ze świata C / c++ bardzo lubią szybkość Lua: -)

P. s.

Lua vs Ruby 1.9 benchmark (możesz również spojrzeć Lua Vs Python 3):

Http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv

 -1
Author: 0x69,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-19 14:59:23

Na Linuksie? Wybierz swoją truciznę. Lubię Pythona, inne Ruby, jeszcze inne Perla. Wybierz jedną i zrób to. :-)

 -2
Author: Bernard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 08:51:43

Powiedziałbym, że Python-ma bardzo wysoką czytelność, jest prosty (brak nawiasów klamrowych, słów kluczowych jak najbliżej angielskiego itp.) i można w nim zrobić prawie wszystko, od prostych do bardzo złożonych rzeczy. Jest również popularny i przyjemny w kodowaniu.

 -3
Author: Oko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:05:50

To może zabrzmieć trochę dziwnie, używałem Basha od ponad 10 lat. Zacząłem używać PHP5 i na początku było to trudne, ale teraz mam znacznie lepszą bazę kodów wielokrotnego użytku.

Nie polecałbym tego jako punktu wyjścia!

 -4
Author: Uresu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 09:07:09