MATERIAŁY DO PRZEDMIOTU SOP - LEKCJA 1










Część 1: Obsługa bash'a

stosowanie tabulatora - naciśnięcie tabulatora uzupełnia komendę, którą aktualnie wpisujemy (pojawia się wybór dostępnych komend).
W podobny sposób, gdy wpisujemy ścieżkę, bash samodzielnie uzupełnia nazwy katalogów/plików.

Przykład użycia:

tomek@Zuerst:~> ki                   //tutaj nacisnąć tabulator a bash zaproponuje dostępne komendy
kicker                     kio_media_realfolder
kill                       kioobex_start
killall                    kioslave
kinfocenter                kio_system_documenthelper
kinstalltheme              kio_uiserver
kioclient                  kipidcrawclient
kioexec                    kitchensync
kio_http_cache_cleaner     kivio
kio_media_mounthelper
tomek@Zuerst:~> kill                  //kolejne naciśnięcia taba zmniejszają listę dostępnych opcji
kill     killall
tomek@Zuerst:~> kill                  //i tak dalej dopuki nie uzupełni rządanej komendy


klawisze strzałka do góry / w dół - wybór poprzedniego polecenia / przegląd poprzednich poleceń.
Gdy wpisujemy polecenie działają również strzałki w lewo i w prawo oraz home i end pozwalające edycję polecenia.


kombinacja SHIFT + strzałka do góry / w dół / Page down / Page up - w przypadku poleceń wyrzucających na ekran dużo tekstu
możemy przewijać okno shella o linijkę lub o całe strony. Czasem działa również rolka w myszce :)


używanie clear - czyści ekran (możemy wciąż przewijać okno metodami powyżej)


używanie przełączników do poleceń (opcji) - modyfikują działanie poleceń.
Przełączniki możemy użyć na jeden z możliwych sposobów:

  • opcje jednoliterowe po jednym myślniku (ls -l)
  • opcje jednoliterowe sklejone - jeden myślnik i dwie opcje (ls -li)
  • opcje długie po dwóch myślnikach (ls --inode)
  • opcje długie po dwóch myślnikach z parametrem (ls --hide=*txt)

Opcje długie można stosować zamiennie z krótkimi (często sie dublują). Opcje krótkie można sklejać w dowolnej kolejności.

Przykład użycia:

tomek@Zuerst:/tmp> ls -l
razem 0
-rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
-rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2
-rw-r--r-- 1 tomek users 0 paź 16 00:48 test2.txt
-rw-r--r-- 1 tomek users 0 paź 16 00:48 test.txt

tomek@Zuerst:/tmp> ls -li
razem 0
161510 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
161512 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2
161508 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test2.txt
161494 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test.txt

tomek@Zuerst:/tmp> ls --inode
161510 plik1  161512 plik2  161508 test2.txt  161494 test.txt

tomek@Zuerst:/tmp> ls --inode -l
razem 0
161510 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
161512 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2
161508 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test2.txt
161494 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test.txt

tomek@Zuerst:/tmp> ls --hide=*txt
plik1  plik2

tomek@Zuerst:/tmp> ls -li --hide=*txt
razem 0
161510 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
161512 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2


stosowanie znaków globalnych / wyrażeń regularnych - Jeżeli chcemy objąć poleceniem kilka plików stosujemy tzw wyrażenia regularne.

  • * -zastępuje dowolny ciąg znaków (pusty też)
  • ? -zastępuje dokładnie jeden znak
  • [] - w tym miejscu może wystąpić jeden ze znaków z nawiasu... można stosować zakresy !!!

Przykład użycia:

tomek@Zuerst:/tmp> ls                    //lista plików
foto.html  foto.ico  nomy  nowy

tomek@Zuerst:/tmp> ls --hide=n*          //ukrywamy wszystkie na litere n
foto.html  foto.ico

tomek@Zuerst:/tmp> ls --hide=foto.*      //ukrywamy wszytkie zaczynające sie na foto.
nomy  nowy

tomek@Zuerst:/tmp> ls --hide=foto.???    //j.w. plus trzy znaki rozszerzenia
foto.html  nomy  nowy

tomek@Zuerst:/tmp> ls --hide=foto.????   //j.w. ale cztery znaki rozszerzenia
foto.ico  nomy  nowy

tomek@Zuerst:/tmp> ls --hide=no[mw]y     //ukrywamy wszystkie zaczynające się na no trzeci 
foto.html  foto.ico                      //znak m lub w i ostatni y

tomek@Zuerst:/tmp> ls --hide=no[m-z]y    //j.w. ale trzecia litera z zakresu m-z !!!
foto.html  foto.ico


