Szybkie przejście od DOS-a do Linux-a.

Autor: Guido Gonzato, Guido@ibogfs.cineca.it
v1.0 11 Grudnia 1996
Wersja polska: Bartosz Maruszewski, B.Maruszewski@jtz.org.pl
v1.31, 26 Lipca 1997


Dokument ten jest dedykowany tym wszystkim (wkrótce byłym) użytkownikom DOS-a, którzy zdecydowali się przejść na Linux-a, system typu Unix pierwotnie przeznaczony na komputery klasy PC. Dokument ten został napisany w standardzie ISO-8859-2. Oryginalna wersja znajduje się pod adresem ftp.icm.edu.pl w katalogu /pub/Linux/docs/HOWTO. Nowsza wersja zawiera uaktualnione wskazania na katalog z jądrami na ftp.icm.edu.pl.

1. Wprowadzenie.

1.1 Czy Linux jest dla ciebie odpowiedni?

Więc chcesz przejść z DOS-a na Linux-a ? Dobry pomysł, ale ostrzegam: może ci to wyjść bokiem. Według mnie nie ma takiego czegoś jak "najlepszy komputer" czy "najlepszy system operacyjny"; wszystko zależy od tego do czego dana konfiguracja ma służyć. Dlatego też nie wierzę, że Linux jest najlepszym wyjściem dla każdego - nawet jeśli jest on technicznie lepszy od wielu komercyjnych systemów operacyjnych. Naprawdę nie pożałujesz Linux-a jeśli to czego szukałeś, to software do programowania, Internet, TeX... w ogóle techniczny software, ale jeśli w większości potrzebujesz software'u komercyjnego, jeśli nie czujesz się na siłach uczyć setek poleceń i wklepywać je z klawiatury, to szukaj gdzie indziej.

Linux nie jest (jak na razie) tak łatwy w użytkowaniu i konfigurowaniu jak Windows czy Mac, tak więc przygotuj się do grzebania w plikach konfiguracyjnych. Pomimo tych przestróg, powiem ci, że jestem 100% przekonany, że jeśli należysz do tej dobrej grupy użytkowników, to odnajdziesz w Linux-ie swoją komputerową Nirvanę.

Zakładam, że

To HOWTO zastępuje poprzednie mini-HOWTO o tym samym tytule.

1.2 Tak jest. Powiedz mi jeszcze.

Zainstalowałeś Linux-a na PC-cie. Założyłeś sobie konto, wykonując instrukcje podczas instalacji (jeśli nie, to wpisz adduser teraz !!!) i Linux działa. Właśnie wpisałeś swój login (indentyfikator) i hasło (password) i patrzysz na ekran myśląc: "No... i co teraz?"

Teraz - nie rozpaczaj. Jesteś prawie gotów robić to samo co w DOS-ie i wiele więcej. Jeślibyś działał na DOS-ie a nie na Linux-ie zrobiłbyś jedną z tych rzeczy:

Ucieszysz się bardzo jeśli dowiesz się, że to samo można robić pod Linux-em w podobny sposób jak pod DOS-em. Pod DOS-em przciętny użytkownik używa tylko kilku poleceń z ponad 100 dostępnych; to samo można powiedzieć o Linux-ie. Jeśli przypadkowo nie znasz poleceń do wykonywania tego co jest w liście powyżej, to odpuść sobie - nie czytaj. Nie będę wyjaśniał co to katalog czy zmienna PATH.

Kilka notek zanim pójdziemy dalej:

Jesteś teraz gotowy, aby uczyć się Linux-a.

1.3 Dla niecierpliwych.

