Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Poszukuję jakiejś godnej, sprawdzonej pozycji w miarę przystępnie napisanej dla laika, która dobrze wyczerpie temat. Sporo tego w sieci i może możecie polecić coś dobrego i sprawdzonego na czym będzie się można początkowo oprzeć.
Offline
http://www.amazon.com/Learning-bash-Shell-Programming-Nutshell-ebook/dp/B0043GXMSY/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1400090092&sr=1-1&keywords=bash - polecam
Offline
Ucz się lepiej Perla lub Pythona, jak poradzisz sobie z Perlem, to Bash stanie się banalnie prosty.
Składnia języków skryptowych jest podobna, natomiast Bash ma może najwyżej 5 maks. 10% możliwości normalnego języka programowania.
Poza prostymi zadaniami i funkcjami, to prawie zawsze znajdzie się jakiś drobiazg, którego w Bashu nie da się osiągnąć, albo funkcja, która w Perlu czy Pythonie się załatwia się dodatkowym modułem lub biblioteką,
a w Bashu nawet pół metra kodu nie pomoże.
Dlatego osobna nauka Basha nie ma zbyt wielkiego sensu.
Ostatnio edytowany przez Jacekalex (2014-05-14 20:38:11)
Offline
Popieram przedmówcę - ja w Pythonie ze dwa lata siedzę, b. sympatyczny i elastyczny język - wszystko się da :)
jakbyś chciał, dysponuję własnymi kawałkami kodu.
Ostatnio edytowany przez Trin (2014-05-14 20:10:10)
Offline
co do basha to będę "oryginalny" - man bash... IMHO w 90% opisuje to co bash potrafi ;)
Jeśli chodzi o "skrpcenie" to też poleciłbym perla.
W perlu można pisać na 2 sposoby:
- normlanie, czyli "czysty" kod bez kombinacji
- "perlowo" czyli skompresowanie 50 linijek "czystego" skryptu do 10 ;)
O ile znam perla (a nie znam)* to całkiem fajnie się w nim pisze i ma miliony bibliotek. Co prawda do guru mi jeszcze sporo brakuje, ale mimo wszystko wolę "czysty" kod ;)
* - Dr, Wilczur, Strefa Rokendrola Wolna Od Angola
Offline
Ucz się lepiej Perla lub Pythona, jak poradzisz sobie z Perlem, to Bash stanie się banalnie prosty.[/quote]
z tym, że nie jestem pewien czy to mnie po prostu nie przerośnie..i też chodzi o to żebym się nie zniechęcił za szybko, wiadomo jak człek ślęczy nad czymś to i efekty jakieś skromne dają motywację a jak nic nie wchodzi do makówki to i chęci braknie...Ostatnio edytowany przez menel (2014-05-14 20:38:25)
Offline
Składnia Basha i Perla jest praktycznie jednakowa, więc jak Cię Bash nie przerasta, to Perl też nie.
Ten [url=http://jacekalex.sh.dug.net.pl/rssperl]skrypcio[/url] zaczął się od Basha, ale kiedy trzeba było czesać output z javascripta, to Basha "zabrakło". ;)
Ostatnio edytowany przez Jacekalex (2014-05-14 20:43:42)
Offline
Mi bash zawsze przypominał pascala, za brak obiektywności. Dodam jak inni ucz się python albo perl ze skryptowych. Z normalnych to tylko C i C++.
Offline
z "normalnych" to w pierwszej kolejności (mimo swojej ociężałości) wymieniłbym jave ale to już dyskucja na inny wątek ;)
Offline
Natomiast moim zdaniem powłoka to absolutna podstawa, którą dobrze ogarnąć przed pójściem dalej. W końcu to w niej się poruszamy na co dzień w konsoli, a nie w jakimś IDE C++.
Offline
@azhag - ale nikt nie przeczy że znajomość powłoki jest przydatna ;) Ale do tzw programowania (z zapatrzeniem w przyszłość/cv) lepiej łyknąć na początek perla ;)
Offline
[quote=azhag]Natomiast moim zdaniem powłoka to absolutna podstawa, którą dobrze ogarnąć przed pójściem dalej. W końcu to w niej się poruszamy na co dzień w konsoli, a nie w jakimś IDE C++.[/quote]
To jest absolutna podstawa, ale zauważyłem, że ucząc się Perla, automatycznie łapię obsługę Basha, a w drugą stronę to już tak ładnie nie działa. :D
Ostatnio edytowany przez Jacekalex (2014-05-14 23:04:07)
Offline
Fajnie że taki wątek powstał, chciałbym zapytać jeśli już zeszliście na wątek Perla/Pythona, którego aktualnie lepiej się uczyć? Który jest bardziej perspektywiczny i może się bardziej przydać w ewentualnej pracy? Dodam że uczę się sam już Perla od kilku dobrych miesięcy, ale nie wiem czy to był dobry wybór.
I jeśli już jesteśmy na temacie Perla, to chciałbym spytać, czy gdy piszecie skrypty w Perlu to używacie osobnych modułów np. do wyszukiwania plików typu File::Find, File::Basename, czy po prostu używacie komend systemowych z użyciem system("") ?
Offline
Możesz używać zarówno modułów, jak i poleceń systemowych.
To są zamienne metody, używanie wbudowanych funkcję perla przeważnie, choć nie zawsze, jest trochę szybsze, niż polecenie systemowe, i znacznie bardziej elastyczne, bo w przypadku modułu masz kilkanaście sposobów uzyskania wyników działania funkcji, a odpalać polecenie systemowe jako np PIPE, masz co prawda OUTPUT, ale konkretne dane musisz z tego OUTPUTu dopiero wyczesać.
Jeśli chodzi o porównanie Perl/Python, to do administrowania systemem zdecydowanie Perl, do łatwego tworzenia jakichś okienkowych rzeczy raczej Python.
Perl ma tysiące gotowych modułów, natomiast Python jest dosłownie jak plastelina, i jest trochę szybszy w działaniu od Perla.
W porównaniu z C/C++ oba są bardzo proste.
Tu masz porównanie szybkości powłoki i rożnych języków skryptowych:
http://opennomad.com/content/performance-different-scripting-languages-shell-v-perl-v-python-v-ruby
Ostatnio edytowany przez Jacekalex (2014-05-15 00:01:29)
Offline
Wielki plus dla Pythona za czytelność kodu. Skrypty Perla to jakaś sieczka - łatwo się piszę cholernie trudno się czyta i debuguję...
Offline
[quote=megabajt]Wielki plus dla Pythona za czytelność kodu. Skrypty Perla to jakaś sieczka - łatwo się piszę cholernie trudno się czyta i debuguję...[/quote]
I nie do końca się zgodzę ;)
jak już pisałem. W perlu można napisać "czysty" kod i mozna go skompresować tak, że autor po miesiącu będzie miał problem z rozkodowaniem :D
Co do debuga to zawsze pozostaje nieśniertelny strace i dgb ;)
Jeśli chodzi o perla to masz "dwie ścieżki rozwoju":
1) "skrypciarz" - piszesz czysty, łatwy do ogranięcia skrypt
20 ""perlowiec" - używasz łamańców o których sam po miesiacu masz "zielone pojęcie" :D
Offline
Ja tam parę razy zaglądałem do trzech skryptów Perla, nawet nanosiłem własne poprawki w dwóch z nich, i myślałem, że je pisali Perlowcy,
a teraz czytam, ze to byli zwykli skrypciarze. :D
I teraz mam zagwozdkę, kto ten soft tworzy, co to za skrypciarze.
Wspomniane skrypty to:
/usr/sbin/spamd - tylko odczyt.
/usr/sbin/amavisd - poprawki.
/var/qmail/bin/qmail-scanner-queue.pl - poprawki.
Do głowy by mi nie przyszło, że taki soft do walki ze spamem, używany na tysiącach serwerów na całym świecie skrypciarze piszą. :D
Czego to się człowiek dowiaduje na stare lata. xD
EDIT:
[quote=megabajt]Wielki plus dla Pythona za czytelność kodu. Skrypty Perla to jakaś sieczka - łatwo się piszę cholernie [b]trudno się[/b] czyta i [b]debuguję[/b]...[/quote]
Raczej prosto, nawet prościej, niż Basha, wystarczy moduł [url=http://perldoc.perl.org/diagnostics.html][b]diagnostics[/b][/url].
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-05-15 02:06:03)
Offline
no pobawiłem się trochę perlem, pierwsze kroki, cholera przy okazji odkurzyłem trochę matematyki w łepetynie;) dobrze mi zrobi...może na starość nie dostanę alzheimera po takim oraniu głowy;)
[b]Jacekalex[/b] masz więcej swojego kodu perlowego, bo zdaje się ogarniasz, przydałby mi się do nauki czytania..
Offline
Więcej kodu perlowego?
Najdłuższy jest rssperl (sznurka masz gdzieś wyżej), jest też skrypt do wysyłania komunikatów przez padu-dziadu:
#!/usr/bin/perl use strict; use Net::Gadu; use Unicode::MapUTF8 qw(to_utf8 from_utf8); my $gg_mess="grzegżółka"; my $gg_login="{NUMEREK_PADU}"; my $gg_pass="{HASEŁKO_DZIADU}"; my $gg_chat_number = $ARGV[0]; while (<STDIN>) { $gg_mess = $_; } $gg_mess = from_utf8( { -string => $gg_mess, -charset => 'ISO-8859-2' } ); my $gg = new Net::Gadu(async => 1); $gg->login($gg_login, $gg_pass, $Net::Gadu::STATUS_INVISIBLE) or die "Login error\n"; while ($gg->check_event() == 1){ my $e = $gg->get_event(); my $type = $e->{type}; if ($type == $Net::Gadu::EVENT_CONN_SUCCESS){ # print "CONNECTED\n"; $gg->notify(); $gg->send_message_chat($gg_chat_number, $gg_mess); } } $gg->logoff();
To napisał Kolo na forum buntu.
A to już moje wypociny:
#!/usr/bin/perl use strict; use warnings; use Finance::Bank::mBank; use encoding qw(utf8); # use diagnostics -verbose; # enable diagnostics; use Gtk2::Notify -init, 'Basic'; my $mbank = Finance::Bank::mBank->new( userid => '{NUMER_PACJENTA}', password => '{HASELKO}' ); for my $account ($mbank->accounts) { my $konto= $account->{account_name}; if ($konto=~m/eKONTO/){ my $ekontosaldo = $account->{balance}; my $ekontodost = $account->{available}; my $zlotek = Gtk2::Notify->new("Na ekoncie zostało $ekontodost", "Saldo wynosi $ekontosaldo", '/home/pacjent/.icons/mbank.jpg'); $zlotek ->show; my $ekonto = "na ekoncie:\n saldo = $ekontosaldo\n dostępne= $ekontodost\n\n"; print $ekonto; } if ($konto=~m/eMAX/){ my $emaxsaldo = $account->{balance}; my $emaxdost = $account->{available}; print "na emaxie:\n saldo = $emaxsaldo\n dostępne= $emaxdost\n\n"; } };
Ten skrypcio przed zmianami na stronie Mbanku ładnie wyświetlał stan konta, obecnie nie działa, ale masz w nim przykład wyświetlania powiadomień notify w Gtk2.
Tylko moje wypociny śmierdzą lamerstwem, lepiej zobacz w systemie, pół dpkg jest napisane w perlu, w repo masz skrypta sendxmpp w perlu,
ze setkę innych programów również, a na http://search.cpan.org/
jest dokumentacja modułów, wraz z przykładowymi skryptami.
Ja zazwyczaj, zanim coś napiszę, to przeglądam z 5 - 50 przykładów podobnego kodu na necie.
Ja poza tym nie jestem tu wcale specem od Perla, jest kilkadziesiąt osób, które znają go 1500 razy lepiej.
W każdym razie kod jest dość prosty, pisze się przyjemnie.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2014-05-16 04:34:39)
Offline
dziękować, na razie właśnie chcę coś amatorskiego i prostego co by mi głowa nie wyparowała;)
Offline
Tutaj masz przykład, jak znaleźć własną doopę w syslogu:
#!/usr/bin/perl use strict; use warnings; open(FILE, "< /var/log/syslog") or die ": unable to open syslog: $!\n"; while (<FILE>) { my $print = (<FILE>); # chomp $print; print $print if ($print =~/dupa/); } close (FILE);
Samo poszukiwanie byłoby prostsze w bashu
grep dupa /var/log/syslog
Ale jakbyś chciał te logi czesać kilkoma regexami, wyciągać z nich wartości do zmiennej i obudowywać funkcjami, to Basha przeważnie szybko zabraknie. ;)
Jak np w tym przypadku:
http://forum.dug.net.pl/viewtopic.php?id=22977
Pozdro
:D
Ostatnio edytowany przez Jacekalex (2014-05-16 18:34:34)
Offline
[url]http://dief.republika.pl/main.html[/url]
[url]http://www.cs.put.poznan.pl/anstroinski/data/uploads/sop1/materials/sop1_lab7-kurs.html[/url]
[url]http://www.gnu.org/software/bash/bash.html[/url]
Offline
bossie to co tam dałeś to więcej w manie wyczytam, chodziło mi bardziej o coś podręcznikowego co wyczerpuje całkowicie temat razem z ćwiczeniami, przykładami trikami itd..;)
Offline
@menel
Nie rozpedzaj sie tak z podręcznikami bo po prostu bash taki jest. to nie java, że musisz mieć 3 tomy po 1499 stron. W zasadzie te stronki daja cały obraz funkcji basha. Jak coś chcesz więcej to ruby, python bądź przywoływany perl
Offline
[b]Lista 2500 języków programowania wraz z ich opisami[/b] [url]http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm[/url]
Lista dwudziestu najpopularniejszych języków programowania
C Java Objective-C C++ C# (Visual) Basic PHP Python JavaScript Visual Basic .NET Ruby Transact-SQL Perl F# Język asemblera Lisp PL/SQL MATLAB Delphi/Object Pascal D
[url]http://lists.gnu.org/archive/html/info-gnu/2011-02/msg00012.html[/url]
Chyba dość wyczerpujące? [url]http://www.gnu.org/software/bash/manual/bashref.html[/url]
Ostatnio edytowany przez tajwan (2014-05-17 16:05:04)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00134 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.23.103.216' WHERE u.id=1 |
0.00070 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.23.103.216', 1732236879) |
0.00057 | SELECT * FROM punbb_online WHERE logged<1732236579 |
0.00060 | SELECT topic_id FROM punbb_posts WHERE id=267139 |
0.00008 | SELECT id FROM punbb_posts WHERE topic_id=25819 ORDER BY posted |
0.00078 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=25819 AND t.moved_to IS NULL |
0.00011 | SELECT search_for, replace_with FROM punbb_censoring |
0.00273 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=25819 ORDER BY p.id LIMIT 0,25 |
0.00089 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=25819 |
Total query time: 0.00794 s |