ubijanie zawieszonych programów - Jeżeli nasz terminal nie odpowiada na polecenia,
nie wiemy jak opuścić program, bo zgubiliśmy się w opcjach:

  • CTRL + 'c' - ubija aktywny program
  • CTRL + 'z' - zawiesza aktywny program
  • 'q', "quit", czasem CTRL+Q (okienka), ALT+F4 (okienka) - wychodzi z programu
  • kill -9 (numer pid) - ubija program o podanym pid (wykonywać z innego terminalu)
  • killall (nazwa programu) - ubija wszytkie programy o tej nazwie (wykonywać z innego terminalu)
  • xkill - potem klikamy w zawieszone okienko które zostaje ubite (wykonywać z innego terminalu)

Oczywiście niektóre z tych metod nie są bezpieczne i można utracić niezapisane dane.
W większości przypadków jedna z podanych metod rozwiąże sprawe :)



obsługa man - wyświetla manual do podanego polecenia.
Jeżeli nie wiemy czego szukamy używamy przełącznika '-k' :)

Przykład użycia:

tomek@Zuerst:~> man
Jakiej strony podręcznika potrzebujesz?

tomek@Zuerst:~> man -k bash
bash (1)             - GNU Bourne-Again SHell
bashbug (1)          - report a bug in bash
bashbuiltins (1)     - bash built-in commands, see bash(1)
rbash (1)            - restricted bash, see bash(1)

tomek@Zuerst:~>man bash

Uruchamia się manual. Poruszamy się po nim domyślnie: strzałkami/pagedown/pageup/end/home/spacja.
Wpisanie "/" (slash'a) i szukanego tekstu (/szukany ciąg) i zatwierdzenie enterem podświetli wszystkie wystąpienia takiego ciągu w tekscie.
Przewijamy potem klawiszem: n -> do przodu, N -> do tyłu.
Pomoc podczas uruchomionego programu man wyświetlamy wciskając klawisz "h" --> zostaje wyświetlona pomoc do pomocy :)
Bardzo podobnym poleceniem do man jest info.






Część 2: Porównanie poleceń w DOS'a i shell'a w Linuksie (Unixie):


DOS Unix/Linux Opis
\ / w uniksie jest jedno drzewo plików rozpoczynające się od korzenia głównego "/". Nie ma liter przypisanych do patycji.
dir ls
ls -l
ls -al
wyświetlenie zawartości katalogu
tree tree wypisanie katalogu w postaci drzewa
cd katalog cd katalog przejście do podanego katalogu (samo cd przechodzi do katalogu głównego)
cd pwd wyświetlenie bieżącego katalogu
copy cp kopiowanie plików/katalogów
move mv przenoszenie plików/katalogów
del rm usuwanie plików
mkdir mkdir tworzenie katalogów
echo echo wypisywanie tekstu
deltree/rmdir rm -r
rmdir
usuwanie katalogów
nc mc menadżer plików
edit vi, nano, mcedit, kwrite(gui) popularne edytory
telnet telnet/ssh praca na zdalnym komputerze
type cat wyświetlenie zawartości pliku
more more/less wyświetlanie plików (troche wygodniejsze dla użytkownika)
cls clear czyszczenie ekranu

Wybrane polecenia i ich przełączniki:

ls - wypisuje pliki z katalogu
przełączniki:

  • -a -dodatkowo pliki ukryte
  • -l -długa lista z wszystkimi informacjami
  • -i -wypisuje dodatkowo numery "inode" plików
  • -h -wielkość plików jako KB, MB itd
  • -f -bez sortowania
  • -S -sortuje według wielkości
  • -t -sortuje według czasu modyfikacji
  • -r -odwraca sortowanie
  • --hide=(wzorzec) -ukrywa pliki według wzorca (dozwolone znaki globalne)

Przykład użycia:

tomek@Zuerst:/tmp> ls
plik1  plik2  test2.txt  test.txt

tomek@Zuerst:/tmp> ls -a
.  ..  plik1  plik2  test2.txt  test.txt

tomek@Zuerst:/tmp> ls -l
razem 0
-rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
-rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2
-rw-r--r-- 1 tomek users 0 paź 16 00:48 test2.txt
-rw-r--r-- 1 tomek users 0 paź 16 00:48 test.txt

tomek@Zuerst:/tmp> ls -i
161510 plik1  161512 plik2  161508 test2.txt  161494 test.txt

tomek@Zuerst:/tmp> ls -li
razem 0
161510 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
161512 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2
161508 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test2.txt
161494 -rw-r--r-- 1 tomek users 0 paź 16 00:48 test.txt