Nie możesz się już doczekać ? No to masz tu skrót poleceń Linux-a:

   
   DOS                     Linux                   Uwagi
   ------------------------------------------------------------------------------
   
   BACKUP                  tar -Mcvf device dir/   zupełnie coś innego
   CD dirname\             cd dirname/             prawie ta sama składnia
   COPY file1 file2        cp file1 file2          ------ " ------
   DEL file                rm file                 UWAGA: nie ma UNDELETE
   DELTREE dirname         rm -R dirname/          ------ " ------
   DIR                     ls                      nie zupełnie ta sama
                                                   składnia
   EDIT file               vi file                 raczej ci się nie spodoba
                           emacs file              ten jest lepszy
                           jstar file              podobny do EDIT-a
   FORMAT                  fdformat,
                           mount, umount           raczej inna składnia
   HELP command            man command             ta sama filozofia
   MD dirname              mkdir dirname/          prawie ta sama składnia
   MOVE file1 file2        mv file1 file2          ------ " ------
   NUL                     /dev/null               ------ " ------
   PRINT file              lpr file                ------ " ------
   PRN                     /dev/lp0,
                           /dev/lp1                ------ " ------
   RD dirname              rmdir dirname/          ------ " ------
   REN file1 file2         mv file1 file2          nie dotyczy wielu plików
   RESTORE                 tar -Mxpvf device       inna składnia
   TYPE file               less file               o wiele lepszy
   WIN                     startx                  dwa różne bieguny !!!

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.

3. Używanie katalogów.

3.1 Katalogi: pojęcie ogólne.

Poznaliśmy już różnicę między plikami w DOS-ie i Linux-ie. Co do katalogów, to w DOS-ie katalogiem głównym jest \, natomiast w Linux-ie jest to /. Tak samo kolejne podkatalogi oznacza się aaa/sss/ddd. Przykłady: DOS: \PROGRAMS\C++\SOURCES\HELLO.CPP Linux: /home/guido/papers/geology/mid_eocene.tex

Jak zwykle '..' to katalog nadrzędny, a '.' to katalog bieżący. Pamiętaj, że Linux nie pozwoli ci na wykonywanie poleceń cd, rd czy md, gdzie ci się podoba. Każdy użytkownik zaczyna pracę w systemie w swoim domowym katalogu nadanym mu przez administratora; np. u mnie jest to: /home/guido.

3.2 Prawa dostępu katalogów.

Katalogi także mają swoje prawa dostępu. To czego dowiedziałeś się z sekcji Prawa dostępu odnosi się również do katalogów. Atrybut 'x' oznacza, że możesz dany katalog uczynić katalogiem bieżącym (cd), w - możesz skasować z niego pliki (zależnie od ich praw dostępu) albo sam katalog.

Na przykład, aby zabronić innym użytkownikom dostępu do swojego katalogu domowego /home/guido/ napisz:

     chmod o-rwx /home/guido

3.3 Katalogi: Porównanie podstawowych poleceń DOS-owych z Linux-owymi.

        DOS                     Linux

        DIR                     ls, find, du
        CD                      cd, pwd
        MD                      mkdir
        RD                      rmdir
        
        PRZYKŁADY

   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
   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. Rozumiesz zasadę ?
Uwaga 3: cd - odwraca ostatnie polecenie cd.

4. Dyskietki, dyski twarde i takie inne.

4.1 Urządzenia.

Nigdy o tym nie myślałeś, ale DOS-owe polecenie FORMAT A: robi o wiele więcej niż się wydaje. W rzeczywistości, kiedy wydajesz polecenie FORMAT, to:
- sformatuje ono fizycznie dysk;
- stworzy katalog A:\ (czyli utworzy system plików na dyskietce)
- uczyni dyskietkę dostępną dla użytkownika (zamontuje ją).

Te trzy kroki 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
- 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. BARDZO WAŻNE - 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$
   

Nie muszę chyba mówić, że tak jak możesz zamontować dyskietkę tak i 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 /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:

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. Zauważyłem, że 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.

4.2 Archiwizacja.

Teraz jak już umiesz się posługiwać dyskietką, kilka słów na temat archiwizacji danych. Jest kilka pakietów, które mogą ci pomóc, ale ten najpopularniejszy i najłatwiejszy do archiwizowania na wielu nośnikach to tar.

   # tar -M -cvf /dev/fd0H1440 /katalog_do_arch

Upewnij się, że dyskietka jest sformatowana i kilka innych jest gotowych. Aby odarchiwizować dane włóż dyskietkę do stacji i napisz:

   # tar -M -xpvf /dev/fd0H1440

5. Konfigurowanie systemu.

5.1 Pliki startowe systemu.

W DOS-ie są dwa pliki systemowe, które sa odpowiedzialne za konfigurację systemu podczas startu, ustawienie zmiennych i ewentualnie uruchomienie jakichś programów.

