Następna strona Poprzednia strona Spis treści

2. Pliki i programy.

2.1 Pliki: pojęcie ogólne.

Linux posiada system plików - co oznacza "struktura 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. Jest tylko trochę mniejszych różnic.

Możesz teraz skoczyć do sekcji Tłumaczenie poleceń z DOS-a na Linux-a, ale na twoim miejscu czytałbym dalej.

2.2 Dołączenia symboliczne.

Systemy typu Unix mają taki typ pliku, który nie istnieje pod DOS-em - symboliczne dołączenie. Można to uważać za wskaźnik na plik lub katalog i może być używany zamiast tego pliku czy katalogu, na który wskazuje. Coś podobnego do skrótów w Win'95. Przykładami dołączeń symbolicznych mogą być: /usr/X11, który wskazuje na /usr/X11R6; /dev/modem, który wskazuje na /dev/cua0 lub /dev/cua1.

Aby utworzyć symboliczne dołączenie napisz:

     ln -s <plik_lub_katalog> <nazwa_dołączenia>

Na przykład:

   $ ln -s /usr/doc/g77/DOC g77podrecznik.txt

Teraz możesz wykonywać operacje na g77podrecznik.txt zamiast na /usr/doc/g77/DOC.

2.3 Atrybuty plików w Linux-ie.

Każdy plik i katalog w Linux-ie ma swoje prawa dostępu, zwane przez użytkowników DOS-a atrybutami. Postaram się przybliżyć to pojęcie i wyjaśnić co oznacza magiczne 755.

Jak wydasz polecenie ls -l to wyświetli się coś na kształt:

   -rw-r--r--   1 root     root        32251 Feb 15 14:32 DOS2Linux
   -rw-r--r--   1 root     root        38338 Feb 20 13:15 DOS2Linux.pl.sgml
   -rw-r--r--   1 root     root        18144 Feb 19 18:34 Locales-HOWTO.sgml
   -rw-r--r--   1 root     root         1398 Feb 19 18:30 howto.dat
   -rw-r--r--   1 root     root          317 Feb 14 14:24 next.gif
   -rw-r--r--   1 root     root           37 Feb 19 20:03 plik_log
   -rw-r--r--   1 root     root          317 Feb 14 14:24 prev.gif
   -rw-r--r--   1 root     root          610 Feb 19 12:01 slowniczek
   -rw-r--r--   1 root     root         5655 Feb 16 21:54 slowniczek.uwagi
   -rw-r--r--   1 root     root         2601 Feb 18 22:29 tlumaczenie.howto
   -rw-r--r--   1 root     root          316 Feb 14 14:24 toc.gif
   -rw-r--r--   1 root     root          723 Feb 20 12:40 todo
   -rw-r--r--   1 root     root         1307 Feb 19 19:36 zasady

Pierwsza kolumna z lewej to właśnie wspomniane prawa dostępu, 3. i 4. to właściciel i grupa do jakiej dany plik należy. Ogólnie wygląda to tak:

   -  rwx  rwx  rwx

r - read (możliwość czytania) w - write (możliwość zapisu) x - execute (możliwość wykonywania, bądź dla katalogów możliwość przeszukiwania i ustawienia go jako bieżący cd) Oczywiście w rzeczywostości nie ma tam spacji, ale je robię dla czytelności. W miejscu pierwszej kreski może znajdować się jedna z liter: d, l, b, c - są to tylko najpopularniejsze. I tak oznaczają one odpowiednio: katalog, symboliczne dołączenie, urządzenie blokowe, urządzenie znakowe. Dalej: od lewej: pierwsza trójka liter to prawa dla właściciela pliku, druga trójka - dla grupy do jakiej należy plik, trzecia - dla pozostałych użytkowników. W pierwszej i drugiej trójce mogą się pojawić litery s lub S zamiast x - oznacza to, żeby wykonać plik z takimi prawami jakie ma właściciel pliku albo grupa, a nie ten kto go uruchamia. Na przykład plik /usr/bin/passwd ma ustawione pierwsze x na s, żeby mógł dokonać zapisu do pliku /etc/passwd, do którego może pisać tylko root, a nie zwykły użytkownik, który uruchamia ten program.

Polecenie chmod pozwala zmieniać te prawa dostępu - jeśli jesteś właścicielem pliku.

Podstawmy sobie następujące wartośći:

   -  rwx  rwx  rwx
      421  421  421
        4    2    1  - te wartości są dla s, S i t
                       (na temat 't' zobacz "man chmod")

Żeby ustawić jakieś prawa dostępu należy dodać do siebie te liczby, które stoją przy prawach, które chcemy ustawić, ale dla każdej trójki osobno. Trochę przykładów dla lepszego zrozumienia:

   - r-x --- --- nazwa_pliku
     4 1
