Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== Pisanie skryptów Bash ===== ==== Przygotuj się do laboratorium ==== * Przypomnieć sobie pracę z grep i [[lab_sed_awk|wyrażeniami regularnymi]] {{section>lab_filters#przygotuj_sie_do_laboratorium&noheader&nofooter}} ==== Wiedza ==== Korzystamy z wiedzy z poprzednich zajęć, w szczególności [[lab_filters|Podstawy skryptów i filtrów]] oraz [[lab_sed_awk|SED i Awk]]! ==== Ćwiczenia ==== <WRAP round info 60%> Każde zdobyte 4 punkty = 1 plus. Można pracować w parach/grupach. Rozwiązania zadań należy pokazać do zakończenia zajęć! </WRAP> === Ćwiczenie 1. Słownik krzyżówkowy === Słownik do tego ćwiczenia znajduje się w pliku: ''{{lab_07_slownikpl.txt|slownikpl.txt}}'' \\ //(jest to systemowy plik ''/usr/share/dict/words'', w którym usunięto polskie znaki, a wszystkie litery zamieniono na małe)// - (1 pkt.) Proszę napisać skrypt, który dla słowa podanego jako argument, w którym dowolne znaki wstawiamy jako ".", wyświetli znalezione dopasowania ze słownika. \\ np. dla: ''./skrypt k.ak..'' znalezionym dopasowaniem mogłoby być ''krakow''. - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien wypisać komunikat "Nie podano słowa". - (1 pkt.) W przypadku, gdy nie podamy słowa, skrypt powinien ponadto poprosić użytkownika o wprowadzenie słowa i pobrać od niego to słowo. - (1 pkt.) Skrypt powinien sprawdzać, czy pobrane słowo nie zawiera niedozwolonych znaków (innych niż litery i kropki) i wyświetlić komunikat "Podano nieprawidłowe znaki". === Ćwiczenie 2. Deszyfrator szyfru przestawieniowego === Słownik do tego ćwiczenia znajduje się w pliku: ''{{lab_07_slownikpl.txt|slownikpl.txt}}'' \\ //(jest to systemowy plik ''/usr/share/dict/words'', w którym usunięto polskie znaki, a wszystkie litery zamieniono na małe)// - (1 pkt.) Napisz skrypt, który odszyfruje wiadomość zaszyfrowaną ROT13: ''havk gb anwyrcfml flfgrz an fjvrpvr'' - (1 pkt.) Napisz skrypt, który odszyfruje poniższą wiadomość zaszyfrowaną analogicznym szyfrem przestawieniowym, ale z inną liczbą przesunięcia. Skrypt powinien wyświetlić rezultaty wszystkich możliwych przesunięć. Nie należy przejmować się polskimi znakami (one nie są zaszyfrowane). - (1 pkt.) Skrypt powinien sprawdzić, czy słowa z rozszyfrowanej wiadomości występują w słowniku ''{{lab_07_slownikpl.txt|slownikpl.txt}}'' \\ i dla każdej potencjalnego rezultatu wypisać: ''"Znaleziono w słowniku X / Y"'', \\ gdzie X to liczba słów z wiadomości występujących w słowniku, a Y liczba wszystkich słów rozszyfrowanej wiadomości. - (1 pkt.) Skrypt powinien odgadnąć klucz (liczbę przesunięcia) automatycznie, przyjmując że np. wiadomość rozszyfrowano, jeśli dopasowano ponad 30% słów ze słownikiem. <code>zerqu inaiquco tuxxoyuco tomje tok fgcokyor yok cotjucy</code> === Ćwiczenie 3. Kreator krzyżówek === Słownik do tego ćwiczenia znajduje się w pliku: ''{{lab_07_words_with_defs.txt|words_with_defs.txt}}'' \\ //(plik zaczerpnięty z [[https://github.com/Golpette/auto-crossword]])// - (1 pkt.) Proszę napisać skrypt, który wylosuje dowolne hasło ze słownika. - (1 pkt.) Skrypt powinien losować hasło tak długo, aż znajdzie hasło nie krótsze niż 5 liter, przy czym losowanie hasła powinno odbywać się w osobnej funkcji. - (1 pkt.) Dla ustalonego hasła skrypt następnie losuje hasła dodatkowe zaczynające się od każdej z liter hasła głównego.\\ Przykład: dla hasła głównego "subway", program może wylosować hasła dodatkowe:<code> |s|hoot |u|nicorn |b|aby |w|ith |a|wful |y|ogurt</code>Uwaga: w słowniku brakuje haseł zaczynających się na litery z przedziału ''[l-r]''. Możesz dodać jakieś ręcznie albo obsłużyć tę sytuację w skrypcie :-) - (1 pkt.) Skrypt po podaniu opcji ''-‐print'' lub ''-p'' wypisuje pustą krzyżówkę (ascii art jak poniżej) oraz opisy do haseł, a ''-‐solved'' lub ''-s'' wypisuje krzyżówkę wypełnioną.<code> _ _ _ _ _ _ _ _ _ |_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_| |_|_|_|_|_ _ |_|_|_|_|_|_|</code> courses/unix/lab_bash.txt Last modified: 2 years agoby kkt