Właśnie przeprowadziłem migrację do stacji roboczej UNIX. Moja pamięć skryptów powłoki Basha zanikła od czasu szkoły i uważam, że składnia jest bardzo myląca. Zastanawiam się, jakie inne języki skryptowe są używane do automatyzacji zadań. Dwa najbardziej popularne, o których słyszałem, to Perl i Python.
- Który język skryptowy jest najczęściej używany przez sklepy ze świata rzeczywistego?
- Który język skryptowy najbardziej przypomina składnię C / C ++?
- Czy istnieje inny język skryptowy, którego nie znam?
Dzięki za pomoc,
Scott
Odpowiedzi:
Do pewnego stopnia jest to kwestia osobistych preferencji. Perl i Python są zdecydowanie pod względem popularności.
Aby odpowiedzieć na dwa z trzech pytań:
Jednak moim zaleceniem jest Python. Jest łatwy do czytania i pisania, niezwykle potężny, aw Internecie jest mnóstwo przydatnych zasobów do nauki, nie wspominając już o kodzie, który można skopiować i zmienić.
źródło
sh
umożliwia korzystanie z Pythona jako języka skryptowego powłoki; Jeśli jednak natkniesz się na przypadki skrajne (takie jak przetwarzanie wieloprocesowe), musisz nauczyć się modułu podprocesu, który do dziś uważam za zbyt trudny do użycia.Perl i Python to oczywiście odpowiedzi; ale każde z nich służy do wykonywania różnych zadań:
Jeśli chodzi o to, którego się teraz uczyć (skoro prawdopodobnie nie znasz żadnego z nich), nauczyłbym się Pythona. Jest to najprostszy i najbardziej przydatny do poznania.
A jeśli chodzi o odpowiedzi na twoje pytania:
Który język skryptowy jest najczęściej używany przez sklepy ze świata rzeczywistego?
Wszystkie, ale wyobrażam sobie, że Perl ma tutaj pewną przewagę (ponieważ jest używany w administracji systemu znacznie dłużej).
Który język skryptowy najbardziej przypomina składnię C / C ++?
Perl
Czy istnieje inny język skryptowy, którego nie znam?
Ruby, Tcsh / Csh, http://en.wikipedia.org/wiki/Interpreted_language
źródło
awk dla małych zadań, python dla więcej niż onelinerów.
Python (jeśli nie używasz określonych interfejsów API i innych rzeczy zależnych od platformy) ma bogatą „standardową bibliotekę”, która jest dostępna na wszystkich platformach, na których używasz wersji Pythona. Jest to bardzo miłe, ponieważ możesz łatwo ponownie używać skryptów i oznacza to, że twoja wiedza jest dobrą inwestycją, nawet jeśli zmienisz platformę.
W naszej firmie używamy Pythona do wszystkich skryptów, monitorowania, ... i java dla aplikacji, i mamy się dobrze w heterogenicznym środowisku.
źródło
Powiedziałbym, że perl i python to prawdopodobnie dwie najlepsze alternatywy. Możesz również wiele zrobić za pomocą sed i awk.
źródło
Sh (skorupa Bourne'a), grep, awk i sed to zawsze dobra rzecz, aby znów się uchwycić. Perl jest doskonały, jeśli nie masz dużo wyrażeń regularnych, a łatwość konserwacji nie jest aż tak ważna (nie mówiąc, że nie jest to możliwe). Pyton; jeśli czytelność jest dla Ciebie ważna. Preferuję Python, ale wszystkie te narzędzia są dobre dla większości rzeczy, które na niego rzucasz. Możesz ponownie rozważyć twoje wymagania dotyczące składni c / c ++, utknięcie w nim nie pomoże ci na dłuższą metę.
źródło
Jeśli chcesz nauczyć się czegoś od zera, prawdopodobnie najlepiej (ponownie) naucz się bash.
Poza tym perl i python są obecnie popularne; Jestem stronnikiem perla, ale mój styl skryptowania w perlu niewiele się zmienił, odkąd Perl 4 został wydany.
Nie znam żadnych języków skryptowych typu „c-syntax”.
źródło
Perl, bez dwóch zdań, choćby po niesamowity zasób CPAN ( http://search.cpan.org/ ). Zaletą używania języka skryptowego w tak ogromnej społeczności jest to, że prawdopodobnie nigdy nie będziesz musiał niczego wymyślać.
Zaletą Perla jest to, że jest tak złożony, jak potrzebujesz w obecnej sytuacji. Możesz traktować go jako prosty język skryptowy do szybkiego administrowania lub skryptów jednofunkcyjnych, ale możesz używać pojęć obiektowych lub rozbudowanych systemów meta obiektów, gdy chcesz tworzyć większe, łatwe w utrzymaniu aplikacje (takie jak demony, serwery, klienci).
Różnice między samymi językami skryptowymi nie są wystarczająco poważne, aby wybrać wyraźnego zwycięzcę, ale przede wszystkim powinieneś zastanowić się, jak łatwo będzie ci znaleźć informacje na interesujące Cię tematy.
Składnia Perla może być uderzająco zbliżona do C, o ile można obejść brak pisania i znaków; zaawansowane użycie perla pojawi się naturalnie, gdy w końcu poznasz mocne strony języka.
A dla naysayers na froncie czytelności: możesz pisać trudne do odczytania kody w dowolnym języku. Jeśli spojrzysz wstecz na swój kod sprzed 4 miesięcy i nie rozumiesz go, robisz coś złego.
ps Ten post został wypełniony linkami do różnych przyjaznych modułów administracyjnych na CPAN, ale najwyraźniej nowi użytkownicy mogą publikować tylko jeden link, więc użyj tego linku CPAN do wyszukiwania takich rzeczy jak „CVS”, SVN, „Cron” i „Łoś” (an rozbudowany system obiektowy)
źródło
źródło
[ogólne porady dotyczące skryptowania, zobacz inne odpowiedzi]
Ta odpowiedź dotyczy korzystania z programów wiersza polecenia, a także ich dużych łańcuchów.
Do uruchamiania łańcuchów programów CLI i być może wielu łańcuchów w sekwencji, bash jest najłatwiejszy. Perl może zrobić to samo, ale język jest znacznie trudniejszy do nauczenia się i jest znacznie bardziej złożony, i jak wielu zauważyło, łatwo jest napisać zrozumiały Perl.
Jeśli iterujesz po plikach i parametrach, bash jest najłatwiejszy do zrobienia b / c, możesz prototypować w powłoce, a następnie skopiować do skryptu i dodać kilka tablic i pętli przy minimalnym obciążeniu.
Przykłady tego, co mam na myśli:
W bash łatwo jest zawinąć to w kilka pętli nad niektórymi z tych parametrów. Jednak kod staje się trudny do odczytania, gdy skrypt ma więcej niż kilkadziesiąt linii. --- wyobraź sobie 30 zestawów poleceń (po kilka wierszy) dla trzydziestu różnych wykresów danych ---
Perl i Python mogą być lepsze dla dużych skryptów, ponieważ mają czystszą składnię dla zapętlania i zmiennych, ale polecenia bash muszą być generowane jako łańcuchy, uruchamiane jako podprocesy i przechwytywane stdin, stdout. Można to zrobić, ale nie można w pełni zastąpić natywnego środowiska powłoki.
Gdyby powłoki miały lepszy język, wszystko by tego uniknęło.
źródło
najczęściej używane: Perl, głównie ze względów historycznych. Python jest szeroko dostępny we wszystkich dystrybucjach Linuksa i BSD (jest nawet zainstalowany na Mac OSX) i jest o wiele przyjemniejszy do nauki / programowania. Oczywiście, kiedy już uzyskasz składnię, Bash jest prostszy do prawie wszystkiego, co możesz zrobić w wierszu poleceń. W końcu jest to linia poleceń.
Składnia C: istnieje csh , ale możesz łatwo zainstalować TCC i używać prawdziwego C jako języka skryptowego, skompilowanego ze źródła w krótszym czasie niż uruchomienie innych języków.
inne języki skryptowe: dużo! Lua , Ruby , JavaScript ...
źródło
Powinieneś używać kombinacji wszystkich tam, gdzie jest to właściwe. Naprawdę nie lubię perla (czytelność), ale jest dobry na wiele rzeczy. Z drugiej strony Python był dla mnie czymś nowym pod względem administrowania systemem, dopóki nie musiałem zarządzać (i nadal muszę) kilkoma maszynami KVM. Uruchamianie, zatrzymywanie, zapisywanie, ładowanie, migracja wszystkich tych maszyn za pomocą skryptu stało się rzeczywistością po 1 godzinie bawiących się wiązaniami pythonowymi libvirt.
Na koniec nie użyłbym Perla ani Pythona, jeśli muszę, powiedzmy, zrzucać wszystkie bazy danych z serwera mysql co noc (każda baza danych we własnym pliku zrzutu), tarować je i synchronizować z innym serwerem. Dlaczego ? Ponieważ szybsze i łatwiejsze jest pisanie w bash :)
Ostatecznie powinieneś używać języka, który najlepiej odpowiada twojemu bieżącemu zadaniu, i nie używaj tylko danego języka skryptowego tylko dlatego, że lubisz go najbardziej.
źródło
Lubię rubin. Programowanie jest proste i łatwe. Istnieje doskonała książka na temat administrowania systemem za pomocą rubinu .
Ruby jest używany w kilku systemach zarządzania konfiguracją (capistrano, szef kuchni, marionetka) i ostatniej wersji metasploit.
Możesz użyć rush , zamiennika powłoki uniksowej ze składnią ruby i robić takie rzeczy:
źródło
Przykład Ruby One-Liner:
Użyłbym rubinu.
Porównaj z sh, jest nowoczesny i potężny.
W porównaniu do Pythona, jest to spójność, jedno wydanie, jeden menedżer pakietów. I nie lubię składni wcięć.
Porównajmy z Perlem, trochę oldschoolowym, a składnia jest dla mnie zbyt złożona.
źródło