================= === ZADANIE 1 === ================= Skrypt tworzący nazwę projektu, zmiennej, itp. wg określonego formatu. Jako pierwszy parametr podajemy nazwe formatu docelowego. Przykłady użycia: ./chcase joined my new project # Zwraca: mynewproject ./chcase underline my new var # Zwraca: my_new_project ./chcase uppercase my new const # Zwraca: MY_NEW_CONST ./chcase dashes my new resource # Zwraca: my-new-resources Jeśli format nie zostanie podany wyświetl dostępne formaty i zakończ z błędem. Jeśli użytkownik nie poda argumentów, wyświetl krótką instrukcję i zakończ z błędem. ================= === ZADANIE 2 === ================= Skrypt tworzacy kopie zapasowe wskazanych plików i katalogów. Jako pierwszy parametr należy podać miejsce utworzenia kopii. Jako kolejne podajemy nazwy kopiowanych plików i katalogów. Do nazw kopiowanych zasobów dodana powinna być też data i czas utworzenia kopii. Przyklad użycia: ./bup /tmp/backup asia/ basia/ casia.txt Spowoduje powstanie plików: /tmp/backup/10-05-12_10:03_asia/ /tmp/backup/10-05-12_10:03_asia/cokolwiek_było_w_katalogu /tmp/backup/10-05-12_10:03_basia/ /tmp/backup/10-05-12_10:03_basia/cokolwiek_było_w_katalogu /tmp/backup/10-05-12_10:03_casia.txt Jeśli wskazany katalog docelowy nie istnieje to należy go utworzyć. Jeśli wskazany katalog docelowy istnieje ale nie jest katlogiem, należy zakończyć działanie z błędem. Jeśli plik do kopiowania nie istnieje, należy go pominąć i na samym końcu działania programu wypisać ostrzeżenie, że plik nie został odnaleziony. ================= === ZADANIE 3 === ================= Skrypt który rozmawia z użytkownikiem. Użytkownik zadaje pytanie, skrypt losuje odpowiedź z pliku. Kiedy użytkownik napiszę kluczową frazę (np. that's enough) skrypt kończy rozmowę. ================= === ZADANIE 4 === ================= Skrypt który czeka, aż zawartość określonego pliku się zmieni. Jeśli zawartość się zmieniała, to skrypt wykonuje wskazaną komendę. Użytkownik może (ale nie musi) określić jak często skrypt ma sprawdzać kopie lokalną. Jeśli nie można otworzyć pliku powinien wyświetlić się błąd i zakończyć działanie skryptu. ================= === ZADANIE 5 === ================= Skrypt-predykat który sprawdza porę dnia. Możliwe pory dnia: early, late, day, night, morning, lunchtime, evening Przykłady użycia: if ./its late then ... fi while ./its lunchtime do ... done Jeśli użytkownik poda porę dnia nieznaną skryptowi należy wyświetlić komunikat o błędzie. ================= === ZADANIE 6 === ================= Skrypt który dodaje dyrektywę interpretera dla skryptów znalezionych we wskazanych katalogach. Do skryptów o rozszerzeniu .sh dodawane jest #!/bin/bash, do skryptow o rozszerzeniu .py '#!/usr/bin/env python'. Inne rodzaje skryptów są pomijane. Przykład użycia: ./addshebang repository/scripts "/tmp/work in progress" Jeśli plik już posiada dyrektywę interpretera, wypisz wiadomość do użytkownika i zignoruj plik.