System Operacyjny UNIX
Transkrypt
System Operacyjny UNIX
LABORATORIUM 6-7 WSTĘP DO SIECI TELEINFORMATYCZNYCH SYSTEM OPERACYJNY UNIX 1. PODZIAŁ CZASU System operacyjny to program, który steruje komputerem. Kiedy komputer jest włączany, a pracuje z UNIX’em, wówczas program ładowany jest do pamięci, i następnie uruchamiany. Program ten wykonuje wszystkie zadania i uruchamia inne programy. UNIX jest systemem wielodostępnym i wielozadaniowym, posiada listę (kolejkę) zadań do wykonania. Zwykle system wykonuje jedno zadanie przez krótki czas, następnie jest ono „odkładane” i system wykonuje kolejne itd. W końcu powraca do pierwszego zadania i znowu wykonuje je przez jakiś czas. Po pewnej liczbie cykli zadanie jest całkowicie wykonane i zostaje usunięte z kolejki. Komputery są raczej szybkie (duża liczba wykonywanych zadań w jednostce czasu), użytkownik odnosi wrażenie, że komputer pracuje tylko dla niego, a faktycznie sekwencyjnie obsługuje zadania wielu użytkowników. Jeśli jest jeden użytkownik, to podział czasu i tak jest zachowany. System posiada pewne programy (np. generujące zbiorcze informacje systemowe), które są wykonywane automatycznie co pewien czas. UNIX pozwala programom pracować w tle, czyli umieszcza program w kolejce do wykonania i zamiast zmuszać użytkownika do czekania na realizację, natychmiast oczekuje kolejnych poleceń. UNIX dzieli czas między poleceniami a programem pracującym w tle. 2. ADMINISTROWANIE SYSTEMEM W systemie mogą pracować tylko zarejestrowani użytkownicy ze względu na bezpieczeństwo danych. Dostęp do konta chroniony jest hasłem. Konto oznacza obszar pracy i dane użytkownika. System operacyjny przechowuje specjalny plik o określonej nazwie i ścieżce dostępu (/etc/passwd). Kiedy nowy użytkownik dodawany jest do systemu, do pliku /etc/passwd wstawiana jest nowa linia: tomek : xxYZz2. 1wwOla : 15 : 2 : TOMEK USER : /usr/joy. Pierwsze pole (tomek) jest nazwą użytkownika (ang. login name), następne pole to zaszyfrowane hasło, trzecie to numer użytkownika (15) itd. Hasło może być początkowo wprowadzone przez administratora systemu albo pozostać puste, a tomek (użytkownik) może i powinien je zmienić używając polecenia passwd. Plik etc/passwd zawiera więcej informacji o każdym użytkowniku, ale nazwa i hasło są najbardziej istotne, ponieważ ich podania wymaga system przed pracą z użytkownikiem. 3. JĄDRO, POWŁOKA I POLECENIA UNIX’a UNIX to system operacyjny z obszernym zbiorem programów wspomagających, którego najważniejszym składnikiem jest „jądro”, a „powłoka” jednym z najważniejszych programów wspomagających. Jądro zawiera podprogramy, które zajmują się zarządzaniem zasobami. Gdy uruchamiany jest komputer, jądro przejmuje nad nim kontrolę. Użytkownik komunikuje się z jądrem przez powłokę. Program powłoki uruchamia się po zgłoszeniu użytkownika i umieszczeniu go przez system operacyjny w katalogu osobistym. Opracowano wiele powłok, ale najczęściej stosuje się powłokę Bourne (od twórcy Stephena Bourne). Dla każdego użytkownika uruchamiany jest program sh i na ekranie wyświetla się znak zachęty i oczekiwania na polecenia ($ albo %). Rolą powłoki jest przekazywanie poleceń komputerowi, dzięki temu użytkownik nie musi znać numerów identyfikujących pliki, którymi posługuje się jądro. Potęgę UNIX’a stanowi ogromny zbiór programów dostarczanych wraz z systemem operacyjnym. Programy te to właśnie polecenia UNIX’a znajdujące się w katalogu /bin albo /usr/bin. Większość tych programów współpracuje ze sobą i z jądrem. 4. PLIKI I KATALOGI UNIX zapewnia odpowiednią strukturę plików użytkownikowi i pomaga w zarządzaniu nimi. Pliki są organizowane w system plików, umieszczane są w katalogach, które mają hierarchię drzewa. Istnieje jeden katalog zwany głównym (korzeniem). Każdy użytkownik ma katalog osobisty (ang. home directory), który jest katalogiem bieżącym podczas pracy. Wszystkie pliki są domyślnie zapisywane właśnie w tym katalogu, jeśli nie ostanie wskazana inna ścieżka dostępu. UNIX pozwala tworzyć własny system podkatalogów, umożliwia kopiowanie, przenoszenie plików itp. Katalogi, pliki zwykłe i specjalne mają nazwy składające się standardowo z maksymalnie 14 znaków ASCII. Nazwy plików specjalnych są jednak często określone indywidualnie w ramach danej odmiany UNIX’a. W nazwie pliku zwykłego i katalogu mogą wystąpić dowolne znaki ASCII, a wielkie i małe litery są rozróżniane. Pewne znaki (nazywane metaznakami) mają określone znaczenie dla powłoki (shella), dlatego w nazwach zalecane jest stosowanie: liter, cyfr, podkreśleń, kropek. Do metaznaków należą: * ? ; | & \ < > [ ] ` ‘ ” Jeżeli nazwa pliku rozpoczyna się znakiem kropki, to dla pewnej grupy poleceń plik jest traktowany jako ukryty. 1 Wykonanie polecenia zawierającego w nazwie pliku metaznaki przebiega w ten sposób, że najpierw znajdowane są nazwy wszystkich istniejących w odpowiednim katalogu plików, pasujących do podanego wzorca, i wykonywane jest właściwe polecenie, dla tak powstałej listy nazw plików (znaki specjalne mogą służyć do tworzenia wzorców nazw plików): ZNAK * ? [lista] [!lista] 5. POLECENIA SYSTEMU UNIX • ls [opcja(e)] [plik(i)] ZNACZENIE Dowolny ciąg znaków Jeden znak Dowolny znak z listy Dowolny znak nie występujący na liście [katalog(i)] Uwaga: nawiasami [ ] oznaczać będziemy możliwość pominięcia opcji lub argumentów polecenia. Samo polecenie ls wyświetla listę nazw plików w katalogu bieżącym, natomiast różnorodne opcje pozwalają uzyskać dodatkowe informacje. Opcje polecenia ls mogą być użyte raem po jednym myślniku, np. ls -a –x daje to samo, co ls -ax. OPCJA -C -F -R -a -b -c -d -f -g -i -l -m -n -o -p -r -s -t -u -x DZIAŁANIE Wypisuje nazwy plików w kilku kolumnach, sortując w dół kolumn. Liczba kolumn zależy od szerokości ekranu i długości nazw plików Jeśli plik jest programem wykonywalny, to po jego nazwie wyświetlana jest gwiazdka (*). Nazwy katalogów kończą się znakiem slash (/) Rekursywne przeszukiwanie podkatalogów, tj. wypisywane są wszystkie pliki ze wszystkich podkatalogów Wyświetla wszystkie pliki. Bez tej opcji pliki o nazwach zaczynających się od kropki np. .moje, nie są wypisywane Wyświetla znaki niedrukowalne w postaci liczb ósemkowych Używa ostatniej modyfikacji i-węzła (np. zmiana praw dostępu lub utworzenie nowego dołączenia) zamiast czasu ostatniej modyfikacji pliku (i-węzły znajdują się w tablicy systemowej z opcjami –t oraz -l Jeśli argument jest katalogiem, to wyświetla jedynie jego nazwę, bez wypisywania zawartości. Często używane razem z opcją –l do wyświetlania praw dostępu do katalogu Każdy argument traktowany jest jak katalog. Wypisywane są nazwy plików w podanych katalogach. Ta opcja anuluje działanie opcji: -l, -t, -s, -r. Porządek wyświetlania plików zależy od kolejności, w której znajdują się one w pliku-katalogu (katalog jest w rzeczywistości plikiem o specjalnej postaci, zawiera nazwy plików i odpowiadające im numery i-węzłów). Jeśli argument jest plikiem, a nie katalogiem, to informacja jest bez sensu, gdyż ls –f próbuje interpretować plik tak, jakby miał postać katalogu Jak opcja –l, ale nie jest wyświetlana nazwa właściciela każdego pliku Poprzedza każdy plik jego numerem i-węzła Wyświetla następujące informacje o pliku: prawa dostępu, nazwę właściciela, wielkość w bajtach, czas ostatniej modyfikacji. Jeśli plik jest plikiem specjalnym (opisuje urządzenie), to zamiast wielkości są podawane numery urządzenia Wypisuje nazwy plików na całej stronie, oddzielając je przecinkami Jak –l, ale numery użytkownika (UID) i grupy (GID) są wyświetlane zamiast odpowiednich nazw Jak –l, ale nazwa grupy nie jest wyświetlana Umieszcza znak slash (/) po nazwach katalogów Odwraca porządek sortowania Podaje wielkość w jednostkach po 512 bajtów Sortuje według czasu ostatniej modyfikacji (najstarszy jako pierwszy) Sortuje według czasu ostatniego dostępu. Opcja ta jest używana łącznie z –l oraz –t Wyświetla nazwy w kilku kolumnach sortując poziomo, a nie pionowo Opcja –l wypisuje min. prawa dostępu do pliku, które składają się z 10 znaków. Typowa postać to: -rwxr-xr-Pierwszy znak określa typ pliku, pozostałe to prawa dostępu. Możliwe typy plików to: ZNAK d b c p - TYP PLIKU Katalog Blokowy plik specjalny, tzn. plik opisujący urządzenie takie jak dysk Znakowy plik specjalny, tzn. plik opisujący urządzenie takie jak terminal, kótry przesyła dane znak po znaku Specjalny plik FIFO „potok z nazwą” do wymiany danych między procesami Zwykły plik 2 Kolejne dziewięć znaków określających prawa dostępu dzieli się na trzy grupy po trzy znaki. Pierwsza grupa opisuje prawa właściciela pliku, druga – prawa grupy użytkowników (z każdym plikiem skojarzona jest grupa użytkowników), trzecia – prawa pozostałych użytkowników: ZNAK ZNACZENIE r Prawo do odczytu w Prawo do zapisu x Prawo do wykonywania Brak prawa s albo S Dostęp typu „set-user-ID” albo „set-group-ID” (opis polecenia chmod) l Blokowanie pliku przy dostępie Na przykład -rwxr-xr-- oznacza zwykły plik (pierwszy -), do którego użytkownik ma prawa odczytu, zapisu i wykonania (rwx). Członkowie grupy mają prawo odczytu i wykonywania (r-x). Pozostali użytkownicy mogą tylko odczytywać (--). Jeśli plik jest katalogiem, to prawo do wykonywania oznacza prawo do przeszukiwania tego katalogu. Można nadać plikowi wykonywalnemu prawa „set-user-ID”, które daje czasowo użytkownikom, wykonującym dany program , prawa takie jak jego właściciel. Oznacza się znakiem s zamiast x w prawie do wykonywania przez użytkownika. Znak s w prawie wykonywania dla grupy oznacza, że użytkownicy, wykonujący dany program, mają czasowo prawa takie jak grupa, do której należy plik („set-group-ID”). Litera S oznacza, że nie jest dane prawo do wykonywania, czyli użytkownik ma takie same prawa jak właściciel, ale bez prawa do wykonywania. (Litera s albo S zajmują miejsce przeznaczone dla x, więc nie mogą być wyświetlone). System posiada możliwość blokowania plików, tj. czasowe zablokowanie dostępu do danego pliku innym użytkownikom. Znak l w grupowych prawach do wykonywania oznacza, że plik jest zablokowany. • man nazwa_polecenia Umożliwia uzyskanie informacji o danym poleceniu. • pwd Wyświetla nazwę bieżącego katalogu. Polecenie określa, w którym katalogu użytkownik się znajduje. Wykorzystywane jest też w skryptach powłoki. Może nie działać, jeśli użytkownik znajduje się w katalogu, do którego nie ma prawa odczytu. • cd [katalog] Zmienia katalog bieżący na katalog określony przez argument wywołania. Jeśli nie podano żadnego argumentu, to katalogiem bieżącym staje się katalog osobisty. Nazwę katalogu osobistego użytkownika zawiera zmienna środowiska HOME. Jeśli nie zostanie podana pełna ścieżka katalogów, to poszukiwany jest podkatalog w katalogu bieżącym, o ile nie jest zdefiniowana zmienna środowiska CDPATH. Nie można zmienić katalogu na taki, do którego nie ma się prawa wykonywania. Zmienna CDPATH zostaje zwykle zdefiniowana w pliku .profile i zawiera listę katalogów. W tych katalogach polecenie kolejno poszukuje podanego podkatalogu. Nazwy katalogów powinny być oddzielone dwukropkiem. W celu przeszukania katalogu bieżącego, katalog nadrzędny i w końcu katalog osobisty należy podstawić: CDPATH= . : . . : $HOME • mkdir [-mp] [katalog(i)] Tworzy w bieżącym katalogu nowy(e) katalog(i) o podanej nazwie(ach), pod warunkiem, że użytkownik ma prawo do pisania w katalogu bieżącym. W tworzonym katalogu umieszczone są dwa katalogi: . oznacza samego siebie, .. oznacza katalog nadrzędny. Nazwy katalogów mogą być również nazwami ścieżkowymi, co umożliwia tworzenie katalogów w miejscach określonych przez ich nazwy ścieżkowe. OPCJA -m liczba -p • DZIAŁANIE Ustawia prawa dostępu do tworzonych katalogów; liczba musi być liczbą ósemkową (polecenie chmod) Tworzy całą ścieżkę katalogów, w tym wszelkie katalogi pośrednie rmdir [-ps] katalog(i) Kasuje podane katalogi, a usuwany katalog musi być pusty. OPCJA -p -s DZIAŁANIE Kasuje katalogi wraz ze wszystkimi katalogami nadrzędnymi, które staną się puste; nazwy katalogów są wypisywane na standardowym wyjściu Blokuje wypisywanie komunikatów w opcji -p 3 • rm [-fri] plik(i) Polecenie bez opcji kasuje plik albo pliki z podkatalogu. Dokładnie usuwana jest nazwa pliku z katalogu. Plik może mieć kilka nazw, czyli dowiązań. Kasowane jest pojedyncze dowiązanie. Jeśli skasowane jest ostatnie dowiązanie, to system usuwa także sam plik. Kasowanie plików z katalogu wymaga posiadania prawa do pisania w nim, ale nie jest konieczne prawo do pisania dla samego pliku. Jeśli jednak brak prawa do pisania w pliku, to wyświetlone zostają prawa dostępu (liczba ósemkowa) i żądanie potwierdzenia usunięcia. Znak y potwierdza kasowanie. OPCJA -f -r -i • DZIAŁANIE Kasuje plik bez dodatkowych pytań Akceptuje nazwę katalogu jako argument. Najpierw kasowana jest zawartość katalogu, potem sam katalog. Powoduje rekursywne działanie, czyli kasowane są wszystkie podkatalogi, podpodkatalogi itd. Dla bezpieczeństwa lepiej użyć polecenia rm do plików, a rmdir do katalogów Kasuje pliki (lub katalogi, jeśli użyto opcji -r) interakcyjnie, tj. żądając potwierdzenia skasowania każdego katalogu cp plik nowyplik cp plik(i) katalog (tworzy kopię pliku i nadaje jej nazwę nowyplik) (kopiuje podane pliki do wskazanego katalogu, bez zmiany ich nazwy) Kopiuje zawartość jednego pliku do nowego pliku razem z prawami dostępu. Może skopiować jeden lub więcej plików do podanego katalogu. UNIX nie pyta, czy użytkownik jest pewny realizowanego zadania, więc trzeba uważać czy np. nazwa docelowa nie jest nazwą istniejącego pliku, gdyż poprzednia zawartość zostanie stracona. UNIX nie pozwala na kopiowania pliku na siebie samego. • cat [opcje] [plik(i)] Wyświetla i łączy pliki w jeden strumień wyjściowy. WYBÓR WEJŚCIA: jeśli w linii polecenia występują nazwy plików, to są one wyświetlane w odpowiedniej kolejności. Gdy brakuje nazw plików, to polecenie pobiera dane z wejścia (domyślnie z klawiatury). Znak końca pliku EOF sygnalizuje, że plik wejściowy się skończył. Aby zakończyć wprowadzanie danych z klawiatury, należy podać znak <control-d> na początku nowej linii. WYBÓR WYJŚCIA: polecenie kieruje swe wyjście na wyjście standardowe, czyli ekran terminala. Może jednak skierować wyjście do pliku albo poprzez potok do innego polecenia. • mv [-f] plik1 plik2 mv [-f] plik(i) katalog OPCJA -f DZIAŁANIE Zmienia nazwy bez dodatkowych pytań, o ile to możliwe Zmienia nazwy plików albo przenosi pliki do innych katalogów. Pełna ścieżka dostępu identyfikuje katalog, w którym plik się znajduje. Zmiana ścieżki dostępu oznacza zmianę tego katalogu. Polecenie użyte w pierwszej postaci umożliwia zmianę nazwy istniejącego pliku plik1 na nazwę nową plik2. W drugiej postaci podawane są nazwy plików, które użytkownik chce przenieść do wskazanego katalogu. Trzeba mieć prawo do pisania w katalogu, do którego chce się przenieść dany plik. Jeśli proponowana nowa nazwa pliku należy do już istniejącego, to plik ten jest zamazywany. Jeżeli taki plik jest zabezpieczony przed zapisem, to polecenie mv zapyta o potwierdzenie żądania. • chmod tryb-absolutny plik(i) chmod tryb-symboliczny plik(i) Ustawia prawa dostępu do pliku albo katalogu. Polecenie stosuje się w celu ochrony plików przed zapisywaniem bądź przypadkowym skasowaniem. TRYB ABSOLUTNY Tryb absolutny ustawia wszystkie prawa naraz, wymaga podania czterocyfrowej liczby kodzie ósemkowym. Liczba taka składana jest z następujących elementów w wyniku sumowania: TRYB ZNACZENIE 4000 Bit „set-user-ID” ustawienie identyfikatora użytkownika-właściciela podczas wykonywania 2000 Bit „set-group-ID” ustawienie identyfikatora grupy podczas wykonywania 20#0 Jeśli #=7,5,3,1 ustawienie identyfikatora grupy podczas wykonywania. Jeśli #=6,4,2,1 zezwolenie na blokowanie pliku 4 1000 0400 0200 0100 0040 0020 0010 0004 0002 0001 Zarezerwowany Właściciel może czytać Właściciel może pisać Właściciel może wykonywać (przeszukiwać – jeśli odnosi się to prawo do katalogu ) Grupa może czytać Grupa może pisać Grupa może wykonywać (przeszukiwać) Inni użytkownicy mogą czytać Inni użytkownicy mogą pisać Inni użytkownicy mogą wykonywać (przeszukiwać) TRYB SYMBOLICZNY Tryb symboliczny może zmieniać tylko wybrane prawa. Składa się z trzech części, np. o-r. Pierwsza część oznacza, której klasy dotyczy zmiana praw; druga część to operator, który mówi jaka operacja ma być wykonana. Trzecia część pokazuje, którego prawa dostępu ma zamiana dotyczyć. LITERA u g o ZNACZENIE w części pierwszej Użytkownik Grupa Inni Litera a albo pominięcie w ogóle oznacza kombinację ugo, czyli wszystkich użytkowników. Dopuszczone są operatory: OPERATOR + = ZNACZENIE w części drugiej Nadanie podanych praw Cofnięcie podanych praw Nadanie tylko podanych praw i cofnięcie pozostałych LITERA R W X S l ZNACZENIE w części trzeciej Prawo do odczytu Prawo do pisania Prawo do wykonywania Ustawienie ID użytkownika (dla o) lub ID grupy (dla g) Blokowanie pliku przy dostępie Symbole praw są takie same, jak te wypisywane przez polecenie ls –l. W jednym poleceniu można podać kilka operatorów, np. g+r-w oznacza przyznanie grupie prawa do czytania i jednocześnie cofnięcie prawa do pisania. Można zlecić kilka zmian praw oddzielając całość przecinkami, np. u+w, go-r oznacza przyznanie właścicielowi prawa do pisania a cofnięcie grupie i innym użytkownikom prawa do odczytu. • pg [opcja(e)] [plik(i)] Polecenie pozwala przeglądać plik albo pliki, dzieląc ich zawartość na strony. W dole ekranu pojawia się znak zachęty, zaś naciśnięcie <enter> powoduje przejście do następnego ekranu. Polecenie to może pobierać tekst także z wejścia standardowego, więc można je użyć w potoku bez podania nazw plików albo myślnika – jako nazwy. Jeżeli wyjście standardowe nie jest ekranem terminala, to pg zachowuje się podobnie jak cat, ale przy przetwarzaniu więcej niż 1 pliku dodaje nagłówki z nazwą pliku. Polecenie pg musi znać parametry terminala, gdy zmienna TERM zawiera typ terminala przeszukiwany jest plik terminfo. W innym wypadku przyjmowany jest terminal typu dumb. (UNIX System V zwykle przyjmuje dane o typach terminali w katalogu /usr/lib/terminfo). OPCJA -c -e -f -p napis +numer +/wzorzec/ DZIAŁANIE Powrót kursora do lewego górnego rogu, czyszczenie ekranu przed wyświetleniem nowej strony. Opcja ignorowana przez terminale bez zdefiniowanej funkcji czyszczenia ekranu Nie zatrzymuje się po każdej stronie Nie dzieli linii, co może powodować efekty niepożądane w postaci sekwencji znaków sterujących Znak zachęty to zwykle : na dole ekranu, opcja nakazuje wyświetlanie podanego napisu zamiast : Wyświetlanie od linii o podanym numerze Wyświetlanie od pojawienia się wzorca po raz pierwszy. Wzorzec może być ciągiem znaków lub wyrażeniem regularnym jak dla edytora ed 5 OPCJA 6 +6 -6l 6/UNIX/ 6?VAX? n 3p • DZIAŁANIE NA PLIKU Do przodu do ekranu numer 6 O 6 ekranów wprzód Jeden ekran do wstecz 6 linii wstecz Wprzód do szóstego kolejnego wystąpienia UNIX W tył do szóstego poprzedniego wystąpienia VAX Przejście do następnego pliku Trzy pliki w tył tail [+/- [liczba [lbc] [f]]] [plik] Wyświetla końcowe linie pliku, domyślnie 10 linii. Jeśli nazwa pliku nie jest podana, to tekst pobierany jest zwykle z klawiatury. Wyjście można skierować do pliku przez potok do innego polecenia. OPCJA -liczba +liczba l b c f • DZIAŁANIE Wyświetla podaną liczbę linii od końca pliku. Wartość domyślna liczby to 10 Wyświetla linie począwszy od podanej liczby do końca pliku. Wartość domyślna liczby to 10 Liczba przed literą oznacza ilość linii Liczba przed literą oznacza ilość bloków po 512 bajtów Liczba przed literą oznacza ilość znaków Powoduje wejście w pętlę wypisywania żądanych linii na ekran i sprawdzania, czy coś zostało dopisane do pliku. Pętlę przerywa się sygnałem INTRRUPT, albo kill jeśli tail pracuje w tle. Opcję stosuje się dla zwykłych plików, a nie wejścia z potoku. Wyświetla zawartość pliku w trakcie dodawania nowych linii przez inny proces egrep [opcja(e)] [wzorzec] [plik(i)] Wyświetla linie pliku, które odpowiadają podanemu wzorcowi. Jeśli przeszukiwany jest więcej niż jeden plik, to wyświetlana jest także jego nazwa. Podanych wzorców może być kilka. Efekty działania polecenia są kierowane na wyjście standardowe (ekran terminala), albo w potoku albo na wyjście do pliku. OPCJA DZIAŁANIE -v Wyświetla wszystko poza liniami odpowiadającymi wzorcowi -c Wyświetla liczbę znalezionych linii, dla każdego pliku oddzielnie -l Wyświetla tylko nazwy plików, w których znaleziono odpowiadające wzorcowi linie -n Poprzedza linie ich numerami -b Poprzedza linie numerem bloku, w którym się znajduje. Pierwszy blok ma numer 0 -f plik Pobiera wzorce z pliku -i Nie rozróżnia wielkich i małych liter przy porównaniu WZORZEC . \ [...] [^...] * + ? | () ^ $ ZNACZENIE Dowolny znak Następny znak nie jest traktowany jako specjalny Dowolny znak z podanej listy np. [a-z] Dowolny znak nie występujący na liście Zero albo więcej wystąpień wyrażenia Jedno albo więcej wystąpień wyrażenia Zero albo jedno wystąpienie wyrażenia Oddziela elementy list wzorców Grupa wzorców Początek linii Koniec linii Operatory *,+,? odnoszą się do poprzedzanego znaku, chyba, że poprzedzają wyrażenie w nawiasie. Elementy listy wzorców mogą być oddzielone znakiem nowej linii. Podobnie działają polecenia fgrep i grep. • cmp [-l] [-s] plik1 plik2 Porównuje dwa pliki, domyślnie zgłasza tylko pierwszą napotkaną różnicę. Do powłoki zwracany jest kod wyjściowy, jeśli wynosi 0 – pliki identyczne, 1 – pliki różne, 2 – brak pliku albo dostępu do pliku. Zwykle porównuje się dwa pliki, aby usunąć niepotrzebną kopię. 6 OPCJA DZIAŁANIE -l Wypisuje numer (dziesiętnie) i wartości (ósemkowo) wszystkich różniących się bajtów -s Nie sygnalizuje różnic (opcja najczęściej używana w skryptach) Do porównania plików służą jeszcze inne polecenia: comm – porównuje pliki posortowane, diff – porównuje pliki tekstowe. • find lista_katalogów wyrażenie Argument lista_katalogów oznacza listę katalogów do przeszukania, natomiast wyrażenie określa, jakie pliki podlegają przeszukiwaniu i co należy z nimi zrobić. Polecenie przeszukuje podane katalogi z podkatalogami. Kryterium poszukiwań może być nazwa pliku, wzorzec nazwy, pewne cechy pliku. Polecenie może być użyte do odnalezienia plików w drzewie katalogów, kasować pliki nie modyfikowane od pewnego czasu, może żądać potwierdzenia usunięcia pliku itp. Argument lista_katalogów może zawierać jeden albo więcej katalogów, można stosować skrótów nazw np. „.”, nazwy katalogów powinny być oddzielone spacjami: /usr/janek . orion. Argument wyrażenie określa kryterium poszukiwań plików i składa się z wyrażeń pierwotnych np.: -print bądź -name flossy. Każde wyrażenie jest typu logicznego, przyjmuje wartość „prawda” bądź „fałsz”. Większość wyrażeń dotyczy plików, ale określają też działania do wykonania. Gdy polecenie stwierdza, że dla danego pliku całe wyrażenie będzie fałszem, to przechodzi do następnego pliku. Kolejność wyrażeń pierwotnych jest bardzo istotna. Określenia bieżący plik odnosi się do aktualnie sprawdzanego przez find. WYRAŻENIE WARTOŚĆ LOGICZNA -name plik Prawda jeśli plik odpowiada nazwie bieżącej. Można użyć znaków ogólnych np.: -name’*.c’ -perm liczba Prawda jeśli prawa dostępu odpowiadają podanej liczbie w kodzie ósemkowym. Poprzedzenie znakiem „-„ powoduje porównanie dodatkowych bitów -type c Prawda jeśli plik jest typu c (znakowy specjalny). Inne typy plików są oznaczane: b - blokowy specjalny, d - katalog, p - potok lub fifo, f - zwykły. -link n Prawda jeśli plik ma n dowiązań -size n[c] Prawda jeśli plik ma długość n bloków, gdzie blok ma po 512 bajtów. Jeśli po n wystąpi c to n jest podawane w znakach (1 znak = 1 bajt) -atime n Prawda jeśli plik był używany n dni temu -mtime n Prawda jeśli plik był modyfikowany n dni temu -ctime n Prawda jeśli i-węzeł był modyfikowany później niż podany plik newer plik Prawda jeśli plik był modyfikowany później niż podany plik -print Zawsze prawda, wyświetla nazwę bieżącego pliku -exec polecenie Prawda jeśli wykonanie polecenia zwraca kod wyjścia zero (pomyślne zakończenie), znaki {} reprezentują nazwę bieżącego pliku, \; koniec polecenia; np. –exec ls-l {} \; wyświetli informacje o każdym znalezionym pliku -ok polecenie Patrz –exec, lecz każda linia do wykonania jest wyświetlana ze znakiem zapytania, a polecenie jest wykonywane wtedy, gdy użytkownik poda y (yes) -depth Zawsze prawda, przeszukuje najpierw wszystkie podkatalogi -mount Zawsze prawda, ogranicza przeszukiwanie do systemu plików, który zawiera podany katalog. Jeśli nie podano katalogu, wówczas przyjmuje się domyślnie katalog bieżący -local Prawda, jeśli plik jest fizycznie zlokalizowany w systemie lokalnym Wyrażenia pierwotne mogą być łączone za pomocą operatorów logicznych: OPERATOR DZIAŁANIE -logiczny NOT Znak ! neguje wyrażenie, np.: ! –name ‘*.c’ oznacza wszystkie pliki o nazwach nie kończących się na c. -logiczny AND Kolejne wyrażenia tworzą koniunkcję, bez dodatkowych znaków -logiczny OR Reprezentowany przez –o pomiędzy wyrażeniami np.: -size +10 –o –links 3 oznacza wszystkie plik większe niż 10 bloków lub pliki które mają dokładnie 3 dowiązania PRZYKŁADY: Skasowanie wszystkich plików nie używanych od 20 dni find . –atime +20 –exec rm {} 1 Skasowanie po potwierdzeniu przez użytkownika plików używanych po raz ostatni 20 dni temu. Użytkownik jest pytany, czy na pewno chce skasować podany plik. Odpowiedź twierdząca y (yes) powoduje skasowanie pliku find . –atime +20 –ok. Rm {} 1; Wyświetlenie nazwy i zawartości podanych plików. Polecenie wyszukuje wszystkie pliki o nazwach kończących się na .c, .f lub .old, które były używane w ciągu ostatnich pięciu dni. Wyświetlana jest nazwa i zawartość takiego pliku. Znak \ po –5 oznacza kontynuację polecenia w następnej linii. find .\( -name ‘*.[cf]’ –o –name ‘*.old’ \) –atime –5 \ -print –exec cat {}\; 7