Podstawy systemów Unix/Linux
Transkrypt
Podstawy systemów Unix/Linux
Podstawy systemów Unix/Linux Podstawy systemów Unix/Linux (2) (c) KN Mentor Podstawy systemów Unix/Linux Korzystanie z pomocy (1) Prawie każde polecenie ma opcję -- help, która wyświetla jego składnię oraz krótki opis $> cat --help Usage: cat [OPTION] [FILE]... Concatenate FILE(s), or standard input, to standard output. -A, --show-all equivalent to -vET -b, --number-nonblank number nonblank output lines (...) Bardziej rozbudowana pomoc (tzw. manual pages) można uzyskać poleceniem man nazwa_programu (wyjście klawiszem Q) $> man cat CAT(1) User Commands NAME cat - concatenate files and print on the standard output SYNOPSIS cat [OPTION] [FILE]... DESCRIPTION Concatenate FILE(s), or standard input, to standard output. (...) (c) KN Mentor Podstawy systemów Unix/Linux Korzystanie z pomocy (2) Obok manual pages wielu programom towarzyszą tzw. info pages Jest to poszerzona dokumentacja do programu i wywołuje się ją poleceniem: info nazwa_programu $> info cat File: coreutils.info, Node: cat, Next: tac, Up: Output of entire files 3.1 `cat': Concatenate and write files ====================================== `cat' copies each FILE (`-' means standard input), or standard input if none are given, to standard output. Synopsis: cat [OPTION] [FILE]... The program accepts the following options. options::. Also see *Note Common `-A' `--show-all' (...) (c) KN Mentor Podstawy systemów Unix/Linux Korzystanie z pomocy (3) i wyszukiwanie Poleceniem apropos można sprawdzić w jakich manualach występuje dane polecenie $> apropos awk English (3per) gawk gawk [pgawk] igawk mawk (1) (1) (1) (1) - - use nice English (or awk) names for ugly punctuation variablesX pattern scanning and processing languageX pattern scanning and processing languageX gawk with include filesX pattern scanning and text processing languageX Poleceniem whereis można sprawdzić gdzie fizycznie znajdują się pliki związane z awk (jeżeli jest na ścieżce poszukiwań - PATH) $> whreis awk awk: /bin/awk /usr/lib/awk /usr/share/awk /usr/share/man/man1/awk.1.gz Jeżeli programu nie ma na ścieżce można go poszukać poleceniem: find nazwa_pliku katalog_początkowy (c) KN Mentor Podstawy systemów Unix/Linux System plikowy – dowiązania W systemach Unix istnieją dwa rodzaje dowiązań (ang. links): twarde (hard links) – przypisanie jednemu plikowi innej nazwy w obrębie tego samego fizycznego systemu plików (oba wskazują na ten sam fizyczny i-węzeł); jeżeli skasowany zostanie jeden z nich, drugi też przestaje istnieć miękkie (soft links, symbolic links) – dowiązanie może nastąpić nawet do pliku na innym komputerze; w momencie usunięcia; jeżeli dowiązanie zostanie usunięte, to plik zostanie Dowiązania tworzy się poleceniem ln [-s] nazwa_pliku nazw_dowiązania (-s tworzy symboliczne) $>ln -s a a_link $>ls -s a* 36 -rwx------ 1 jduda teacher 0 lrwxrwxrwx 1 jduda teacher 36361 Jan 11 01:53 a* 1 Jan 11 01:54 a_link -> a* (c) KN Mentor Podstawy systemów Unix/Linux Zarządzanie procesami Wyświetlanie uruchomionych procesów ps [u][a] – wyświetla procesy (u – rozszerzona inf., a – wszyscy użytkown.) identyfikator procesu USER jduda jduda jduda nazwa użytkownika wyk. pamięci RAM PID %CPU %MEM 3897 0.0 0.2 4020 0.0 0.0 4043 0.0 0.1 wyk. czasu procesora VSZ 3392 2728 3136 wyk. pamięć fizyczna [kB] RSS 2096 776 1080 TTY pts/0 pts/0 pts/0 wyk. pamięć wirtualna [kB] stan procesu* STAT Ss T R+ START 02:56 03:15 03:25 TIME 0:00 0:00 0:00 czas trwania procesu COMMAND -tcsh sleep 3000 ps u czas rozpoczęcia proc. terminal kontrolujący proces nazwa polecenia * Stany procesów: S – uśpiony pon. 20 sek., I – uśpiony pow. 20 sek., R – wykonywany, T – zatrzymany, Z – proces “zombie”, D – oczekujący na dysk Proces można zakończyć poprzez naciśnięcie Control+C Można go też “ubić” poleceniem kill PID (c) KN Mentor Podstawy systemów Unix/Linux Sterowanie zadaniami Wykonanie polecenia w tle można nakazać poprzez umieszczenie za poleceniem znaku '&' $> sleep 120 & [1] 4073 $> Polecenie można przywrócić z tła wpisując fg nr_polecenia Naciśnięcie Control+Z spowoduje wstrzymanie wykonywania zadania Zadanie można ponownie uruchomić przywracając je na pierwszy plan (fg) lub w tle poleceniem bg nr_polecenia Komenda jobs pokazuje wszystkie aktywne i wykonane zadania $> jobs [1] + Running $> sleep 120 (c) KN Mentor Podstawy systemów Unix/Linux Uruchamianie programów w określonym czasie Administrator systemu i wyznaczeni przez niego użytkownicy mają możliwość wpisania powtarzanych regularnie prac do tzw. tabeli cron (np. w pliku /etc/crontab) Polecenie crontab -e edytuje tabelę cron Polecenie crontab -l wyświetla całą tabelę cron # używaj /bin/sh do wywoływania komend SHELL=/bin/sh # przesyłaj wyjście do użytkownika paul MAILTO=paul # uruchamiaj się 5 minut po północy, codziennie 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # uruchamiaj się od 14:15 1-szego w każdym miesiącu -- wyjście jest # przesyłane do paula 15 14 1 * * $HOME/bin/monthly # uruchamiaj się o 22:00 w dni robocze, denerwuj Joe. 0 22 * * 1-5 mail -s "Jest 10" joe%Joe,%%Gdzie są twoje dzieci?% 0 10 * * 1,3 echo "Uruchamiaj się w każdy pon. i srode o 10.00" *) Przykładowa tabela cron z manuala do crontab (fragment) (c) KN Mentor Podstawy systemów Unix/Linux Wykonywanie zadań o określonej porze Użytkownik może wykonać polecenie lub kilka poleceń o określonej porze, wpisując komendę at czas $> at 9:00 at> mail -s "Pobudka" jduda %Wstawać do pracy!% (naciśnięcie Ctrl+D wychodzi z at) job 1 at 2006-01-04 9:00 $> Poleceniem atq można sprawdzić oczekujące zadania Poleceniem atrm nr_zadania można je usunąć Czas dla można podawać względnie, np. at now + 3 hours at 5:00 + 4 days at 1 week (za tydzień od dzisiaj) Podobnie jak w przypadku crona, administrator może ograniczyć dostęp do at (c) KN Mentor Podstawy systemów Unix/Linux Edycja tekstu z linii poleceń – ed We wczesnych systemach Unix istniał tylko edytor wierszowy ed Ważniejsze polecenia edytora: a – dodaj wiersz(e) , d – usuń wskazane wiersze c – zmień wskazane wiersze na dany tekst i – wstaw wiersz(e) we wskazanym miejscu, m – przenieś wiersz(e) we wskazane miejsce q – koniec pracy i powrót do powłoki, w – zapisz zawartość bufora we wskazanym pliku a (dodaj wiersz) ed to edytor systemu UNIX. (to wpisujemy) To jest drugi wiersz. (to wpisujemy) . (koniec wstawiania, przejdź do bieżącego wiersza) 2i (wstaw przed bieżącym wierszem) xxx (to wpisujemy) . (koniec wstawiania, przejdź do bieżącego wiersza) 1,$p (wyświetl wiersze od 1 do ostatniego) ed to edytor systemu UNIX.$ xxx$ w plik (zapisz bufor w pliku o nazwie "plik") 25 (ed wypisuje liczbę zapisanych znaków) q *) Przykładowa fragment sesji z http://pl.wikpedia.org (na podstawie man pages) (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – vi (1) Rozszerzeniem edytora ed był edytor ex Edytor vi został stworzony przez Joya jako wizualna nakładka na ex vi w przeciwieństwie do edytorów wierszowych wyświetla na terminalu tyle linijek tekstu, ile jest to możliwe (w zależności od terminala) Edytor vi ma dwa tryby pracy: tryb wstawiania znaków (input mode) tryb wydawania poleceń (command mode) W trybie wstawiania znaki podawane z klawiatury wpisywane są do bufora W trybie poleceń użytkownik nawiguje tekstem lub zmienia zawartość bufora Esc edycja tekstu Tryb wstawiania Tryb poleceń wprowadzanie tekstu a, A, i, I, o, O Rysunek na podstawie: Unix System V Release 4, Osborne McGraw-Hill (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – vi (2) Przykładowa sesja z edytorem vi Wydajemy polecenie: vi nazwa_pliku – jeżeli chcemy edytować nowy lub istniejący plik vi +nr nazwa_pliku – jeżeli chcemy edytować plik od wiersza nr Następnie przechodzimy do trybu wprowadzania poprzez naciśnięcie: a – rozpoczyna wpisywanie tekstu za kursorem, i – przed kursorem A – rozpoczyna edycję na końcu bieżącej linii, l – na jej początku O – rozpoczyna edycję na powyżej bieżącej linii, o – poniżej linii To jest tekst napisany w vi vi to bardzo wygodny edytor tylko trzeba go poznać ~ ~ ~ ~ ~ ~ (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – vi (3) Po wpisaniu tekstu przechodzimy do trybu poleceń (klawisz Esc) Następnie zapisujemy bufor do pliku lub rezygnujemy z zapisu, wydając jedno z poleceń :w – zapisuje bufor do pliku, :wq – zapisuje i wychodzi z edycji (to samo: :x oraz ZZ) :q! – wychodzi z vi bez zapisu, :q – wyjście, jeże nie dokonywano zmian :e! – powrót do poprzedniej wersji pliku (przed zapisem) Polecenia (poza ZZ) należy zatwierdzić klawiszem Enter To jest tekst napisany w vi vi to bardzo wygodny edytor tylko trzeba go poznać ~ ~ ~ ~ ~ ~ :wq (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – vi (4) Przesuwanie kursora w oknie l, spacja, → – kursor w prawo j, ↓ – przesunięcie w dół 0 – przejście na początek linii +, Enter – przejście do następnej linii h, backspace, ← – kursor w lewo k, ↑ – przesunięcie w górę $ – przejście na koniec linii - – przejście do linii poprzedniej vi umożliwia poruszanie się też po wyrazach, zdaniach i akapitach w – następny wyraz e – koniec wyrazu ) – początek następnego zdania (} akapitu) b – początek lub poprzedni wyraz ( – początek bieżącego zdania ({ akapitu) Przesuwanie wyświetlanego tekstu w oknie Ctrl+F, PageDown – przesunięcie o stronę w dół Ctrl+B, PageUp – przesunięcie w górę G – przejście na koniec pliku (lub dla np. 4G do 4 wiersza) Większość wymienionych poleceń może być poprzedzona liczbą, która najczęściej oznacza ile razy zostanie ono powtórzone 2w – przesunięcie do 2-go kolejnego wyrazu 4 l lub 4→ – przesunięcie kursora o 4 pozycje w prawo (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – vi (5) Usuwanie tekstu x – usuwa znak pod kursorem dw – usuwa znaki do końca wyrazu dd – usuwa całą bieżącą linię X – usuwa znak przed kursorem D, d$ – usuwa znaki do końca linii Wycofywanie zmian u – cofa ostatnią operację U – cofa wszystkie operacje wykonane dla linii Kopiowanie i wklejanie tekstu yy – kopiuje bieżącą linię do bufora yw – kopiuje bieżący wyraz p – wkleja zawartość bufora na prawo od kursora (P – na lewo) Wyszukiwanie tekstu /szukany_tekst – wyszukuje podany tekst i ustawia kursor na jego początku (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – Vim vim – Vi IMproved został stworzony w 1991 r. przez B. Moolenaara Ma 6 trybów pracy; zawiera wiele udogodnień, przede wszystkim: wielopoziomowe cofnij praca z wieloma oknami podświetlanie składni W Gnome istnieje też wersja graficzna edytora vim o nazwie gvim sesja vi sesja vim (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – emacs (1) Edytor emacs został stworzony w 1975 r. przez R. Stallmana pierwotnie jako Editor MACroS dla edytora TECO Stallman od 1984 r. rozwija GNU emacs Drugą popularną wersją emacsa jest Xemacs (dostępny także pod Windows) Jądro edytora emacs stanowi Emacs Lisp, klon języka Lisp Daje to praktycznie nieograniczone możliwości konfiguracji edytora, rozszerzeń o różne biblioteki (np. kalkulator) Xemacs dla Windows (c) KN Mentor Podstawy systemów Unix/Linux Zaawansowana edycja tekstu – emacs (2) emacs w odróżnieniu od ed czy vi jest edytorem pracującym w jednym trybie Polecenia wydawane są kombinacją klawiszy Ctrl-litera lub Esc-litera Podstawowe polecenie emacsa Ctrl-f – przesuwa kursor w prawo, Ctrl-p – o jedną linię do góry, Ctrl-b – przesuwa kursor w lewo, Ctrl-n – o jedną linię w dół, Ctrl-a – początek linii, Esc-< – początek tekstu, Ctrl-e – koniec linii, Esc-> – koniec tekstu Ctrl-x 2 – otwiera drugie okno, Ctrl-x 1 – przywraca jedno okno Ctrl-d (Del) – usuwa znak za kursorem, Ctrl-u – cofa ostatnią operację gdy nie działają strzałki Backspace – usuwa znak przed kursorem, Ctrl-v (PgDn) – tekst o stronę w dół, Esc-v (PgUp)– przesuwa tekst o stronę w górę Ctrl-s – szuka wystąpienia tekstu, Ctrl-x Ctrl-s – zapisuje plik, Esc-x – szuka kolejnego wystąpienia Ctrl-x Ctrl-c – kończy pracę emacsa (c) KN Mentor Podstawy systemów Unix/Linux Wyszukiwanie tekstu – grep grep – wyszukuje pliki zawierające podany tekst grep [opcje] tekst_do_wyszukiwania pliki_do_przeszukania wyszukać wszystkie pliki z tekstem “:root” w katalogu /etc i podkatalogach $> grep -s :root /etc/* /etc/group:root::0:root /etc/group:bin::1:root,bin,daemon /etc/group:daemon::2:root,bin,daemon /etc/group:sys::3:root,bin,adm /etc/passwd:root:x:0:0:root:/root:/bin/bash opcja -s – pomija komunikaty np. o braku dostępu do pliku opcja -l – wyświetlane są tylko nazwy plików opcja -r – wyszukiwanie dotyczy także podkatalogów opcja -v – wyszukiwane są pliki, które nie zawierają tekstu grep przydaje się także do filtrowania wyników innych poleceń, np. cat /etc/group | grep root – do jakich grup należy root? (c) KN Mentor Podstawy systemów Unix/Linux Wyszukiwanie i przetwarzanie tekstu – awk awk – to cały “kombajn” do przetwarzani tekstu, w szczególności jego przeszukiwania oraz tworzenia różnych raportów awk 'wzorzec {polecenia}' plik wyświetlić linie z /etc/group, zawierające root awk '/root/ {print}' /etc/group wzorzec podany jako /root/ a poleceniem jest print wyświetlić grupy z piku /etc/group w postaci “do grupy grupa nalezy ” opcja -F podaje separator pól: awk -F":" poszczególne pola dostępne są jako $1, $2, ... $> do do do do awk -F":" '{print "do grupy: " $1 " naleza :" $4}' /etc/group grupy: root naleza :root grupy: bin naleza :root,bin,daemon grupy: daemon naleza :root,bin,daemon grupy: sys naleza :root,bin,adm (c) KN Mentor Podstawy systemów Unix/Linux Konfiguracja środowiska dla tcsh (1) Globalna konfiguracja dla powłok csh/tcsh znajduje się w pliku /etc/csh.cshrc # /etc/cshrc # System wide rc file for (t)csh if ($?prompt) then [ "$SHELL" = /bin/tcsh ] if ($status == 0) then set prompt='[%n@%m %c]$ ' else set prompt=\[`id -nu`@`hostname -s`\]\$\ endif endif (...) W pierwszej kolejności ustawiany jest symbol zachęty (ang. prompt) Lokalna konfiguracja dla każdego użytkownika znajduje się w ukrytym pliku .tcshrc w katalogu domowym użytkownika (c) KN Mentor Podstawy systemów Unix/Linux Konfiguracja środowiska dla tcsh (2) W plikach konfiguracyjnych znajdują się przede wszystkim ustawienia oraz definicje dotyczące: zmiennych środowiskowych aliasów znaku zachęty set noclobber alias cd 'cd \!*;echo $cwd' alias pwd 'echo $cwd' alias temp 'cd ~/temp' (...) set path = ( $path ~/bin /usr/local/bin /usr/X11/bin) set history=40 set ignoreeof #set notify #set savehist=40 #set time=100 (...) set prompt='%B%m%b:%~.%!\>' (c) KN Mentor Podstawy systemów Unix/Linux Konfiguracja środowiska dla tcsh (3) – zmienne Wybrane zmienne środowiskowe dla tcsh: cwd histfile history home ignoreeof noclobber notify path prompt savehist shell status uid user pełna nazwa bieżące ścieżki plik z historią poleceń liczba linii historii poleceń, która będzie przechowywana katalog domowy; zastępuje go znak tyldy ~ nie pozwala na przesłanie Ctrl+D (EOF) z terminala zabezpiecza przed złymi przekierowaniami powiadomienie o zakończeniu pracy następuje od razu ścieżka dostępu do plików postać znaku zachęty ile z historii poleceń będzie zapisywane po wylogowaniu jaki shell jest ustawiony status ostatniego polecenia numer UID użytkownika nazwa użytkownika Zmienne ustawiamy poleceniem: set nazwa wartość Ich wartość można wyświetlić przez: echo $nazwa (set -wszystkie) (c) KN Mentor Podstawy systemów Unix/Linux Konfiguracja środowiska dla tcsh (4) – aliasy Aliasy umożliwiają nadanie poleceniu (wraz opcjami) innej nazwy Tworzy się je wpisując: alias nazwa_aliasu 'polecenie' Polecenie alias bez parametrów wyświetla wszystkie zdefiniowane aliasy cp dir edit h help ls md mv pwd q rm temp type x 'cp -i' 'ls -l' 'textedit' 'history !* | head -39 | more' 'man' 'ls -F' 'mkdir' 'mv -i' 'echo $cwd' 'quota -v' 'rm -i' 'cd ~/temp' 'more' 'exit' (c) KN Mentor Podstawy systemów Unix/Linux Konfiguracja środowiska dla tcsh (5) – zachęta Użytkownik może zdefiniować własny znak zachęty pojawiający się na początku linii poleceń Robi się to poprzez ustawienie zmiennej prompt, np.: set prompt '%B%m%b:%~.%!\>' alpha:/var.10> Podstawowe formatowania dla tcsh: %B(%b), %U(%u) %M (%m), %n %/ (%~) %h, %! %T,(%t) %P,(%p) %D,(%d) %W,(%w) %Y,(%y) %{\033[CCm%} rozpoczęcie(zakończenie) wytłuszczania, podkreślania pełna(skrócona) nazwa serwera, nazwa użytkownika bieżąca ścieżka, (dla katalogu home zapisana jako ~) numer wydanego polecenia (w pliku historii) czas w formacie 24- (12-) godzinnym dokładny czas dzień w formacie DD (lub nazwa dnia) miesiąć w formacie mm (lub nazwa) rok w formacie yyyy (lub yy) zmiana koloru na CC (31 – czerwony, 32 – zielony, 33 – żółty, 34 – niebieski, 37 – biały, 0 – przywraca domyłśny) (c) KN Mentor Podstawy systemów Unix/Linux Zmiana powłoki użytkownika Powłokę można zmienić poleceniem: chsh nowa_powłoka Dostępne powłoki znajdują się w pliku /etc/shells Czasami administratorzy blokują zmianę powłoki; można jeszcze spróbować polecenia passwd -s Tymczasowo powłokę można zmienić poprzez wpisanie nazwy nowej powłoki, np. bash Pracę w nowej powłoce kończy się poleceniem: exit (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (1) – podstawy W pierwszej linijce skryptu należy umieścić nazwę powłoki, w której skrypt ma zostać wykonany: #! /bin/tcsh Do zmiennych przekazanych w linii poleceń można odwołać się poprzez: $argv[1], $argv[2],... lub $1, $2, ... Liczbę przekazanych argumentów można sprawdzić poprzez zmienną: $#argv Prosty przykład: zamiana nazw dwóch plików * #! /bin/tcsh tmp = $argv[1] cp $argv[2] $argv[1] cp $tmp $argv[2] *) Przykład z http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Unix/CShellII.html (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (2) – uruchamianie Skrypt należy zapisać pod dowolną nazwą np. skrypt (preferowane rozszerzenie pliku to .sh) Następnie należy uczynić plik wykonywalnym (nadać prawo execute), np. chmod 744 skrypt Skrypt można uruchomić wpisując jego nazwę po “./” ./skrypt parametr1 parametr2 ... Można uruchomić go także w innej powłoce , np. bash skrypt ... lub z opcją debugowania (wyświetlana jest każda uruchamiana linijka) bash -x skrypt (lub tcsh -x skrypt) Jeżeli skrypt ma być uruchomiony w bieżącej kopii powłoki, należy użyć polecenia: source skrypt (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (3) – komunikacja Wypisywanie wartości zmiennych: echo $zmienna lub echo ${zmienna} Wypisywanie łańcuchów znakowych: echo tekst lub echo “tekst ze spacją na końcu ” Opcja “-n” powoduje, że nie następuje przejście do nowej linii Pobieranie wartości od użytkownika: set zmienna = $< Przykład #! /bin/tcsh echo -n “Podaj imię: “ set imie = $< echo Witaj $imie (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (4) – instrukcja if Instrukcja warunkowa if if (warunek) then polecenia [else if (warunek2) then polecenia] [else polecenia] endif Krótsza postać: if (warunek) polecenie Przykład #! /bin/tcsh if ($#argv !=2) echo Trzeba podać dwa argumenty exit(1) endif (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (5) – pętle Pętla while while (warunek) polecenia end Pętla foreach foreach zmienna (lista_wartości) polecenia end Przykład – wypisanie liczb od 1 do 10 #! /bin/tcsh foreach i (1 2 3 4 5 6 7 8 9 10) echo $i end (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (6) – wyrażenia Obliczanie wyrażeń: expr $i + 1 Jeżeli wynik ma być przypisany do zmiennej, należy użyć cudzysłowu `` set zmienna=`expr $i + 1` Przykład – wypisanie liczb od 1 do 10 w pętli while #! /bin/tcsh set $i=1 while ($i<=10) echo $i set i=`expr $i+1` end (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (7) – instrukcje switch i goto Instrukcja warunkowa switch: switch ($zmienna) case wartość1: polecenia breaksw case wartość2: polecenia breaksw default: polecenia breaksw endsw Instrukcja goto: goto etykieta Definiowanie etykiety: etykieta: (c) KN Mentor Podstawy systemów Unix/Linux Programowanie w tcsh (8) – badanie plików Przykład usuwający wszystkie podane jako argumenty pliki * #! /bin/tcsh Sprawdzenie czy podana foreach nazwa ($argv) nazwa jest plikiem ** if (-f $nazwa) then echo -n "czy usunac plik ’${nazwa}’ (t/n/q)?" else echo -n "czy usunac caly katalog ’${nazwa}’ (t/n/q)? " endif set odpow = $< switch ($odpow) case n: ** inne testy: continue -d – czy jest katalogiem case q: -e – czy istniej exit -s – czy plik jest pusty case t: -r -w -x – czy są odpowiednie prawa rm -r $nazwa continue endsw end *) Przykład z http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Unix/CShellII.html (c) KN Mentor Podstawy systemów Unix/Linux Scalanie plików Do scalania kilku plików w jeden służy program tar Scalając pliki najczęściej stosuje się następujące opcje tar -cvf archiwum.tar plik1 plik2 ... -c – tworzy archiwum -v – powoduje wyświetlanie szczegółów wykonywanych operacji -f – nazwa pliku (ostatnia w kolejności opcja) Wypakowując pliki z archiwum najczęściej stosuje się następujące opcje tar -xvf archiwum.tar -x – wypakowuje z archiwum Pojedyncze pliki można wypakować w następujący sposób tar -ef archiwum.tar plik1 plik2 ... Zawartość archiwum można sprawdzić wpisując tar -tf archiwum.tar (c) KN Mentor Podstawy systemów Unix/Linux Kompresja plików Najpopularniejszym programem do kompresowania jest gzip (GNU zip) gzip jest alternatywą GNU dla “słynnego” zipa, ale nie jest z nim zgodny Pojedynczy plik można skompresować poleceniem gzip plik Można też określić stopień kompresji od 1 (najszybszy) do 9 (najlepszy), np. gzip -9 plik Utworzone zostanie archiwum z rozszerzeniem .gz (plik.gz) Plik dekompresuje się poleceniem gunzip plik.gz lub gzip -d plik.gz Zawartość archiwum .gz można sprawdzić poleceniem gzip -l plik.gz Drugim popularnym programem kompresującym jest bzip2 bzip2 daje większy stopień kompresji, ale działa wolniej (c) KN Mentor Podstawy systemów Unix/Linux Scalanie i kompresja plików jednym poleceniem Grupę plików przed kompresją należy połączyć w jedno archiwum poleceniem tar Możliwa jest wykonanie scalania i kompresji plików jednym poleceniem Scalanie i kompresja gzip (należy stosować rozszerzenie .tgz lub .gz) tar -cvzf archiwum.tgz plik1 plik2 ... Scalanie i kompresja bzip2 (należy stosować rozszerzenie .tbz, .bz lub .bz2) tar -cvjf archiwum.bz2 plik1 plik2 ... Dekompresja i wypakowanie plików z archiwum tar -xvzf archiwum.tgz lub tar -xvjf archiwum.bz2 (c) KN Mentor Podstawy systemów Unix/Linux Literatura Książki: Paul Love, Joe Merlino, Craig Zimmerman, Jeremy C. Reed, Paul Weinstein: Beginning Unix, Wiley Publishing 2005 (jak na razie brak wydania polskiego) Deborah S. Ray, Eric J. Ray: Po prostu UNIX, Helion 2000 (nakład na wyczerpaniu) Jerry Peek, Grace Todino, John Strang: UNIX. Wprowadzenie, Helion 2002 Wybrane miejsca sieciowe: Wikipedia: http://en.wikipedia.org i http://pl.wikipedia.org Norman Matloff's Unix and Linux Tutorial Center: http://heather.cs.ucdavis.edu/~matloff/unix.html Writing C-shell Scripts, Durham University http://www.dur.ac.uk/resources/its/info/guides/3Cshells.pdf (c) KN Mentor