tomek@Zuerst:/tmp> ls -li --hide=*txt
razem 0
161510 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik1
161512 -rw-r--r-- 1 tomek users 0 paź 16 00:48 plik2



touch - zmienia czas dostępu i modyfikacji pliku. Gdy pliku o podanej nazwie nie ma, zostaje utworzony.

Przykład użycia:

tomek@Zuerst:/tmp> ls -l
razem 8
-rw-r--r-- 1 tomek users  302 kwi 28  2006 favicon.ico
-rw-r--r-- 1 tomek users 3406 mar 12  2006 foto.html

tomek@Zuerst:/tmp> touch nowy

tomek@Zuerst:/tmp> ls -l
razem 8
-rw-r--r-- 1 tomek users  302 kwi 28  2006 favicon.ico
-rw-r--r-- 1 tomek users 3406 mar 12  2006 foto.html
-rw-r--r-- 1 tomek users    0 paź 16 01:30 nowy

tomek@Zuerst:/tmp> touch foto.html

tomek@Zuerst:/tmp/tmp> ls -l
razem 8
-rw-r--r-- 1 tomek users  302 kwi 28  2006 favicon.ico
-rw-r--r-- 1 tomek users 3406 paź 16 01:30 foto.html
-rw-r--r-- 1 tomek users    0 paź 16 01:30 nowy





Część 3: Kilka słów o systemie plików Linuksa

wszystkie rysunki i większość treści znaleziona w internecie :) do paragrafów dołożyłem linki do pełnych opracowań (wybrałem tylko ważne dla nas fragmenty)
dodatkowo dodaje swoje[komentarze]




link do oryginału

Unixowy system plików ma wiele zadziwiających właściwości, których nie mają inne systemy plików. Podstawowa sprawa - to dowiązania. Każdy plik charakteryzuje specyficzna liczba [wyswietlamy ją za pomocą ls -i lub ls --inode], która pozwala go odróżnić od innych. Liczba ta oznacza tzw. numer inode'a. Sam inode to struktura danych, w której są wszystkie informacje o pliku za wyjątkiem nazwy. Przeniesienie informacji o pliku z katalogu do inode'a daje znakomite możliwości.
....
Istnieje także możliwość wskazywania na jeden plik większej ilości dowiązań (tak teraz będziemy mówić na pozycję w tablicy katalogów). Dzięki temu można dostać się do jednego pliku z kilku różnych ścieżek [system wyrzuci plik dopiero po usunięciu ostatniego dowiązania]. Do tworzenia dowiązań służy polecenie ln.
....
Istnieje także inny rodzaj dowiązań - dowiązanie symboliczne. Tak naprawdę dowiązanie symboliczne jest krótkim plikiem z zapisaną ścieżką dostępu do oryginalnego pliku. System wykorzystuje to, by przy próbie otwarcia dowiązania symbolicznego otworzyć właściwy plik. Dowiązania symboliczne mają swoje wady i zalety. Zaletą jest fakt, że po skasowaniu głównego pliku dowiązanie symboliczne przestaje działać - tak jak skrót w Windows. Natomiast wadą jest fakt, że dowiązanie symboliczne przestanie działać po przeniesieniu głównego pliku. Zajmuje też dodatkowego inode'a. Dowiązania symboliczne są najlepsze do tworzenia skrótów lub innych nazw pliku. Tworzy się je poleceniem ln -s [albo --symbolic].

Przykład użycia:

tomek@Zuerst:/tmp> echo czesc > plik                                    //tworzymy plik

tomek@Zuerst:/tmp> ln plik link.twardy                                  //tworzymy twardy link

tomek@Zuerst:/tmp> ln -s plik link.miekki                               //tworzymy miękki link

tomek@Zuerst:/tmp> ls -li
razem 8
161508 lrwxrwxrwx 1 tomek users 4 paź 16 02:41 link.miekki -> plik
161494 -rw-r--r-- 2 tomek users 6 paź 16 02:41 link.twardy
161494 -rw-r--r-- 2 tomek users 6 paź 16 02:41 plik

tomek@Zuerst:/tmp> cat plik                                             //wypisujemy pliki
czesc

tomek@Zuerst:/tmp> cat link.twardy
czesc

tomek@Zuerst:/tmp> cat link.miekki
czesc

Jak widać twarde dowiązanie wskazuje na ten sam numer iNode'a (pierwsza kolumna), natomiast link miękki wskazuje na nazwe.
Jest to bardzo ważna różnica...
Dodatkowo liczba dowiązań do danego iNode'a jest w 3 kolumnie (jedna nazwa wskazuje na iNode 161508 i dwie nazwy na 161494. Zobaczmy co się stanie po usunięciu pliku oryginalnego:

