1. Podstawowe polecenia

Transkrypt

1. Podstawowe polecenia
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
1. Podstawowe polecenia
Celem ćwiczenia jest wprowadzenie do pracy z wierszem poleceń systemu Unix, poznanie
podstawowych poleceń oraz zasad składni poleceń powłoki.
1.1. Unix
uname
uname -l
uname --help
man uname
q
/
?
1.2. Użytkownik
whoami
who am i
who
finger
passwd
logout
exit
1.3. Czas i miejsce
date
time
cal
pwd
ls
cd
..
/
~
-1-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
1.4. Pliki
ls -l
cat
cat >
touch
cp
mv
rm
1.5. Katalogi
pwd
cd
mkdir
rmdir
-2-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
2. Katalogi, pliki i uprawnienia
Celem ćwiczenia jest opanowanie obsługi plików i katalogów ze szczególnym uwzględnieniem
uprawnień.
2.1. Obsługa katalogów
pwd
- wyświetla bieżący katalog
ls
- wyświetla zawartość katalogu
cd
- zmienia katalog bieżący na wskazany albo na domowy
cd ..
- zmienia katalog na nadrzędny
cd /
- zmienia katalog na główny
cd ~
- zmienia katalog na domowy
mkdir
- tworzy nowy katalog
rmdir
- usuwa (pusty) katalog
2.2. Obsługa plików
cat
- wypisuje zawartość pliku
head
- wypisuje pierwsze linie z pliku
tail
- wypisuje ostatnie linie z pliku
more
- wypisuje zawartość pliku zatrzymując się po każdym pełnym ekranie
less
- umożliwia przeglądanie zawartości pliku
cp
- kopiuje zawartość pliku
mv
- przenosi (zmienia nazwę) plik
rm
- usuwa plik
Znaki wieloznaczne w nazwach plików:
?
- dokładnie jeden dowolny znak
*
- dowolna liczba dowolnych znaków
[a-f]
- jeden ze znaków w nawiasach kwadratowych
2.3. Uprawnienia do plików i katalogów
chmod
- zmienia uprawnienia do pliku (katalogu)
Przykłady:
chmod u+rwx,g=rx,o=x katalog
chmod 751 katalog
-3-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
3. Strumienie i przetwarzanie potokowe
Celem ćwiczenia jest poznanie podstawowych zasad przekierowywania strumieni wejściowych i
wyjściowych oraz podstaw przetwarzania potokowego.
3.1. Przekierowywanie strumieni wejściowego i wyjściowego
>
- przekierowuje wyjście do pliku
>>
- dopisuje wyjście do pliku
2>
- przekierowuje błędy do pliku
2>/dev/null
- ignoruje błędy
<
- przekierowuje wejście z pliku
Przykłady:
ls –lR / 2>/dev/null
- wypisuje wszystkie pliki wraz z atrybutami, pomiń błędy
cat < plik > plik2
- kopiuje zawartość pliku plik do pliku plik2
3.2. Przetwarzanie potokowe
|
- przekierowuje wyjście polecenia do wejścia kolejnego polecenia
Przykłady:
ls –l | more
- wypisuje pliki z atrybutami strona po stronie
grep ^s /etc/passwd | cut –d: -f 1 | more
- wyodrębnia identyfikatory użytkowników na literę s
3.3. Polecenia przydatne w przetwarzaniu potokowym
more
- wypisuje zawartość pliku zatrzymując się po każdym pełnym ekranie
less
- umożliwia przeglądanie zawartości dużych plików
grep
- poszukuje wyrażeń regularnych w liniach pliku
cut
- wycina fragment tekstu
sed
- zamienia teksty w pliku
sort
- sortuje
3.4. Wyrażenia regularne - przypomnienie
^
- początek tekstu
$
- koniec tekstu
.
- dowolny znak
[]
- dowolny z wymienionych znaków
[^]
- żaden z wymienionych znaków
?
- powtarza się zero albo jeden raz
-4-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
+
- powtarza się raz lub więcej razy
*
- powtarza się dowolną liczbę razy
()
- grupuje fragment wyrażenia
{3}
- powtarza się określoną liczbę razy (3)
{3,5}
- powtarza się określoną liczbę razy (od 3 do 5)
{3,}
- powtarza się określoną liczbę razy (3 albo więcej razy)
-5-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
4. Kompresja i archiwizacja plików
Celem ćwiczenia jest poznanie podstawowych poleceń służących do kompresji i archiwizacji plików oraz
utrwalenie umiejętności przekierowywania strumieni wejściowych i wyjściowych oraz przetwarzania
potokowego.
4.1. Kompresor gzip
Kompresor gzip wykorzystujący algorytmy kompresji LZW zastąpił w systemach Unix kompresor
compress, który bazował na kodowaniu Huffmana. Kompresor gzip służy do bezstratnej, odwracalnej
kompresji pojedynczego pliku. Dekompresorem jest gunzip. Kompresor gzip i dekompresor gunzip, jak
wszystkie standardowe polecenia, mogą być używane w połączeniu z przekierowywaniem strumieni
wejściowych i wyjściowych oraz w przetwarzaniu potokowym. W kompresorze tym można sterować
balansem pomiędzy szybkością działania a stopniem kompresji za pomocą parametrów od -1 do -9.
Przykłady:
Kompresja zawartości pliku:
ls –l
gzip plik
ls -l
Dekompresja skompresowanego pliku:
gunzip plik.gz
Kompresja najszybsza:
gzip -1 plik
ls -l
Kompresja najsilniejsza:
gunzip plik.gz
gzip -9 plik
ls –l
gunzip plik
4.2. Kompresor bzip2
Kompresor bzip2 wykorzystuje spostrzeżenie, że dla dużych plików stopień kompresji algorytmów LZW
jest większy jeżeli najczęściej powtarzające się elementy znajdują się na początku pliku. Modyfikacja
algorytmów LZW o algorytm odwracalnego sortowania zawartości plików przed kompresją pozwala uzyskać
znacznie większy stopień kompresji. Poprawa jakości kompresji w stosunku do kompresora gzip odbywa się
kosztem czasu kompresji i ilości potrzebnej pamięci w czasie kompresji. Podobnie jak dla kompresora gzip
można sterować balansem pomiędzy szybkością działania a stopniem kompresji za pomocą parametrów od
-1 do -9. Zwykle, dla dużych plików (kilkadziesiąt, kilkaset KiB) nawet najszybsza (-1) kompresja bzip2 jest
skuteczniejsza od najlepszej (-9) kompresji gzip. Kompresor bzip2 nie jest standardowym składnikiem
wszystkich dystrybucji Linuksa.
Przykłady:
Kompresja zawartości pliku:
-6-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
ls –l
bzip2 plik
ls -l
Dekompresja skompresowanego pliku:
bunzip2 plik.bz2
Kompresja najszybsza:
bzip2 -1 plik
ls -l
Kompresja najsilniejsza:
bunzip2 plik.bz2
bzip2 -9 plik
ls –l
bunzip2 plik
4.3. Archiwizator tar
Archiwizator tar pozwala na połączenie wielu plików w jedno archiwum. Zachowuje on również
charakterystyczne dla systemu Unix atrybuty plików takie jak: czasy utworzenia, dostępu i modyfikacji,
informacje o właścicielu i grupie oraz uprawnienia. Archiwizator tar, którego nazwa pochodzi od ang. Tape
Archivizer, traktuje archiwum jak zapisane ta taśmie o wyłącznie sekwencyjnym dostępie i dlatego przy
aktualizacji zawartości archiwum nie nadpisuje poprzednich wersji plików tylko dołącza kolejne ich wersje na
końcu. W archiwum tar może się zatem znajdować wiele plików o takiej samej nazwie.
Parametry polecenia tar:
c - utwórz archiwum
t - testuj (listuj) zawartość archiwum
u - aktualizuj zawartość archiwum (dodawanie nowych i zmienionych plików)
x - wyodrębnij pliki z archiwum
f nazwa.tar
- nazwa pliku archiwum
v - pracuj w trybie gadatliwym
vv - pracuj w trybie bardzo gadatliwym
Przykłady:
Utwórz archiwum w pliku arch1.tar z plików o nazwach rozpoczynających się od litery p:
tar –c –f arch1.tar p*
Wyświetl zawartość archiwum w trybie gadatliwym:
tar –tvf arch1.tar
Zaktualizuj archiwum o zmieniony plik
touch plik
tar –uvvf arch1.tar plik
tar –tvf arch1.plik
-7-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
4.4. Archiwizacja z kompresją
Archiwizator tar standardowo nie stosuje żadnej kompresji. Rozmiar archiwum tar jest większy od sumy
rozmiarów znajdujących się w nim plików. Z wykorzystaniem przekierowania strumieni i przetwarzania
potokowego można tworząc archiwum wykonać kompresję jego zawartości.
tar –c plik* | gzip > arch2.tgz
Podobnie przy wyodrębnianiu plików można wykonać dekompresję.
gunzip < arch2.tgz | tar -xv
Najnowsze dystrybucje Linuksa zawierają archiwizator tar obsługujący kompresje gzip i bzip2 za pomocą
dodatkowych parametrów z i j.
z - użyj kompresji gzip w odniesieniu do całej zawartości archiwum
j
- użyj kompresji bzip2 w odniesieniu do całej zawartości archiwum
tar –czvf arch3.tgz plik*
tar –cjvf arch4.tbz plik*
4.5. Zadanie sprawdzające
Zapisz w pliku o nazwie entki.gz skompresowaną listę imion i nazwisk tylko studentek z roku. Lista
powinna być posortowana według nazwisk. Listę studentek należy wyodrębnić z pliku /etc/passwd na
podstawie ostatniej litery imienia (a). Zadanie powinno zostać wykonane w jednym poleceniu z
wykorzystaniem symboli specjalnych | i >.
-8-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
5. Edycja tekstów z użyciem edytora vi
Celem ćwiczenia jest opanowanie podstawowych umiejętności edycji tekstów w edytorze vi (vim).
Instrukcja zawiera skróconą wersję listy najczęściej wykorzystywanych poleceń edycyjnych.
5.1. Tryby pracy edytora vi
Edytor vi posiada dwa charakterystyczne tryby pracy: tryb poleceń, w którym klawiszom
alfanumerycznym i ich sekwencją są przypisane czynności do wykonania oraz trybem edycji, w którym
klawiatura służy do wprowadzania tekstu. W rozszerzonej wersji edytora vi odmianą trybu poleceń jest tryb
wizualny, w którym można zaznaczać fragmenty tekstu w sposób wizualny.
Powrót do trybu poleceń następuje po przyciśnięciu przycisku ESC.
Polecenia w trybie poleceń nie wymagają potwierdzania klawiszem Enter z wyjątkiem poleceń
rozpoczynających się od dwukropka (:) i innych, dla których parametry edytuje się w dolnym wierszu edytora.
Każde z poleceń można poprzedzić liczbą całkowitą, która powoduje wielokrotne wykonanie polecenia np.
dd – usuwa jedną linię tekstu, 15dd usuwa 15 kolejnych linii tekstu.
5.2. Uruchamianie edytora vi
Edytor vi najwygodniej uruchamiać od razu podając nazwę pliku do edycji. Jeżeli plik istnieje to zostanie
otwarty, a jeżeli nie istnieje to zostanie utworzony nowy, pusty plik o podanej nazwie.
vi tekst
5.3. Kończenie pracy z edytorem vi
Polecenia należy wydawać w trybie poleceń albo poprzedzić naciśnięciem klawisza ESC.
:q
:x
:wq
ZZ
:q!
- zakończ (działa tylko jeśli nie wprowadzono zmian do tekstu albo zmiany zostały zapisane)
- zapisz zmiany i zakończ
- zapisz zmiany i zakończ
- zapisz zmiany i zakończ
- zakończ bez zapisywania zmian wprowadzonych w tekście
5.4. Przesuwanie kursora
Na większości terminali poprawnie działają przyciski sterowania kursorem wraz z Home, End, PgUp i
PgDn. W wersji uproszczonej przesuwanie kursora w trybie poleceń zapewniają polecenia:
h
j
k
l
0
$
gg
G
:n
Ctrl-f
Ctrl-b
- w lewo
- w dół
- w górę
- w prawo
- do początku linii
- do końca linii
- do początku tekstu
- do końca tekstu
- do linii numer n
- ekran w dół
- ekran w górę
-9-
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
5.5. Przejście do trybu edycji
i
I
a
A
o
O
r
R
- wstawianie nowych znaków przed pozycją kursora
- wstawianie nowych znaków na początku linii
- wstawianie nowych znaków za pozycją kursora
- wstawianie nowych znaków na końcu linii
- wstawianie w nowej linii poniżej bieżącej
- wstawianie znaków w nowej linii powyżej bieżącej
- zastąpienie jednego znaku
- zastępowanie znaków (nadpisywanie)
5.6. Usuwanie tekstu
Usuwanie tekstu umieszcza go w buforze tymczasowym, z którego tekst można np. wstawić w innym
miejscu poleceniami p albo P.
x
- usuwa znak w pozycji kursora
X
- usuwa znak przed kursorem
dkursor
- usuwa znaki w kierunku wskazanym przez polecenie przesunięcia kursora np.: d0 usuwa
znaki od początku linii do pozycji kursora
dd
- usuwa cały bieżący wiersz
5.7. Cofanie i powtarzanie zmian
Cofanie ostatnio wykonanych operacji edycyjnych możliwe jest wielokrotnie pozwalając wycofać nawet
wszystkie wprowadzone w tekście zmiany.
u
.
- cofa ostatnią operację edycyjną
- (kropka) powtarza ostatnią operację edycyjną
5.8. Schowek i tryb wizualny
Zaznaczanie tekstu możliwe jest w wersji rozszerzonej edytora vi. Zaznaczanie wykonujemy w trybie
wizualnym, który rozpoczyna polecenie v albo V. Polecenie V zaznacza całe linie tekstu. Zaznaczanie
wykonujemy przesuwając kursor. Zaznaczony blok tekstu możemy usunąć poleceniem d albo skopiować do
bufora poleceniem y.
yy
- skopiowanie do bufora bieżącej linii
y
- skopiowanie do bufora w kierunku wskazanym przez polecenie przesunięcia kursora np.: y$
skopiowanie znaków od pozycji kursora do końca linii
p
- wstawienie zawartości bufora poniżej bieżącej linii
P
- wstawienie zawartości bufora powyżej bieżącej linii
Wszystkie polecenia usuwające tekst, przenoszą go do bufora tymczasowego (odpowiednik polecenia
wytnij). Edytor vi pozwala na posługiwanie się dodatkowymi 26 buforami nazwanymi. Polecenia dotyczące
buforów nazwanych należy poprzedzać symbolem podwójnego cudzysłowu i literą alfabetu łacińskiego
będącą nazwą bufora np.:
”byy
”bp
- kopiuje bieżącą linię do bufora o nazwie b
- wstawia zawartość bufora o nazwie b poniżej bieżącej linii
- 10 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
5.9. Wyszukiwanie i zamiana
We wszystkich poleceniach wyszukiwania tekstu wzorzec tekstu do poszukiwania jest interpretowany
jak wyrażenie regularne. Polecenia wyszukiwania i zamiany należy kończyć klawiszem Enter.
/znajdź
/
?znajdź
?
- szukaj wzoru znajdź w kierunku końca tekstu
- powtórz ostatnie wyszukiwanie w kierunku końca tekstu
- szukaj wzoru znajdź w kierunku początku tekstu
- powtórz ostatnie wyszukiwanie w kierunku początku tekstu
:g/znajdź/s//zamień
- zamień pierwsze wystąpienie tekstu znajdź tekstem zamień w każdej linii
- zamień każde wystąpienie tekstu znajdź tekstem zamień w każdej linii
:g/znajdź/s//zamień/g
:g/znajdź/s//zamień/gc
- zamień każde wystąpienie tekstu znajdź tekstem zamień po potwierdzeniu
:g/wzór/s/znajdź/zamień/g
- zmień każde wystąpienie tekstu znajdź tekstem zamień w liniach
pasujących do wyrażenia regularnego wzór.
5.10. Operacje na plikach
:w
:w nazwa
:r nazwa
:e nazwa
- zapisz
- zapisz kopię bieżącego tekstu w pliku nazwa (nadal edytowany jest otwarty plik)
- wstaw zawartość pliku nazwa w linii poniżej bieżącej
- przejdź do edycji pliku nazwa
Edytor vi koloruje automatycznie składnię plików większości najpopularniejszych języków
programowania. Kolorowanie składni można wyłączyć.
:syntax off
:syntax on
- wyłączenie kolorowania składni pliku
- włączenie kolorowania składni pliku
5.11. Inne popularne edytory tekstowe
Edytor nano jest ulepszoną wersją edytora pico, który jest częścią programu pocztowego pine. W
edytorze tym dostępne polecenia są wypisane w dwóch dolnych liniach terminala, a ich użycie polega na
wybraniu odpowiedniej kombinacji łącznie z klawiszem Ctrl. Np.: Ctrl-O Zapisz.
Edytor mcedit jest częścią menadżera plików mc. Oferuje podstawowe operacje edycyjne, kolorowanie
składni najpopularniejszych języków programowania i plików konfiguracyjnych. Obsługa poleceń
wywoływana jest za pomocą przycisków funkcyjnych F1-F10. Lista poleceń wyświetlana jest w dolnym
wierszu terminala. Na terminalach, na których nie działają przyciski funkcyjne można je zastąpić sekwencją
przycisków ESC i cyfra.
- 11 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
6. Wprowadzenie do skryptów powłoki bash
Celem ćwiczenia jest doskonalenie umiejętności edycji tekstów w edytorze vi oraz zdobycie
podstawowych umiejętności dotyczących pisania skryptów powłoki bash. Podstawowe instrukcje
strukturalne oraz operatory relacji i standardowe testy dostępne w powłoce bash zostały podane na
wykładach.
6.1. Skr1 – pierwszy skrypt
Uruchomienie skryptu wymaga wpisania jego zawartości do pliku, nadanie dla pliku atrybutu x oraz jego
uruchomienie. Dołączenie do nazwy skryptu rozszerzenia .sh pozwoli edytorowi vi na właściwe podświetlanie
składni w czasie edycji.
Polecenia do wykonania:
vi skr1.sh
#edycja (i – do trybu wpisywania, ESC :wq – zapisz i zakończ
chmod u+x skr1.sh
./skr1.sh
Treść skryptu skr1 do wpisania:
#!/bin/bash
echo "Hello!"
Komentarz znajdujący się w pierwszej linii skryptu i rozpoczynający od wykrzyknika określa właściwy
interpreter dla poleceń zawartych w skrypcie. Umożliwia to pisanie skryptów w różnych interpretowanych
językach skryptowych dostępnych w danym systemie.
Warto tu również zauważyć, że programy (skrypty), które nie są umieszczone w katalogach bin, sbin
i innych znajdujących się na liście zmiennej środowiskowej PATH, należy uruchamiać podając ścieżkę dostępu
do ich lokalizacji tu: ./ w katalogu bieżącym.
6.2. Skr2 – zmienne
Skrypt ma pokazać różnice pomiędzy ujmowaniem zmiennych w pojedynczych i podwójnych
cudzysłowach. Zmienne przechowują wartości, które są interpretowane albo jako napisy albo jako liczby
całkowite (w reprezentacji 64-bitowej ze znakiem).
#!/bin/bash
echo "Zmienne"
zm=5
echo 'Zmienna = $zm'
echo "Zmienna = $zm"
Przypisując wartość do zmiennej nie należy używać spacji wokół znaku równości (=). Odczytując wartość
zmiennej należy zawsze poprzedzić nazwę zmiennej symbolem dolara ($).
6.3. Skr3 – parametry uruchamiania skryptu
#!/bin/bash
echo "Parametry skryptu"
echo "Nazwa skryptu $0"
echo "Liczba parametrów $#"
- 12 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
echo "Pierwszy parametr $1"
echo "Drugi parametr $2"
Uruchom ./skr3.sh bez parametrów i z parametrami np. ./skr5.sh jeden; ./skr3.sh jeden dwa trzy cztery;
6.4. Skr4 – obliczenia arytmetyczne
Obliczenia arytmetyczne wykonywane są zawsze na liczbach całkowitych. Obliczane wyrażenie powinno
zostać otoczone podwójnymi nawiasami poprzedzonymi symbolem dolara. Dopuszczalne jest używanie
operatorów takich jak w języku C (+, -, *, /, %) z dodatkowym operatorem potęgowania oznaczanym
podwójną gwiazdką (**).
#!/bin/bash
echo "Obliczenia"
zm=5
zm=$(($zm+2))
echo "5 + 2 = $zm"
6.5. Skr5 – instrukcja warunkowa if
Test –z pozwala sprawdzić czy następujący po nim tekst jest pusty. Brak tekstu za testem –z nie jest
interpretowany jako błąd składni skryptu.
#!/bin/bash
echo "Kalkulator"
if [ -z $1 ]; then
echo "Używaj np. $0 2+2"
else
echo $(($1))
fi
Klauzula else nie jest konieczna w poleceniu if. Pomiędzy słowami then a else i else a fi może znajdować
się dowolna liczba instrukcji.
Uruchom ./skr5.sh bez parametrów i z parametrem np. ./skr5.sh 2*3+4; ./skr5.sh 2**63-1;
6.6. Skr6 – instrukcja iteracyjna while
#!/bin/bash
echo "Odliczanka"
zm=10
while [ $zm -ge 0 ]; do
echo $zm
zm=$(($zm-1))
sleep 1
done
Przypomnienie: operatory relacji znane z języka C (==, !=, <, <=, >, >=) służą w powłoce bash
do
porównywania
tekstów,
a
do
porównywania
wartości
liczbowych
używa
się
operatorów -eq, -ne, -lt, -le, -gt, -ge.
Ćwiczenie samodzielne: Połącz umiejętności ze skryptów 3, 5 i 6 pisząc skrypt umożliwiający sterowanie
za pomocą parametrów początkową wartością licznika i opóźnieniem pojawiania się kolejnych liczb.
- 13 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
Opóźnienie w większości dystrybucji Linuksa może zawierać ułamkową liczbę sekund np. 0.2. Skrypt powinno
się dać uruchomić na trzy sposoby 1. bez parametrów (10 powtórzeń, 1s opóźnienia); 2. Z jednym
parametrem (zadana liczba powtórzeń, 1s opóźnienia); 3. Z dwoma parametrami (zadana liczba powtórzeń
i zadane opóźnienie). Np.: ./skr7.sh; ./skr7.sh 5; ./skr7.sh 20 0.25;
6.7. Skr7 – przykładowe rozwiązanie ćwiczenia
#!/bin/bash
echo "Odliczanka"
if [ -z $1 ]; then
liczba=10
else
liczba=$1
fi
if [ -z $2 ]; then
opozn=1
else
opozn=$2
fi
while [ $liczba -ge 0 ]; do
echo $liczba;
liczba=$(($liczba-1))
sleep $opozn
done
Ten skrypt można uruchamiać na trzy sposoby 1. bez parametrów (10 powtórzeń, 1s opóźnienia);
2. Z jednym parametrem (zadana liczba powtórzeń, 1s opóźnienia); 3. Z dwoma parametrami (zadana liczba
powtórzeń i zadane opóźnienie). Wypróbuj: ./skr7.sh; ./skr7.sh 5; ./skr7.sh 20 0.25;
6.8. Skr8 – operacje na plikach i katalogach
Skrypt kopiuje wszystkie skrypty (i inne programy) z katalogu domowego użytkownika do podkatalogu
kopia w katalogu domowym. Katalog kopia jest tworzony w razie potrzeby.
#!/bin/bash
echo "Backup skryptów"
#utworzenie folderu kopia
if [ -d ~/kopia ]; then
echo "Folder kopia już istnieje"
else
mkdir ~/kopia
echo "Folder kopia został utworzony"
fi
#przeszukanie wszystkich plików w poszukiwaniu skryptów
for p in $(ls ~/); do
if [ -f ~/$p -a -x ~/$p ]; then
echo "Skrypt $p - kopiuje"
cp ~/$p ~/kopia/
else
echo "Inny plik $p - pomijam"
- 14 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
fi
done
Wynik działania polecenia umieszczonego w nawiasach poprzedzonych symbolem dolara jest
przekazywany do skryptu w miejsce wywołania. Wynikiem jest tekst, który powinien się pokazać na konsoli.
6.9. Skr9 – porównywanie czasu modyfikacji plików
Testy -nt oraz –ot (nowszy niż, starszy niż) pozwalają porównywać czasy modyfikacji dwóch plików.
W skrypcie 9 zostały wykorzystane do kopiowania wyłącznie nowych albo zmienionych skryptów z katalogu
domowego do podkatalogu kopia.
#!/bin/bash
echo "Backup skryptów - wersja lepsza"
#utworzenie folderu kopia
if [ -d ~/kopia ]; then
echo "Folder kopia już istnieje"
else
mkdir ~/kopia
echo "Folder kopia został utworzony"
fi
#przeszukanie wszystkich plików w poszukiwaniu skryptów
for p in $(ls ~/); do
if [ -f ~/$p -a -x ~/$p ]; then
echo "Skrypt $p"
if [ -f ~/kopia/$p ]; then
echo " jest w folderze kopia"
if [ ~/$p -nt ~/kopia/$p ]; then #-nt (nowszy)
echo " jest zmieniony - kopiuje"
cp ~/$p ~/kopia/
else
echo " jest aktualny - pomijam"
fi
else #brak skryptu w folderze kopia
echo " nowy - kopiuje"
cp ~/$p ~/kopia/
fi
else
echo "Inny plik $p - pomijam"
fi
done
- 15 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
7. Wprowadzenie do administrowania systemem
Celem ćwiczenia jest zapoznanie się z podstawowymi zagadnieniami związanymi z administrowaniem
kontami użytkowników i oprogramowaniem w systemie operacyjnym Linux na przykładzie dystrybucji
Knoppix. Knoppix jest pochodną dystrybucji Debian. Analogicznie operacje można wykonać w innych
dystrybucjach bazujących na Debianie takich jak Ubuntu albo Mint. W dystrybucjach bazujących na
dystrybucji RedHat (Fedora, CentOS, Scientific Linux) zamiast polecenia apt-get używa się polecenia yum,
a zamiast udpate-rc.d – chkconfig.
7.1. Uruchamianie poleceń z uprawnieniami administratora
Uruchomienie polecenia z uprawnieniami administratora wymaga poprzedzenia polecenia komendą
sudo. Lista użytkowników, którzy mają prawo do używania polecenia sudo i lista poleceń, których to dotyczy
są przechowywane w pliku konfiguracyjnym /etc/sudoers.
Jeżeli chcemy czasowo przełączyć się na konto administratora, w celu wykonania zestawu poleceń
wymagających uprawnień administracyjnych, można to wykonać albo za pomocą polecenia sudo su jeśli
użytkownik ma prawo do używania sudo, albo za pomocą polecenia su jeśli użytkownik zna hasło
administratora. W systemie Knoppix użytkownik knoppix ma prawo do uruchamiania wszystkich programów
za pośrednictwem sudo bez konieczności potwierdzania uprawnień hasłem. W typowej konfiguracji sytemu,
przy pierwszym poleceniu sudo w ramach danej sesji, pojawia się monit o hasło użytkownika.
Przykładowe polecenia do wykonania:
Edycja nazwy komputera:
vi /etc/hostname
Uruchomiony przez zwykłego użytkownika edytor vi otworzy plik systemowy /etc/hostname w trybie
tylko do odczytu. Aby można było zapisywać zmiany wprowadzone w pliku należącym do administratora
powinno się polecenie poprzedzić komendą sudo.
sudo vi /etc/hostname
Ze względów bezpieczeństwa zaleca się nie pracować, o ile nie jest to konieczne, jako użytkownik root,
dla którego nie są kontrolowane uprawnienia. Lepiej rozdysponować uprawnienia do poszczególnych zadań
w systemie dla użytkowników pełniących funkcje administracyjne za pomocą dodatkowych grup i przypisać
im uprawnienia do wykonywania właściwych poleceń przez sudo.
7.2. Podłączanie zewnętrznych pamięci masowych
Dołączenie do drzewa katalogów w systemie plików pamięci przenośnej realizuje się za pośrednictwem
polecenia mount. Np.:
sudo mount /dev/sdb1 /mnt/pen
Zaleca się aby katalog, w którym montujemy zewnętrzną pamięć był pusty i oczywiście musi on istnieć.
Dla większości systemów plików typ zostanie rozpoznany automatycznie ale można go wskazać parametrem
–t. Listę obsługiwanych systemów plików można odczytać z pliku /proc/filesystems.
Listę wszystkich partycji na wszystkich urządzeniach wyświetla polecenie:
sudo fdisk –l.
- 16 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
Jest ono pomocne przy identyfikacji właściwego oznaczenia np. zewnętrznej pamięci typu PenDrive.
Polecenie mount bez parametrów wyświetla listę aktualnie zamontowanych systemów plików, a polecenie
df ilość zajętego i wolnego miejsca w poszczególnych systemach plików.
Należy pamiętać o odmontowaniu napędu przed jego odłączeniem. Odmontować można albo napęd
albo folder, w którym jest on zamontowany.
sudo umount /dev/sdb1
Uwaga! Odłączenie napędu przed jego odmontowaniem może spowodować awarię znajdującego się w
napędzie systemu plików i bezpowrotną utratę przechowywanych tam danych.
7.3. Instalowanie programów z repozytoriów
Instalowanie programów realizuje się za pomocą polecenia apt-get. Przed pierwszym użyciem należy
zaktualizować listę repozytoriów i listę dostępnego oprogramowania.
sudo apt-get update
Przy instalacji jako parametr polecenia apt-get należy podać tylko nazwę programu bez numeru wersji
np. nano. Menedżer pakietów apt-get sam wyszuka najnowszą wersję i porówna z aktualnie zainstalowaną
w systemie.
sudo apt-get install nano
Polecenie apt-get rozwiązuje wszystkie zależności między programami proponując automatyczne
zainstalowanie niezbędnych bibliotek i zależnych programów.
Przeszukiwanie listy oprogramowania w repozytoriach ułatwia polecenie apt-cache. Przykładowo jeśli
chcemy poszukać programów, które w nazwie albo w opisie używają słowa nano można to wykonać
poleceniem:
apt-cache search nano
Wyświetlenie informacji o programie nano:
apt-cache show nano
Aktualizacja wszystkich programów i bibliotek zainstalowanych w systemie:
sudo apt-get upgrade
Odinstalowanie programu o nazwie nano:
sudo apt-get remove nano
7.4. Uruchamianie usług
Standardowa metoda instalacji i uruchamiania usług systemowych zakłada, że każda aplikacja, która
może być usługą, posiada w katalogu /etc/init.d/ skrypt startowy. Skrypty startowe z katalogu /etc/init.d/
można uruchamiać z parametrami start i stop. Często realizują one również dodatkowe funkcje takie jak:
status, reload, restart itp.
Przykładowo uruchomienie usługi serwera WWW z zainstalowaną aplikacją apache2 wymaga wydania
polecenia:
sudo /etc/init.d/apache2 start
albo prościej
- 17 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
sudo service apache2 start
Można sprawdzić działanie serwera wpisując w przeglądarce adres http://localhost. Pliki dostępne przez
usługę WWW zwykle umieszczone są w katalogu /var/www/html.
Aby usługa uruchamiała się automatycznie przy każdym uruchomieniu systemu, konieczne jest
utworzenie linków symbolicznych do skryptu startowego usługi w folderach /etc/rcX.d. W systemach
opartych na dystrybucji Debian służy do tego gotowy skrypt o nazwie update-rc.d.
sudo update-rc.d apache2 defaults
Wstrzymanie automatycznego uruchamiania usługi:
sudo update-rc.d apache2 remove
Aktualny stan wszystkich usług można wyświetlić za pomocą polecenia:
sudo service –staus-all
7.5. Konta użytkowników
Do obsługi kont użytkowników służą polecenia useradd, usermod, userdel, groupadd, groupdel, chfn,
passwd itp. Informacje o kontach użytkowników zapisywane są w plikach /etc/passwd (wszystko oprócz
hasła) i w pliku /etc/shadow (hasło i terminy jego ważności). Plik /etc/passwd może być odczytywany przez
wszystkich użytkowników w systemie, a plik /etc/shadow wyłącznie przez system.
Założenie nowej grupy użytkowników o nazwie studenci:
sudo groupadd studenci
Założenie konta nowego użytkownika jasio:
sudo useradd –s /bin/bash –g studenci –d /home/jasio –m jasio
Zakładając konto użytkownika należy podać właściwą dla niego powłokę (-s), lokalizację katalogu
domowego (-d) oraz grupę podstawową (-g). Opcja –m powoduje utworzenie katalogu domowego,
skopiowanie do niego zawartości katalogu /etc/skel i nadanie właściwych uprawnień do plików. Dodatkowo
zakładając konto można podać wiele innych parametrów jak opis konta (-c), lista grup dodatkowych (-G) czy
zakodowane hasło użytkownika (-p).
Aby użytkownik mógł korzystać z konta należy ustalić hasło dla konta:
sudo passwd jasio
Wszystkie parametry konta można modyfikować poleceniem usermod. Przykładowo dopisanie
użytkownika jasio do dodatkowej grupy users:
sudo usermod –G users jasio
Uwaga. Użycie opcji –G w poleceniu usermod usuwa użytkownika z wszystkich grup dodatkowych i
dodaje go ponownie tylko do grup wymienionych po parametrze –G. Należy pamiętać aby zawsze podawać
kompletną listę grup dodatkowych.
Polecenie chfn ustala komentarz konta interpretowany jako nazwę (imię i nazwisko), dział, telefon itp.
Polecenie odpytuje kolejno o poszczególne wartości. Odczyt atrybutów komentarza konta jest dostępny
poleceniem finger.
Dla kont używanych do nadawania uprawnień, które nie służą do uwierzytelniania, jako powłokę podaje
się /bin/false albo /bin/nologin.
- 18 -
Systemy operacyjne Unix, Linux - Laboratorium – Podstawowe polecenia
7.6. Dostęp zdalny
Dostęp zdalny realizowany za pomocą bezpiecznego szyfrowanego połączenia SSH jest możliwy po
uruchomieniu tej usługi:
sudo service ssh start
Automatyczne uruchamianie usługi wraz ze startem systemu:
sudo update-rc.d ssh defaults
Połączenie ze zdalnym systemem:
ssh [email protected]
Przy pierwszym połączeniu ze zdalnym hostem pojawi się monit o zaakceptowanie certyfikatu hosta.
Należy odpowiedzieć pełnym słowem yes. Ten monit pojawia się tylko w dwóch sytuacjach – jeżeli jest to
pierwsze połączenie pomiędzy hostami albo jeżeli zmieniony został certyfikat zdalnego hosta. Nieoczekiwane
pojawienie się monitu w czasie jednego z kolejnych połączeń może świadczyć o próbie przejęcia połączenie
w tzw. ataku Men In The Middle – koniecznie należy się upewnić, co jest przyczyną zmiany certyfikatu przed
jego zaakceptowaniem. Wymaga to dodatkowo wykasowania odpowiedniej linii z pliku ~/.ssh/known_hosts.
Zakończenie połączenia zdalnego następuje po wydaniu polecenia exit albo polecenia logout.
Usługa ssh oferuje również możliwość bezpiecznego kopiowania szyfrowanym kanałem plików z/do
zdalnego hosta. Służy do tego polecenie scp o składni zbliżonej do polecenia cp.
Przykład kopiowania pliku o nazwie plik z katalogu domowego do katalogu /home/student na
komputerze o adresie 10.1.0.204 z uprawnieniami użytkownika student na zdalnym systemie:
scp ~/plik [email protected]:/home/student/
W analogiczny sposób można plik kopiować w odwrotnym kierunku – ze zdalnego komputera do
lokalnego:
scp [email protected]:/home/student/plik ./
Przy każdym kopiowaniu z wykorzystaniem zdalnego systemu pojawi się pytanie o hasło użytkownika
zdalnego niezbędne do uwierzytelnienia operacji w zdalnym systemie.
- 19 -