W Linux-ie jest o wiele więcej takich plików, z których kilku nie powinieneś ruszać dopóki nie będziesz wiedział dokładnie co robisz. Oto te najważniejsze:

   PLIKI                        UWAGI
   
   /etc/inittab                 nie dotykaj !
   /etc/rc.d/*                  nie dotykaj !

Jeśli wszystko czego chcesz, to ustawienie zmiennej PATH czy innej albo zmiana wyglądu komunikatu "login" albo automatyczne odpalenie jakiegoś programu podczas wlogowywania się, to zajrzyj do tych plików:

   PLIK                         UWAGI
   
   /etc/issue                   ustawia format komunikatu "login"
   /etc/motd                    ustawia komunikat wyświetlający się
                                zaraz po wlogowaniu się
   /etc/profile                 powłoka bash/sh - ustawia globalnie
                                (dla wszystkich użytkowników) różne zmienne
   /etc/csh.cshrc               to samo dla powłoki tcsh/csh - z tego
                                pliku nie może być nic wyświetlane na ekran
   /etc/csh.login               powłoka tcsh/csh - stąd możesz wyświetlać na ekran
   /home/twoj_dom_kat/.profile  powłoka bash/sh - robi to co chcesz
   /home/t_d_k/.cshrc           patrz wyżej - z tą różnicą, że
                                ustawienia dotyczą tylko ciebie
   /home/t_d_k/.login                    -----"------

Jeśli pliki .login albo .profile istnieją, to zostaną przeczytane po zalogowaniu się na końcu i zostaną wykonane zawarte w nich polecenia (Coś jakby AUTOEXEC.BAT)

Przykład - spójrz na ten plik .profile:


   # Jestem sobie komentarzem
   echo Środowisko:
   printenv | more   # ekwiwalent polecenia SET pod DOS-em
   alias d='ls -l'   # chyba rozumiesz, co to jest alias
   alias up='cd ..'
   echo "Przypominam ci, że zmienna PATH zawiera: "$PATH
   echo "Miłego dnia, "$LOGNAME

   PATH i LOGNAME - tak, zgadłeś - to są zmienne środowiskowe
   # To jest funkcja w powłoce
   ctgz() # Wyświetla zawartość archiwum .tar.gz
   {
     for file in $*
     do   
       gzip -dc ${file} | tar tf -
     done 
   }
   # koniec pliku .profile

5.2 Pliki startowe programów.

Pod Linux-em wirtualnie wszysto można ustawić tak, jak chcesz. Większość programów ma jeden lub więcej plików startowych, w których możesz poustawiać różności. Często jest to ˙nazwa_programurc w twoim katalogu domowym. Zauważ, że są one ukryte; pliki ukryte wyświetla się ls -a. Niektóre programy, jak tin, elm, netscape, xfm tworzą katalogi .nazwa i tam umieszczają swoje pliki startowe. Pierwsze, które będziesz chciał modyfikować to:

~/.joerc - joe to bardzo popularny edytor - polecam
~/.xinitrc - używany podczas uruchamiania Xwindows (jeśli masz mniej niż 8MB RAM-u to lepiej nie uruchamiaj) poleceniem startx
~/.fvwmrc - używany przez menedżera okienek fvwm. Przykład możesz znaleźć w /usr/lib/X11/fvwm/system.fvwmrc
~/.xfm - używany przez menedżera plików xfm pod Xwindows
~/.Xdefault - używany przez emulator terminala pod X - rxvt

Pamiętaj ! Dla tych wszystkich plików i innych, które spotkasz w przyszłości - PPS

6. Troszkę programowania.

6.1 Pisanie skryptów: takie .BAT-y tylko lepsze.

Jeśli używałeś plików .BAT, aby ułatwić sobie życie (Ja używałem i to dużo), to to samo można zrobić w Linux-ie używając aliasów - zobacz przykład wyżej. Ale jeśli twoje pliki .BAT były bardziej skomplikowane, to polubisz programowanie w powłoce - jest tak samo wydajne jak QBasic, jeśli nie bardziej. (nawet jeśli nie używałeś bardziej skomplikowanych plików .BAT, to i tak będziesz z czasem programował w powłoce. Chociażby dlatego, że wszelkie wersje instalacyjne programów pod Linux-a są napisane w skryptach.) Powłoka ma takie elementy jak: zmienne, instrukcje while, case, for, if...then...else i wiele innych, co może być alternatywą nawet dla dobrego języka programowania.

Aby napisać skrypt, wszystko co musisz zrobić, to napisać zwykły plik tekstowy zwierający polecenia, zapisać go i uczynić wykonywalnym. To ostatnie możesz zrobić poleceniem: chmod u+x <nazwa> Aby go wykonać wpisz jego nazwę - pamiętaj, że Linux nie widzi plików w katalogu bieżącym więc dodaj ./ na początku nazwy, albo dodaj katalog bieżący '.' do zmiennej PATH.

Słowo ostrzeżenia: Standardowy edytor systemowy 'vi' nie jest najszczęśliwszym edytorem - szczególnie jeśli ktoś jest przyzwyczajony do takich edytorów jak ne.exe czy te spod środowiska Pascal/C++. Jak już to radziłem wcześniej lepiej używać joe, który jest dostępny w każdej standardowej dystrybucji. Na wszelki wypadek powiem, że:
- aby coś wpisać w 'vi' trzeba najpierw nacisnąć 'i'
- aby wyjść bez zachowania zmian: 'ESC:q!'
- aby wyjść z zachowaniem zmian: 'ESC:x'

Pisanie skryptów pod Unix-ami, to tak obszerny temat, że można by napisać książkę na ten temat (w istocie są książki na ten temat :) ), więc nie będę się tutaj dalej zagłębiaj, tylko podam przykład, który mam nadzieję przyda się i z którego możesz wyciągnąć kilka podstawowych zasad.


   #!/bin/sh
   # Jestem sobie komentarzem
   # nie zmieniaj pierwszej linii !!! - musi tam być
   echo "To jest system: `uname -a`" # użyj wyjścia polecenia uname
   echo "Nazywam się $0" # zmienne wbudowane
   echo "Podałeś mi następujące $# parametry: "$*
   echo "Pierwszy parametr to: "$1
   echo -n "Jak się nazywasz? " ; read imie
   echo spójrz na róznicę: "Cześć $imie" # cytowanie z "
   echo spójrz na różnicę: 'Cześć $imie' # cytowanie z '
   DIRS=0 ; FILES=0
   for file in `ls .` ; do
     if [ -d ${file} ] ; then # jeśli plik jest katalogiem
       DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
     elif [ -f ${file} ] ; then
       FILES=`expr $FILES + 1`
     fi
     case ${file} in
       *.gif|*jpg) echo "${file}: plik graficzny" ;;
       *.txt|*.tex) echo "${file}: plik tekstowy" ;;
       *.c|*.f|*.for) echo "${file}: plik żródłowy" ;;
       *) echo "${file}: inny plik" ;;
     esac
   done
   echo "Jest ${DIRS} katalogów i ${FILES} plików"
   ls | grep "ZxY--!!!WKW"
   if [ $? != 0 ] ; then # kod wyjścia ostatniego polecenia
     echo "ZxY--!!!WKW nie znaleziono"
   fi
   echo "wystarczy... jeśli chcesz wiedzieć więcej, to poczytaj"
   echo "podręcznik systemowy""

7. C dla ciebie.

Chyba nie spodziewałeś się znaleźć GW czy QBasic-a na Linux-ie ?? W Unix-ach językiem systemowym i podstawowym jest C, pokochaj albo rzuć. Wiele innych języków (FORTAN, Pascal, Lisp, Basic, Perl, awk ale nie Turbo Pascal) są także dostępne. Zakładając, że znasz już C, oto kilka wytycznych dla tych, którzy wychowali się na Turbo C++ czy innym z DOS-owych braci C. Kompilator C pod Linux-em to gcc i wcale nie ma żadnych gwizdków, dzwonków i bajerów, ktore mają DOS-owe wersje. Żadnego środowiska, zintegrowanej pomocy (CTRL+F1) czy zintegrowanego debuggera itp. Jest to goły kompilator wywoływany z wiersza poleceń; bardzo wydajny z resztą. Żeby skompilować swoje standardowe hello.c napisz:
gcc hello.c, a jeśli chcesz mieć nazwę pliku wynikowego taką samą jak plik źródłowy to napisz gcc -o hello hello.c. Pierwsze polecenie utworzy plik wykonywalny a.out. Żeby dołączyć jakąś bibliotekę dodaj opcję -l<arg>, np. gcc -o matma matma.c -lm
Opcja -l<arg> zmusza gcc, aby dołączyło bibliotekę /usr/lib/lib<arg>.a, tak więc -lm dołączy /usr/lib/libm.a.

To wszystko jest dobre dopóki piszesz małe programy. Ale kiedy twój program składa się z kilku plików źródłowych, musisz użyć narzędzia make. Załóżmy, że napisałeś jakiś interpreter: jego plik główny to parser.c i dołącza do siebie dwa pliki parser.h i xy.h. Chcesz używać procedur zawartych w parser.c, w programie calc.c, który znowu dołącza parser.h. Co za bałagan ! Co musisz zrobić aby skompilować calc.c ?

Musisz napisać tzw. Makefile, który informuje kompilator o zależnościach pomiędzy poszczególnymi programami. W naszym przypadku to będzie:



      # Oto plik Makefile używany do kompilacji calc.c
      # W miejsce <TAB> naciśnij tabulator
                        
      calc: calc.o parser.o
      <TAB>gcc -o calc calc.o parser.o -lm
      # calc zależy od dwóch plików objektowych: calc.o i parser.o
      
      calc.o: calc.c parser.h
      <TAB>gcc -c calc.c
      # calc.o zależy od dwóch plików żródłowych: calc.c i parser.h
   
      parser.o:  parser.c parser.h xy.h
      <TAB>gcc -c parser.c
      # parser.o zależy od trzech plików źródłowych
                          
      # koniec pliku Makefile

Zapisz ten plik jako Makefile i napisz make aby skompilować calc.c; możesz także zapisać go jako calc.mak i wtedy napisać make -f calc.mak. No i oczywiście PPS :) na temat make.

Wcześniej powiedziałem, że nie ma pomocy do C. To nie całkiem prawda... niektóre funkcje są opisane w podręczniku systemowym.

Jest bardzo dużo bibliotek do C; wśród pierwszych, które będziesz chciał użyć mogą znaleźć się:

Dwie ostatnie można znaleźć pod adresami: bloch.phys.uwm.edu/pub/xforms
www.volftp.vol.it/IT/IT/ITALIANI/MORELLO/index.htm Te biblioteki ułatwiają bardzo programowanie pod XWindows. Jeśli nie możesz przeżyć bez IDE a'la Borland, to zdobądź pakiet xwpe z ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/apps/editors. Powinieneś go polubić.

8. Pozostały 1%.

8.1 "Odrootowić się".

Złym pomysłem jest logowanie się jako root, żeby robić zwykłe codzienne rzeczy. Używanie tego konta jest dość niebezpieczne i powinno być przeznaczone tylko do administracji. Aby utworzyć konto dla siebie wykonaj polecenie: adduser podając następnie informacje takie jak swój identyfikator, hasło, numer grupy itp. (wciśnij <<ENTER>> na pytania, których nie rozumiesz.) Od tłumacza: Może się tak zdarzyć, że pojawi się komunikat 'password locked' lub coś podobnego. Zajrzyj wtedy do katalogu /etc i zobacz czy jest tam plik .passwd.lock lub o podobnej nazwie i skasuj go.

8.2 Tworzenie wirtualnej pamięci.

Teoretycznie Linux może być uruchomiony już na 2MB RAM-u. Od tłumacza: Ale ja bym nie radził uruchamiania go przy takiej ilości pamięci, z resztą obecnie chyba żadna dystrybucja nie da się zainstalować jeśli masz mniej niż 4MB RAM-u, a niektóre wymagają nawet 8MB. Ale im więcej pamięci masz tym więcej możesz zrobić. XWindows jak już wspomniałem nie będą działać w miarę sensowanie jeśli masz mniej niż 8MB RAM-u. Aby dodać sobie jeszcze 8MB wirtulanej pamięci wpisz jako root w wierszu poleceń:


     # dd if=/dev/zero of=/swapfile bs=1024 count=8192
     # mkswap /swapfile 8192
     # sync
     # swapon /swapfile

Dodaj ostatnią linię do pliku /etc/rc.d/rc.local, aby udostępnić tę pamięć za każdym razem kiedy będziesz startował Linux-a.

8.3 Używanie tar-a i gzip-a.

W Unix-ach bardzo popularnymi programami do archiwizacji i kompresji są tar i gzip.

Aby stworzyć archiwum wpisz w wierszu poleceń:
tar cvf <nazwa_archiwum.tar> <pliki_do_zarchiwizowania>

Aby wydobyć pliki z archiwum wpisz:
tar xpvf <nazwa_archiwum.tar> <pliki>

Aby wyświetlić zawartość archiwum napisz:
tar tf <nazwa_archiwum> | less

Opcja 'v' powoduje wyświetlenie plików archiwizowanych albo wyciąganych z archiwum, jeśli nie chcesz tego, możesz ja pominąć.

Aby skompresować pliki możesz użyć compress albo gzip. Ten pierwszy jest już przestarzały i nie powinien być używany.

compress <plik> albo gzip <plik> skompresuje plik. uncompress <plik>.Z albo gzip -d <plik>.gz odkompresuje plik.

Jeśli ściągasz z sieci jakiś pakiet w 99% przypadków jest to skompresowane archiwum (xxx.tar.gz lub xxx.tgz). Żeby rozpakować i odarchiwizować za jednym zamachem wpisz:
tar xzf xxx.tar.gz Opcji 'z' możesz także używać przy archiwizowaniu i przeglądaniu archiuwm skompresowanego. Przy okazji warto powiedzieć, że pakiety te są już tak przygotowane, że możesz je rozpakować w katalogu głównym - / i wszystkie programy znajdą się na swoim miejscu. Zakładając oczywiście, że nie pogrzebałeś za bardzo na swoim systemie.

Programy arj, zip, unzip, rar, unrar także są dostępne pod Linux-em.

8.4 Instalacja aplikacji.

Mieści się tutaj już to co wspomniałem o plikach xxx.tar.gz. Dystrybucja Slackware ma swój program, który pomaga przy instalacji pakietów - pkgtool. Dystrybucja Red Hat ma rpm - trochę mniej przyjazny. Dystrybucja Debian pewnie też coś takiego ma, ale ponieważ nie miałem z nią kontaktu, więc nie wiem.

Są też aplikacje, które mają swoje własne systemy instalacji. Jak rozpakujesz jakiś pakiet przeczytaj zawsze pliki README albo INSTALLATION, a znajdziesz tam informacje na temat jak zainstalować dany pakiet. Duża część pakietów jest rozprowadzana jako źródła i musisz je najpierw skompilować. Najlepiej rozpakować je w katalogu /usr/src przeznaczonym na źródła i tam poczytać jak dany pakiet skompilować i zainstalować. Z reguły wszystko co musisz zrobić to rozpakować pakiet i napisać make albo make install. Oczywiście będziesz potrzebował kompilatora gcc. Pamiętaj, że instalacja pakietów to zadanie dla root-a.

8.5 Triki, bez których nie możesz się obejść.

Dopełnianie nazw poleceń i nazw plików/katalogów. Jeśli wpiszesz nie całą nazwę polecenia i naciśniesz <TAB> to powłoka dopełni za ciebie nazwę albo wyświetli wszystkie zaczynające się na podany ciąg. Np. zamiast pisać gcc dddddddllllllllluuuuga.nazwa.pliku - na dodatek nie pomylić się w ilości d l oraz u napisz gcc ddd<TAB>.

Oglądanie zawartości ekranu, która się przesunęła do góry: Możesz to zrobić wciskając <SHIFT+PGUP> - ile możesz obejrzeć zależy od tego ile masz pamięci na karcie graficznej. Jeśli podasz polecenie script <plik> to wszystko co pojawi się na ekranie znajdzie się także w pliku <plik> dopóki nie podasz polecenia exit.

Reset ekranu: jeśli zdarzy ci się wyświetlić plik binarny to może się to skończyć tym, że zamiast znaku zachęty będziesz miał jakieś krzaki. Napisz wtedy na ślepo, ale dokładnie, reset albo echo <CTRL+V> <ESC> c <ENTER> albo echo <CTRL+V> <CTRL+O> <ENTER>

Komunikaty od jądra: spójrz do pliku /var/adm/messages albo /var/log/messages jako root, aby poczytać komunikaty od jądra włączając to co pojawiło się podczas startu systemu.

8.6 Pożyteczne programy.

Po pierwsze - gdzie je znaleźć. Ponieważ wszyscy wiecie jak się poruszać po sieci i jak używać archie-go i ftp podam wam tylko najważniejsze adresy dla Linux-a. Są to:

Pierwsze dwa mają swoje kopie w Polsce pod adresem ftp.icm.edu.pl. Zalecam ich używać - o wiele szybszy transfer. I tak:

Programy:

8.7 Pospolite rozszerzenia i programy z nimi związane.

W przyszłości na pewno zetkniesz się z wieloma rozszerzeniami. Oto lista tych najpopularniejszych:

9. To tyle.

Gratulacje ! Łyknąłeś trochę Unix-a i jesteś gotów do pracy i eksperymentowania. Pamiętaj, że twoja wiedza na temat systemu jest bardzo mała i jesteś zobowiązany dużo ćwiczyć, żeby dobrze się posługiwać Linux-em. Ale jeśli wszystko co miałeś zrobić to pościągać aplikacje i pracować z nimi, to założę się, że to co napisałem tutaj to wystarczająco. Na dzisiaj nie wiem wiele więcej, a jakoś udaje mi się pracować z Linux-em codziennie !

Jestem pewien, że Linux ci się spodoba i dalej będziesz się go uczył i poznawał. Założę się też, że już nigdy nie wrócisz do DOS-a ! Mam nadzieję, że wyraziłem się dostatecznie jasno i zrozumiale i zrobiłem dobry uczynek dla moich trzech czy czterech czytelników.

9.1 Prawa autorskie.

O ile nie stwierdza się inaczej, dokumenty HOWTO są chronione prawami autorskimi ich autorów. Mogą one być rozprowadzane w całości lub w części, w jakiejkolwiek postaci fizycznej czy elektronicznej tak długo, dopóki znajduje się w nich ta wzmianka. Dystrybucja komercyjna jest dozwolona, a nawet zachęca się do niej; chociaż autor chciałby być poinformowany o takowej.

Wszelkie tłumaczenia, prace pochodne, prace zebrane zawierające dokumenty HOWTO muszą zawierać tę notatkę o prawach autorskich. Oznacza to, że nie możesz stworzyć pracy pochodzącej z HOWTO i nałożyć na jej dystrybucję dodatkowych ograniczeń. Wyjątki od tej zasady mogą być uczynione pod pewnymi warunkami; skontaktuj się z koordynatorem programu Linux HOWTO pod niżej podanym adresem.

Krótko mówiąc, chcemy promować szerzenie tych dokumentów przez wszelkie dostępne kanały. Chcielibyśmy także utrzymać prawa autorskie nałożone na te dokumenty, i być powiadomieni o planach dotyczących redystrybucji HOWTO.

Jeśli masz pytania skontaktuj się z Gregiem Hankisem, koordynatorem programu Linux HOWTO po adresem gregh@sunsite.unc.edu.

9.2 Disclaimer.

"Szybkie przejście od DOS-a do Linux-a" zostało napisane przez Guido Gonzato, Guido@ibogfs.cineca.it. Wielkie dzięki dla Matta Welsha, autora podręcznika "Linux Installation and Getting Started", dla Ian Jackson, autora "Linux frequently asked questions with answers", dla Giuseppe Zanetti, autora "Linux - Il sistema operativo FREE SOFTWARE per personal computer 386/486", dla wszystkich, którzy przysłali mi pocztę z sugestiami no i szczególne podziękowania dla Linusa Torvaldsa i GNU, którzy dali nam Linuxa !!!

Dokument ten dostarczany jest "taki jaki jest". Włożyłem wiele wysiłku, aby napisać go tak dokładnie jak tylko potrafiłem, ale wykorzystujesz informacje tu zawarte na własne ryzyko. Nie jestem odpowiedzialny w żadnym wypadku za jakiekolwiek zniszczenia wynikłe z winy korzystania z tego dokumentu. Tłumacz także nie jest odpowiedzialny za żadne zniszczenia.

Wszelkie odzewy, prośby, sugestie, krytyki itd. są mile widziane.

Ciesz się z życia ! (i z Linux-a)

Guido =8-)

9.3 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@jtz.org.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.jtz.org.pl/HOWTO/

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres majordomo@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to:

# # # #

Hosting by: Hurra Communications Sp. z o.o.
Generated: 2007-01-26 18:02:22