To będzie 4+0+1, 0+0+0, 0+0+0 czyli 500. chmod 500 nazwa_pliku zmieni prawa dostępu na odczyt i wykonywanie dla właściciela i zabierze wszystkie prawa dla grupy i innych użytkowników.

   - rwx r-x r-x nazwa_pliku
     421 4-1 4-1

To będzie 4+2+1, 4+0+1, 4+0+1 czyli 755 - to jest chyba najczęstsze ustawienie.

   - rws r-x r-x
     421 4 1 4 1
       4

To będzie 4+0+0 - najważniejsze są wartości s, S, t chyba, że ich nie ma - 4+2+1 4+0+1, 4+0+1 czyli 4755

Teraz łatwiejszy sposób na zmianę praw dostępu. Polecenie chmod może też przyjmować takie parametry:

   
     chmod ugoa+-=rwx <plik>

I tak: u - user (właściciel pliku), g - group (grupa do jakiej plik należy), o - others (pozostała część użytkowników). + ustawia podane prawa, a - zabiera. = czyni podane prawa jedynymi prawami jakie posiada dany plik.

Przykłady:

     chmod u+x <plik> - nadaje właścicielowi pliku prawo do
        wykonywania go.
     chmod ug+rx <plik> - nadaje właścicielowi i grupie, do której
        należy plik prawa do odczytu i wykonywania

To powinno wyjaśnić wiele spraw związanych z prawami dostępu. Więcej szczegółów znajdziesz w podręczniku systemowym "man".

2.4 Pliki: Porównanie podstawowych poleceń DOS-owych z Linux-owymi.

   DOS          Linux

   COPY         cp
   DEL          rm
   REN          mv
   TYPE         cat
   MORE         more, less - można też używać jako polecenie, nie tylko
                             jako filtr (ten drugi jest lepszy, ma więcej
                             możliwości)
   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
   
   nul          /dev/null
   prn,lst      /dev/lp0, lpr
   
   PRZYKŁADY
   
   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:
- * oznacza jakąkolwiek nazwę nie zaczynającą się na .
- *.* oznacza nazwę, która ma w środku kropkę
- p*r oznacza nazwę zaczynająca się na p a kończącą na r
- *c* oznacza nazwę zawierającą w środku c
2) Podczas używania less możesz poruszać się po pliku
- w przód - spacja
- w tył - b
lub strzałkami
- 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. Od tłumacza: 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.

2.5 Wykonywanie programów: wielozadaniowość i sesje.

Aby uruchomić program podaj jego nazwę i wciśnij <<ENTER>>. Jeśli katalog (sekcja Katalogi), w którym znajduje się dany program, jest w zmiennej PATH (sekcja Inicjacja systemu), 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>.

Oto jak wygląda typowy wiersz poleceń: $ 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

To by było wszystko na temat uruchamiania programów, gdyby nie jedna z najważniejszych zalet Unix-ów a tym samym i Linux-a czyli wielozadaniowość. Słowo to oznacza, że systemy operacyjne typu Unix mogą wykonywać kilka programów (od teraz 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 (sekcja Dyskietki) - tylko root może to zrobić
- Aby zakończyć sesję wpisz exit. Jeśli są jakieś zawieszone zadania (zobacz dalej) zostaniesz ostrzeżony
- Aby odpalić 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] &
- 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ć (no ja też bym się stawiał ;) ), 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>

Używając tych poleceń możesz jednocześnie formatować dysk, archiwizować jakieś pliki, kompresować jakieś pliki, kompilować program, albo kilka, rozpakowywać jakieś archiwum i jeszcze na dodatek mieć wiersz poleceń do swojej dyspozycji HA !! Spróbuj zrobić to pod DOS-em albo nawet Windowsami, a zobaczysz różnicę między Unixami a domowymi systemami operacyjnymi.

2.6 Uruchamianie programów na komputerach odległych.

Aby uruchomić jakiś program na odległym komputerze, którego adres to daleko.wielki.pl, napisz:

     telnet daleko.wielki.pl

Po zalogowaniu się uruchom swoje ulubione programy. Oczywiście nie muszę mówić, że trzeba mieć konto na odległym komputerze.

Jeśli masz X11 możesz nawet uruchamiać aplikacje pod XWindows na tamtym komputerze i wyswietlać je na swoim ekranie. Niech daleko.wielki.pl będzie odłegłym komputerem obsługującym XWindows, a tutaj.linux.pl twoim komputerem. Aby uruchomić z tutaj.linux.pl program pod XWindows tak, aby uruchomił się on na daleko.wielki.pl

Et voila! Teraz program będzie działał na komputerze odległym, a wyniki jego działania będą wyświetlane na twoim ekranie. Nie próbuj tego robić przez łącze PPP.


Następna strona Poprzednia strona Spis treści