Podstawowe operacje w Linuxie
Zadania (1)
Wykonywanie programów: wielozadaniowość i sesje
Aby uruchomić program podaj jego nazwę i wciśnij ENTER. Jeśli katalog, w którym znajduje się dany program, jest w zmiennej PATH (patrz zmienne środowiskowe), program się uruchomi.
Wyjątek: W przeciwieństwie do DOS-a, pod Linux-em jeśli program znajduje się w katalogu bieżącym nie uruchomi się, o ile katalog bieżący nie jest w zmiennej PATH. Rozwiązanie: wpisz ./<prog>.
Typowy wiersz poleceń wygląda nastepująco: $ polecenie -o1 -o2 ... -on par1 par2 ... parn <wejście >wyjście gdzie o1,2,...,n to opcje polecenia, a par1,2,...,n to parametry. Możliwe jest uruchomienie kilku poleceń w jednym wierszu poleceń: $ polecenie1; polecenie2; ...; polecenien
Jedną z podstawowych cech Linuxa jest wielozadaniowość. Oznacza to oznacza, że systemy operacyjne typu Unix mogą wykonywać kilka programów (procesów) na raz. Można uruchomić procesy w tle oraz w pierwszym planie. Można także działać na kilku sesjach na raz - to tak jakbyś pracował na kilku komputerach na raz !
Na konsoli (czyli na komputerze, na którym jest zainstalowany Linux) dostępnych jest standardowo 6-7 wirtualnych ekranów(zwanych wirtualnymi konsolami); aby się pomiędzy nimi przełączać użyj klawiszy ALT+F1..6-7, albo ALT+strzałka.
Aby uruchomić nową sesję bez opuszczania bieżącej napisz su - <identyfikator> Jest to pożyteczne kiedy na przykład jesteś zalogowany jako zwykły użytkownik, a chcesz zamontować dysk - tylko root może to zrobić
Aby zakończyć sesję wpisz exit. Jeśli są jakieś zawieszone zadania zostaniesz ostrzeżony
Aby uruchomić proces w pierwszym planie napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście]
Aby odpalić proces w tle napisz: $ program [-opcje] [parametry] [<wejście] [>wyjście] &
Zadania (2)
Wykonywanie programów: wielozadaniowość i sesje (c.d.)
- Aby zobaczyć ile jest procesów napisz: ps Polecenie to pokaże listę procesów aktualnie działających. Każdy z nich ma swój niepowtarzalny numer PID (Process IDentifier)
Aby zakończyć/zabić proces napisz $ kill <PID> Możesz zabić proces jeśli np. nie wiesz jak go normalnie zakończyć. Czasami proces się stawia i nie chce dać się zabić, ale i tak jest na niego sposób: $ kill -9 <PID>
W dodatku powłoka (odpowiednik COMMAND.COM-u; większość używa bash-a) pozwala na zatrzymanie lub czasowe zawieszenie procesu, wysłanie procesu w tło, powrót procesu do pierwszego planu. W tym kontekście procesy nazywają się "jobs" (czyli zadania).
Aby zobaczyć ile jest zadań napisz $ jobs zadania są identyfikowane poprzez numer jaki nada im powłoka a nie poprzez PID
Aby zatrzymać proces uruchomiony w pierwszym planie wciśnij CTRL+C lub CTRL+D - nie zawsze zadziała
Aby zawiesić proces uruchomiony w pierwszym planie wciśnij CTRL+Z
Aby wysłać zawieszony proces w tło napisz $ bg <nr_zadania>
Aby przywrócić proces do pierwszego planu napisz $ fg <nr_zadania>
I jeszcze raz, aby zabić zadanie napisz: $ kill %<nr_zadania>
Działanie w tle, anulowanie i przerywanie
W Linuxie masz kontrolę nie tylko nad danymi wejściowymi i wyjściowymi (operacje przekierowywania, potoki) poleceń, ale również nad ich wykonywaniem. Możesz uruchomić proces w tle, podczas gdy wykonujesz inny proces. Możesz nawet przerwać proces, zanim zakończy się jego wykonywanie. Możesz go w końcu wznowić od miejsca, w którym poprzednio go przerwałeś.
Zadania (3)
Tło i pierwszy plan: , fg, bg
Uruchamianie polecenia w tle odbywa się poprzez umieszczenie znaku & (ampersand) na końcu polecenia. Jeśli to zrobisz, to po potwierdzeniu polecenia wciśnięciem klawisza Enter wyświetlany jest numer zadania użytkownika i numer (identyfikator) procesu systemu.
Numer zadania jest numerem przy pomocy którego użytkownik odwołuje się do zadania.
Numer procesu jest numerem nadawanym zadaniu przez system i służącym mu do identyfikowania procesu.
Przykład: polecenie wydrukowania pliku zyciorys
$ lpr zyciorys &
[1] 534
$
Do wykonania w tle można przenosić więcej niż jedno zadanie:
$ lpr publikacje &
[1] 547
$ cat *.c > mojeprogramy &
[2] 548
$ jobs
[1]+Running lpr publikacje
[2]-Running cat *.c > mojeprogramy
$
Polecenie jobs wypisuje listę zadań działających w tle. Każda pozycja na liście składa się z numeru w nawiasach kwadratowych, informacji, czy zadanie jest zatrzymane, czy działa oraz nazwy zadania.
Znak + oznacza, że zadanie jest właśnie wykonywane, zaś znak - oznacza, że zadanie czeka w kolejce do wykonania.
Jeśli chcesz, to możesz umieścić kilka poleceń jednocześnie w tle, wprowadzając polecenia w jednym wierszu poleceń i oddzielając je znakiem &.
Zadania (4)
Tło i pierwszy plan: , fg, bg (c.d.)
Przykład: jednoczesne uruchomienie dwóch zadań
$ sort *.l > ldok & lpr *.c &
[1] 534
[2] 567
$ jobs
[1]+Running lpr publikacje
[2]-Running cat *.c > mojeprogramy
$
Jeśli uruchomione przez Ciebie zadanie zakończyło się, a Ty jesteś w tym czasie zajęty np. edycją tekstu, to Linux nie przerwie tej operacji i nie poinformuje Cię o zakończeniu zadania. Aby zapewnić sobie tego typu informację (niezależnie od tego co robimy) należy użyć polecenia notify. Polecenie to przyjmuje jako argument numer zadania.
Przykład: system poinformuje o zakończeniu zadania nr 2
$ notify %2
Zadanie można przenieść z tła na pierwszy plan przy pomocy polecenia fg. Jeśli w tle działa tylko jedno zadanie, to polecenie fg bez argumentów przeniesie je na pierwszy plan. Jeśli jest więcej niż jedno zadanie w tle, musisz podać numer zadania jako argument polecenia, poprzedzonego znakiem procentu.
Przykład: przeniesienie drugiego zadania na pierwszy plan
$ fg %2obs
cat *.c > mojeprogramy
$
Istnieje również polecenie, które powoduje umieszczenie zadania w tle. Polecenie to jest zwykle używane do przerywanych zadań i zostanie omówione dalej.
Anulowanie zadań: kill
Aby zatrzymać zadanie działające w tle, należy wymusić jego zakończenie używając polecenia kill. Polecenie kill przyjmuje jako argument numer zadania użytkownika lub numer procesu.
Zadania (5)
Anulowanie zadań: kill (c.d.)
Numer zadania użytkownika musi być poprzedzony znakiem procentu % (numer ten jak pamiętasz możesz znaleźć dzięki poleceniu jobs).
Przykład: wylistowanie wszystkich zadań pracujących w tle i usunięcei zadania nr 2.
$ jobs
[1]+Running lpr publikacje
[2]-Running cat *.c > mojeprogramy
$ kill %2
Zadanie można usunąć także posługując się jego identyfikatorem procesu i korzystając z polecenia ps.
Przykład: wylistowanie wszystkich zadań pracujących w tle i usunięcei zadania nr 2.
$ ps
PID TTY TIME COMMAND
523 tty24 0:05 sh
567 tty24 0:01 lpr
579 tty24 0:00 ps
PID jest identyfikatorem procesu, TTY - identyfikatorem terminala, TIME - oznacza czas dotychczasowego wykonywania się procesu, zaś COMMAND - nazwę procesu.
Przykład: usunięcie procesu o identyfikatorze 579
$ kill 579
$
Przerwanie: <CTRL+Z>
Jeśli użyjesz kombinacji klawiszy <CTRL+Z>, to wstrzymane zostanie wykonywanie zadania pierwszoplanowego. Zadanie nie jest kończone, ale zawieszane do czasu jego wznowienia. Zadanie można kontynuować w tle lub na pierwszym planie (polecenie bg lub fg).
Z polecenia CTRL+Z korzystaj zwłaszcza wtedy, gdy chcesz umieścić w tle zadanie aktualnie wykonywane na pierwszym planie.
Zadania (6)
Przerwanie: <CTRL+Z> (c.d.)
Przykład: wstrzymanie wykonywania zadania na pierwszym planie i uruchomienie go w tle.
$ cat *.c > mojeprogramy
^Z
$ bg
System nie pozwoli na wylogowanie się do czasu pozostały jakieś niedokończone (wstrzymane) zadania. Aby się wylogować musisz najpierw wznowić przerwane zadanie przy pomocy polecenia fg. Listę wstrzymanych zadań możesz obejrzeć dzięki poleceniu jobs.
Przykład: wstrzymanie wykonywania zadania na pierwszym planie i uruchomienie go w tle.
$ jobs
[1]+Stopped vi regest.c
$ fg %1
zadane w tle lub na pierwszym planie (polecenie bg lub fg).
Pliki: pojęcia ogólne
Linux posiada system plików, tzn. strukturę katalogów i plików, bardzo podobny do DOS-owego. Pliki posiadają nazwy, które podlegają specjalnym zasadom, są zapisywane w katalogach, niektóre są wykonywalne, a wśród tych większość ma różne opcje. Możesz też używać masek ('*', '?'), przekierowań strumieni oraz potoków. Istnieją jednak pewne mniejsze różnice:
W DOS-ie nazwy plików maja postać 8.3 - czyli 8 znaków na nazwę i 3 znaki na rozszerzenie. W Linux-ie jest inaczej (lepiej). Jeśli twój Linux używa systemu plików "ext2" lub umsdos, to możesz używać dłuższych nazwa plików. Np. To_jest-bardzo.długa.nazwa.pliku. (nazwa może mieć do 255 znaków). W rzeczywistości Linux nie zna takiego czegoś jak rozszerzenie; w Linux-ie jest po prostu nazwa pliku nie ważne jakie znaki tam się znajdują.
Pliki w Linuxie(7)
Pliki: pojęcia ogólne (c.d.)
Duże i małe litery są rozróżnianie przez Linux-a. To znaczy plik i Plik i PliK to trzy różne pliki. To samo odnosi się do poleceń: jeśli wykonasz polecenie ls (odpowiednik DOS-owego DIR) otrzymasz listę plików w bieżącym katalogu, ale jeśli napiszesz LS i wciśniesz ENTER to otrzymasz błąd mówiący, że nie ma takiego polecenia.
Jeśli zaczniesz nazwę pliku od kropki, plik ten będzie plikiem ukrytym. Na przykład: .Jestem.Plikiem.Ukrytym nie pokaże się po wydaniu polecenia ls.
Nie ma obowiązkowych rozszerzeń .COM czy .EXE dla plików wykonywalnych (programów) albo .BAT dla plików wsadowych. Pliki wykonywalne mają ustawione odpowiednie prawa dostępu i są wyświetlane (1) z gwiazdką (*) na końcu jeśli wydasz polecenie ls -F, (2) na zielono jeśli masz kolorowy monitor i wydasz polecenie ls -color. Pod DOS-em pliki z rozszerzeniem .BAK to kopie zapasowe; Pod Linux-em takie pliki kończą sie na ~.
Opcje do programów DOS-owych podawane są ze znakiem / na początku np. dir /s; natomiast programy Linux-owe za opcję rozumieją ciąg znaków z myślnikiem - na początku, np. ls -R.
Rodzaje plików w Linuxie
Wszystkie pliki w Linuxie mają jeden format fizyczny - ciąg bajtów. Pozwala to na stosowanie koncepcji plików do każdego elementu danych w systemie.
Ten sam format pliku jest używany do implementacji różnych elementów systemu operacyjnego. Z tego powodu można wyróżnić w Linuxie logicznie różne typy plików.
W Linuxie wyróżnia się cztery podstawowe typy plików: zwykłe pliki, katalogi, urządzenia znakowe i urządzenia blokowe.
Pliki w Linuxie(7)
Porównanie podstawowych poleceń DOS-u i Linux-a
DOS Linux
COPY cp
DEL rm
REN mv
TYPE cat
MORE more, less - można też używać jako
polecenie, nie tylko jako filtr
nul /dev/null
prn,lst /dev/lp0, lpr
Przekierowywanie strumieni i potoki wygladają tak samo.
Maski: '*', '?' oraz [znaki]
[znaki] - oznacza pokolei każdy, ale zawsze jeden, z wymienionych w środku znaków, np:
ls *[abc] - wyświetl nazwy plików kończących się
na 'a' lub 'b' lub 'c'
ls *[a-g] - wyświetli nazwy plików kończących się
na jedną z liter od a do g
Przykłady: porównanie poleceń
DOS Linux
C:\GUIDO>copy joe.txt joe.doc $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total $ cat * > total
C:\GUIDO>copy fractals.doc prn $ cat fractals.doc | lpr
C:\GUIDO>del temp $ rm temp
C:\GUIDO>del *.bak $ rm *~
C:\GUIDO>ren paper.txt paper.asc $ mv paper.txt paper.asc
C:\GUIDO>type letter.txt $ more letter.txt
C:\GUIDO>type letter.txt $ less letter.txt
C:\GUIDO>type letter.txt > nul $ cat letter.txt >/dev/null
n/d $ more *.txt *.asc
n/d $ cat section*.txt
n/d - niedostępne
Uwagi:
1) * jest sprytniejszą maską pod Linux-em: (1) * oznacza jakąkolwiek nazwę nie zaczynającą się na , (2) *.* oznacza nazwę, która ma w środku kropkę, (3) p*r oznacza nazwę zaczynająca się na p a kończącą na r
Pliki w Linuxie(8)
Porównanie podstawowych poleceń DOS-u i Linux-a
(4) *c* oznacza nazwę zawierającą w środku c
2) Podczas używania less możesz poruszać się po pliku: (1) w przód - spacja, (2) w tył - b, (3) lub strzałkami, (4) wszystkie dostępne funkcje otrzymasz naciskając h.
3) W Linux-ie NIE MA UNDELETE, więc pomyśl dwa razy zanim skasujesz.
4) W Linux-ie znaczek > przekierowuje standardowe wyjście, ale nie standardowe wyjście błędów; aby błędy także znalazły się w pliku musisz napisać np. cat plik >plik_log 2>&1 - ale to działa tylko w powłoce bash lub sh. Aby dowiedzieć się jaką powłokę używasz napisz echo $shell
5) Nie ma polecenia DOS-owego RENAME; tzn. ren *.xxx *.yyy nie zadziała
6) Używaj cp -i oraz mv -i, aby zostać ostrzeżonym, kiedy plik ma zostać zmazany.
Katalogi: porównanie poleceń DOS-u i Linux-a
DOS Linux
DIR ls, find, du
CD cd, pwd
MD mkdir
RD rmdir
Przykłady: porównanie poleceń
DOS Linux
C:\GUIDO>dir $ ls
C:\GUIDO>dir file.txt $ ls file.txt
C:\GUIDO>dir *.h *.c $ ls *.h *.c
C:\GUIDO>dir/p $ ls | more
C:\GUIDO>dir \*.tmp /s $ find / -name "*.tmp"
C:\GUIDO>cd $ pwd
n/d - patrz uwaga $ cd
n/d - patrz uwaga $ cd ~
n/d - patrz uwaga $ cd ~/temp
C:\GUIDO>cd \other $ cd /other
Pliki w Linuxie(9)
Katalogi: porównanie poleceń DOS-u i Linux-a (c.d.)
C:\GUIDO>cd ..\temp\trash $ cd ../temp/trash
C:\GUIDO>md newprogs $ mkdir newprogs
C:\GUIDO>md \progs\turbo $ mkdir /progs/turbo
C:\GUIDO>rd newprogs $ rmdir newprogs
C:\GUIDO>rd \progs\turbo $ rmdir /progs/turbo
Uwaga 1: jeśli chcesz skasować katalog rmdir musi on być pusty; możesz skasować katalog wraz z zawartością poleceniem rm -r.
Uwaga 2: znak ~ jest skrótem nazwy twojego katalogu domowego. Polecenia cd i cd ~ zmienią ścieżkę bieżącą na twój katalog domowy niezależnie od tego, gdzie jesteś w danym momencie; polecenie cd ~/tmp zmieni bieżący katalog na /home/twój_dom_kat/tmp.
Uwaga 3: cd - odwraca ostatnie polecenie cd.
Klasyfikacja plików: polecenia file i od
Polecenie Linuxa file pomaga określić typ i zastosowanie pliku. Sprawdza kilka pierwszych wierszy pliku i próbuje go sklasyfikować.
Przykład: sprawdzanie zawartości plików i ich klasyfikacja
$ file poniedziałek raporty
poniedziałek: text
raporty: directory
Przykład: bardziej złożóna klasyfikacja
$ file request.c proj nowedane
request: C program text
proj: executable
nowedane: empty
Polecenie file posiada opcję -f, pozwalającą na odczytywanie nazw klasyf. plików z pliku, bez wprowadzania ich w wierszu poleceń.
Przykład: nazwy plików odczytywane są z pliku klaspliki
$ cat klaspliki
request.c proj nowedane
$ file -f klaspliki
request: C program text
proj: executable
nowedane: empty
Pliki w Linuxie(10)
Klasyfikacja plików: polecenia file i od (c.d.)
Polecenie od pozwala na wylistowanie całego pliku bajt po bajcie. (domyślnie oktalnie, można jednak określić postać dziesiętną, znakową lub heksadecymalną).
Wyświetlanie zawartości plików: cat i more
Polecenia cat i more wyświetlają zawartość pliku na ekranie, chocaiż zastosowanie cat jest bardziej wszechstronne.
Przykład: wyświetlanie całej zawartości pliku na ekranie
$ cat pismo
Szanowna Pani,
Wadą polecenia cat jest to, że zawartość pliku wyświetlana jest za jednym razem, co w przypadku dużych plików uniemożliwia obejrzenie szybko przewijających się wierszy tekstu.
Polecenie more umożliwia pokonanie tej wady - wyświetla treść pliku ekran po ekranie. Można również przesuwać się powoli w przód i w tył po tekście.
Przykład: wyświetlanie zawartości pliku ekran p ekranie
$ more pismo
Kiedy more otwiera plik, wyświtlany jest pierwszy ekran z treścią. Aby kontynuować i wyświetlić nastepny ekran, wciśnij klawisz f lub spację. Aby przesunąć się w tył, naciśnij klawisz b. Możesz w dowolnej chwilii przerwać pracę wciskając klawisz q.
Dowiązania: plecenie ln
Posługując się poleceniem ln można plikowi nadać więcej niż jedną nazwę. Dodatkowe nazwy określane są często mianem dowiązań (czasami łączników).
Polecenie ln przyjmuje dwa argumenty: nazwę oryginalnego pliku i nową, dodatkową nazwę (synonim). Składnia polecenia:
$ ln oryginalna-nazwa-pliku dodatkowa-nazwa-pliku
Pliki w Linuxie(2)
Przykład: plik dzis dostaje dodatkową nazwę pogoda
$ ls
dzis
$ ln dzis pogoda
$ ls
dzis pogoda
Przykład: plikowi dzis przypisuje się dodatkowo dwie nazwy
$ ls
dzis pogoda
$ ln dzis lato
$ ln dzis pada
$ ls
dzis pogoda lato pada
Aby zobaczyć, że plik ma kilka dowiązań użyj polecenia ls z opcją -l.
Polecenie ln z opcją -l wypisuje takie informacje jak prawa dostępu do pliku (patrz dalej), liczbę dowiązań pliku, rozmiar pliku, datę ostatniej modyfikacji. W wierszu informacji pierwsza liczba poprzedzająca nazwę użytkownika określa liczbę dowiązań. Liczba przed datą jest rozmiarem pliku (w bajtach).
Przykład: polecenie wypisuje pełna informację o dwóch plikach
$ ls -l dzis pogoda
-rw-rw-r—- 2 chris group 563 Dec 07 10:20 dzis
-rw-rw-r—- 2 chris group 563 Dec 07 10:20 pogoda
Jak zobaczyć, które pliki są ze sobą powiązane? Użyj w tym celu polecenia ln z opcją -i. Łączników, które wypisuje nazwy plików wraz z przypisanym mu numerem i-węzła. Jest oczywiste (wynika to z własności i-węzła), że jeśli nazwy plików związane są z tym samym numerem i-węzła, to wszystkie odnoszą się do tego samego fizycznego pliku.
Przykład: listowanie plików wraz z numerami i-węzłów
$ ls -i dzis pogoda pada gronostaj
1234 dzis 1234 pogoda 1234 pada 4534 gronostaj
Dodatkowe dowiązania używane są często do odwoływania się do tego samego pliku z różnych katalogów. Załóżmy, że chcesz odwołać się do pliku z katalogu home z wewnątrz innego katalogu. Możesz stworzyć dowiązanie z tego katalogu do pliku w katalogu home.
Pliki w Linuxie(3)
Ponieważ dowiązanie jest w innym katalogu, może mieć taką samą nazwę jak oryginalny plik.
Aby dowiązać plik z katalogu domyślnego (roboczego) do innego katalogu, użyj nazwy tego katalogu jako drugiego argumentu polecenia ln:
$ ln nazwa-pliku nazwa katalogu
Załóżmy, że plik dziś w katalogu chris jest dowiązywany do katalogu raporty. Polecenie ls listuje plik dzis w obu katalogach chris i raporty. W rzeczywistości istnieje tylko jedna kopia pliku dzis, oryginalny plik znajdujący się w katalogu chris.
Przykład: dowiązywanie pliku do katalogu
$ ln dzis raporty
$ ls
dzis raporty
$ ls raporty
dzis
Możesz zmienić nazwę pliku, pod którą będziesz go widział w dowiązanym katalogu. W tym celu umieść nową nazwę pliku zaraz po nazwie katalogu, oddzielając ja ukośnikiem.
Przykład: dowiązywanie pliku dzis do katalogu raporty pod nazwą sroda
$ ln dzis raporty/sroda
$ ls
dzis raporty
$ ls raporty
sroda
Pliki w Linuxie(4)
Dowiązania: plecenie ln (c.d.)
Przykład: dowiązywanie pliku request.c z katalogu raporty do chris.
$ ln request.c /home/chris
Aby usunąć plik musisz usunąć wszystkie jego dowiązania. Nazwa pliku jest w rzeczywistości uznawana także za dowiązanie do pliku. Dlatego polecenie rm usuwa dowiązanie do pliku. Jeśli usuniesz oryginalne dowiązanie - oryginalną nazwę pliku, do pliku można nadal odwoływać się przy pomocy pozostałych łączników.
Przykład: dowiązywanie pliku dzis do katalogu raporty pod nazwą sroda
$ ln dzis pogoda
$ rm dzis
$ cat pogoda
Burza dzis przyszla i wyszlo slonce
$
Aby usunąć oryginalny plik, musisz również usunąć wszystkie jego dowiązania
Dowiązania symboliczne i sztywne
Dowiązania, o których była mowa do tej pory nazywane są dowiązaniami sztywnymi. Maja one jedną podstawową wadę: dowiązania sztywne mogą ni zadziałać w przypadku, gdy dowiązywania pliku do katalogu innych użytkowników, znajdujących się w innym systemie plików.
Pliki w Linuxie(5)
Dowiązania symboliczne i sztywne (c.d.)
Wynika to z faktu, że mimo iż systemy plików mają ten sam katalog główny, to w rzeczywistości każdy z nich sam zarządza swoimi plikami i katalogami. Oznacza to, że plik z jednego systemu plików nie może być połączony dowiązaniem sztywnym z plikiem w innym systemie plików. Aby pokonać to ograniczenie należy użyć dowiązania symbolicznego. Dowiązanie symboliczne przechowuje ścieżkę do pliku, z którym jest połączony. Zamiast rejestrować więc inną nazwę dla tego samego pliku, dowiązanie symboliczne można wyobrazić sobie jako inny symbol oznaczający dostęp do pliku. Dowiązanie symboliczne tworzy się przy pomocy polecenia ln z opcją -s.
Przykład: tworzenie dowiązania o nazwie lunch do pliku /home/george/listawarzyw
$ ln -s lunch /home/george/listawarzyw
Posługując się poleceniem ls z opcją -l można otrzymać także pełną informację o dowiązaniach symbolicznych.
Przykład: listowanie informacji o plikach
$ ls -l lunch /home/george/listawarzyw
lrw-rw-r—- 1 chris group 4 Dec 07 10:20 lunch
-rw-rw-r—- 1 george group 793 Dec 04 13:40 listwarzyw
Pierwszy znak w wierszu oznacza typ pliku. Typem pliku klunch jest l, co oznacza, że jest to dowiązanie symboliczne. Liczba po słowie group oznacza rozmiar pliku. Zwróć uwagę, że rozmiar pliku lunch wynosi tylko 4 bajt, potrzebne do przechowania informacji o ścieżce dostępu.
Aby usunąć plik, wystarczy usunąć tylko dowiązania sztywne: pozostawione dowiązania symboliczne nie będą po prostu w stanie odwołać się do nieistniejącego pliku. Pamiętaj, że polecenie pwd zawsze wyświetla aktualną nazwę katalogu, a nie nazwę symboliczną.
Przykład: wyświetlanie nazwy katalogu dowiązanego
$ ls -s lunch /home/chris/listy/dziekuje prezenty
$ cd prezenty
$ pwd
/home/chris/listy/dziekuje
Pliki w Linuxie(5)
Wyświetlanie informacji o pliku: ls -l
Polecenie ln -l wyświetla szczegółowe informacje o pliku. Najpierw wyświetlane są prawa dostępu, następnie liczba dowiązań, właściciel pliku, nazwa grupy, do której należy użytkownik, rozmiar pliku w bajtach, data i czas ostatniej modyfikacji oraz nazwa pliku.
Nazwa grupy oznacza grupę, która ma prawa dostępu dla grupy.
Prawa dostępu do plików i katalogów: chmod
Każdy plik i katalog w Linuxie posiada zestaw praw dostępu określających, kto ma dostęp do pliku i jakie ma prawa. Prawa te określa właściciel pliku, tzn. ten, kto utworzył plik lub katalog. Prawa właściciela nadawane są automatycznie w momencie tworzenia pliku (właściciel może je później zmienić).
Istnieją trzy różne kategorie użytkowników, którzy mogą mieć dostęp do pliku: właściciel, grupa i pozostali.
Właściciel - użytkownik, który stworzył plik, może również nadawać prawo dostępu do pliku swojej grupie.
Grupa - wszyscy użytkownicy należący np. do tej samej klasy szkolnej lub pracujący nad tym samym projektem. Grupę tworzy administrator.
Pozostali - użytkownicy nie będący właścicielami pliku i nie należący do grupy.
Pliki w Linuxie(6)
Prawa dostępu do plików i katalogów: chmod (c.d.)
Każda kategoria ma swój zestaw praw czytania, pisania i wykonywania. Prawa dostępu w ramach poszczególnych kategorii można obejrzeć dzięki poleceniu ls -l.
Przykład: wyświetlanie praw dostępu do pliku mojedane
$ ls -l mojedane
-rw-r—r-- 1 chris pogoda 207 Feb 20 11:55 mojedane
Brak prawa dostępu jest oznaczony znakiem minus, prawo odczytu - literką r, prawo zapisu - literką w, zaś prawo wykonania - literką x. Pierwszy znak oznacza typ pliku: jeśli pierwszym znakiem jest minus, to opis dotyczy pliku zwykłego, jeśli literka d - katalog. Interpretacja praw dostępu pliku mojedane jest na rysunku, przedstawionym poniżej.
Polecenia chmod używa się do modyfikacji praw dostępu. Polecenie wymaga podania dwóch list: listy zmian praw dostępu i listy nazw plików.
Listę praw dostępu można określić posługując się metodą symboliczną lub maską binarną (odpowiednio metoda względna lub bezwzględna). Bardziej oczywista jest metoda symboliczna.
Pliki w Linuxie(7)
Nadawanie praw dostępu metodą symboliczną
Każde z praw symbolicznie oznaczane r, w lub x może być dodane (znak +) lub usunięte (znak -).
Przykład: dodanie prawa wykonania i usunięcie prawa zapisu
$ chmod +x-w mojedane
Można posługiwać się także symbolami określającymi właściciela (symbol u), grupę (symbol g) i pozostałych (symbol o). Symbol kategorii umieszczany jest przed prawami odczytu, zapisu i wykonania. Jeśli nie użyto symbolu kategorii użytkowników, to domyślnie przyjmuje się wszystkie kategorie, co oznacz, że prawa są nadawane lub odbierane właścicielowi, grupie i pozostałym.
Przykład: nadawanie prawa odczytu i zapisu grupie oraz odczytu - pozostałym.
$ chmod g+rw mojedaane
$ chmod o+r mojedane
Przykład: nadawanie prawa odczytu i cofanie prawa zapisu oraz wykonania pozostałym użytkownikom
$ chmod o+r-wx mojedane
Pliki w Linuxie(8)
Nadawanie praw dostępu metodą symboliczną (c.d.)
Istnieje także dodatkowy symbol a, który oznacza wszystkie kategorie. Symbol ten jest domyślny.
Przykład: poniższe polecenia są równoważne
$ chmod a+r mojedane
$ chmod +r mojedane
Aby system mógł wykonać plik (program), użytkownik uruchamiający go musi mieć prawa wykonania.
Przykład: nadanie prawa wykonania i uruchomienie
$ chmod u+x lsc
$ lsc
main.c lib.c
Nadawanie praw dostępu przy pomocy maski binarnej
Metoda bezwzględna zmienia wszystkie prawa jednocześnie, zamiast określania jednego lub drugiego. Trzy kategorie praw, każde z trzema prawami, zgodne są z formatem ósemkowym. Podając więc prawa dostępu w postaci binarnej należy określić trzy liczby oktalne dla wszystkich trzech kategorii.
Przykład: nadanie praw plikowi mojedane
$ chmod 544 mojedane
Masek binarny często używa się do nadawania plikowi praw wykonania. W szczególności dotyczy to plików zawierających skrypty, które aby mogły być wykonane muszą mieć przypisane prawa wykonania.
Pliki w Linuxie(9)
Prawa dostępu do katalogów
Prawo odczytu nadane katalogowi pozwala na wylistowanie plików z katalogu. Prawo wykonania pozwala na przejście do tego katalogu. Prawo zapisu pozwala użytkownikowi na tworzenie i usuwanie jego własnych plików. W momencie tworzenia katalogu automatycznie nadawane są właścicielowi prawa odczytu, zapisu i wykonania
Katalogi, podobnie jak w przypadku plików, posiadają prawa dostępu podzielone na trzy kategorie użytkowników: właściciel, grupa i pozostali.
Przykład: przydzielanie praw do katalogu dziekuje
$ chmod g+rx-w listy/dziekuje
Prawa można nadawać także przy pomocy maski binarne.
Przykład: polecenie równoważne przedstawionemu powyżej (zakłądamy, że właściciel ma wszystkie prawa) oraz listowanie informacji o katalogu
$ chmod 750 listy/dziekuje
$ ls -ld listy/dziekuje
drwxr-x--- 2 chris 512 Feb 10 04:30 dziekuje
Polecenie ls -ld (opcja d) listuje jedynie informacje o katalogu).
Przy udostępnianiu swoich plików należy zwrócić uwagę na swoje drzewo katalogów. Na rysunku poniżej użytkownik chce udostępnić katalog dziekuje wszystkim użytkownikom.
Pliki w Linuxie(10)
Prawa dostępu do katalogów (c.d.)
Prawo zmiany trybu dostępu do pliku lub katalogu przysługuje tylko właścicielowi. Jeśli jednak chcesz dać innym użytkownikom kontrolę nad prawami do jednego z Twoich plików, możesz zmienić właściciela tego pliku na innego użytkownika. Służy do tego polecenie chown, które przyjmuje jako pierwszy argument nazwę innego użytkownika. Za nazwą użytkownika można umieścić listę plików, do których przekazujesz kontrolę.
Przykład: przekazanie użytkownikowi Robert prawa kontroli nad plikiem mojedane
$ chown Robert mojedane
$ ls -l mojedane
-rw-r--r-- 1 robert 207 Feb 20 11:55 mojedane
Przy pomocy innego polecenia chgrp można zmienić grupę, do której przynależy plik. Jako pierwszy argument polecenia należy podać nazwę nowej grupy dla pliku lub plików, a następnie listę plików, które mają znaleźć się w nowej grupie.
Przykład: przypisanie plików do nowej grupy
$ chgrp prognoza dzis weekend
$ ls -l
-rw-r--r-- 1 chris pogoda 207 Feb 20 11:55 mojedane
-rw-rw-r-- 1 chris prognoza 568 Feb 14 10:30 dzis
-rw-rw-r-- 1 chris prognoza 308 Feb 17 11:55 weekend
Systemy plików: mount i umount
Drzewo katalogów Linuxa może zawierać kilka systemów plików, każde z odrębnego urządzenia pamięciowego.
Pliki w systemie plików pozostają oddzielone od drzewa katalogowego dopóki nie podłączysz ich w szczególny sposób.
System plików po podłączeniu możesz traktować jako poddrzewo głównego drzewa katalogów
Podłączanie systemu plików z urządzenia pamięciowego nazywane jest montowaniem.
Pliki w Linuxie(11)
Systemy plików: mount i umount (c.d.)
Aby zamontować system plików koniecznie zaloguj się jako root.
Składnia polecenia mount jest następująca:
# mount urządzenie punkt-montowania
Punkt montowania jest katalogiem w Twoim głównym drzewie katalogowym, do którego chcesz podłączyć pliki umieszczone na urządzeniu pamięciowym.
W momencie instalacji Linuxa i tworzenia partycji Linuxa na dysku twardym, system plikowy jest automatycznie konfigurowany tak, aby montować główny system plików w czasie uruchamiania systemu. System Linux będzie również automatycznie montował CD-ROM, jeśłi jest w napędzie w czasie uruchamiania systemu. Dyskietki musimy już jednak zamontować ręcznie.
Wszystkie zamontowane systemy plikowe muszą być odmontowane przed zamknięciem Linuxa. Główny system plików jest odmontowywany automatycznie. Podobnie musisz dokonać operacji odmontowania, jeśli chcesz zmienić system plików, np. z jednej dyskietki na inną.
System plików odmontowuje się przy pomocy polecenia umount, które przyjmuje jako argumenty nazwę urządzenia i katalog, gdzie było ono zamontowane:
# umount urządzenie punkt-montowania
Montowanie dyskietki
Wykonujemy je zwykle w trzech krokach, które są są oddzielnymi zadaniami w Linux-ie. Możliwe jest przygotowanie i używanie dyskietek w formacie MS-DOS, chociaż są także dostępne inne formaty; najpopularniejeszym jest ext2, ale dla dyskietek lepszy jest minix.
Oto sposób w jaki można przygotować dyskietkę (standardową 1.44 MB) do pracy:
musisz się zalogować jako root,
fdformat /dev/fd0H1440 lub mformat a: - żeby mieć dyskietkę w formacie MS-DOS
Pliki w Linuxie(11)
Montowanie dyskietki (c.d.)
przed rozpoczęciem używania dyskietki musisz ją zamontować: mount /dev/fd0 /mnt (katalog /mnt musi istnieć).
Teraz możesz używać dyskietki; jej obraz jest w katalogu /mnt. Uwaga! zanim wyjmiesz dyskietkę ze stacji - odmontuj ją: umount /mnt Oczywiście musisz formatować tylko nieużywane dyskietki. Jeśli chcesz korzystać ze stacji B: to zamień wszędzie fd0 na fd1.
Wszystko co robiłeś poprzez A: czy B: robi się teraz poprzez katalog /mnt. Przykłady:
DOS Linux
C:\GUIDO>dir a: $ ls /mnt
C:\GUIDO>copy a:*.* \docs\temp $ cp /mnt/* /docs/temp
C:\GUIDO>copy *.zip a:\zip $ cp *.zip /mnt/zip
C:\GUIDO>a: $ cd /mnt
A:\> /mnt$
Montowanie innych urządzeń
Podobnie jak dyskietkę możesz zamontować dowolne urządzenie z danymi (dysk twardy, CD-ROM, taśma itp.) Spójrz do katalogu /dev, żeby zobaczyć jakie możesz montować urządzenia.
UWAGA: jest tam około 1000 plików, lepiej użyj ls /dev | less
Np. aby zamontować CD-ROM napisz
mount -t iso9660 /dev/cdrom mnt/cdrom
To był "oficjalny" sposób na montowanie dyskietek, ale jest inny sposób - łatwiejszy. Ponieważ jest to uciążliwe ciągle się przełączać na root-a po to, aby zamontować dyskietkę - każdemu użytkownikowi możemy pozwolić na montowanie dyskietek. W taki sposób:
stwórz katalogi /mnt/a, /mnt/a: i /mnt/cdrom
dodaj w pliku /etc/fstab nastepujące linie:
/dev/cdrom /mnt/cdrom iso9660 ro,user,noauto 0 0
/dev/fd0 /mnt/a: msdos user,noauto 0 0
/dev/fd0 /mnt/a ext2 user,noauto 0 0
Pliki w Linuxie(11)
Montowanie innych urządzeń (c.d.)
Teraz żeby zamontować dyskietkę z systemem MS-DOS, ext2 albo CD-ROM napisz:
$ mount /mnt/a:
$ mount /mnt/a
$ mount /mnt/cdrom
/mnt/a, /mnt/a: i /mnt/cdrom są teraz dostępne dla każdego użytkownika. Aby móc pisać do /mnt/a od razu po przygotowaniu dyskietki trzeba napisać:
# mount /mnt/a
# chmod 777 /mnt/a
# umount /mnt/a
Pamiętaj, że udostępniając w ten sposób użytkownikom dyskietki robisz wielką dziurę w bezpieczeństwie systemu.
Jerzy Pejaś: Systemy Operacyjne: Unix
- 6 -