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