Linux Podstawy używania systemu
Transkrypt
Linux Podstawy używania systemu
Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 1 Linux Podstawy używania systemu Spis Treści Strona Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 2 Rozdział 1 : Wprowadzenie Rozdział 2 : Sesja 2.1 Zalogowanie 2.2 Pierwsze polecenia 2.3 Użycie klawiatury 2.4 Ćwiczenia Rozdział 3 : Pliki i Katalogi 3.1 Polecenia zarządzania plikami 3.2 Polecenia zarządzające katalogami 3.3 Ćwiczenia Rozdział 4 : Bash 4.1 Znaki uogólniające 4.2 Protekcja znaków uogólniających 4.3 Zgrupowanie poleceń 4.4 Przkierowania 4.5 Potoki 4.6 Ćwiczenia Rozdział 5 : Prawa 5.1 Zarządzanie prawami 5.2 Prawa pliku 5.3 Modyfikacja praw pliku (1) 5.4 Modyfikacja praw pliku (2) 5.5 Prawa katalogów 5.6 Zarządzanie grupami 5.7 Ćwiczenia Rozdział 6 : Filtry – do czego służą ? 6.1 Ćwiczenia Rozdział 7 : Zarządzanie procesami 7.1 Skrypty – pierwsze kroki w programowaniu 7.1.1 Przekazywanie parametrów do skryptu 7.1.2 Struktury kontrolne powłoki Bash 7.2 „background”/ „foreground” Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 3 (operacja w tle/operacja pierwszoplanowa) 7.3 Polecenia 7.3.1 polecenie - ps 7.3.2 polecenie - kill 7.3.3 polecenie - jobs 7.4 Zarządzanie „pracami’’ 7.5 Ćwiczenia Rozdział 8 : 8.1 8.2 8.3 Wyrażenia regularne Polecenie find Polecenie grep z wyrażeniami regularnymi edytor sed Autor : Piotr Piętak GR PiS ds. informatyzacji Rozdział 1 : Linux Podstawy używania systemu jjjj-07-tt strona 4 Wprowadzenie We Francji, Meksyku, Anglii, Peru nauczyciele, uczniowie i ich rodzice, wspólnie zastanawiają się i próbują rozwiązać jeden z podstawowych dylematów społeczeństwa informacyjnego: jak uczyć informatyki wiedząc, że narzędzia informatyczne aktualnie używane mogą – biorąc pod uwagę błyskawiczne tempo zmian technologicznych – być bezużyteczne po skończeniu szkoły przez dzisiejszych licealistów? Czy w takim razie uczyć raczej obsługiwania oprogramowań, czy zrozumienia jak one działają? Czy w procesie nauczania korzystać z narzędzi informatycznych firmy Microsoft które dostarczane są użytkownikowi w formie uniemożliwiającej ich przeczytanie i zrozumienie? Pytań jest wiele i – co warto podkreślić- niektóre państwa udzieliły na nie już odpowiedzi. W 1997 r. rząd meksykański wprowadza radykalną reformę systemu nauczania informatyki instalując w 140 000 szkół system operacyjny Linux, który – w przeciwieństwie do narzędzi firmy Microsoft – umożliwia czytanie i zrozumienie oprogramowań z których jest zbudowany. Finlandia, której radykalna reforma ekonomiczna sprzed kilku lat, polegała głownie na całkowitym zreorganizowaniu systemu edukacji w szczególności systemu nauczania informatyki. Efekty są znane. Boom gospodarczy. Francja w której liczne asocjacje skupiające rodziców licealistów i wybitnych informatyków wymusiły na wszechpotężnym Ministerstwie Edukacji Narodowej wprowadzenie do szkół nauki Linuxa. A Polska? Dwa kroki do tyłu W 2002 PWN wydał podręcznik do przedmiotu – technologia informacyjna – przeznaczony dla uczniów liceów ogólnokształcących. Podręcznik ‘’Technologia Informacyjna’’ jest znakomity, obiema rękoma podpisuje się pod stwierdzeniami reklamującymi książkę: ‘’prosty, przystępny język, itd ’’ tylko jego tytuł powinien brzmieć ‘’Technologia Informacyjna Windowsa’’. Przyznają to zresztą sami autorzy pisząc na str 11 ‘’W podręczniku, omawiając konkretne bloki tematyczne, wykorzystano głównie platformę systemową Windows’’. Znajduje się w nim także krótki 10-stronicowy rozdział poświęcony Linuxowi, na którego poznanie autorzy proponują poświęcić 3 godziny dodając:’’…poznanie systemu Linux jest bez wątpienia pożyteczne, jednak nie ma kluczowego znaczenia dla osiągnięcia celów zawartych w podstawie programowej przedmiotu technologia informacyjna’’. Dlaczego? Dlatego, że system Linux umożliwia zrozumienie działania narzędzi informatycznych, natomiast celem przedmiotu technologia informacyjna jest nauka ich obsługiwania. Czy jest jednak możliwe w informatyce automatyczne oddzielenie wiedzy od umiejętności ? Podam dwie definicje Internetu: pierwsza jest umieszczona w podręczniku na str 79 : cytuje ‘’…Ważne, żebyś rozumiał, że istotą Internetu stanowi infrastruktura sieciowa, /../ oraz zbiór zasad normujących jego działanie’’ i porównajmy ją z określeniem Internetu jakie znajdujemy w książce S.Lema pt. ‘’Tajemnica chińskiego pokoju’’ : ‘’Dopiero niedawno dowiedziałem się, że zaczątek Internetu jako sieci komputerowej bez ośrodkowej, czyli takim sposobem rozgałęzionej, że nie posiada ona żadnego centrum wymyślili fachowcy Pentagonu..’’. Wybitny pisarz w krótkim zdaniu, przedstawił podstawową zasadę funkcjonowania cyberprzestrzeni. Natomiast z definicji umieszczonej w podręczniku informatyki nie dowiadujemy się w nic, bo cóż to znaczy, że ‘’istotą Internetu stanowi infrastruktura sieciowa’’, określenie to, przypomina sławne marksistowskie ‘’istota człowieka to całokształt stosunków społecznych’’ i dziwić się należy, że autorzy konstruują definicje używając pojęć Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 5 i metod z epoki zdawałoby się dawno minionej i zapomnianej. Przytoczone przykłady – a tak naprawdę cała metodologia, na której oparty jest podręcznik - stawiają na ostrzu noża podstawowy problem związany z nauczaniem informatyki : czy możliwe jest skuteczne obsługiwanie narzędzi informatycznych bez jednoczesnego zrozumienia mechanizmów ich działania? Czy w XXI wieku dychotomiczne rozdzielenie wiedzy i umiejętności nie jest sprzeczne z zasadami regulującymi dużą część rynku pracy? Na czym rzeczywiście polega praca w społeczeństwie informacyjnym? Podstawowe prawa elektronicznej ekonomi Przeżywamy prawdziwą eksplozje informacji. Według ankiety przeprowadzonej przez uniwersytet Berkley w 2001 roku, poprzez Internet możemy dotrzeć do 550 miliardów dokumentów. Stronic internetowych przybywa codziennie 7.3 mln. Produkcja dobowa e-mail jest 500 razy większa od produkcji stronic. Przedsiębiorstwa mają dostęp do różnych – praktycznie – niepoliczalnych danych do których szybki dostęp jest warunkiem niezbędnym ich funkcjonowania i przetrwania w stale zmieniającym się otoczeniu ekonomicznym. Elektroniczna ekonomia polega na umiejętnym wyszukiwaniu danych potrzebnych przedsiębiorstwu i na ich jak najszybszym przetworzeniu, organizowaniu i uporządkowaniu. Jaki typ pracownika jest do tego typu zajęć potrzebny? Przede wszystkim musi on być wykształcony i – co istotniejsze – musi być zdolny do podejmowania samodzielnych inicjatyw i decyzji. Istnienie małych i dużych przedsiębiorstw zależy – o wiele bardziej niż w przeszłości – od stopnia autonomii ich personelu. Znikają hierarchiczne struktury, upowszechnia się coraz bardziej horyzontalny typ relacji organizacyjnych, w których zakres odpowiedzialności każdego pracownika wzrasta niepomiernie w porównaniu z zasadami pracy obowiązującymi w przedsiębiorstwie XX wieku. W tych warunkach wartość pracownika nie jest wyznaczona tylko przez studia wyższe, lecz także przez typ otrzymanej w szkole edukacji. W elektronicznej ekonomi pracownik musi umieć przystosować się do ciągle zmieniającego się kontekstu ekonomicznego i technologicznego, co wymaga stałego podnoszenia kwalifikacji. Warunkiem skutecznej pracy jest szybkość z jaką analizuje się i absorbuje zmianę, ponieważ zmiana jest cechą charakterystyczną naszej cywilizacji. Paradoksalnie, doskonała znajomość i ciągłe używanie tylko jednego systemu operacyjnego utrudnia – a czasami wręcz uniemożliwia – naukę innych opartych na odmiennych zasadach oprogramowań. Ekonomiści nazywają to zjawisko blokadą innowacyjną. Dlatego pluralizm metodologiczny w nauczaniu informatyki jest konieczny właśnie z punktu widzenia praw rządzących ekonomią elektroniczną. Szkoła powinna uczyć uczenia się. Ciągła nauka – to jest aksjomat XXI wieku - stała się częścią naszego życia zawodowego i codziennego. W opinii ekonomistów, to system edukacyjny decyduje o miejscu zapóźnionych cywilizacyjnie społeczeństw – takich jak Polska – w światowym podziale pracy. Czy jest jednak możliwe – biorąc pod uwagę ilość godzin przeznaczoną na naukę informatyki w szkole – zaznajomienie uczniów z dwoma systemami operacyjnymi, co oprócz ewidentnie korzystnej dla pedagogiki wykładu różnorodności metodologicznej, umożliwiłoby również praktyczne zrozumienie przez młodzież zasady konkurencji na której oparta jest współczesna ekonomia? Byłby to niewątpliwie eksperyment, ale nauczanie informatyki jest ciągłym eksperymentem. Konkurencja informatyczna – gdyż używając różnych systemów uczniowie porównują je i oceniają – w szkole jest ważna także z innego powodu: gwarantowałaby niezależność programów szkolnych od strategi marketingowej przedsiębiorstw produkujących oprogramowania oparte na prawie własności. Powszechnie wiadomo, że przedsiębiorstwa te traktują systemy edukacyjne jako doskonałe narzędzia do zaznajamiania i – co gorsza – do przyzwyczajania uczniów do używania w przyszłości swoich produktów. Jeżeli uważamy, że celem nauki informatyki w szkole nie jest wychowywanie konsumentów używających automatycznie – czyli bezmyślnie – oprogramowań potężnych firm takich jak Microsoft, lecz kształcenie podstaw metodologicznych informatyki i nabywania umiejętności obsługiwania narzędzi informatycznych zbudowanych według różnorodnych zasad, to wniosek wydaje się być oczywisty. Opodatkowanie przyszłości Dlaczego w takim razie autorzy podręcznika ‘’Technologia Informacyjna’’ prezentują tylko narzędzia informatyczne firmy Microsoft ? Odpowiedź – jaką można zrekonstruować na podstawie lektury książki Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 6 jest następująca : system Windows jest powszechnie używany , łatwy do nauczenia i jego znajomość jest podstawowym warunkiem znalezienia pracy. Argumentacja ta oparta jest jednak na fałszywych przesłankach. Przeanalizujmy je po kolei: 1.Autorzy podręcznika podkreślają, że system Windows jest powszechnie używany, ponieważ według zgodnej opinii jego użytkowników jest on łatwy do nauczenia. Otóż w rozumowaniu tym przesłanka z konkluzją powinny zamienić się miejscami (jest on uważany za łatwy ponieważ jest powszechnie używany). Aby stwierdzić, że coś jest łatwiejsze czy trudniejsze musimy dysponować jakąkolwiek skalą porównawczą. W wypadku systemów operacyjnych skala taka – z przyczyn historycznych - nie istnieje. 2. Autorzy są zwolennikami stanowiska, które można przedstawić w sposób następujący: co istnieje teraz, będzie także trwało w przyszłości. Otóż jest to założenie – jeżeli weźmie się pod uwagę historie rozwoju technologi informatycznych - fałszywe. W latach 70-80 supremacja IBM, była przygniatająca, jednak kierownictwo firmy zlekceważyło pojawienie się na rynku komputera domowego i przegrało konkurencje z Microsoft. Dzisiaj role się odwróciły. IBM wykorzystuje system Linux do budowania nowych narzędzi informatycznych mogących zagrozić monopolowi Microsoft.. 3. Podręcznik ‘’Technologia Informacyjna’’ prezentuje wyłącznie narzędzia informatyczne firmy Microsoft, ponieważ dobra – wg jego autorów - ich znajomość ułatwi absolwentom szkół znalezienie pracy. Błąd, za który zapłaci całe polskie społeczeństwo. Za kilka lat, albo pracodawca będzie zmuszony wydać pieniądze na przekwalifikowanie pracowników, albo pracobiorca będzie sam musiał nauczyć się innych wymaganych na rynku pracy narzędzi informatycznych. Jednokierunkowość w nauczaniu informatyki jest formą dodatkowego opodatkowania społeczeństwa przez państwo. * Czy jest jakiekolwiek wyjście z sytuacji – biorąc pod uwagę - że tylko kilka procent nauczycieli informatyki ukończyła wyższe studia informatyczne, reszta natomiast uczęszczała na różnego rodzaju studia podyplomowe? Myślę, że sposobem na poprawę nauczania informatyki jest stworzenie oprogramowania edukacyjnego w Internecie umożliwiającego naukę Linuxa. Internetowe Studium Wolnego Oprogramowania (ISWO) jest właśnie takim narzędziem stworzonym przez informatyków związanych z ruchem „wolnego oprogramowania” oraz partią polityczną Prawo i Sprawiedliwość. Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 7 Rozdział 2 : Sesja 2.1 Zalogowanie Linux – jest systemem wielozadaniowym i wielodostępnym. Wynika z tego, że może z niego korzystać jednocześnie wielu użytkowników i każdy z nich może uruchomić wiele programów. Aby rozpocząć prace, użytkownik musi się zalogować do systemu podając swoją nazwę (w tym celu trzeba stworzyć konto użytkownika) oraz przypisane mu hasło, umożliwiające zalogowanie się do systemu. Dodajmy, że system identyfikuje każdego użytkownika na podstawie niepowtarzalnego numeru UID. Mechanizm logowania możemy przedstawić w następujący sposób. Login : Password : $ who $ date $ cal Login : $ exit Password 3.2 Pierwsze polecenia • • • • • • • date who who am i cal uname passwd echo wyświetla na ekranie datę i aktualną godzinę wyświetla liste zalogowanych użytkowników kim jestem ? wyświetla kalendarz wyświetla nazwę i atrybuty systemu operacyjnego zmiana hasła wyświetla na ekranie argument polecenia Wiersz poleceń - czyli to co znajduje się za znakiem zachęty „#” lub „$” służy do wprowadzania poleceń. Co rozumiemy pod wyrażeniem „wprowadzanie poleceń” ? Rozumiemy przez to wystukanie (wpisanie jego treści) polecenia i następnie naciśnięcia klawisza [Enter]. Polecenie składa się z następujących elementów : nazwa polecenia opcje argumenty Opcje – nielicznymi wyjątkami – poprzedzone są znakiem minusa : „-”. Trzeba uważać gdyż pomiędzy literą opcji i „-” nie może być spacji. Argumentami są zazwyczaj nazwa lub nazwy plików. Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 8 Przykłady zastosowania $ uname Linux $ uname –a Linux goubet 1.2.1 #3 Sun Mar. 19 12:19:15 CST 1995 I 486 $ who root tty2 May 15 15:41 piotr tty1 May 15 15:14 $ who am i piotr tty1 May 15 15:14 $ date Fri May 9 15:36 GMT-0100 2001 $ cal 8 1953 August 1953 S M Tu W TH F S 1 2 3 4 5 6 7 8 9 1 0 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ passwd Old passwd : New passwd : Reenter password : Linux, w przeciwieństwie do DOS-a, rozróżnia małe i duże litery, dlatego też w wielu sytuacjach może nie być obojętne, czy naciskając konkretny klawisz wprowadzamy kod małej, czy dużej litery. Np zapisy „a” i „A” oznaczają fizyczne ten sam klawisz na klawiaturze (chociaż by uzyskać na ekranie „A” musimy wystukać tą literę przyciskając jednocześnie klawisz z napisem „Shift”). Zapis „a” ma wartość w kodzie ASCII = 97 natomiast zapis „A” ma w tym samym kodzie równowartość 65. 2.3 Użycie klawiatury Użycie klawiatury komputera jest proste i (z nielicznymi wyjątkami) dość klasyczne : Autor : Piotr Piętak GR PiS ds. informatyzacji Klawisz Linux Podstawy używania systemu jjjj-07-tt strona 9 [Enter] zatwierdza wykonanie polecenia Kombinacja – czyli jednoczesne nawiśnięcia klawisza [Ctrl] Polecenia i [c] przerywa wykonanie Kombinacja [Ctrl] i [d] kończy wystukiwanie danych, kiedy używamy takich poleceń jak write które zmuszają użytkownika do wystukiwania danych na ekranie. Kombinacja [Ctrl] i [s] przerywa wyświetlanie listingu na ekranie Kombinacja [Ctrl] i [q] umożliwia kontynuowanie wyświetlania listingu na ekranie Kombinacja [Ctrl] i [z] przerywa egzekucje polecenia Kombinacja [Ctrl] i [u] wymazuje linię poleceń, którą właśnie zapełniamy 2.5 Ćwiczenia Ćwiczenie 1. Wyświetl na ekranie kalendarz roku 1997. Ćwiczenie 2. Wyświetl kalendarz miesiąca września z roku 1752 i użyj polecenia „man” do objaśnienia informacji otrzymanych na ekranie. Ćwiczenie 3. Wyświetl date w formie dd-mm-rr (przykład : 05-02-95) Ćwiczenie 4. Objaśnij funkcje polecenie „touch”. Ćwiczenie 5. Przed rozpoczęciem następnego rozdziału opuść system, a następnie zaloguj się powtórnie Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 10 Rozdział 3 : Pliki i katalogi System plików Linuksa tworzy jedno spójne i nierozdzielne drzewo (dokładniej w kształcie odwróconego drzewa). Struktura plików porządkuje sposób w jaki pliki przechowywane są w pamięci masowej. Pliki uporządkowane są w katalogach. Każdy z nich może zawierać dowolna liczbę podkatalogów, z których każdy może zawierać pliki. Przedstawione poniżej katalogi znajdują się w katalogu głównym „/”. Linux dzieli pliki na trzy kategorie 1. katalogi, które zawierają pliki. 2. pliki specjalne które nie zawierają danych (np. plik urządzeń) 3. pliki regularne (normalne), które zawierają dane, tekst itd Skrócony schemat organizacji katalogów root / ------------------------------------------------------------------------------| | | | | home dev usr tmp etc | | | | | ---------------------------------------------| | | | | | pierre cathty bin lib passwd group | | | .profile vi lp Przedstawimy teraz to co niektóre katalogi zawierają – stanie sie to bardziej zrozumiałe po opanowaniu całości materiału. /bin katalog zawierający tzw pliki wykonywalne, które mogą być egzekwowane przez zwykłych użytkowników /tmp katalog zawierający pliki tymczasowe /etc katalog zawierający pliki dzięki którym możemy skonfigurować system Linux /usr katalog zawierający wszystkie aplikacja użytkowe Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 11 3.3 Atrybuty plików $ ls -l plika -rwxr-x--- 1 piotr nauka 265 maj 17 14:45 plika !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nazwa pliku (8) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!data i godzina ostatniej modyfikacji pliku (7) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! objętość (6) !!!!!!!!!!!!!!!!!!!!!!!!!!! grupa (5) !!!!!!!!!!!!!!!!! właściciel (4) !!!!!!!!!!!!!!!! liczba łączy (3) !!!!!!!!!!!! prawa (2) ! type pliku „-” kreska oznacza plik normalny „d” plik jest katalogiem. (1) Podstawowe atrybuty plików mogą być wyświetlone przy pomocy polecenia „ls” z dodatkiem opcji „-l”, która oznacza „długie” (long). 1. 2. 3. 4. 5. 1. Pierwsza zona licząca tylko jeden znak „ –„ wskazuje typ pliku. Symbole najczęściej spotykane są następujące : - dla oznaczenia plików zwykłych d dla oznaczenia katalogów c dla oznaczenia plików specjalnych (urządzenia znakowe) b dla oznaczenia plików specjalnych przypisanych (urządzenia blokowe) l dla oznaczenia łączy symbolicznych (2) Druga zona („rwxrx---”) składająca się z 9 znaków, Przykłady : -rwxr-xr-x 1 piotr oracle 3432 Maj 14 2002 15:51 plikb Plik regularny plikb liczący 3432 octet, ostatnia jego zmiana miała miejsce 14 maja, właścicielem pliku jest piotr, który należy do grupy oracle drwxr-xr-x 2 piotr windows 512 maj 4 2001 14:14 bin Katalog „bin’’ liczący 512 octet , ostatnia jego zmiana miała miejsce 4 maja 2001, właścicielem jego jest piotr, który należy do grupy windows Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 12 Wzór linii poleceń Pierwsze słowo linii poleceń jest zawsze poleceniem. Polecenia do zarządzania plikami Polecenie ls Wzór ogólny - ls opcja nazwa pliku opcje podstawowe -l wyświetla cechy pliku -a wyświetla wszystkie pliki -b wyświetla znaki, które nie mogą być wydrukowane -R wyświetla zawartość drzewa katalogowego -p rozróżnia katalogi -s wyświetla liczbę bloków Polecenie ls wyświetla nazwy plików i zgodnie z zaznaczoną opcją, niektóre ich atrybuty. Polecenie ls w formie najprostszej (to znaczy bez żadnej opcji ani nazwy pliku) Przykłady : (zakładamy, że znajdujemy się w katalogu domowym /home/piotr) - lista nazw plików, które znajdują się w katalog $ ls - najważniejsze cechy pliku mbox $ ls -l mbox - najważniejsze cechy plików znajdujących się w katalogu /home $ ls -l /home - wyróżnic nazwy katalogów w wyświetlonych plikach $ ls -p - liczba bloków zajętych przez pliki $ ls –s - wyświetlenie nazw wszystkich plików znajdujących się w katalogu Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 13 $ ls –a - zobaczyć czy nazwa pliku nie zawiera tzw „znaku kontroli” $ cat plik cat : cannot open plik $ ls -b p* p\030lik f45 f451 f847 - wyświetlenie całości drzewa katalogowego $ ls -R systeme - wyświetlenie cech katalogu /home $ ls -ld /home Kopia pliku – jego zniszczenie – zmiana nazwy pliku. Polecenie cp stosuje się do skopiowania pliku do pliku o innej nazwie lub w inne miejsce, a także do skopiowania wielu plików do katalogu. Polecenie rm służy do usuwania plików i katalogów Polecenie mv służy do zmiany nazwy lub przeniesienia pliku (plików) Przykłady : $ ls -l f* -rw-r--r-- 1 piotr sers 52 Maj 12 2002 17:41 fin1 (wyświetlenie plików, których nazwy zaczynają się od litery „f”) $ cp fin1 fin2 (utworzenie pliku fin2 czyli skopiowanie pliku fin1 do pliku fin2) $ cp /etc/passwd fin2 $ ls -l f* -rw-r--r-- 1 -rw-r--r-- 1 piotr piotr $ cp -i fin1 fin2 users users 52 Maj 12 2002 17:41 fin1 692 Maj 12 2002 17:58 fin2 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 14 cp : overwrite ‘f2’ ?y ,,y’’ oznacz ,,tak’’ to znaczy, że zamieniliśmy zawartość pliku fin2, który znowu jest identyczny z plikiem fin1 $ chmod a=r fin2 polecenie chmod patrz Aneks lub rozdział 3 $ ls -l f* -rw-r--r-- 1 piotr users 52 Maj 12 2002 17:41 fin1 -r--r--r-- 1 piotr users 52 Maj 12 2002 17:41 fin2 (czy widzisz zmianę w definicji plików fin1 fin2 ? jeśli tak to jaki ?) $ cp fin1 fin2 cp : cannot cerat regular file ,,fin2’’ : Permission denied (nie można zmienić pliku protegowanego) $ cp -f fin1 fin2 Polecenie cat Polecenie cat (catenate) umożliwia wyświetlenie zawartości pliku na ekranie. Może być także użyte do złączenia (konkatenacji) wielu plików. Polecenie file Polecenie file wyświetla typ zawartości pliku. Przykłady : $ file /etc/passwd /etc/passwd : ascii text $ file /usr/bin /usr/bin: directory $ file /usr/bin/banner /usr/bin/banner: i386 executable 3.1 Polecenia do zarządzania katalogami * pwd wyświetla katalog (bieżącego) w którym aktualnie pracujemy * cd służy do przemieszczania się w drzewie katalogów * ls wyświetla zawartość katalogu * ls -R wyświetla pliki drzewa katalogowego * mkdir tworzy katalog Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu * rmdir usuwa katalog * rm –r usuwa drzewo katalogowe * cp kopiuje pliki do katalogu wykonuje kopie drzewa katalogowego * du wyświetla objętość katalogu bieżącego * find poszukuje plików w drzewie katalogowym cp –r jjjj-07-tt strona 15 Polecenie pwd („print working directory”) wyświetla ścieżkę dostępu do katalogu bieżącego. Polecenie cd / -------------------------------------------------------------| | usr home | | -------------------------| | | pierre # znajdujesz się tutaj bin lib | ----------------------------| | bin src Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 16 Polecenie cd („Change Directory”) pozwala zmienić katalog. Można przejść do innego katalogu używając adresu bezwzględnego np cd /home/piotr lub stosując znaki skrótowe. Egzekucja polecenie cd bez argumentu, powoduje powrót do twojego katalogu domowego. Przykłady : $ pwd /home/piotr $ cd src $ pwd /home/piotr/src $ cd $ pwd /home/piotr 3.2 Ćwiczenia Ćwiczenie 1. W katalogu domowym utwórz katalog o nazwie – atelier -, a w nim utwórz dwa podkatalogi o nazwach : seria_1 i seria_2 Ćwiczenie 2. Wyświetl strukturę drzewa katalogowego co dopiero utworzonego używając dwóch różnych poleceń. Ćwiczenie 3. Wyświetl, w swoim katalogu domowym, listę plików, używając dwóch różnych poleceń, które umożliwią rozpoznanie katalogów. Ćwiczenie 4. Wykonaj kopie pliku /etc/passwd zmieniając jego nazwę na plik_pass. Ćwiczenie 5. Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 17 Zmień nazwę pliku plik_pass na password Ćwiczenie 6. Przenieś plik password do katalogu seria_1 (przypominam, że jest on podkatalogiem katalogu atelier) Ćwiczenie 7. Wykonaj kopie plików /etc/passwd i /etc/group do katalogu seria_2 (przypominam, że jest on podkatalogiem katalogu – atelier) znajdując się a) w katalogu /etc. b) w katalogu seria_2 c) w obojętnie jakim katalogu Ćwiczenie 8. Wyselekcjonuj podkatalog seria_1 jaka katalog pracy i wyświetl – znajdując się w nim – pliki znajdujące się w podkatalogu seria_2 Ćwiczenie 9. Aby utworzyć plik o nazwie „dokument” wykonaj następujące polecenie $ touch dokument Wyświetl jego atrybuty używając poleceń : ls i file Ćwiczenie 10. Znajdujesz się w katalogu domowym – wyświetl atrybuty, w tym także wielkość liczoną w blokach, wszystkich plików, także tych, których nazwa zaczyna się od „.” Ćwiczenie 11. Wyświetl atrybuty twojego katalogu domowego. Ćwiczenie12. Jakie znasz polecenia które umożliwiają porównanie plików ? Użyj jednego z nich do porównania pliku zawierającego twój profil użytkownika z plikiem profilu innego użytkownika. Ćwiczenie 13. Utwórz w swoim katalogu domowym, katalog o nazwie „przykłady” i skopiuj do niego drzewo katalogowe Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 18 Autor : Piotr Piętak GR PiS ds. informatyzacji Rozdział 4 : Linux Podstawy używania systemu jjjj-07-tt strona 19 Bash Po zalogowaniu się każdy użytkownik współpracuje z systemem operacyjnym przy pomocy poleceń, które zanim zostaną wyegzekwowane są interpretowane przez tzw interpretator poleceń, który w wypadku Linuxa nazywa się bash. Interpreter poleceń jest pośrednikiem (nazwa informatyczna interfejs) między użytkownikiem i systemem operacyjnym i jego rolą jest tłumaczenie poleceń wystukiwanych przez użytkownika tak aby system operacyjny je zrozumiał. Bash posiada do swojej dyspozycji język programowania, którego zasady będziemy stopniowo poznawali i który różni się zasadniczo od klasycznych języków informatycznych takich jak Pascal, Java czy C++. Na czym ta różnica polega ? Fazy powstawania program informatycznego pisanego w klasycznych językach programowania (wymienionych powyżej) można przedstawić w następujący sposób : Algorytm jest precyzyjnym opisem operacji, które tworzą program, pisany jest w języku macierzystym twórcy programu np polskim, francuskim , algorytm można porównać do scenariusza lub treści książki Kod źródłowy jest zapisem algorytmu w języku zrozumiałym przez komputer, kod źródłowy jest formą w jakiej wyrażono algorytm kompilacja jest automatycznym tłumaczeniem kodu źródłowego na język macierzysty komputera który składa się tylko z dwóch znaków : 0 i 1, tylko program skompilowany może być egzekwowany system operacyjny Dekompilacja polega na odtworzeniu kodu źródłowego – lub algorytmu – na podstawie kodu bitowego W bashu mamy do czynienia tylko z dwoma fazami : 1. Pisanie algorytmu (1) Pisanie kodu źródłowego Czyli program pisany w bashu nie podlega fazie kompilacji i dlatego bash nazywamy interpretowalnym językiem programowania. Programy napisane w bashu nazywamy skryptami. W tym momencie naszego wykładu wprowadzimy – centralne do zrozumieniu funkcjonowania systemu Linux – pojęcie procesu. Proces powstaje w momencie egzekucji programu (ale nie każdego o czym ponżej). Powstanie procesu odpowiada egzekucji pliku umieszczonego w pamieci centralnej. Każdy użytkownik w momencie logowania się do systemu prowokuje powstanie procesu. Ten proces, zdefiniowany w pliku / etc/passwd, jest interpreterem poleceń basha. Każdy proces ma przypisany numer, nazywany PID (Process Identifier). Proces interpretera poleceń będąc wylansowany w momencie zalogowania się użytkownika umożliwia wykonywanie innych poleceń. W tym wypadku, proces odpowiadający egzekucji polecenia X nazywamy procesem syna, natomiast proces interpretatora poleceń, procesem rodzicielskim. Polecenia w Linuksie dzielą sie na: 1. polecenia wewnętrzne, które są częścia integralną basha: egzekucja polecenie wewnętrzne nie prowokuje powstania procesu w pamięci komputera Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 20 2. polecenia zewnętrzne , które są niezależne od basha i które znajdują sie w różnych katalogach (/usr/sbin, /sbin,...), egzekucja każdego polecenia zewnętrznego prowokuje powstanie procesu w pamięci komputera. Bash uzywa tzw znaków specjalnych, których znaczenie uzytkownik systemu operacyjnego musi rozumieć, a które służą do generowania nazw plików (*,?, []) lub do modyfikacji postępowania danego polecenia (<,>, |). W momencie logowania bash interpretuje pliki inicjalizujące sesje: /etc/profile i .bash_profile, ten ostatni plik każdy użytkownik – pod warunkiem, że opanował wystarczająco Linuksa – może zmodyfikować, dorzućić do niego nowe funkcje itd. 4.1 Znaki uogólniające Znaki uogólniające – jeden lub wiele znaków używanych do tworzenia nazw plików – pozwalają użytkownikowi wystukać w linii poleceń niekompletną nazwę pliku. Innymi słowy przy pomocy znaków uogólniających tworzy się symboliczny wzorzec pasujący do większej liczby plików. Wyróżniamy trzy rodzaje znaków uogólniających : * oznacza dowolnej – również zerowej – długości łańcuch znaków ? dowolny pojedynczy znak [..] użycie nawiasów kwadratowych może przybrać wiele form [azs] oznacza, literę „a” lub literę „z” lub literę „s” poszukiwany ciąg znaków musi zawierać jedną z tych liter [0-9] oznacza liczbę całkowitą ze zbioru od 0 do 9 [!rty] oznacza każdy znak oprócz litery r, t, y [!0-9] oznacza każdy znak, który nie jest liczbą Przykłady : Przypuśćmy, że w nasz katalog domowy zawiera następujące pliki : p1 p2 p3 p58 p45 pb pz $ ls p[1-3] p1 p2 p3 a1kb2lc4k art54lnm012 p+ Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 21 $ ls p[123] p1 p2 p3 Jak widzimy ten sam rezultat możemy uzyskać stosując różne formy znaków uogólniających. Czy rezultat widoczny powyżej można uzyskać w jeszcze inny sposób? $ ls [!123bz] p+ $ ls a*b*c* a1kb2lc4k $ ls p[0-9]* p1 p2 p3 p58 p45 $ echo p* p1 p2 p3 p58 p45 pb pz p+ $ echo p? p1 p2 p3 pb pz p+ 4.2 Protekcja znaków uogólniających i specjalnych Znaki uogólniające są podgrupą znaków specjalnych, które dla powłoki shella mają inne znaczenie niż znak literowy. Wyróżniamy następujące znaki specjalne : * ? \ [] <> & | / | ‘ ` ” $ ! % ( ) { } @ Manipulowanie znakami specjalnymi, których znaczenie będziemy stopniowo poznawać, jest umiejętnością trudną i wymagającą dużo ćwiczeń i praktyki, dlatego też poświecimy im – jak już wspomniałem we wstępie - dużo miejsca i czasu, bowiem ich dobra znajomość jest niezbędna do sprawnego posługiwania się systemem Unix, Linux, a także językami używanymi do programowania w Internecie (HTLM, Perl, PHP itd). Znaki specjalne mogą wyrażać swoje znaczenie lateralne pod warunkiem, że są neutralizowane. Wyróżniamy następujące znaki neutralizujące, \ znak ten neutralizuje każdy znak znajdujący się natychmiast po nim np \* czyli wyszukuje nie obojętnie jaki ciąg znaków, lecz szuka „*” ”…….. ” neutralizuje wszystkie znaki specjalne oprócz : $ \ ‘ Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 22 ‘……..‘ neutralizuje wszystkie znaki specjalne oprócz niego samego Przykłady : $ echo \*\*\* dzien dobry \*\*\* *** dzien dobry *** rezultat polecenia – czy możesz odpowiedzieć dlaczego ? $ echo \\ \ rezultat polecenia $ echo ’<<< dzien dobry>>>’ <<<dzien dobry>>> $ echo ’ podwoje ‘’ ’ podwoje ‘’ $ echo ‘’***ekran jest typu $TERM’’ 4.3 Przekierowania Jak już pisaliśmy na początku tego rozdziału proces powstaje w momencie egzekucji programu. Powstanie procesu odpowiada egzekucji pliku umieszczonego w pamięci centralnej. W momencie powstania procesu interpretator poleceń tworzy automatycznie mechanizm umożliwiający wprowadzanie danych z klawiatury (wejście standardowe) oraz mechanizm pojawiania się tych danych na ekranie (wyjście standardowe). Interpreter tworzy także wyjście standardowe dla błędów. Wyjściem standardowym błędów jest również ekran. Standardowe wejścia-wyjścia mogą być skierowane do pliku, potoku (mechanizm potoku poznamy w następnym podrozdziale). Skierowanie standardowego wyjścia polega na wysłaniu tekstu wyświetlanego na ekranie do pliku. Wszystkie standardowe wejścia-wyjścia każdego procesu można także skierować do odpowiednich plików i proces zamiast szukać informacji w sygnałach wysyłanych z klawiatury, będzie ich poszukiwał w odpowiednich plikach. Mechanizm ten przedstawiamy na rysunku. Wejściu standardowemu przypisany jest przez system numer 0. Wyjściu standardowemu przypisany jest numer 1. Wyjściu błędów przypisany jest numer 2. Zdefiniujmy teraz podstawowe operatory kierujące (przełączające) standardowe wejścia-wyjścia : > plik_k wyjście standardowe jest skierowane do pliku plik_k. Jeśli plik_k wcześniej nie istniał, to zostanie to zostanie utworzony. Jeśli już istniał to jego zawartość zostanie wymazana (ziszczona). Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 23 >> plik_k w tym wypadku wyjście standardowe zostanie dołączone do plik_k jeśli on już istniał. < plik_k wejściem standardowym nie będzie klawiatura, tylko plik_k 2> plik_k wyjście standardowe błędów będzie skierowane do pliku_k. Jeśli plik wcześniej nie istniał to zostanie utworzony. Jeśli istniał jego zawartość zostanie wymazana . 2>> plik_k jeśli plik_k istniał to jego zawartość nie będzie wymazana 2>&1 skierowuje wyjście standardowe błędów do tego samego pliku co wyjście standardowe Przykłady : $ ls > tymczasowy #zapisanie listy plików katalogu bieżącego do pliku „tymczasowy” $ ls >> plikb $ echo # dopisanie do pliku plikb listy plików z katalogu bieżącego =================== > rezultat $ date >> rezultat $ echo =================== > rezultat #plik „rezultat’’ będzie zawierał następujące informacje $ cat rezultat =================== Sun May 15 22:41:48 GMT-0200 2001 =================== 4.4 Potoki Potok jest ciągiem poleceń prostych lub złożonych, które są odseparowane od siebie przez znak |. Rezultat każdego polecenia – z wyjątkiem ostatniego – jest traktowane przez polecenie następne, jako jego standardowe wejście. Innymi słowy - potok – jest mechanizmem komunikacji pomiędzy różnymi poleceniami, który im pozwala wymieniać między sobą dane. Prześledźmy funkcjonowanie mechanizmu potoków na konkretnych przykładach. Wykonajmy następujące polecenie : $ ls -l /home drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -drwxr-xr-x 2 2 5 1 2 piotr ola piotr piotr piotr oracle oracle oracle oracle oracle 1024 512 1024 1536 1325 May May May May May 15 25 17 18 15 2003 test 2003 katalog5 2003 test1 2003 plikb 2003 plikc Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 24 Rezultatem egzekucji polecenia - ls -l - jest lista zarówno plików jak katalogów, otóż chcielibyśmy wiedzieć ile ich jest ? Zastosowanie mechanizmu potoków umożliwi nam ich policzenie. Wiemy, że powyższa lista jest wejściem standardowym następnego polecenia, które wykona stosowne obliczenie. Tym poleceniem – jak by może pamiętacie – jest : wc -l . Tak więc by policzyć pliki katalogu domowego musimy wykonać następujące polecenie „potok” : $ ls - l | wc -l 5 Wyobraźmy sobie teraz, że chcemy wyświetlić na ekranie wszystkie pliki zawarte w katalogu /usr, podejrzewamy (dlaczego ?), że może być ich dużo. Co zrobić by ich lista nie „przedefilowała”, bez zatrzymania na ekranie co uniemożliwiłoby nam spokojne jej odczytanie. Otóż w tym wypadku też możemy zastosować mechanizm potoku : $ ls –l /usr | more #jak inaczej możemy obejrzeć w/w listę stronicę po stronicy ? Jak zapewne zauważyliście na ekranie wyświetlany jest tylko rezultat końcowy „potoku”, dane pośrednie np rezultat polecenia : ls –l z „potoku” : ls -l | wc -l , giną. Czy nie ma żadnego sposobu ich zapisania np w jakimś oddzielnym pliku ? Mechanizm zapisywania w plikach rezultatów poszczególnych poleceń wchodzących w skład „potoku” uzyskujemy przy pomocy polecenia : tee nazwa_pliku . Jeśli chcemy zapisać rezultat polecenia : ls -l to nasz potok przybierze formę następującą : $ ls -l | tee plikb | wc -l Mechanizm zapisywania w plikach rezultatów poszczególnych poleceń wchodzących w skład „potoku” nazywamy rozgałęzieniem „potoku”. Rezultat „potoku” może być uzyskany także przy pomocy odpowiednich skierowań : Skierowanie do pliku Użycie „potoku” $ polecenie1 > plik1 polecenie1 | polecenie2 $ polecenie2 < plik1 $ rm plik1 $ polecenie1 > plik_a $ polecenie2 < plik_a > plik_b $ polecenie3 < plik_b polecenie1 | polecenie2 | polecenie3 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 25 Mechanizm funkcjonowania potoków wymaga od użytkownika zapamiętania nie tylko znaczeń poszczególnych poleceń, ale także pamiętania ich rezultatów. Podamy teraz kilka „potoków’’, których interpretacje rezultatów pozostawiamy czytelnikowi. $ who | wc -l $ cat /etc/passwd | wc -l $ cat /etc/group | wc -l $ cat /etc/passwd | grep /bin/bash | wc -l $ ls -l | grep ‘’rwxr-xr-x’’ | more Zgrupowania poleceń Linux umożliwia nam wystukanie wielu poleceń jednocześnie, pod warunkiem, że polecenia te będą oddzielone między sobą „ ; ”. Polecenia są wykonywane w takim przypadku po kolei, niezależnie od siebie. Przykład : $ ls; pwd; date drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -drwxr-xr-x 2 2 5 1 2 piotr ola piotr piotr piotr #polecenia są wykonywane po kolei od lewej do prawej strony oracle oracle oracle oracle oracle 1024 512 1024 1536 1325 May May May May May 15 25 17 18 15 2003 test 2003 katalog5 2003 test1 2003 plikb 2003 plikc /home/piotr Fri May 15 15:14:38 GMT-0100 2003 Polecenie te mogą być zgrupowane przy pomocy nawiasów i skierowane do pliku lub użyte w mechanizmie „potoku” $ ( ls ; pwd ; date ) > plik_wyjscie Istnieją także w Linuksie operatory, które warunkują wykonanie danego polecenia w zależności od tego jaki rezultat przyniesie wykonanie polecenia je poprzedzającego. Operator && pozwala wykonać polecenie tylko w tym wypadku jeżeli egzekucja polecenia je poprzedzającego została wykonana bez błędu. Przykład : Autor : Piotr Piętak GR PiS ds. informatyzacji $ cd projekt && Linux Podstawy używania systemu jjjj-07-tt strona 26 ls * Operator || umożliwia wykonanie danego polecenia tylko w tym wypadku jeżeli egzekucja polecenia je poprzedzającego została wykonana z błędem Przykład : $ cd projekt || mkdir projekt Wyjaśnienie : chcemy przejść do katalogu „projekt” , lecz jeżeli on nie istniej to go tworzymy 4.5 Ćwiczenia Ćwiczenie 1. Przemieszcz się ze swego katalogu bieżącego do katalogu /usr/bin i wyświetl listę plików których nazwa składa się dokładnie z 4 znaków. Ćwiczenie 2. Wyświetl listę plików, których nazwy zaznają się tylko na litery od a do e. Ćwiczenie 3. Wyświetl listę plików, których nazwy posiadają literę „t” na drugiej pozycji. Ćwiczenie 4. Użyj polecenia „echo” do wyświetlenia następującej informacji na ekranie twojego komputera : Ćwiczenie 5. Wyświetl na ekranie zdanie „dzień dobry pani” wprowadzając trzy polecenia na trzech liniach Ćwiczenie 6. Wróć do swego katalogu domowego i utwórz plik o nazwie info.txt zawierający datę i godzinę. Wykonaj polecenie „cat info.txt” aby wyświetlić na ekranie zawartość pliku info.txt. Ćwiczenie 7. Używając tego samego mechanizmu, umieść rezultat polecenia „ls” w pliku info.txt. Wyświetl plik. Co zobaczysz ? Ćwiczenie 8 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 27 Wykonaj powtórnie ćwiczenie 6 i dorzuć do zawartości pliku info.txt, rezultat polecenia „ls”, wyświetl plik powtórnie. . Ćwiczenie 9. Użyj polecenia „mail” Ćwiczenie 10. Wyświetl na ekranie, strona po stronie listę plików z katalogu /etc. Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 28 Rozdział 5 : Prawa Po przestudiowaniu tego rozdziału, czytelnik powinien umieć rozpoznawać i modyfikować uprawnienia wszystkich rodzajów plików oraz definiować prawa automatycznie. Szczególną uwagę poświęcimy prawom katalogów. W rozdziale tłumaczymy także zarządzanie grupami użytkowników. 5.1 Zarządzanie prawami System Linux jest systemem wielodostępnym w którym dostęp do plików jest regulowany przez prawa Polecenia umożliwiające zarządzaniem uprawnieniami plików, katalogów, użytkowników : ls -l chmod : umożliwia zmienienie praw przydzielonych plikowi umask : automatyczne przydzielanie uprawnień chgrp : id : wyświetla identyfikacje użytkownika su : umożliwia zmianę identyfikacji użytkownika newgrp : umożliwia zmienienie grupy użytkownikowi : wyświetla praw plików 5.2 Poznanie atrybutów pliku (ls –l) $ ls -l plika (1) -rwx|r-x|--- 1 piotr nauka 265 maj 17 14:45 plika !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nazwa pliku (8) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!data i godzina ostatniej modyfikacji pliku (7) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! objętość (6) !!!!!!!!!!!!!!!!!!!!!!!!!!! grupa (5) !!!!!!!!!!!!!!!!! właściciel (8) !!!!!!!!!!!!!!!! liczba łączy (3) !!!!!!!!!!!! prawa (2) ! typ pliku „-” kreska oznacza plik normalny „d” plik jest katalogiem. (1) a b c (1) -|rwx|r-x|--- Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 29 a prawa właściciela pliku b prawa grupy do której należy właściciel c prawa reszty użytkowników systemu Jak widzimy aby kontrolować dostęp do plików, Linux dzieli użytkowników systemu na trzy kategorie : 6. właścicieli plików 7. członków grupy do której należy właściciel grupy 8. innych użytkowników systemu Każda kategoria użytkowników dysponuje trzema prawami : 9. prawem lektury („read”), które umożliwia czytanie pliku, prawo te umożliwia np. wykonanie kopi pliku 10. prawem pisania („write”), które umożliwia modyfikacje pliku 11. prawem egzekucji pliku („execute”)które umożliwia traktowanie pliku jako polecenia (lub jego zbioru). Prawo to ma sens tylko dla skryptów i programów. 5. 3 Modyfikacja praw pliku (1) Polecenie chmod umożliwia właścicielowi pliku lub administratorowi systemu zmienić uprawnienia pliku. Jego forma jest następująca $ chmod u-w plik1 Ciąg znaków u-w symbolizuje zmianę praw pliku , na pierwszym miejscu (w naszym przykładzie „u”) określa się kto ma prawo korzystać z pliku, dysponujemy następującymi symbolami symbolizuje właściciela pliku u g symbolizuje grupę do której plik jest przypisany reszta użytkowników systemu o a symbol ten oznacz : wszystkich u+g+o Na drugim miejscu umieszcza się symbole zmiany praw : + dorzucamy prawo - likwidujemy prawo = przypisujemy prawo Na trzecim miejscu umieszczamy symbole, czego dotyczy prawo : r prawo czytania pliku w prawo modyfikacji pliku Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 30 x prawo jego egzekucji Przykłady : Likwidujemy prawo modyfikacji pliku dla jego właściciela : $ chmod u-w plik1 Dorzucamy prawo modyfikacji dla grupy do której jest przypisany plik : $ chmod g+w plik1 5.4 Modyfikacja praw pliku (2) $ chmod 400 200 100 040 020 010 004 002 001 740 plikb prawo czytania dla właściciela pliku prawo pisania dla właściciela pliku prawo egzekwowania pliku przypisane jego właścicielowi prawo czytania dla grupy użytkowników prawo pisania dla grupy użytkowników prawo egzekwowania pliku przypisane grupie użytkowników prawo czytania przypisane innym użytkownikom prawo pisania przypisane innym użytkownikom prawo egzekwowania przypisane innym użytkownikom Polecenie chmod pozwala zmienić prawa przy pomocy wartości wyrażonych w kodzie binarnym np jak nadać wszystkie prawa właścicielowi pliku plikb, prawa do czytania i egzekwowania tego pliku grupie do której należy jego właściciel i prawo do czytania pliku innym użytkownikom systemu ? $ chmod 754 plikb System dziesiętny rózni się zasadniczo od swoich poprzedników (np zapisu rzymskiego, systemu Azteków opartego na 5 itd) . Za Charlesem Petzold można go scharakteryzować w następujący sposób : 1. dziesiętny system liczbowy jest systemem pozycyjnym co oznacza, że określona cyfra reprezentuje różną wartość zależnie od swego miejsca w liczbie. Miejsce cyfry jest więc równie, jak jej rzeczywista wartość.. Zarówno liczba 200 jak i 20000 mają na początku tylko jedną dwójkę, jednak wiemy, że dwadzieścia tysięcy jest większe od dwustu Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 31 2. praktycznie wszystkie systemy powstałe przed systemem dziesiętnym (lub indoarabskim), mają coś czego on nie ma, a mianowicie specjalny symbol oznaczający liczbę 10 (np X w rzymskim). W systemie dziesiętnym nie ma specjalnego symbolu 10. 3. Wszystkim systemom liczbowym brakuje symbolu 0. System dziesiętny natomiast posługuje się – jako jedyny – symbolem zera. Zero – choć może nam to się wydawać dziwne – jest bez wątpienia jednym z najważniejszych wynalazków w historii liczb i matematyki. Dzięki niemu możemy rozróżniać liczby biorąc pod uwagę ich zapis pozycyjny, 45 od 405 czy od 450. Zero ułatwia także wiele operacji matematycznych, które są niewygodne w innych systemach : np mnożenie czy dzielenie. Rozłóżmy na czynniki pierwsze liczbę 5854 którą wymawia się jako „pięć tysięcy osiemset pięćdziesiąt cztery” co można zapisać w następujący sposób : pięć tysięcy osiemset Przedstawienie I pięćdziesiąt cztery W postaci liczbowej możemy naszą liczbę przedstawić w następujący sposób : Przedstawienie II 5854 = 5000 + 800 + 50 Zapis ten może być jeszcze bardziej szczegółowy : Przedstawienie III 5854 = 5×1000 + 8×100 + 5×10 + 4×1 Można ten zapis przedstawić używając potęg 5854 = 5×10³ + Przedstawienie IV 8×10² + 5×10¹ + 4×10º Pamiętaj, że dowolna liczba do potęgi 0 równa się 1 + 4 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 32 Każda pozycja w wielocyfrowej liczbie ma szczególne znaczenie, przypatrz się uważnie poniższemu rysunkowi Potęga 6 5 4 3 2 1 0 5|8|5|4|8|9|3 !!!!!!!!!!!!!!!!!!!! liczba jedności !!!!!!!!!!!!!!!! liczba dziesiątek !!!!!!!!!!!!! liczba setek !!!!!!!!! liczba tysięcy !!!!!! liczba dziesiątek tysięcy !!! liczba setek tysięcy ! liczba milionów Przedstawienie V Każda pozycja - i jest to zasada najważniejsza - odpowiada określonej potędze dziesięciu. Jednak wniosek jest następujący : notacja pozycyjna, którą powyżej przedstawiliśmy działa także w innych nie dziesiętnych systemach. System dziesiętny posługuje się dziesięcioma symbolami : 2. 1 2 3 4 5 6 7 8 9 (podstawa systemu = 10) System binarny tylko dwoma 0 1 (podstawa systemu = 2) Spróbujmy zastosować zasady notacji pozycyjnej do jakiejkolwiek liczby wyrażonej kodem binarnym. Podstawą systemu dziesiętnego jest liczba dziesięć (10 cyfr). Podstawą systemu binarnego jest liczba dwa (dwie cyfry) Stąd wniosek, że wartość Potęga 3 2 1 0 1 0 1 0 5854 = 5×10³ + 8×10² + 5×10¹ + 4×10º 1×2³ + 0×2² + 1×2¹ + 0×2º = 10 Powróćmy teraz do nadawania praw przy pomocy wartości wyrażonych przez kod binarny Prawa dla użytkownika, prawa dla grupy, prawa dla innych użytkowników systemu wyrażane są w formie trzech liter np. nadanie wszystkich możliwych praw właścicielowi pliku zapisujemy rwx rwr---- które w formie binarnej będzie miało wartość w formie binarnej będzie miało wartość 111 = 110 100 000 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 33 Podsumujmy : Potęga 2 1 0 2 1 0 2 1 0 1 1 0 | 1 1 1| 0 0 1 = 671 1 10 1 4 +2+0=6 111 4 +2+ 1 = 7 001 0 + 0+1 = 1 System dziesiętny 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 system binarny 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 system octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 5.5 Prawa katalogów $ ls –ld katalog drwxr-x--- 1 piotr grupa 265 czerwiec 20 14:00 katalog r prawo lektury plików zawartych w katalogu w prawo tworzenia i usuwania plików w katalogu system hexa 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 34 x prawo dostępu do plików w katalogu Mechanizm lektury i nadawania praw katalogowi jest analogiczny do tego, który używamy w stosunku do plików. Jednak prawa katalogów interpretujemy inaczej i zrozumienie tego jest konieczne do odczytywania, usuwania i tworzenia plików, które katalog zawiera. 4 Prawo lektury katalogu pozwala poznać listę plików, które katalog zawiera, przy pomocy polecenia ls możemy (posiadając to prawo) wyświetlić pliki na ekranie. 5 Prawo egzekucji pozwala na uzyskanie dostępu do plików zawartych w katalogu 6 Prawo tworzenia plików – ma sens tylko wtedy gdy posiadamy jednocześnie prawo dostępu do plików (czy możesz wytłumaczyć dlaczego ?) . Prawo to umożliwia usuwanie starych i tworzenie nowych plików Możemy wyróżnić następujące kombinacje praw które może posiadać użytkownik * rwx użytkownik posiada wszystkie prawa * r-x użytkownik ma prawo dostępu do plików katalogu * --- użytkownik nie ma żadnych praw * --x użytkownik posiada prawo dostępu do plików, których nazwy zna Przypomnijmy teraz podstawowe polecenia używane do zarządzania katalogami : mkdir (make direktory ) – przy pomocy tego polecenia tworzymy katalogi. Załóżmy, ze znajdujemy się w katalogu domowym /home/piotr $ mkdir katalog1 katalog2 (utworzyliśmy katalogi, które znajdują się w katalogu Domowym) Chcemy teraz utworzyć w katalogu - katalog1 - podkatalog o nazwie cwiczenia, ale nadal Będąc w katalogu domowym $ mkdir katalog1/cwiczenia Czy wiesz jak można to zrobić inaczej ? rmdir (remove direktory) - przy pomocy tego polecenia usuwamy katalogi Załóżmy, że chcemy usunąć katalog o nazwie katalog2 , który przed chwilą utworzyliśmy $ rmdir katalog1 katalog2 po egzekucji tego polecenia otrzymamy na ekranie następujący napis $ rmdir: katalog1: Directory not empty czyli polecenie rmdir usunęło tylko katalog2 Pusty Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 35 Jeżeli wykonamy polecenie ls $ ls katalog1 W jaki sposób go usunąć? Otóż do usuwania katalogów z zawartością służy polecenie rm -r nazwa katalogu jest to polecenie bardzo niebezpieczne w wypadku jeżeli po opcji -r zapomnisz wpisać nazwę katalogu, który chcesz usunąć Czy wiesz co się może wtedy stać ? 5.7 Zarządzanie grupami Polecenia : ls –l polecenie to wskazuje grupę do której przynależy plik chgrp newgrp polecenie to umożliwia, podczas sesji, zmienić przynależność pliku z grupy zdefiniowanej w pliku /etc/passwd, na początku sesji id pozwala poznać aktualną grupę polecenie to zmienia przynależność pliku z np grupy a d o grupy b Użytkownicy przynależą do jednej lub wielu grup i prawa dostępu do plików, których nie są właścicielami, zależą od tej przynależności. Pliki utworzone przez użytkownika należą do jego aktualnej grupy. Grupa ta jest inicjalizowana w momencie otwarcia sesji, dzięki plikowi etc/passwd Plik użytkowników /etc/passwd Lista użytkowników systemu znajduje się w pliku /etc/passwd , który jest dostępny dla wszystkich użytkowników (to znaczy może być wyświetlony na ekranie przez wszystkich) i który składa się z następujących kolumn : 1. nazwa użytkownika 2. znak x 3. numer użytkownika 4. numer grupy 5. komentarz 6. katalog domowy Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 36 7. interpreter poleceń (shell) Kolumny rozdziela znak dwukropka : 1 234 5 6 7 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin shutdown:x:6:0:shutdown:/sbin:/sbin:/shutdown halt:x:7:0:halt:/sbin:/sbin:/halt ftp:x:14:50:FTP User:/home/ftp: nobody:x:99:99:Nobody:/: ola:x:519:504:Ola Pawlak:/home/ola:/bin/bash Gdy przy pomocy polecenia useradd administrator definiuje nowego użytkownika i jego konto, tworzony jest automatycznie jego katalog domowy, o nazwie takiej samej jak nazwa użytkownika oraz definiowane są jednocześnie inne parametry, m.in. określona jest powłoka z jaką użytkownik będzie pracował po zalogowaniu się. Gdy jesteśmy zalogowani jako administrator, możemy wykonać następujące polecenie # useradd piotr Wtedy do pliku /etc/passwd zostanie dorzucone konto o nazwie piotr którego katalogiem domowym będzie /home/piotr root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin shutdown:x:6:0:shutdown:/sbin:/sbin:/shutdown halt:x:7:0:halt:/sbin:/sbin:/halt ftp:x:14:50:FTP User:/home/ftp: nobody:x:99:99:Nobody:/: piotr:x:518:504:Piotr Pietak:/home/piotr:bin/bash ola:x:519:504:Ola Pawlak:/home/ola:/bin/bash Plik grupy użytkowników /etc/group Grupa użytkowników zawiera pewną liczbę użytkowników którzy mają dostęp do tych samych plików. Grupa ta definiowana jest w pliku /etc/group i składa się z następujących kolumn : nazwa grupy. kolumna pusta lub zawierająca znak x albo * numer grupy lista użytkowników, członków grupy Przykład Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 37 $ cat /etc/group root:x:0:root bin:x:1:root,bin,demon demon:x:2:root,bin,demon sys:x:3:root,bin,adm Modyfikacji tego pliku może dokonywać tylko administrator systemu Przykłady $ id uid=101(piotr) gid=1(inni) czy wiesz do jakiej grupy należy - piotr ? Jak zmieniamy przynależność pliku do grupy ? $ ls -l plika -rw-r- - r-- 1 piotr inni 99 lipiec 18 14:00 plika $ chgrp studia plika -rw-r—r-- 1 piotr studia 99 lipiec 18 14:00 plika Ćwiczenia 4.1 Ćwiczenie 1. Przy pomocy polecenia touch utwórz plik o nazwie : obraz.txt $ touch obraz.txt Nie poznając uprawnień pliku, nadajcie wszystkim użytkownikom prawa do czytania tego pliku na dwa sposoby (symboliczny i numeryczny), następnie wyświetl te prawa. Ćwiczenie 2. Jakie będą konsekwencje następującego polecenia : $ rm obraz.txt Ćwiczenie 3. Jakie będą uprawnienia pliku obraz.txt, po wykonaniu następującego polecenia : $ chmod u+wx,g+w,o-r obraz.txt Ćwiczenie 4. Przypuśćmy, że polecenie ls -l /home/ola/prog.sh wyświetla na ekranie następującą linie Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 38 -r-xr-x—x 2 ola personel 452460 maj 25 2002 /home/ola/prog.sh Kto może wyegzekwować ten program ? Ćwiczenie 5. Polecenie ls -ld /home/piotr wyświetla na ekranie : drwxrwxr-x 2 piotr konto 512 maj 15 2002 /home/piotr Jacy użytkownicy mają uprawnienia do tworzenia lub wymazywania plików w tym katalogu ? Ćwiczenie 6. Czy Piotr ma prawo wymazać ze swego katalogu domowego plik, który posiada następujące atrybuty : -r--------- 2 ola konto 2416 Maj 2 2002 plik.txt Ćwiczenie 7. Utwórz katalog o nazwie „prywatne” w ten sposób by inni użytkownicy, należący do tej samej grupy, nie mieli do niego dostępu Ćwiczenie 8. Wykonaj polecenie, które umożliwi użytkownikom z twojej grupy „czytanie” katalogu „prywatne”. Ćwiczenie 9. Czy możesz zmienić nazwę swego katalogu domowego ? dlaczego ? Ćwiczenie 10. Jaką wartość oktalną użyć by w momencie nadawania praw otrzymać : drwxr-x--- dla katalogu -rw-r----dla pliku Ćwiczenie 11. Podłącz się do grupy „bin”. Wytłumacz rezultat polecenia. Ćwiczenie 12. Katalog „prywatne” posiada następujące atrybuty : $ ls -ld prywatne drwxr-x--- 2 piotr konta 1024 czerwiec 20 10:35 prywatne Wykonaj polecenie, które dołącza grupę „zaliczka” (której jesteś członkiem) do katalogu „prywatne” Ćwiczenie 13. Czy Piotr może zmienić grupę pliku plik.txt, który się znajduje w jego katalogu domowym ? $ ls -l plik.txt -r-------- 2 ola konto 2416 Maj 10 2002 plik.txt Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu Ćwiczenie 14. Jakich informacji dostarczają następujące polecenia : $ who am i $ id Ćwiczenie 15. Sprawdź czy w twoim systemie możesz pisać na ekranie operatora „/dev/console” jjjj-07-tt strona 39 Autor : Piotr Piętak GR PiS ds. informatyzacji Rozdział 6 : Linux Podstawy używania systemu jjjj-07-tt strona 40 Filtry do czego służą ? grep poszukiwanie ciągu znaków w pliku cut sort more wc tail head nl tr selekcjonuje (znajduje) pojedyńcze znaki lub zony uporządkowanie, fuzja plików wyświetlanie pliku strona po stronie liczy linie, słowa, i znaki wyświetla koniec pliku wyświetla koniec pliku numeruje linie pliku prosta modyfikacja pliku Czym jest filtr ? Jest on poleceniem, które wykonuje pewno działanie na plikach zawierających tekst. Rezultat tego działania, który jest także tekstem, wyświetlany jest na ekranie (chociaż nie tylko). Powiązanie między sobą wielu filtrów (czyli jednoczesna egzekucja kilku poleceń) jest możliwa dzięki użyciu metody zwanej przekierowaniem lub innej metody nazywanej „potokiem”. Zapoznamy się teraz z podstawowymi filtrami używanymi w systemie Linux. Przykłady : $ cat poemat Opadają kwasem wina Liście dębu i czereśni I zza wody psi przyleśni Szczekają jak mandolina Bałałajkę psiej tęsknoty Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty $ wc -l poemat # polecenie to liczy liczbę lin w wierszu „poemat” 8 poemat $ ls | wc -l #liczy liczbę plików znajdujących się w katalogu – dlaczego ? – spróbuj znaleźć polecenie, które wyświetliłoby liczbę znaków w katalogu 5 $ nl poemat #numeruje linie poematu Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu 1 2 3 4 Opadają kwasem wina Liście dębu i czereśni I zza wody psi przyleśni Szczekają jak mandolina 5 6 7 8 Bałałajkę psiej tęsknoty Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty $ tail -3 poemat jjjj-07-tt strona 41 #wyświetla 3 ostatnie linie wiersza „poemat” Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty $ tail +2 poemat #wyświetla od 2 lini do końca Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty $ head -3 poemat #wyświetla 3 pierwsze linie Opadają kwasem wina Liście dębu i czereśni I zza wody psi przyleśni Uwagi : 1. Liczba linii branych pod uwagę przez polecenie tail i head wynosi 10 2. Polecenie wc (bez opcji) wyświetla liczbę linii, liczbę słów i liczbę znaków zawartych w pliku 3. Co się dzieje gdy wystukamy (polecenie będące filtrem) bez żadnego argumentu, czyli bez nazwy pliku np $ wc + [Enter] * polecenia zwane filtrami oczekują, że wprowadzimy jakieś dane możemy to zrobić i aby powrócić do linii poleceń i przerwać zapełnianie ekranu musimy wystukać jednocześnie [Ctrl]+d Autor : Piotr Piętak GR PiS ds. informatyzacji 6.2 Linux Podstawy używania systemu jjjj-07-tt strona 42 Polecenie grep $ grep ‘’psi’’ poemat Opadają kwasem wina Liście dębu i czereśni I zza wody psi przyleśni Szczekają jak mandolina Bałałajkę psiej tęsknoty Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty grep I zza wody psi przyleśni Bałałajkę psiej tęsknoty Polecenie grep selekcjonuje z pliku linie zawierające poszukiwany ciąg znaków – w naszym przykładzie „psi” - i wyświetla wskazane linie na ekranie. Opcja -i znosi różnice między małymi i dużymi literami. Jeżeli wystukamy : $ grep -i ‘’za’’ poemat I zza wody psi przyleśni Za to ździerze-mgle na uchu to otrzymamy Opcja -c użyta z poleceniem grep umożliwia policzenie liczby lin zawartych w pliku (jakie inne polecenie wykonuje to samo ? ). $ grep -c poemat 8 Opcja -n numeruje linie w pliku (jakie inne polecenie wykonuje to samo ? ). $ grep -n poemat 1 Opadają kwasem wina 2 Liście dębu i czereśni 3 I zza wody psi przyleśni 4 Szczekają jak mandolina 5 6 7 8 Bałałajkę psiej tęsknoty Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty Opcja -v wyświetla linie, które nie zawierają poszukiwanego ciągu znaków, w naszym pierwszym przykładzie, jeśli przed „psi” dodamy -v to otrzymamy : $ grep -v ‘’psi’’ poemat Opadają kwasem wina Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 43 Liście dębu i czereśni Szczekają jak mandolina Uwiązali na łańcuchu Za to ździerze-mgle na uchu Dynda miesiąc – kolczyk złoty Opcja -l jest użyteczna kiedy poszukujemy ciągu znaków w wielu plikach. 6.3 Polecenie cut $ cut –f1,3 -d’,’ 1,un,one,ein 2,deux,two,zwei 3,trois,three,drei 4,quatre,four,vier 5,cinq,five,funf 6,six,six,sechs 7,sept,seven,sieben 8,huit,eight,acht 9,neuf,nine,neun 10,dix,ten,zen cut 1,one 2,two 3,three 4,four 5,five 6,six 7,seven 8,eight 9,nine 10,ten Polecenie cut 6.4 Polecenie sort $ 1,un,one,ein 2,deux,two,zwei 3,trois,three,drei 4,quatre,four,vier 5,cinq,five,funf 6,six,six,sechs 7,sept,seven,sieben 8,huit,eight,acht 9,neuf,nine,neun 10,dix,ten,zen Przykłady : sort +3 –t’,’ liczba 8, huit,eight,acht sort 3,trois,three,drei 1,un,one,ein 5,cinq,five,funf 9,neuf,nine,neun 6,six,six,sechs 7,sept,seven,sieben 4,quatre,four,vier 10,dix,ten,zen 2,deux,two,zwei Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 44 $ cat liczba 2,deux,two,zwei 8,huit,eight,acht 3,trois,three,drei 4,quatre,four,vier 1,un,one,ein 5,cinq,five,funf 10,dix,ten,zen 6,six,six,sechs 7,sept,seven,sieben 8,huit,eight,acht 9,neuf,nine,neun $ sort liczba 1,un,one,ein 10,dix,ten,zen 2,deux,two,zwei 3,trois,three,drei 4,quatre,four,vier 5,cinq,five,funf 6,six,six,sechs 7,sept,seven,sieben 8,huit,eight,acht 9,neuf,nine,neun $ sort –n liczba 1,un,one,ein 2,deux,two,zwei 3,trois,three,drei 4,quatre,four,vier 5,cinq,five,funf 6,six,six,sechs 7,sept,seven,sieben 8,huit,eight,acht 9,neuf,nine,neun 10,dix,ten,zen $ sort -t’,’ +3 liczba 8,huit,eight,acht 3,trois,three,drei 8, Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu 1,un,one,ein 5,cinq,five,funf 9,neuf,nine,neun 6,six,six,sechs 7,sept,seven,sieben 4,quatre,four,vier 10,dix,ten,zen 2,deux,two,zwei $ sort -t’,’ +1 -2 5,cinq,five,funf 2,deux,two,zwei 10,dix,ten,zen 8,huit,eight,acht 9,neuf,nine,neun 4,quatre,four,vier 7,sept,seven,sieben 6,six,six,sechs 3,trois,three,drei 1,un,one,ein Polecenie sort Polecenie more Ćwiczenia 5.1 Ćwiczenie 1. Wyświetl listę użytkowników uporządkowaną według ich nazwisk Ćwiczenie 2. Wyświetl atrybuty, największego pliku, z twojego katalogu Ćwiczenie 3. Wyświetl zawartość pliku „.profile.” Ćwiczenie 4. Wyszukaj w twoim katalogu wszystkie pliki modyfikowane w ciągu jednego dnia Ćwiczenie 5. jjjj-07-tt strona 45 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 46 Wyświetl wszystkie linie pliku „.profile”, które zawierają znak # Ćwiczenie 6. Wyświetl nazwę wszystkich plików tekstowych z twojego katalogu domowego Ćwiczenie 7. Wyświetl nazwiska użytkowników podłączonych do twojego systemu (wyłącznie nazwiska) Ćwiczenie 8. Polecenie ls -l wyświetla znak „-” na pierwszej pozycji linii kiedy mamy do czynienia z plikiem regularnym, zastąp znak „-” przez literę „f’’ ” 6.1 Ćwiczenia Ćwiczenie 1. Wykonaj polecenia : $ cp /etc/passwd passwd2 $ ln passwd passwd2 Jeżeli zmienimy plik passwd2, co się wydarzy ? Ćwiczenie 2 Jaki rezultat otrzymasz po wykonaniu następującego polecenia : $ ln passwd passwd3 . Ćwiczenie 3. Odnajdź wszystkie łącza pliku : passwd Ćwiczenie 4. Wykonaj polecenie „rm passwd”, które znosi wiązanie passwd. Czy plik wskazywany przez wiązanie jest jeszcze dostępny , jeśli tak to w jaki sposób ?Czy można odtworzyć łącze passwd, jeśli tak to w jaki sposób ? Ćwiczenie 5. Wykonaj kopie pliku /etc/group do twojego katalogu domowego, i następnie wykonaj polecenie : $ ln -s group group.lien Wyświetl atrybuty pliku group.lien, czy jego uprawnienia pozwalają na dostęp do pliku group ? Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 47 Rozdział 7 : Zarządzanie procesami 7.1 Skrypty - pierwsze kroki w programowaniu Skrypt jest plikiem tekstowym zawierającym polecenia. Skrypt możemy utworzyć przy pomocy każdego edytora dostępnego w systemie Linux (emacs,vi,vim). Ponieważ, w naszym przypadku, poznaliśmy tylko vi, więc użyjemy tego właśnie edytora do utworzenia kilku skryptów by zilustrować najprostsze zasady programowania w bashu. Zalogujmy się jako administrator systemu (root) i po ukazaniu się na ekranie znaku zachęty (przypominam, że w przypadku administratora jest to #) stworzymy plik o nazwie skrypt1 # vi skrypt1 #!/bin/bash_ cal who date ~ ~ ~ ~ ~ Wyjaśnienie : 1. każdy skrypt musi zaczynać się od wypełnienia pierwszej lini przez #!/bin/bash, która definiuje ścieżkę dostępu do interpretatora, który wykona a raczej zinterpretuje polecenia zawarte w skrypcie. W naszym przypadku jest nim /bin/bash 2. utworzony pliku o nazwie skrypt1 jest plikiem zwykłym, który nie może być egzekwowany. Wykonajmy polecenie # ls -l skrypt1 -rw-r--r-- 1 piotr ola 15 marca 2004 skrypt1 Jak widzimy prawa użytkownika do pliku są ograniczone do jego czytania i modyfikowania, członkowie grupy ola i i pozostali użytkownicy systemu mogą go tylko czytać (czy wiesz dlaczego – jeśli nie – powtórz rozdział …). Utworzony plik skrypt1 musimy uczynić wykonalnym, innymi słowy chcemy mu nadać prawo wykonywania, ale prawo to przypiszemy tylko jego właścicielowi. W tym celu musisz wykonać następujące polecenie : # chmod u+x skrypt1 Po wykonaniu tego polecenia powtórzmy raz jeszcze polecenie ls -l ls -l skrypt1 -rwxr--r-- 1 piotr ola 15 marca 2004 skrypt1 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 48 Czy widzisz różnice ? 1, 2, 3 znak wyświetlonej informacji pozostają bez zmiany, natomiast czwarty zmienia się z „-” na „x”. Oznacza to, że skrypt1 jest plikiem wykonywalnym przez jego właściciela. Reszta wyświetlonej informacji pozostaje bez bez zmian co oznacz, że członkowie grupy oraz inni użytkownicy nie mają prawa wykonywać tego skryptu. Pytanie : w jaki inny sposób możesz przypisać prawa wykonywania pliku tylko przez jego właściciela ? 7 Po wykonaniu polecenia z punktu 2, nasz skrypt może być wyegzekwowany jako polecenie skrypt1. # skrypt1 7.1.1 Przekazywanie parametrów do skryptu Utwórzmy plik o nazwie katalog1, który będzie zawierał tylko jedno polecenie : # vi katalog1 #!/bin/bash_ ls -aCF ~ ~ ~ ~ ~ Następnie nadajmy wszystkim użytkownikom prawo do jego wykonywania : # chmod a+x katalog1 W tym momencie skrypt katalog1 możemy wyegzekwować, wiemy jednak, że lista plików i podkatalogów wyświetlona na ekranie dotyczyłaby tylko katalogu bieżącego. Co możemy zrobić by otrzymać listę plików z innych katalogów bez każdorazowego poprawiania skryptu katalog1 ? Aby zautomatyzować (przynajmniej częściowo) wyświetlanie plików w różnych katalogach, zastosujemy mechanizm przekazywania parametrów do skryptu. Jak pamiętamy polecenie w linuksie składa się z samego polecenia np. ls , opcji np. –l i argumentów n.p /usr. Zarówno opcje jak argumenty możemy nazwać parametrami. Nazwa skryptu jest też poleceniem, któremu możemy przekazać parametry, z tym że parametry przekazywane do skryptu przypisywane są zmiennym, które oznaczamy jako $1, S2……S9. $1 odpowiada pierwszemu argumentowi polecenia, $2 drugiemu itd. Co to w praktyce oznacza ? Przypuśćmy, że chcemy wyświetlić na ekranie – egzekwując skrypt katalog1 – zawartość katalogu /tmp, w tym celu wykonamy następujące polecenie : # katalog1 /tmp Jest to wartość, którą przyjmuje zmienna $1 (pierwszy argument Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 49 polecenia katalog1), z czego wynika, że nasz skrypt musimy zmienić w następujący sposób : #!/bin/bash_ ls -aCF $1 ~ ~ ~ ~ ~ $1 przybiera zawsze wartość pierwszego argumentu polecenia w tym wypadku /tmp, jeżeli chcielibyśmy obejrzeć zawartość katalogu /usr to musimy wykonać polecenie # katalog1 /usr $1 przybierze w tym wypadku wartość /usr Dodajmy, że istnieje także zmienna $0 zawiera nazwę skryptu (polecenia). Wiemy, że możemy skryptowi przekazać 9 parametrów od $1 do $9, Linux dostarcza nam także inne zmienne zdefiniowane w systemie, które ułatwiają programowanie w bashu : # zmienna ta zawiera liczbę parametrów przekazanych do skryptu * zmienna ta zawiera listę parametrów przekazanych do skryptu ? zmienna ta zawiera kod zwrotu ostatniego polecenia wykonanego przez skrypt $ zmienna ta zawiera numer procesu – PID 7.3 Klasyfikacja procesów Linux jest systemem wielozadaniowym, który umożliwia wykonywanie wielu poleceń jednocześnie. Egzekucja polecenia jest identyfikowana przez system przy pomocy numeru identyfikacyjnego PID przypisanego każdemu procesowi, który jest egzekwowany (egzekucja polecenia uruchamia proces). System otrzymując od użytkownika polecenie,uruchamia, czekając na jego zakończenie. O takim poleceniu mówimy, że jest pierwszoplanowe (foreground). Terminal jest zablokowany do momentu zakończenia zadania. Wyobraźmy sobie (a nie jest to bynajmniej rzadkie), że wykonanie naszego polecenia (np polecenia find) może trwać wiele minut. Rzecz jasna możemy zalogować się na Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 50 innej konsoli wirtualnej i tam możemy uruchamiać kolejne zadania. Innym sposobem postępowania z „długotrwałymi” zadaniami jest uruchamianie ich w tle. Zadanie uruchamiamy jako drugoplanowe wpisując na końcu linii poleceń znak ampresand & . Różnice między zadaniem pierwszoplanowym i drugoplanowym można zilustrować w następujący Sposób who ---------- who ------------ date (najpierw następuje egzekucja i wyświetlenie date rezultatu polecenia „who”, a następnie „date” who& ------ ---------------------date& | | (jednoczesna egzekucja who i date) | 7.4 Polecenia 9.4.1 Polecenie - ps Polecenie - ps opcje - pozwala otrzymać informacje o odbywających się aktualnie w pamięci komputera, procesach. Jeżeli wykonujemy samo polecenie ps bez opcji to wtedy na ekranie ukazują się procesy użytkownika, który wykonał polecenie ps. Opcja -u nazwa użytkownika pozwala wyselekcjonować procesy tego użytkownika dla wszystkich jego logowań. Inne opcje to -e wyświetla informacje o wszystkich aktualnie odbywających się procesach -f wyświetla, dla każdego procesu następujące informacje : - nazwę użytkownika (UID) - numer procesu (PID) - numer ojca procesu (PPID) - godzinę egzekucji procesu (STIME) - imie komputera (TTY) - czas egzekucji procesu (TIME) Przykłady : $ ps PID 3408 10804 TTY pts/1 pts/1 TIME 0:00 0:20 CMD ps -ksh Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 51 $ ps -ef UID PID PPID C STIME TTY root 1 0 root 300 1 daemon 327 1 root 343 1 root 359 1 root 411 1 root 444 1 piotr 11736 11731 piotr 11737 11732 piotr 11738 11733 0 0 0 0 0 0 0 0 0 0 May18 May18 May18 May18 May18 May18 May18 13:45 13:45 13:45 ? ? ? ? ? ? ? pts/0 pts/1 pts/0 TIME 00:00:03 00:00:08 00:00:00 00:00:00 00:00:03 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 CMD init syslogd -m 0 /usr/sbin/atd crond inted sendmail httpd /bin/bash /bin/bash /bin/bash $ ps -e PID TTY TIME COMD 7.4.2 Polecenie - kill Z uruchomionymi procesami możemy komunikować sie przy pomocy sygnałów, to właśnie polecenie kill umożliwia wysyłanie różnych sygnałów do procesów zarówno pierwszo jak i drugoplanowych. Rodzaj sygnału jest określony przez jego numer lub nazwę. zlikwidowanie procesu $ kill -9 $ kill 19 zatrzymanie wykonywania procesu z możliwością późniejszego jego Wznowienia $ kill 2 przerwanie wykonania procesu z klawiatury (Carl +c) Można zlikwidować konkretny proces tylko trzeba znać jego numer PID $ ps -u piotr PID 250 259 wyświetla procesy użytkownika piotr TTY TIME COMD pts/1 0:02 bash ? 0:15 plika $ kill 259 $ ps -u piotr PID TTY TIME COMD Autor : Piotr Piętak GR PiS ds. informatyzacji 250 Linux Podstawy używania systemu pts/1 0:02 jjjj-07-tt strona 52 bash 7.5 Zarządzanie „pracami” Zapewne zwróciłeś już uwagę, ze w tym rozdziale wprowadziliśmy nowe pojęcia „zadania”. Czym jest „zadanie” i czym ono się różni od np polecenia procesu. Otóż termin ten Rozpatrujemy nie w kontekście systemu, lecz w kontekście pracy konkretnego użytkownika np uruchomiony edytor tekstowy będzie konkretnym procesem w systemie, ale też jednocześnie zadaniem użytkownika, który realizuje swój cel – napisanie tekstu.. Czyli możemy określić zadanie jako zlecenie systemowi przez użytkownika określonego działania. Zilustrujmy pojęcie zadania na konkretnym przykładzie. Wykonamy następujące polecenie $ ls –R / Jak pamiętasz polecenie ls wyświetla pliki w katalogu (w tym przypadku wyświetli co ?) Zatrzymajmy egzekucję tego polecenia przy pomocy kombinacji klawiszy [Ctrl] + z Na ekranie otrzymamy następującą informacje : [1]+ Stoppel ls -R/ Wykonajmy raz jeszcze : $ ls –R / I raz jeszcze zatrzymajmy egzekucje polecenia. Otrzymamy następujące informacje na ekranie [2]+ Stoppel ls -R/ W tym momencie wykonamy polecenie jobs , które wyświetla listę zadań na ekranie $ jobs [1]+ Stopped [2]+ Stopped ls -R/ ls -R/ Jeżeli zastosujemy w poleceniu jobs opcje -l otrzymamy na ekranie cenne informacje $ jobs -l [1]+ Stopped [2]+ Stopped 122 123 ls -R/ ls -R/ Liczba 122 I 123 to numery bezwzględnych identyfikatorów procesów PID. Do ponownego uruchomienia zatrzymanego zadania na pierwszym planie używamy polecenia fg. Do ponownego uruchomienia zatrzymanego zadania na drugim planie używamy polecenia bg. Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 53 Jeżeli chcemy uruchomić , których z zatrzymanych procesów ls –R / to należy wykonać $ fg %1 Lub $ fg %2 7. 6 Ćwiczenia Ćwiczenie 1 Wykonaj polecenie „ps” i wyjaśnij znaczenie każdej wyświetlonej kolumny Ćwiczenie 2 Utwórz skrypt, który wyświetla co 30 sekund „dzien dobry’’. Możesz tego dokonać używając polecenia : cat $ cat > dzien dobry #!/bin/bash While true do Banner dzien dobry done Ctrl-D $ Wyegzekwuj ten skrypt poza planem i wyświetl jego PID, a następnie numer wykonywanego zadania Ćwiczenie 3 Zlikwiduj egzekucje tego skryptu używając jego nr. PID albo nr. zadania Ćwiczenie 4 Wykonaj polecenie $ ps aux : Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 54 Co otrzymasz na ekranie ? Ćwiczenie 5 [123]+ Stopped [122]+ Stopped 522 523 Dzięki jakiemu poleceniu otrzymamy powyższe informacje ? Rozdział 9 : Wyrażenia Regularne Do tego celu wyrażenia regularne – będące podstawą konstrukcji systemu Unix i Linux są idealnym narzędziem. Warto się z nimi zaznajomić gdyż wbrew pozorom ich opanowanie nie jest zbyt trudne. Przedstawię tzw podstawowe symbole wyrażenia regularne (BRE , Basic Regular Expression) oraz rozszerzone wyrażenia regularne (ERE, extender Regular Expressions). Odkrycie wyrażeń regularnych związane jest z pierwszymi teoretycznymi pracami nad opisowymi językami symbolicznymi prowadzonymi przez matematyka Stephen Kleene (1909-1994). Sformułował on pierwszy założenia umożliwiające zdefiniowanie tzw zbiorów regularnych, wykorzystanych początkowo do przekazywania w sieciach neuronów informacji, a następnie zastosowanych do budowy kompilatorów. Trzeba jednak podkreślić, że wyrażania regularne mają zastosowanie także poza informatyką; stosuje się je w lingwistyce do tzw analizy tekstowej oraz do definiowania praw w gramatyce teoretycznej; w biologi do odszyfrowania sekwencji ludzkiego genomu, w neurologii; w elektronice do modelowania obwodów elektrycznych itd. Interdyscyplinarny aspekt wyrażeń regularnych jest szczególnie ważny w procesie nauczania. Spróbujmy odpowiedzieć na pytanie : dlaczego praktyczne poznanie wyrażeń regularnych jest tak ważne nie tylko dla informatyków, ale także np dla tych, którzy zajmują się przerabianiem, wyszukiwaniem w Internecie - informacji? Aby przybliżyć czytelnikowi problem przedstawiony w tym rozdziale wyobraźmy sobie następującą sytuacje : jakiś autor zredagował tekst, którego kolejne rozdziały ponumerował w następujący sposób: 1-1, 1-2, 1-3, itd i chce następnie zmienić formę ich numeracji na § 1.1, § 1.2, § 1.3. Wyszukanie i zmienienie nazw rozdziałów wymaga przejrzenia całego tekstu co wiąże się z utratą sporej ilości czasu i zmęczeniem, a więc możliwością popełnienia błędu. Wyrażenia regularne – czasami nazywane wyrażeniami racjonalnymi – dostarczają nam reguł, które umożliwiają zdefiniowanie symboliczne tego czego szukamy, w tym wypadku liczby po której następuje myślnik po którym znów następuje liczba. Wyrażenie typu 1-1, 1-2, 1-3, itd jest wyrażeniem znakowym (lub literalnym) . Natomiast wyrażenie typu \d-\d jest opisem abstrakcyjnym w/w wyrażeń znakowych, \d jest konwencją używaną w wyrażeniach regularnych do oznaczenia zbioru Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 55 liczb całkowitych 0-9. Jednak jeśli numer rozdziału będzie większy od 9 np 10-1 lub 1-10 to wyrażenie regularne \d-\d go nie odnajdzie, dlatego też musimy je uogólnić na wszystkie liczby całkowite. W tym celu po literze d dorzucamy znak +, który oznacza ‘’wyszukaj jedną lub wiele liczb zawartych w zbiorze 0-9’’, otrzymujemy zapis \d+-\d+ spełniający wymogi naszego uogólnienia. Tak więc w przeciwieństwie do ciągu literalnego typu 1-1, 100, abcd, FBR, wyrażenia regularne mogą w sposób abstrakcyjny przedstawić dowolny ciąg znaków.. Oto kilka typowych sytuacji w których symbole wyrażeń regularnych są często używane. - wyszukanie określonego ciągu znaków – np w tekście dotyczącym chemii organicznej odnalezienie wszystkich terminów zaczynających się przedrostkiem ortho lub w spisie plików znalezienie tych, które kończą się na .doc - zmiana tekstu w stronice Internetową - zmiana w tekście formy pewnych słów np dużo-literowych na mało-literowe lub odwrotnie - analiza prawomocności wartości przekazanej : np oczekujemy, że użytkownik wystuka na klawiaturze adres elektroniczny lub liczbę o szczególnej formie : wyrażenie regularne umożliwi wykrycie błędu - przeformatowanie ustrukturalizowanego tekstu : np bibliograficzna baza danych przedstawiona jest w formie, którą chcemy zmienić umiejscawiając datę publikacji po nazwisku autora a nie po tytule jak było dotychczas. Przedstawię teraz tzw podstawowe symbole wyrażenia regularne (BRE , Basic Regular Expression) . kropka : odpowiada dowolnemu pojedynczemu znakowi z wyjątkiem znaku przedstawiającego koniec linii – np wyrażenie regularne b.l przedstawia zarówno słowo bal jak bol jak i każdą inną kombinacje typu bel, bil, bpl, etc [] pozwala dopasować dowolny znak ze zbioru zawartego między nawiasami, wszystkie znaki występujące między nawiasami mają zwykłe znaczenie oprócz myślnika - , który jest używany do tworzenia zakresu znaków np [a-z] oznacza każdą małą literę alfabetu. Znak ^, który umiejscowiony na początku nawiasów [^ ] wyznacza negacje zbioru zdefiniowanego między nawiasami np [^0-9] oznacza wszystkie znaki oprócz 0,1,2,3,4,5,6,7,8,9 etc * gwiazdka dopasowuje zero lub więcej wystąpień znaków poprzedzających *. Zwracamy uwagę, że gwiazdka w wyrażeniach regularnych ma inne znaczenie niż gwiazdka w generowaniu nazwy plików, w tym przypadku * oznacza dowolnie długi – także pusty – ciąg różnych znaków. W wyrażeniach regularnych dowolny ciąg dowolnych znaków zapisujemy jako .* ^ akcent w formie daszka wskazuje,że ciąg znaków występujący po nim znajduje się na początku linii. $ dolar jest przeciwieństwem ^ i wskazuje, że ciąg znaków , który go bezpośrednio poprzedza znajduje się na końcu wiersza \ neutralizuje znaczenie znaku specjalnego np \$ będzie oznaczał znak dolara $ a nie znak wyrażenia regularnego wskazującego, że ciąg znaków go poprzedzający znajduje się na końcu wiersza Interpretacja „wyrażenia regularnego’’ Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 56 Przeanalizujmy kilka wyrażeń regularnych aby lepiej zrozumieć ich działanie. Wyrażenie, które pozwala w tekście wyszukać linie białe (niezapisane) ,ma postać następującą : ^$ używamy w nim tylko znaku ^ i $, które oznaczają początek i koniec linii (wiersza).Wyrażenie wskazuje, że pomiędzy początkiem i końcem linii nie ma nic, co odpowiada linii całkowicie niezapisanej. Porównajmy teraz dwa wyrażenia regularne i spróbujmy dokładnie określić różnice zachodzące pomiędzy nimi. WR1 ^.*$ : WR2 ^.+$ W wyrażeniu WR1 na 3 pozycji znajduje się gwiazdka natomiast w wyrażaniu WR2 na tej samej pozycji znajduje się znak plus, co zmienia radykalnie zakres działania obu wyrażeń : WR1 wyszuka zarówno linie zapisane jak i niezapisane natomiast WR2 selekcjonuje tylko linie zapisane. Dlaczego? (spróbuj odpowiedzieć na to sam) Spróbujmy znaleźć znaczenie następującego wyrażenia regularnego : ^\* [0-9]*\. [0-9][0-9]\$.*$ Jak widzimy powyższe „wyrażenie regularne”, biorąc pod uwagę, że jest ono skomponowane z samych wieloznacznych symboli, może stać się całkowicie niezrozumiałe : jedyna metoda by odszyfrować (jak w podanym przykładzie) jego znaczenie polega na dekompozycji wyrażenia na mniejsze fragmenty poczynając od strony lewej i posuwając się w prawo. Postępując w ten sposób nasz przykład możemy przedstawić w następującej formie : 1 2 3 4 5 6 7 8 9 ^ \* [0-9]* \. [0-9][0-9] \$ .* $ 1. Na pierwszym miejscu ^, który oznacza, że poszukiwany ciąg znaków znajduje się na początku wiersza (linii) 2. Na drugim miejscu znajdujemy wyrażenie \*, które znaczy, że pierwszy znak z tego ciągu jest „* ” (czy wiesz dlaczego ?) 3. Na trzecim miejscu w szukanym ciągu znaków znajduje się spacja 4. Na czwartym miejscu wyrażenie [0-9]* oznacza obojętnie jaką liczbę lub jej brak 5. Na piątym miejscu znajdujemy wyrażenie \., które oznacza że piątym znakiem ciągu jest „.” 6. Na szóstym miejscu powinniśmy znaleźć liczbę dwucyfrową 7. Na siódmym miejscu wyrażenie \$ oznacz, że w tym miejscu musi koniecznie znajdować się znak monetarny dolara : „$” 8. Na ósmym miejscu znajdujemy wyrażenie, które oznacza jakakolwiek liczba znaków (może być zero) 9. Na dziewiątym miejscu znajdujemy $, który oznacza koniec linii znak ten powinniśmy rozpatrywać wspólnie z poprzedzającym go wyrażeniem .*, które jak pamiętamy oznacza : Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 57 jakąkolwiek liczbę znaków z tego wynika, że wyrażenie .*$ oznacza jakąkolwiek liczbę znaków do końca wiersza Z powyższej analizy wynika jeden bardzo ważny wniosek : wyrażenie .* można używać jako wyrażenie regularne, lecz trzeba mieć świadomość, że używane w formie wyizolowanej, jego użyteczność nie ma większego znaczenia, ponieważ odpowiada ono poszukiwaniu pustego ciągu znaków. Inaczej mówiąc poszukiwania ciągu znaków korespondującego wyrażeniu .* zanim się rozpoczną już się kończą znajdując pusty ciąg znaków Rozszerzone wyrażenia regularne znak plus służy do wyszukania co najmniej jednego go poprzedzającego, tak więc a+ oznacza jedna lub wiele liter a, natomiast a* wyszykuje 0 lub więcej znaków a + ( ) nawiasy służą do grupowania wyrażeń regularnych n.p (bla)* pozwala znaleźć w tekście bla i blabla blablabla etc. ? pozwala wyszukać 0 lub jedną obecność zdefiniowanego ciągu znaków. Tak więc wyrażenie (\.com)? pozwala wyszukać nazwy plików kończące się na .com, przy czym nieobecność pliku o takim zakończeniu jest dopuszczalna (0 lub…) | pozwala wyszukiwać ciągi znaków alternatywne Przykłady : $ cat plik 123 plik służy 45 do przedstawienia 678 podstawowych założeń wyrażeń regularnych $ grep ‘sluzy$’ plik #szukamy „sluzy” na końcu linii 123 plik sluzy $ grep ‘i.*i’ plik #szukamy linii, która zawiera co najmniej dwie litery „i” 45 do przedstawienia $ grep `^[a-zA-Z]* plik #wyszykujemy linie zawierające tylko litry alfabetu wyrażeń regularnych $ sed `s/^[0-9]*//` plik plik służy #znosimy numerowanie linii Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 58 do przedstawienia podstawowych założeń wyrażeń regularnych $ ls -l | grep ‘^d’ drwxrwxr-x 2 #wyszykujemy katalogi piotr 1024…………………. $ ls -p | grep ‘/$’ #wyszukujemy katalogi $ ls –a | grep ‘^\.’ . .. .profile #wyświetlamy tylko pliki zaczynające się od „.” 9.1 Polecenie find Polecenie find służy do wyszukiwania, według ściśle określonych kryteriów, pliku (lub plików) w drzewie katalogowym. Jeżeli kryteria są pozytywnie zweryfikowane (to znaczy plik lub pliki są znalezione) to wtedy możemy wykonać na nich określone działania. Ogólny wzór polecenia find wygląda następująco : find katalog [kryteria wyszukiwania] [kryteria egzekucji] Wyliczmy najpierw kryteria wyszukiwania -name plik -type plik -size -user szukany plik musi nazywać się plik.txt plik może przyjmować następujące wartości f - plik regularny d - katalog c,b - pliki specjalne plik musi mieć odpowiednia objętość piotr -group ada plik ma właściciela który nazywa się piotr plik przynależy do grupy ada Wyliczmy teraz kryteria egzekucji -print #wyświetla ścieżkę dostępu do znalezionego pliku -exec cmd {} \; wykonuje polecenie cmde z argumentem pliku Operacje logiczne wyrażenie w poleceniu find ET -a OU -b Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu NON jjjj-07-tt strona 59 ! Posłużmy się kilkoma prostymi przykładami : $ find /home -name ‘*.c’ -print #objaśnienie : szukamy w katalogu /home czyli szukamy pliku znajdujących się u wszystkich użytkowników - kryterium wyszukiwania dotyczy nazwy plików (wskazuje na to –name) nazwy te wyznaczone są przez ‘*.c’ – (czy mógłbyś sam objaśnić to wyrażenie ? ), następnie jeżeli kryteria wyszukiwania są pozytywnie zweryfikowane, wyświetlamy je (-print –kryterium egzekucji) na ekranie $ find . –type d -print #wyświetla tylko nazwy katalogów $ find /home -name ‘*c’ -print # wyświetla z katalogu domowego tylko te pliki których sufiks Równa się c $ find /home/piotr ! –group users –prinr # poszukiwanie plików które nie należą do grupy users 9.2 Polecenie grep z wyrażeniami regularnymi Do nauki polecenia grep, które używane jest z wyrażeniami regularnymi musimy utworzyć plik pozwalający zaprezentować wszystkie możliwości zarówno polecenia grep jak i wyrażeń regularnych. Dane zawarte w tym pliku mogą wydawać się sztuczne lecz umożliwią nam one z względnie wystarczającym zapoznaniem się z omawianym tematem. Przy pomocy edytora vi (patrz rozdział IX) utwórzmy plik o nazwie dataplik : $ vi dataplik i wprowadźmy następujące dane : Znaczenie danych zawartych w kolumnach Nazwa regionu Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda symbol regionu KA KA PO CE MA PO WK GD Imie i nazwisko dyrektora per. Liczba wykonanie liczba liczba Pododdziałów planu w % towarów personelu Jan Kowalski Piotr Pawlak Krzysztof Wrak Jola Kruk Urszula Kropiuk Zygmunt Malina Marian Kluska Katarzyna Polak 23 23 25 19 14 25 35 58 .98. .98. .45. .74 .54. .45. .98. .69. \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ 88 88 77 65 85 54 91 87 Autor : Piotr Piętak GR PiS ds. informatyzacji Cregcent CE Linux Podstawy używania systemu Mariusz Pol 19 jjjj-07-tt strona 60 .54. \1\ 25 przypominam, że po wpisaniu danych naciskamy przycisk [Esc] następnie wystukujemy :, który ukazuje się w dolnym lewym rogu i wprowadzamy polecenie :wq. Plik dataplik jest utworzony i możemy go zacząć testować przy pomocy polecenia grep zawierającego lub nie zawierającego wyrażenia regularne. Przykłady : $ grep WK dataplik regwielko WK Marian Kluska 35 .98. \4\ 91 Wyjaśnienie : Na ekranie wyświetlają się linie zawierające wyrażenie regularne WK znajdujące się w pliku dataplik $ grep ‘^C’ dataplik Cregcent Cregcent CE CE Jola Kruk Mariusz Pol 19 19 .74 .54. \1\ \1\ 65 25 Wyjaśnienie : Na ekranie wyświetlają się wszystkie linie zaczynające się od „C” $ grep ‘4$’ dataplik Pregpod PO Zygmunt Malina 25 .45. \2\ 54 19 14 19 .74. .54. .54. \1\ \5\ 65 85 Wyjaśnienie : Na ekranie wyświetlają się linie kończące się cyfrą „4” $ grep ‘4\. ’ dataplik Cregcent Mregmazu Cregcent CE MA CE Jola Kruk Urszula Kropiuk Mariusz Pol \1\ 25 Wyjaśnienie : Na ekranie wyświetlają się linie zawierające cyfrę „4” po której następuje kropka „.” i następnie spacja „ ” $ grep ‘\\3\\’ dataplik Autor : Piotr Piętak GR PiS ds. informatyzacji Kregkato 88 Kregkato Linux Podstawy używania systemu KA Jan Kowalski KA Piotr Pawlak jjjj-07-tt strona 61 23 23 .98. \3\ .98. \3\ 88 Wyjaśnienie : Na ekranie wyświetlają się linie zawierające cyfrę „3” obramowaną przez \3\ $ grep ‘^[KW]’ dataplik Kregkato 88 Kregkato Wregwielko KA Jan Kowalski KA WK Piotr Pawlak Marian Kluska 23 23 35 .98. \3\ .98. .98. \3\ \4\ 88 91 Wyjaśnienie : Na ekranie wyświetlają się wszystkie linie zaczynające się o litery „K” albo „W”. $ grep ‘[A-Z][A-] [A-Z][A-Z] Kregkato Greggda KA GD AB Kowalski DA Polak 23 58 .98. .69. \3\ \9\ 88 87 Wyjaśnienie : Na ekranie wyświetlają się linie zawierające dwie duże litery następujące natychmiast po sobie po których występuje spacja i znów dwie duże litery następujące natychmiast po sobie. $ grep ‘ll* ‘ dataplik Cregcent Cregcent CE CE Jola Krul Mariusz Poll 19 19 .74 .54. \1\ \1\ 65 25 Wyjaśnienie : Na ekranie wyświetlają się linie zawierające małą literę „l” po której występuje zero lub więcej razy także mała litera „l” po której następuje spacja 9.3 Edytor sed Edytor sed czyli edytor strumienia linii jest narzędziem informatycznym używanym do wyszukiwania wg wzorca opartego zazwyczaj na regułach zdefiniowanych w wyrażeniach regularnych – linii w pliku, do ich zmieniania wyświetlania na ekranie czy też skierowywania rezultatów manipulacji do nowego pliku . Ogólny wzorzec polecenia sed wygląda następująco : sed opcja ‘wyszukiwany wzorzec’ nazwa_pliku Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 62 sed posiada następujące funkcje, których zastosowanie przetestujemy w ćwiczeniach : Opcje -e wielokrotne wyświetlanie linii -n nie wyświetla na ekranie linii, które nie były zmodyfikowane -f ,plika> plik plika zawiera program z wyrażeniami sed Znaki specjalne używane przez edytor sed ^ wyszukuje linie zaczynające się od wyrazu poprzedzonego tym znakiem n.p ^love wyświetla wszystkie linie w pliku, które na początku maja love $ wyszukuje linie kończące sie wyrazem zakończonym tym znakiem np love$ wyświetla wszystkie linie w pliku, które na końcu mają love . wyszukuje linie z jednym znakiem np /l..e/ wyszukuje linie zawierające l po Nim dwa obojętnie jakie znaki zakończone znakiem e * wyszukuje zero lub więcej linii poszukiwanego ciągu znaków / *love/ wyszukuje linie z Zerem lub więcej spacji po której następuje słowo love [] wyszukuje jeden znak w danym zbiorze n.p /[Ll]ove/ wyszukuje linie, które zawierają Słowo love lub Love [^ ] wyszukuje jeden znak nie zawarty w zbiorze n.p /[^A-KM-Z]ove/ wyszukuje linie nie Zawierające zbioru od A do Z lub od M do i zakończone ove Funkcje s zmiana jednego ciągu znaków na inny n.p $ sed ‘s/root/adm/g’ /etc/passwd zmiana w pliku /etc/passwd słowa “root” na „adm” d usuwanie linii c zmiana tekstu w danej linii na nowy tekst a dorzucenie nowych linii p wyświetlenie wszystkich linii zawartych w pliku g dotyczy całości pliku Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 63 Przetestujemy teraz funkcjonowanie sed używając do tego celu tego samego pliku dataplik którego zawartość drukujemy poniżej. Nazwa regionu Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent symbol regionu Imie i nazwisko dyrektora per. KA KA PO CE MA PO WK GD CE Liczba Pododdziałów Plan w% liczba liczba towarów personelu AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 23 23 25 19 14 25 35 58 19 .98. .98. .45. .74 .54. .45. .98. .69. .54. \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ \1\ 88 88 77 65 85 54 91 87 25 AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul 23 23 25 19 .98. .98. .45. .74 \3\ \3\ \2\ \1\ 88 88 77 65 23 23 25 19 14 25 35 58 19 .98. .98. .45. .74 .54. .45. .98. .69. .54. $ sed ‘4q’ dataplik Kregkato Kregkato Pregpod Cregcent KA KA PO CE Wyjaśnienie : wyświetlamy tylko 4 pierwsze linie $ sed ‘/KA/p’ dataplik Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent KA KA PO CE MA PO WK GD CE AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll \3\ \3\ \2\ \1\ 88 88 77 65 \5\ \2\ \4\ \9\ \1\ 85 54 91 87 25 Wyjaśnienie : wyświetlamy z opcja p całość pliku mimo istnienia /KA/ $ sed -n ‘/KA/p’ dataplik Kregkato Kregkato KA KA AB Kowalski Piotr Pawlak 23 23 .98. .98. \3\ \3\ 88 88 Wyjaśnienie : to opcja –n umożliwia nam wyświetlenie linii zawierających poszukiwany ciąg znaków W tym wypadku /KA/ Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 64 $ sed ‘2d’ dataplik Nazwa regionu Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent symbol regionu KA PO CE MA PO WK GD CE Imie i nazwisko dyrektora per. Liczba wykonanie liczba liczba Pododdziałów planu w % towarów personelu AB Kowalski Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 23 25 19 14 25 35 58 19 .98. .45. .74 .54. .45. .98. .69. .54. \3\ \2\ 25 35 58 19 .45. .98. .69. .54. \2\ \4\ \9\ \1\ 54 91 87 25 23 23 25 19 14 25 35 58 .98. .98. .45. .74 .54. .45. .98. .69. \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ 88 88 77 65 85 54 91 87 25 19 14 25 35 .45. .74 .54. .45. .98. \2\ \1\ \5\ \2\ \4\ 77 65 85 54 91 \1\ 88 77 65 \5\ \2\ \4\ \9\ \1\ 85 54 91 87 25 Wyjaśnienie : usunięcie drugiej linii z pliku $ sed ‘5,$d’ dataplik Pregpod Wregwielko Greggda Cregcent PO WK GD CE Zygmunt Malina Marian Kluska DA Polak Mariusz Poll Wyjaśnienie : usunięcie wszystkich linii do piątej linii od końca $ sed ‘$d’ dataplik Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda KA KA PO CE MA PO WK GD AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Wyjaśnienie : usunięcie ostatniej linii $ sed ‘/KA/d’ dataplik Pregpod Cregcent Mregmazu Pregpod Wregwielko PO CE MA PO WK Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska Autor : Piotr Piętak GR PiS ds. informatyzacji Greggda Cregcent Linux Podstawy używania systemu GD CE DA Polak Mariusz Poll 58 19 jjjj-07-tt strona 65 .69. .54. \9\ 87 Wyjaśnienie : usunięcie linii zawierających ciąg znaków KA $ sed ‘2,3d’ dataplik Kregkato Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent KA CE MA PO WK GD CE AB Kowalski Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 23 19 14 25 35 58 19 .98. .74 .54. .45. .98. .69. .54. \3\ \1\ \5\ \2\ \4\ \9\ \1\ 88 65 85 54 91 87 25 AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 23 23 25 19 14 25 35 58 19 .98. .98. .45. .74 .54. .45. .98. .69. .54. \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ \1\ 88 88 77 65 85 54 91 87 25 Wyjaśnienie : usunięcie 2 i 3 linii $ sed ‘s/KA/KT/’ dataplik Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent KT KA PO CE MA PO WK GD CE Wyjaśnienie : zmiana ciągu znaków KA na KT ale tylko w pierwszej napotkanej sekwencji Czy wiesz jaką opcje trzeba dorzucić by w linii drugiej też dokonać analogicznej zmiany ? $ sed ‘s/KA/KT/g’ dataplik Autor : Piotr Piętak GR PiS ds. informatyzacji Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent Linux Podstawy używania systemu KT KT PO CE MA PO WK GD CE jjjj-07-tt strona 66 AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 23 23 25 19 14 25 35 58 19 .98. .98. .45. .74 .54. .45. .98. .69. .54. \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ \1\ 88 88 77 65 85 54 91 87 25 Jola Krul Mariusz Poll 19 19 .74 .54. \1\ \1\ 65 25 Wyjaśnienie : właśnie opcje „g” $ -n ‘s/^Cre/Ine/p’ dataplik Inegcent Inegcent CE CE Wyjaśnienie : jak pamiętamy opcja –n oznacza wyświetlenie tylko linii zmodyfikowanych, w Tym wypadku tych w zamieniono ciąg znaków Cre na Ine $ sed ‘/Kowalski/,/Kropiuk/d’ dataplik Pregpod Wregwielko Greggda Cregcent PO WK GD CE Zygmunt Malina Marian Kluska DA Polak Mariusz Poll 25 35 58 19 .45. .98. .69. .54. \2\ \4\ \9\ \1\ 54 91 87 25 Wyjaśnienie : usunięcie linii od linii zawierającej ciąg znaków Kowalski do linii zawierającej ciąg znaków Kropiuk $ sed -n ‘/^Pre/p’ dataplik Pregpod Pregpod PO PO Krzysztof Wrak Zygmunt Malina 25 25 .45. .45. \2\ \2\ 77 54 Wyjaśnienie : wyświetlamy tylko linie zawierające na początku ciąg znaków Pre $ sed -n ‘s/Krul/Wrak/gp’ dataplik Cregcent CE Jola Wrak 19 .74 \1\ 65 Autor : Piotr Piętak GR PiS ds. informatyzacji Linux Podstawy używania systemu jjjj-07-tt strona 67 Wyjaśnienie : wyświetlamy tylko linię gdzie dokonano zamiany ciągu znaków Krul na Wrak Reszta przykładów jest bardziej skomplikowana musisz wiedzieć, że wyrażenie \(…)\ numerowanie ciągu znaków, które chcesz zamienić. Spróbuj rozszyfrować poniższe przykłady $ sed -n ‘s/\Pa\)wlak/\liwoda/p’ datafile Kregkato KA Piotr Paliwoda 23 .98. \3\ 88 25 35 58 19 .45. .98. .69. .54. \2\ \4\ \9\ \1\ 54 91 87 25 23 23 25 19 14 25 35 58 19 .98. .98. .45. .74 .54. .45. .98. .69. .54. *3* *3* *2* *1* *5* *2* *4* *9* *1* 88 88 77 65 85 54 91 87 25 23 23 25 .98. .98. .45. \3\ \3\ \2\ 88@@ 88@@ 77@@ Wyjaśnienie : $ sed ‘/Kowalski/,/Kropiuk/d’ dataplik Pregpod Wregwielko Greggda Cregcent PO WK GD CE Zygmunt Malina Marian Kluska DA Polak Mariusz Poll Wyjaśnienie : $ sed ‘s/\\[0-9]\\/\*[0-9]\*/p’ dataplik Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent KA KA PO CE MA PO WK GD CE AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll Wyjaśnienie : $ sed ‘/Kato/,/pod/s/$/@@/’ dataplik Kregkato Kregkato Pregpod KA KA PO Nazwa symbol AB Kowalski Piotr Pawlak Krzysztof Wrak Imie i nazwisko Liczba wykonanie liczba liczba Autor : Piotr Piętak GR PiS ds. informatyzacji regionu Kregkato Kregkato Pregpod Cregcent Mregmazu Pregpod Wregwielko Greggda Cregcent Linux Podstawy używania systemu regionu dyrektora per. KA KA PO CE MA PO WK GD CE -rw-r—r-- 1 piotr -rwxr—r-- 1 root 10 blocks Pododdziałów AB Kowalski Piotr Pawlak Krzysztof Wrak Jola Krul Urszula Kropiuk Zygmunt Malina Marian Kluska DA Polak Mariusz Poll Oracle sys 23 23 25 19 14 25 35 58 19 jjjj-07-tt strona 68 planu w % towarów personelu .98. .98. .45. .74 .54. .45. .98. .69. .54. 0 May 3 15:14 2003, plik1 514 May 15 16:14 2003, plik1 \3\ \3\ \2\ \1\ \5\ \2\ \4\ \9\ \1\ 88 88 77 65 85 54 91 87 25