| 20:00 | Temat wykladu: | |
| Linux: Useful shell scripting (by keidii, 13.08.2006) @ wyklady.net | ||
| 19:58 | keidii | Dzis powiemy sobie o zastosowaniach praktycznych tego co ma linux |
| keidii | "w wiekszosci standardowych wyposazen" | |
| 19:59 | keidii | Wiele osob wie ze sa tam gdzies "sedy , tary, bzipy , caty , grepy " |
| keidii | ale i tak zabardzo nie wie co z tym zrobic | |
| keidii | Podstaw basha ( ogolnie shel ) nie bede poruszal | |
| 20:00 | keidii | bo to nie o tym bajka |
| keidii | na poczatek prosty przyklad ... | |
| keidii | Postawilismy server FTP | |
| keidii | autoryzacja LOGIN/PASS | |
| 20:01 | keidii | dane plaintextem leza w pliku /etc/ftp-userland |
| keidii | i piszemy dodawarke ludzi | |
| keidii | i bardzo bylo by nam milo generowac hasla ;) | |
| keidii | ale jak !? | |
| keidii | POMYSL 1. | |
| keidii | /dev/urandom | |
| keidii | TAK ! códowne zródło losowości ;) | |
| keidii | ale ... tam sporo znaków niepiśmiennych jest ;/ | |
| 20:02 | keidii | POMYSL 2. |
| keidii | Co nam daje ciąg znaków latwych do "napisania" | |
| keidii | czyli a-z 0-9 | |
| keidii | no np: md5 | |
| 20:03 | keidii | keidii@lisi ~ $ echo "Ala" | md5sum |
| keidii | 172eb34e70235fe60fc15d6d27ae2e12 - | |
| keidii | cacy | |
| keidii | ale i tak trzeba wklepac za kazdym razem jakis napis | |
| keidii | POMYSL 1 + 2 | |
| keidii | Wezmy troche sianka z /dev/urandom i zrobmy md5 tego ! | |
| keidii | extra | |
| 20:04 | keidii | testing : |
| keidii | keidii@lisi ~ $ cat /dev/urandom | head -n 1 | md5sum | |
| keidii | acf15e0240cad226a3df6d54395a8a14 - | |
| keidii | cacy | |
| keidii | napisalem head -n 1 zeby wziasc pierwszy "wiersz" z dev urandom | |
| 20:05 | keidii | czyli w sumie porcje znaków do pojawienia sie "entera" |
| keidii | mozna np: pobrac n bajtów | |
| keidii | uzywajac dd | |
| keidii | to wygladalo by tak : | |
| 20:06 | keidii | keidii@lisi ~ $ dd if=/dev/urandom of=temp bs=1 count=666 && cat temp | md5sum |
| keidii | 666+0 przeczytanych recordów | |
| keidii | 666+0 zapisanych recordów | |
| keidii | skopiowane 666 bajtów (666 B), 0,008867 sekund, 75,1 kB/s | |
| keidii | a89d172244f045c7bc067cab38160719 - | |
| keidii | dd czyta z "if" zapisuje do "of" | |
| 20:07 | keidii | bs - rozmiar bufora |
| keidii | count - ilosc | |
| keidii | ( nie bede tu nic bardziej opisywal - jest to w manie ) | |
| keidii | najpierw berzemy 666 bajtów do pliku temp | |
| keidii | pozniej liczymy tego md5sum | |
| keidii | i niby okej ... ale kto zapamieta haslo a89d172244f045c7bc067cab3816071 ? | |
| 20:08 | keidii | ja nie ;) |
| keidii | a jak przy wpisywaniu sie pomyle 4 razy to sie potne ;) | |
| keidii | NA SZYBKO ( i skutecznie;p) | |
| keidii | mamy seda ;) | |
| keidii | sed to taki wygodny zwierzaczek | |
| 20:09 | keidii | wykozystamy funkcje s |
| keidii | : | |
| 20:10 | keidii | keidii@lisi ~ $ cat /dev/urandom | head -n 1 | md5sum | sed "s/\(.....\).*/\1/" |
| keidii | e82c9 | |
| keidii | cacy | |
| keidii | pani Jadzia poradzi sobie juz z takim haselkiem | |
| keidii | ;) | |
| keidii | latwo prosto i skutecznie | |
| keidii | SZYBKO ! co najwazniejsze | |
| 20:11 | keidii | - wiadomo - mozna napisac program w c ... |
| keidii | ale to zabiera czas | |
| keidii | ;) | |
| keidii | to teraz wystarczy ta linijke zapisac w pliku np: | |
| keidii | haselko.sh | |
| keidii | odpalamy ./haselko.sh | |
| 20:12 | keidii | dostajemy qwd2 |
| keidii | ZADANIE dla chętnych :) | |
| keidii | napisac ./haselko.sh [N] | |
| keidii | czyli mozemy podac dlugosc haselka :) | |
| keidii | powiedzmy ze N nie przekracza 20 | |
| keidii | EO Zadanie :) | |
| 20:13 | keidii | jakies pytania ? |
| mosquito | ;] | |
| mag7 | ja nic nie czaje :P | |
| ant_ | mag7: do zajebistosci trzeba dorosnac ;) | |
| Dark | ;DDD | |
| KosiarZ | :D | |
| keidii | ok... lecimy dalej | |
| mag7 | spoko | |
| 20:14 | keidii | ja zakladam ze np: wyklady z basha sa przerobione ;) |
| keidii | teraz troche "plastyki" | |
| keidii | mamy takie polecenie lspci | |
| keidii | wyswielta nam ... PCI | |
| 20:15 | keidii | to co mamy w obudowie ;) |
| keidii | wyjscie jest proste : | |
| keidii | lisi keidii # lspci | |
| keidii | 00:00.0 Host bridge: nVidia Corporation nForce3 Host Bridge (rev a4) | |
| keidii | 00:01.0 ISA bridge: nVidia Corporation nForce3 LPC Bridge (rev a6) | |
| keidii | a teraz zabawimy sie w plastyków | |
| 20:16 | keidii | Widac , ze "ID" sprzetu to : |
| keidii | XX : XX . X | |
| keidii | czyli mozna by sie pokusic o prezentacje tego w formie drzewka | |
| keidii | AA:BB.C | |
| keidii | AA klucz 1 , BB klucz 2 , CC klucz 3 | |
| 20:17 | keidii | dla osób nie posiadajacych lspci : |
| keidii | http://wyklady.net/keidii/pliczek.we | |
| keidii | przyklad dzialania lspci | |
| 20:18 | keidii | literówka przepraszam |
| keidii | http://wyklady.net/keidii/pliczek.tmp | |
| keidii | caly piekny wypis sprzetu ;) | |
| 20:19 | keidii | lspci >> pliczek.tmp |
| keidii | od teraz bedziemy operowac na danych w pliku | |
| keidii | Krok 1. | |
| keidii | Odkrajamy "ID" | |
| 20:20 | keidii | dwie metowy na szybko |
| keidii | ---con-- | |
| keidii | lisi misc # cat pliczek.tmp | cut -f1 -d" " | |
| keidii | 00:00.0 | |
| keidii | 00:01.0 | |
| keidii | lisi misc # cat pliczek.tmp | awk '{print $1}' | |
| keidii | 00:00.0 | |
| keidii | 00:01.0 | |
| 20:21 | keidii | ktora metoda lepsze - wedle gustu :) |
| keidii | teraz wezmy z tego pierwsze 2 znaczki | |
| 20:22 | keidii | lisi misc # cat pliczek.tmp | cut -f1 -d":" |
| keidii | 00 | |
| keidii | 00 | |
| keidii | ok | |
| keidii | widac wiele powtarza sie | |
| keidii | ;/ | |
| keidii | no to urzywamy innych linuxowych narzedzi : | |
| keidii | sort i uniq | |
| keidii | sort sortuje | |
| 20:23 | keidii | a uniq z _POSORTOWANYCH_ dane pokazuje unikaty |
| keidii | lisi misc # cat pliczek.tmp | cut -f1 -d":" | sort | uniq | |
| keidii | 00 | |
| keidii | 01 | |
| keidii | 02 | |
| keidii | okej | |
| 20:24 | keidii | teraz tak samo mozna dostac sie do 2 i 3 "kolumny" ID |
| 20:25 | keidii | kolumna 2 : |
| keidii | lisi misc # cat pliczek.tmp | cut -f2 -d":" | cut -f1 -d"." | |
| keidii | 00 | |
| keidii | 01 | |
| keidii | kolumna 3 : | |
| keidii | lisi misc # cat pliczek.tmp | cut -f1 -d" " | cut -f2 -d"." | |
| keidii | 0 | |
| keidii | 0 | |
| keidii | okej | |
| keidii | teraz mozna sie pokusic o poskladanie tego w calosc :) | |
| keidii | jezeli mamy juz upatrzeone ID[1] ( pierwszy czlon id ) | |
| 20:27 | keidii | np: 00 |
| keidii | to wybranie wszystkich lini z ID pasujacym do wzorca : | |
| keidii | lisi misc # cat pliczek.tmp | grep "00:..\.." | |
| keidii | 00:00.0 Host bridge: nVidia Corporation nForce3 Host Bridge (rev a4) | |
| keidii | 00:01.0 ISA bridge: nVidia Corporation nForce3 LPC Bridge (rev a6) | |
| keidii | lisi misc # cat pliczek.tmp | grep "01:..\.." | |
| keidii | 01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 420 Go 32M] (rev a3) | |
| 20:28 | keidii | jezeli wybierzemy ID[1] i ID[2] |
| keidii | np: 00 , 02 : | |
| keidii | to urzyjemy : | |
| keidii | lisi misc # cat pliczek.tmp | grep "00:02\.." | |
| keidii | 00:02.0 USB Controller: nVidia Corporation nForce3 USB 1.1 (rev a5) | |
| keidii | 00:02.1 USB Controller: nVidia Corporation nForce3 USB 1.1 (rev a5) | |
| keidii | 00:02.2 USB Controller: nVidia Corporation nForce3 USB 2.0 (rev a2) | |
| keidii | i analogicznie koluma 3 | |
| 20:29 | keidii | grep "00:02\.1" |
| keidii | przykladowa calosc jest pod adresem : | |
| keidii | http://wyklady.net/keidii/example.1.1.sh | |
| keidii | linijki : | |
| keidii | rm -rf plikczek.tmp | |
| 20:30 | keidii | i |
| keidii | lspci >> pliczek.tmp | |
| keidii | mozna usunac | |
| keidii | ( wtedy czly czas pracujemy na danych z pliku ) | |
| 20:31 | keidii | kawalek wyniku : |
| keidii | lisi misc # ./example.1.1.sh | |
| keidii | Tree lvl 1, id : 00 | |
| keidii | Tree lvl 2, id : 00 | |
| keidii | Tree lvl 3, id 0 | |
| keidii | Tree lvl 2, id : 01 | |
| keidii | Tree lvl 3, id 0 | |
| keidii | Tree lvl 3, id 1 | |
| keidii | Tree lvl 2, id : 02 | |
| keidii | cacy | |
| keidii | juz mozemy wybierac to co chcemy | |
| keidii | taraz odpalamy zdolnosci plastyczne | |
| keidii | i upiekszamy calosc | |
| keidii | nie bede opisywal jak - bo to kwestia gustów plastycznych itp ;) | |
| keidii | ja zrobilem to tak : | |
| 20:32 | keidii | http://wyklady.net/keidii/example.1.2.sh |
| keidii | przykladowy wynik : | |
| keidii | lisi misc # ./example.1.2.sh | |
| keidii | .-[PC]-- | |
| keidii | | | |
| keidii | +--+[00] | |
| keidii | | +--+[00] | |
| keidii | | | +-=[0] 00:00.0 Host bridge: nVidia Corporation nForce3 Host Bridge (rev a4) | |
| keidii | | | | |
| keidii | | +--+[01] | |
| keidii | | | +-=[0] 00:01.0 ISA bridge: nVidia Corporation nForce3 LPC Bridge (rev a6) | |
| keidii | | | +-=[1] 00:01.1 SMBus: nVidia Corporation nForce3 SMBus (rev a4) | |
| keidii | | | | |
| 20:33 | keidii | | +--+[02] |
| keidii | | | +-=[0] 00:02.0 USB Controller: nVidia Corporation nForce3 USB 1.1 (rev a5) | |
| keidii | | | +-=[1] 00:02.1 USB Controller: nVidia Corporation nForce3 USB 1.1 (rev a5) | |
| keidii | | | +-=[2] 00:02.2 USB Controller: nVidia Corporation nForce3 USB 2.0 (rev a2) | |
| keidii | elegancie drzewko ;) | |
| keidii | przerwa na pytania i zadam zadanie numer 2 ;) | |
| keidii | jakieś pytania ? | |
| ant_ | uadne dzefk0 | |
| 20:34 | ant_ | ;) |
| KosiarZ | ^^ true. | |
| satan- | nie ma pytan lec dalej :) | |
| keidii | ok | |
| keidii | ZADANIE 2 : | |
| keidii | napisac podobne drzewko ale dla ps : | |
| keidii | objasnienie : | |
| keidii | lisi misc # ps -Al | head -n 5 | |
| keidii | F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD | |
| keidii | 4 S 0 1 0 0 76 0 - 368 - ? 00:00:00 init | |
| keidii | 1 S 0 2 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0 | |
| keidii | 5 S 0 3 1 0 -40 - - 0 - ? 00:00:00 watchdog/0 | |
| keidii | 1 S 0 4 1 0 70 -5 - 0 worker ? 00:00:01 events/0 | |
| keidii | 4 pierwsze wpisy | |
| keidii | nas interesuja kolumny : | |
| keidii | PID i PPID | |
| keidii | PID to numer procesu | |
| keidii | PPID to numer rodzica | |
| 20:36 | keidii | na poczatku jest proces 0 |
| keidii | czyli dostajemy drzewko | |
| keidii | PID 0 -> | |
| keidii | PID 1 | |
| keidii | PID 2 | |
| keidii | PID 3 | |
| keidii | PID 4 | |
| keidii | itd | |
| keidii | napisac program ./drzewko.ps.sh | |
| 20:37 | keidii | ktory ladnie nam narysuje drzewko procesów |
| keidii | ;) | |
| keidii | ( strona "artystyczna" nie jest wazna :) | |
| keidii | handicap : | |
| keidii | http://wyklady.net/keidii/example.ps.sh | |
| 20:38 | keidii | ps -lA | awk '{print $5}' |
| keidii | pokazuje 5 kolumne | |
| keidii | EO Zadanie | |
| 20:39 | keidii | pytania do zadan po wykladzie |
| keidii | ;) | |
| keidii | Część 3 ! | |
| keidii | Psucie internetu :) | |
| 20:40 | keidii | Jest niedziela |
| keidii | mamy taki kaprys : | |
| keidii | Jak sie zaloguje ... to chce miec na dziendoby wyswietlane wiadomosci | |
| keidii | co sie dzieje na swiecie :) | |
| keidii | cat wiadomosc.txt | |
| keidii | tylko najpierw trzeba te wiadomosci "dostac" | |
| 20:41 | keidii | zepsujemy tutaj wiadomosci z WP : |
| keidii | http://wiadomosci.wp.pl/index.html | |
| keidii | tam jest na srodku mala tabelka WIADOMOSCI DNIA | |
| keidii | i my TO akurat chcemy ;) | |
| keidii | ( taka nasza wredna natura ) | |
| 20:42 | keidii | no to co ... |
| keidii | wget ;) | |
| keidii | wget http://wiadomosci.wp.pl/index.html -O wiadomosci | |
| keidii | extra | |
| keidii | tylko nadal mamy plik html ze smieciami ;) | |
| 20:43 | keidii | fuj ;/ |
| keidii | no to analizujemy : | |
| keidii | keidii@lisi ~ $ cat wiadomosci | less -S | |
| keidii | i szukamy textu : Wiadomosci dnia | |
| keidii | JEST ! | |
| 20:44 | keidii | o .. jest i dookola kupa smieci jak zykle ;/ |
| keidii | czytamy dalej | |
| keidii | ja nasze wiadomosci w nastepnym wierszu | |
| keidii | okej | |
| keidii | jest jakis trop | |
| keidii | co robimy ? GREPujemy :) | |
| 20:45 | keidii | linijka "charakterystyczna" zawiera text |
| keidii | Wiadomosci dnia | |
| keidii | linijka nizej zawiera trasc wiadomosci | |
| keidii | jezeli ktos nie ma to : | |
| keidii | http://wyklady.net/keidii/wiadomosci | |
| keidii | plik na ktorym bedziemy psuc ;) | |
| keidii | keidii@lisi ~ $ cat wiadomosci | grep "Wiadomości dnia" -A1 | |
| keidii | <IMG SRC="http://i.wp.pl/a/i/wiadomosci_04/layout/tri.gif" width=10 height=9 border=0 align=absmiddle><b class="h3">Wiadomości dnia</b><br><br class="SGodstep"> | |
| keidii | <table border="0" cellspacing="2" cellpadding="2" width="100%"><tr valign="top"><td><br style="font-size:4px"><b class=box>:::</b></td><td><a href="/kat,1356,wid,8462249,wiadomosc.html" class="h2">W ciągu 33 dni walk Izrael stracił 103 żołnierzy, wojna kosztowała 5 mld dolarów</a> </td></tr><tr valign="top"><td><br style="font-size:4px"><b class=box>:::</b></td><td><a href="/kat,1342,wid,8462184,wiadomosc.html" class="h2">Prezydent odsłonił pomnik "Ognia" w Z | |
| keidii | -A1 powoduje wyswietlenie linijki znalezionej + nastepna [1] linijka | |
| keidii | okej mamy to co chemy | |
| 20:47 | keidii | teraz walniemy |
| keidii | keidii@lisi ~ $ cat wiadomosci | grep "Wiadomości dnia" -A1 | tail -n 1 | |
| keidii | i dostajemy nasz ukochany wiersz ;] | |
| keidii | ale .. to jest 1 wiersz ;/ | |
| 20:48 | keidii | nooo too ? |
| keidii | zamienmy wszystkie "</td>" na "\n" ( znak nowego wiersza ) | |
| keidii | i pozbądzmy sie syfu HTML | |
| keidii | czyli "<*****>" na "" | |
| keidii | do tego jest idealnie sed !;) | |
| keidii | sed "s/<\/td>/\n/g;s/<[^>]*>//g" | |
| 20:49 | keidii | zalatwia calosc ;) |
| keidii | ( piekna chinszczyzna ) | |
| keidii | sprawdzamy : | |
| keidii | keidii@lisi ~ $ cat wiadomosci | grep "Wiadomości dnia" -A1 | tail -n 1 | sed "s/<\/td>/\n/g;s/<[^>]*>//g" | |
| keidii | ::: | |
| keidii | W ciągu 33 dni walk Izrael stracił 103 żołnierzy, wojna kosztowała 5 mld dolarów | |
| keidii | ::: | |
| keidii | Prezydent odsłonił pomnik "Ognia" w Zakopanem | |
| 20:50 | keidii | ::: |
| keidii | Polscy turyści wciąż nie mogą wrócić do domu | |
| keidii | ::: | |
| keidii | Walentynowicz: wystawa Eriki Steinbach daje fałszywy obraz | |
| keidii | ::: | |
| keidii | Pijany kierowca wjechał w karetkę pogotowia | |
| keidii | | |
| keidii | teraz szukamy pewnego wzorca : | |
| keidii | no no calkiem calkiem | |
| keidii | ;] | |
| keidii | :::: | |
| keidii | WIADOMOSC | |
| keidii | :::: | |
| keidii | WIADOMOSC | |
| keidii | syf | |
| keidii | no to jeszcze raz grep :) | |
| keidii | i grep ;) | |
| 20:51 | keidii | grep ":::" -A1 | grep -v ":::" |
| keidii | najpiersz szukamy linijek ":::" | |
| keidii | pozniej wycinamy linijki ":::" ;) | |
| keidii | cacy | |
| keidii | i mamy nasz "system newsów" | |
| keidii | http://wyklady.net/keidii/example.2.1.sh | |
| 20:52 | keidii | extra :) |
| keidii | mozna w ten sam sposob pobierac _DOWOLNE_ informacje z _dowolnego_ servisu | |
| keidii | wget moze podac sie za np:"internet explorera" | |
| keidii | i cacy :) | |
| 20:53 | keidii | jezeli dorzucimy do wyników (samych wiadomosci) ich linki |
| keidii | ( czyli to gdzie prowadza ) | |
| keidii | to mozemy dosctac | |
| keidii | NAGLOWEK | |
| keidii | tresc skrocona | |
| keidii | NAGLOWEK | |
| keidii | tresc skrocona | |
| keidii | ( wystarczy wgetnac to gdzie prowadzi ten link, | |
| 20:54 | keidii | a pozniej podobna metaoda wyciac tresc :P ) |
| keidii | i to jest ZADANIE 3 ! | |
| keidii | napisac automacik ktory powbierze nam naglowki | |
| 20:55 | keidii | i powiedzmy pierwsze 3 linijki newsa ;) |
| keidii | ( niech bedzie wp.pl - ale mozna sobei wybrac inny servis ) | |
| keidii | EO zadanie | |
| 20:56 | keidii | Na zakonczenie powiem , ze w bashu napisalem bota do OGame ( tak z ciekawosci - czy sie da ;P ) |
| keidii | ktory loguje sie | |
| keidii | podajac za Firefoxa | |
| keidii | i zarzadza kontem ;) | |
| 20:57 | keidii | Rownie dobrze mozna napisac program ktory bedzie przeszukiwal elektroniczne ksiazki telefoniczne , czy tez jakies katalogi z firmami |
| keidii | jak wpiszemy np: | |
| keidii | ./szukaj.firme.sh Dentysta | |
| keidii | on przeszuka katalog www i wypisze nam na konsole wynik | |
| keidii | kombinacji i zastowowan jest WIELE | |
| keidii | a linux ma od groma uzytecznych polecen | |
| 20:58 | keidii | sed, awk, seq, cat, ls, tee, tail ,head cut |
| keidii | i mozna by tak tu wyliczac .... dlugo :) | |
| keidii | DZIEKUJE | |
| keidii | ===wyklad=== | |
| KosiarZ | a pytania? | |
| KosiarZ | ;p | |
| keidii | pytania ;) | |
| KosiarZ | Dwa mam. | |
| keidii | tak | |
| KosiarZ | rep ":::" -A1 | grep -v ":::" | |
| 20:59 | KosiarZ | drugi grep tu nie styknie? |
| keidii | nienie | |
| keidii | mamy tak jak napisalem : | |
| KosiarZ | Aa, bo pierwszy wytnie dol jeszcze | |
| KosiarZ | bo na dole smieci byly | |
| keidii | 20.54.14: <%keidii> :::: | |
| keidii | 20.54.16: <%keidii> WIADOMOSC | |
| keidii | 20.54.17: <%keidii> :::: | |
| keidii | 20.54.18: <%keidii> WIADOMOSC | |
| keidii | 20.54.21: <%keidii> syf | |
| keidii | na koniec mozemy dostac syf | |
| keidii | ;] | |
| keidii | to takie zabezpieczenia | |
| KosiarZ | no tak, zapomnialem o syfie na dole | |
| KosiarZ | i drugie | |
| KosiarZ | sed "s/<\/td>/\n/g;s/<[^>]*>//g" | |
| 21:00 | KosiarZ | mozesz przyblizyc, bo seda sie od dawna chcialem nauczyc? |
| keidii | ok | |
| KosiarZ | ten poprzedni rozumialem | |
| keidii | cel tego "zasedzenia" | |
| KosiarZ | ale ten trosze zlozony | |
| keidii | 1. mamy dlugi wiersz | |
| keidii | trzeba go polamac | |
| keidii | 2. powycinac html | |
| KosiarZ | mhm | |
| keidii | to sa 2 komendy : | |
| keidii | s/<\/td>/\n/g; | |
| keidii | i | |
| keidii | s/<[^>]*>//g | |
| 21:01 | keidii | zamien </td> na \n |
| keidii | zamien <[^>]*> na "" | |
| KosiarZ | A od czego jest to /g na koncu? | |
| keidii | "s" dziala tak ze zamieni tylko pierszy "match" | |
| keidii | a g powoduje przeszukanie lancucha dalej | |
| 21:02 | KosiarZ | mhm |
| keidii | mozna by tak "powiedzies" | |
| keidii | S- szukaj do pierwszego | |
| keidii | G - go dalej | |
| keidii | ;] | |
| KosiarZ | Lapie, lapie, thx | |
| 21:03 | keidii | teraz http://forum.wyklady.net/index.php?topic=76.0 |
| KosiarZ | hm, a [^>] to co to jest? ^^ | |
| keidii | tam mozecie mnei zjechac ;) | |
| KosiarZ | bo juz slabo pamietam | |
| keidii | [znaczki]* | |
| keidii | oznacza dowolne z wnetrza [] | |
| KosiarZ | aaa | |
| KosiarZ | no ta. | |
| keidii | a jak ^ to not | |
| keidii | czyli < ( nie > )* > | |
| KosiarZ | thnks | |
| keidii | bo moze nam dopasowac np: | |
| 21:04 | keidii | <b> asdasd </b> |
| keidii | ^-----------^ | |
| keidii | pasuje | |
| KosiarZ | A zadanka sprawdzisz? ^_^ | |
| keidii | aa wlasnie ;) | |
| keidii | zadanka prosze na keidii@o2.pl | |
| 21:05 | keidii | z dopiskiem ZADANKA.SH |