tomek@Zuerst:/tmp> rm plik                                    //usuwamy plik

tomek@Zuerst:/tmp> ls -li
razem 4
161508 lrwxrwxrwx 1 tomek users 4 paź 16 02:41 link.miekki -> plik
161494 -rw-r--r-- 1 tomek users 6 paź 16 02:41 link.twardy

tomek@Zuerst:/tmp> cat link.twardy                           //wypisujemy pliki
czesc

tomek@Zuerst:/tmp> cat link.miekki
cat: link.miekki: Nie ma takiego pliku ani katalogu

Dowiązanie miękkie przestało działać, gdyż plik docelowy nie istnieje. Dowiązanie twarde działa normalnie, ale zmniejszyła się liczba dowiązań (trzecia kolumna).
Miejsce na dysku będzie zwolnione po usunięciu ostaniego dowiązania twardego.



Montowanie urządzeń do systemu plików:

link do oryginału

Przed użyciem systemu plików należy go zamountować. System operacyjny sprawdza, niektóre części systemu plików w celu upewnienia się, że działa. Ponieważ w Unixie pliki przechowywane w jednym drzewie nowy system plików będzie tworzył zawartość jakiegoś katalogu.

Dla przykładu: grafika poniżej pokazuje systemy plików, ich katalogi główne zostały zaznaczone.


[możemy sobie wyobrazić sytuację, gdy systemy są na oddzielnych partycjach na dysku, w Windowsie partycje dostałyby litery C, D i E, natomiast w linuksie oznaczenia to np /dev/hda1 /dev/hda2 /dev/hda3]

Montując ostatnie dwa systemy plików odpowiednio w katalogu /home i /usr, wszystko to na pierwszym systemie plików, otrzymamy spójne drzewo katalogów:


[do pliku abc z windowsa dostalibyśmy się D:\abc natomiast z linuksa /home/abc]

Montowań można dokonać w sposób następujący:

$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr

Pierwszy argument oznacza plik urządzenia zawierający system plików. Drugi argument to katalog, w którym należy zamontować zawartość urządzenia. Po zamontowaniu zawartość systemu plików podanego urządzenia staje się zawartością katalogu. Zauważ różnicę między urządzeniem /dev/hda2, a /home. Plik urządzenia umożliwia dostęp do surowych danych, natomiast, po zamontowaniu, katalog udostępnia te dane w postaci plików i katalogów. Katalog, do którego montujemy system plików nazywany jest punktem montowania.

Linux obsługuje wiele systemów plików. mount próbuje odgadnąć typ systemu (co może mu się nie udać). Aby jawnie podać system plików należy posłużyć się opcją -t typ;
...
Punkt montowania nie powinien zawierać plików - będą one niedostępne aż do odmontowania systemu plików (otwarte pliki będą nadal dostępne). Nie czyni to szkody, a czasami może być pożyteczne: załóżmy, że /tmp i /var/tmp są synonimami, niech /tmp będzie łączem symbolicznym do /var/tmp. Podczas startu systemu, przed zamontowaniem /var, katalog /var/tmp znajdujący się na głównym systemie plików jest używany. Montując /var przesłaniamy /var/tmp. Jeżeli /var/tmp nie istniałby na głównym systemie plików nie możnaby tworzyć plików tymczasowych przez zamontowaniem /var.

Jeżeli nie zamierzasz zmieniać systemu plików użyj opcji -r - w ten sposób zamontujesz go w trybie wyłącznie do odczytu. Jądro odrzuci wszelkie próby zapisu , oraz nie będzię aktualizować czasu dostępu do iwęzłów. Montowanie w trybie wyłącznie-do-odczytu jest niezbędne dla niezapisywalnych mediów (np. CD-ROM-ów).


Jako ćwiczenie podmontujemy nasz sieciowy dysk z: pod katalog /mnt/z.
Jeżeli katalog /mnt/z nie istnieje, należy go utworzyć.
Następnie wykonujemy polecenie podłączenia sieciowego systemu plików (zamiast "sXXXX", podajemy własną nazwę użytkownika i własny katalog):

[root@localhost root]# mkdir /mnt/z

[root@localhost root]# mount -t smbfs //z/sXXXX /mnt/z -o username=sXXXX,workgroup=pjwstk
Password:

[root@localhost root]# cd /mnt/z

[root@localhost z]# ls
//powinno wyświetlić wasze pliki na dysku z


created by: Tomasz Kaszuba 2007

Valid HTML 4.01 Transitional