10. Poszukiwanie plików, archiwizacja, instalowanie w systemie Linux 10.1. Poszukiwanie plików - find Często występuje potrzeba odnalezienia konkretnego pliku, lub plików spełniających określone kryteria. Do wyszukiwania plików służy polecenie find. Składnia tego polecenia to: find ŚCIEŻKA WYRAŻENIE gdzie: ŚCIEŻKA katalog, w którym "find" ma rozpocząć wyszukiwanie WYRAŻENIE - składa się z OPCJI, TESTÓW oraz AKCJI, OPCJE - wpływają na sposób działania polecenia find. Najczęściej stosuje się: follow - wymusza wchodzenie do katalogów, które są dowiązaniami symbolicznymi, maxdepth POZIOM - określa poziom katalogów, do którego polecenie find będzie realizowało poszukiwania, mindepth POZIOM - określa poziom katalogów, poniżej którego polecenie find będzie realizowało poszukiwania. TESTY - w zależności od wyniku porównania z testem, znaleziony plik będzie poddawany AKCJI, bądź będzie ignorowany. Wartości numeryczne mogą być specyfikowane jako "+n" co oznacza większe od n, "-n" oznacza mniejsze od n lub "n" - równe n. Najczęściej wykonywane testy to: group - należy do określonej grupy, links - posiada odpowiednią liczbę dowiązań, mtime - był modyfikowany podaną liczbę dni temu, name - posiada podaną nazwę, perm - posiada prawa dostępu zgodne z podanymi, size - ma rozmiar zgodny/większy/mniejszy niż podany, type - jest określonego typu (np. "f" dla plików, "d" dla katalogów), user - jest własnością określonego użytkownika. AKCJA - domyślną akcją jest wypisanie nazwy pliku. find oferuje dodatkowo m.in. następujące akcje: exec komenda ; - wykonanie zewnętrznej komendy. "{}" zastępuje nazwę pliku, printf format - wypisanie nazwy pliku odpowiednio sformatowanej, ls - wykonanie komendy ls -dils na pliku. Przykłady użycia komendy find: poszukiwanie pliku o nazwie "motd": 1
find / -name motd poszukiwanie podkatalogów w katalogu /ftp należących do użytkownika student: find /ftp/ -user student -type d kasowanie plików w katalogu domowym, posiadających w nazwie "bak" i nie modyfikowanych od minimum tygodnia: find ~/ -type f -name "*bak*" -mtime +7 -exec rm {} ; 10.2. Archiwizacja (gzip, tar) Podczas pracy użytkownicy tworzą pliki, które z różnych powodów powinny zostać poddane procesowi archiwizacji. Najczęściej wykorzystuje się dwa programy do archiwizacji danych. Są to: "tar" i "gzip". Drugi z tych programów służy do kompresowania zawartości plików. Jego główną wadą jest możliwość kompresowania jedynie jednego pliku do jednego archiwum. Tę niedogodność usunięto w drugim programie -"tar". Program ten w odróżnieniu od "gzip" nie kompresuje danych, tylko "skleja" zawartość wielu plików w jeden wspólny plik. Dzięki współdziałaniu obydwu programów możliwe jest wykonanie archiwizacji wielu plików do jednego, skompresowanego archiwum. Domyślnym rozszerzeniem nadawanym przez program "tar" jest ".tar". "gzip" natomiast nadaje archiwom rozszerzenia ".gz". Dlatego też nazwa archiwum utworzonego za pomocą obydwu tych programów zwykle kończy się ciągiem ".tar.gz" lub skrótowo ".tgz" w celu zachowania kompatybilności z systemami MS-DOS. Program "tar" posiada bardzo rozbudowaną składnię, jednak w codziennym użyciu zwykle stosuje się tylko dwa różne wywołania - jedno dla archiwizacji, drugie dla dearchiwizacji. Archiwizacja: tar czvf ARCHIWUM PLIK(I) Poszczególne opcje oznaczają: c - utworzenie archiwum, z - kompresja ("tar" automatycznie wywoła "gzip"), v - wyświetlanie dodatkowych informacji podczas archiwizacji, f - użycie pliku wynikowego, zamiast zapisu na streamerze. Przykład archiwizacji: tar czvf /tmp/projekt.tgz projekt/ projekt/ projekt/schematy projekt/grafika projekt/testy/ projekt/testy/testy projekt/testy/wyniki projekt/projekt projekt/badanie 2
projekt/plan ls -l /tmp/projekt.tgz -rw-r--r-- 1 student users 29095 Jun 25 21:55 projekt.tgz Dearchiwizacja: tar xzvf ARCHIWUM Opcja x oznacza rozpakowanie archiwum. Pozostałe opcje jak w archiwizacji. Przykład: tar xzvf projekt.tgz projekt/ projekt/schematy projekt/grafika projekt/testy/ projekt/testy/testy projekt/testy/wyniki projekt/projekt projekt/badanie projekt/plan ls -l projekt total 66 -rw-r--r-- 1 student users 8349 Jun 25 20:28 badanie -rw-r--r-- 1 student users 23918 Jun 25 20:28 grafika -rw-r--r-- 1 student users 5687 Jun 25 20:28 plan -rw-r--r-- 1 student users 18160 Jun 25 20:28 projekt -rw-r--r-- 1 student users 5970 Jun 25 20:28 schematy drwxr-xr-x 2 student users 1024 Jun 25 22:11 testy Zauważmy, że przy tak wyspecyfikowanych opcjach, "tar" zachowuje w archiwach ścieżki względne i przy dearchiwizacji tworzy katalogi względem katalogu bieżącego. 10.3. Wykaz pożytecznych poleceń :-) cal [opcje] [[miesiąc] rok] Umożliwia wyświetlenie kalendarza na bieżący miesiąc albo podany miesiąc i rok. Rok musi być podany w pełnej postaci (np. 2001), a miesiąc jako liczba z zakresu od 1 do 12. Dostępne opcje: -j - wyświetlenie kalendarza juliańskiego (dni są numerowane od początku roku) -y - wyświetlenie kalendarza na bieżący rok clear Umożliwia czyszczenie ekranu. 3
date [opcje] [+format] date [opcje] [łańcuch] Polecenie podane w pierwszej postaci powoduje wypisanie bieżącej daty i czasu w opcjonalnie podanym formacie. Druga postać umożliwia administratorowi ustawienie czasu systemowego. Format wyjściowy: %% znak procentu %n nowy wiersz %t tabulator %H godzina (00..23) %I godzina (01..12) %k godzina (00..23) %l godzina (1..12) %M minuta (00..59) %p AM albo PM %r czas w formacie 12-godzinnym (hh:mm:ss [AM PM]) %s sekundy od godz. 0:00, l stycznia 1970 %S sekundy (00..59) %T czas w formacie 24-godzinnym %X czas w formacie lokalnym %Z strefa czasowa, jeżeli jest zdefiniowana; inaczej pusty %a lokalny skrót nazwy dnia tygodnia %A lokalna nazwa dnia tygodnia %b lokalny skrót nazwy miesiąca (Jan..Dec) %B lokalna nazwa miesiąca (January.December) %c lokalna data z czasem i strefą czasową %d dzień miesiąca (01..31) %D data (mm/dd/yy) %h identyczne z %b %j kolejny dzień roku (001..366) %m miesiąc podany numerycznie (01..12) %U tydzień podany numerycznie (00..53), pierwszym dniem jest niedziela %w dzień tygodnia podany numerycznie (0..6) %W tydzień podany numerycznie (00..53), pierwszym dniem jest poniedziałek %x lokalna reprezentacja daty (dd/mm/yy) %y ostatnie dwie cyfry roku (00..99) %Y rok (1995...) Format ciągu do ustawiania czasu: DD dzień miesiąca hh godzina mm minuta CC pierwsze dwie cyfry roku (=wiek) YY dwie ostatnie cyfry roku ss sekundy 4
Dostępne opcje: -d data - wypisanie podanej daty (która może zawierać nazwę miesiąca, strefę czasową... itd.) -s data - ustawienie daty w dowolnym formacie (który może zawierać nazwę miesiąca, strefę czasową... itd.) -u - ignorowanie strefy czasowej i użycie czasu uniwersalnego (ang. Universal Coordinated Time; UTC) du [opcje] [pliki katalogi] Umożliwia wyświetlenie rozmiarów podanych plików albo katalogów. Dostępne opcje; -a - wyświetlenie rozmiarów wszystkich plików, a nie tylko katalogów -b - wyświetlenie rozmiarów w bajtach -k - wyświetlenie rozmiarów w kilobajtach -l - wyświetlenie rozmiarów (twardo) dowiązanych plików, nawet jeżeli oznaczałoby to dwukrotne ich uwzględnienie -s - wyświetlenie sumarycznego rozmiaru wszystkich plików i podkatalogów -x - pominięcie katalogów w innych systemach plików hostname [nazwa] Wywołanie bezparametrowe powoduje wyświetlenie nazwy komputera, w przeciwnym razie nazwa jest ustawiana. Jest ona zwykle ustawiana podczas uruchamiania systemu i wymaga przywilejów nadzorcy systemu. time polecenie [argumenty] Umożliwia wykonanie podanego polecenia, a następnie wyświetlenie czasu wykonania wc [opcje] [pliki] Powoduje zliczanie liczby znaków, słów i wierszy w pliku tekstowym. Dostępne opcje: -c - tylko liczba znaków -l - tylko liczba wierszy -w - tylko liczba słów 10.5. Pakiety i źródła instalacja oprogramowania Linux zaraz po instalacji oferuje bardzo dużo. Nastąpi jednak moment, kiedy trzeba coś zainstalować, aby wykonywać zamierzone cele. Podrozdział ten ma na celu zapoznanie się z rodzajami rozpowszechnianego oprogramowania dla systemu Linux. Czym są źródła? Linux jest udostępniany na licencji GNU, która mówi o rozpowszechnianiu oprogramowania zawsze z kodem źródłowym. Także większość dostępnego oprogramowania 5
dla tego systemu jest na tej licencji. Programy takie potocznie zwane są źródłami i aby je zainstalować musimy najpierw je skompilować. Aplikacje tego typu praktycznie zawsze są kompresowane, co zmniejsza oczywiście ich objętość. Czym są pakiety? Najprościej tłumacząc, pakiety to skompilowane źródła. Pakiety mogą mieć różną postać, w zależności od dystrybucji i sposobu zarządzania nimi. Trzy główne typy: RPM Red Hat Package, pakiety występujące w dystrybucji Red Hat. DEB Pakiety występujące w Debianie, nazwa pochodzi od trzech pierwszych liter nazwy dystrybucji TGZ archiwa tara, pakiety obecne w Slackware Pomimo, że pakiety znacząco różnią się sposobem zarządzania nimi, łączy je wspólna cecha pakiety są kompresowane, a podczas instalacji rozpakowywane. Instalacja programów ze źródeł i pakietów Po ściągnięciu programu na dysk, z pewnością chcemy go zainstalować. Istnieją pewne kroki, które należy podjąć w tym celu. Aby zainstalować program ze źródeł, pierwsze co należy wykonać, to rozpakowanie pliku. Następnie wchodzimy do rozpakowanego katalogu. Kolejnym krokiem jest wyświetlenie plików należących do tego katalogu, co pozwoli nam zorientować się, jakie czynności będziemy musieli wykonać w dalszym etapie. Aby zrozumieć i zapamiętać instalacje ze źródeł, musisz najpierw poznać istotę dwóch plików: configure i makefile. Ten pierwszy sprawdza, czy w systemie zainstalowane są wymagane biblioteki lub programy, co ustrzeże nas przed błędami kompilacji. Innym ważnym plikiem jest wspomniany makefile. To on przeprowadza cały proces kompilacji programu. Dzieli się przeważnie na trzy części: make sekcja kompilująca źródła install sekcja instalująca skompilowane pliki uninstall sekcja odinstalowująca pliki zainstalowane Tak więc, jeśli w katalogu znajduje się plik configure, to od niego powinniśmy zacząć proces instalacji. Dostępne jego opcje, widoczne są po uruchomieniu go z argumentem -h lub --help. Przed instalacją możemy więc określić interesujące nas opcje. Po pomyślnym wykonaniu się skryptu configure, możemy przejść do etapu kompilacji, wydajemy więc polecenie 'make'. Gdy i to wykona się pomyślnie, możemy zainstalować skompilowany już program poleceniem 'make install'. Po chwili mamy go na dysku. Aby w przyszłości móc odinstalować oprogramowanie, należy zachować jego źródła... Make bowiem zapisuje informacje co zostało przekompilowane i gdzie skopiowane. Katalog możesz spakować i nagrać na płytę, a gdy stwierdzisz, że program nie jest Ci już potrzebny, wystarczy, że rozpakujesz zachowane źródła i wpiszesz: make uninstall. 6
Gdy brakuje pliku configure, tzn. nie zamieszczono go, bardzo prawdopodobne jest, że ściągnięte archiwum, to nie źródła, lecz plik binarne. Jeżeli jest makefile, wystarczy, że wpiszemy make lub make install, a pliki skopiują się do odpowiednich katalogów. Inną sytuacja jest całkowity brak configure i makefile. Jest to typowe dla dużych programów zajmujących po kilkadziesiąt, kilkaset MB. Przykładem może być tu pakiet biurowy OpenOffice.org. Nieopłacalne byłoby jego kompilowanie, więc autorzy stwierdzili, że lepsze będzie rozprowadzanie domyślnie w formie binarnej (oczywiście kod źródłowy dostępny jest na oficjalnej stronie projektu). Dołączają jednak plik instalacyjny setup, który po prostu uruchamiamy. Często do tego typu programów dołączany jest także skrypt Basha, będący zazwyczaj pod nazwa install.sh. Sposób instalacji jest identyczny jak w wyżej wymienionym OpenOffice.org. Instalacje pakietów dla poszczególnych dystrybucji jest wiele prostsza, niż instalacja programów ze źródeł. Wszystkie dostępne opcje możemy uzyskać uruchamiając program zarządzający pakietami z argumentem -h lub --help. RPM: rpm -i nazwa_pakietu.rpm instalacja rpm -r nazwa_pakiety.rpm usunięcie DEB: dpkg -i nazwa_pakietu.deb instalacja apt-get remove nazwa_pakietu.deb usunięcie TGZ: installpkg nazwa_pakietu.tgz instalacja removepkg nazwa_pakietu.tgz usunięcie Zadania: 1. Utworzyć w katalogu domowym katalogi kat1 i kat2. W kat1 utworzyć katalog kat3 2. Utworzyć w kat3 plik info, w którym będą następujące dane: data w formacie DD.MM.YY czas w formacie HH:MM:SS nazwa hosta nazwa domeny wykaz zajmowanego miejsca przez pliki z katalogu domowego 3. Utworzyć w kat3 plik kalendarz, w którym będzie kalendarz na przyszły rok 4. Sprawdzić ile linii ma plik info i ile wyrazów liczy sobie plik kalendarz 5. Do katalogu kat2 skopiować plik info i nazwać go info2 6. Korzystając z polecenia tar utworzyć archiwum o nazwie archiwum.tar zawierające katalog kat1 7. Zobaczyć ile zajmuje archiwum.tar 8. Dodać do archiwum katalog kat2 (polecenie tar z odpowiednią opcją). 9. Zobaczyć ile teraz zajmuje archiwum.tar 10. Przeprowadzić kompresję utworzonego archiwum za pomocą programu gzip. Zaobserwować jak zmieni się nazwa pliku archiwum.tar. 7
11. Zobaczyć ile zajmuje utworzone archiwum. 12. Usunąć wcześniej utworzone katalogi i pliki (nie usuwać stworzonego archiwum!) 13. Dokonać dekompresji utworzonego archiwum. 14. Wyszukać pliki, które zawierają tekst "ho" w swojej nazwie z katalogu /etc 15. Wyszukać w systemie wszystkie pliki, których rozmiar jest powyżej 2 megabajtów. 16. Wyszukać wszystkie pliki, które należą do Ciebie 17. Wyszukać wszystkie katalogi z katalogu domowego, nie modyfikowane od dwóch tygodni i wykonać na nich ls 8