# 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

- - Znasz podstawowe polecenia i założenia DOS-a,
- - Linux, ewentualnie z XWindows-ami, jest zainstalowany poprawnie na twoim komputerze,
- Twoją powłoką (odpowiednik COMMAND.COM) jest `bash`
- Rozumiesz, że ten dokument to dopiero niekompletny początek. Na temat większej ilości szczegółów przeczytaj podręcznik Matta Welsha "Linux Installation and Getting Started" i/lub Larry'ego Greenfielda "Linux User Guide". Można je znaleźć pod adresem ftp.icm.edu.pl w katalogu `/pub/Linux/sunsite/docs/LDP/`.

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:

- 1. wykonywanie programów i tworzenie, kopiowanie, przeglądanie, kasowanie i zmienianie nazw plików;
- 2. cd, md, rd, i dir;
- 3. formatowanie dyskietek i kopiowanie na nie plików;
- 4. grzebanie w AUTOEXEC.BAT albo CONFIG.SYS;
- 5. pisanie własnych plików .BAT albo programów;
- 6. no i pozostały 1%.

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:

- 1. W przeciwieństwie do DOS-a Linux ma wbudowane mechanizmy zabezpieczające. Kiedy włączysz PC-ta i odpalisz Linux-a musisz się "zalogować", to znaczy zrobić się widocznym dla systemu. Pliki i katalogi mają odpowiednie prawa dostępu i niektóre nie są dostępne dla zwykłego użytkownika. (Zobacz sekcję Prawa dostępu). Jest tak ponieważ Unix to system wieloużytkownikowy; poza tym zwykły użytkownik nie jest właścicielem systemu i nie może nim zarządzać czy sterować jego działaniem; tylko użytkownik o identyfikatorze "root" (ang. korzeń) ma władzę w tym systemie. (Ten facet jest administratorem systemu. Na swoim PC-cie ty będziesz root-em). Pliki i katalogi mają odpowiednie prawa dostępu i niektóre z nich nie są dostępne dla zwykłego użytkownika. A DOS pozwoliłby ci wyczyścić cały dysk twardy.
- 2. Kiedy już skończysz pracować, NIE WOLNO CI WYŁĄCZYĆ PC-TA OD TAK PO PROSTU Musisz w odpowiedni sposób "zamknąć system" (naciśnij CTRL-ALT-DEL, poczekaj aż system zrobi wszystko co powinien, aby bezpiecznie wyłączyć komputer i napisze, że jest w porządku i wtedy możesz wyłączyć komputer). Jeśli pracujesz pod XWindows to wciśnij CTRL-ALT-BACKSPACE, albo wybierz wyjście z Menu i dalej to samo co wyżej. Od tłumacza: Możesz też napisać shutdown -h now i czekać aż pojawi się napis System halted.
- 3. Usilnie zachęcam do eksperymentowania i próbowania samemu: Na pewno ci nie zaszkodzi. Pomoc znajdziesz w poleceniach takich jak: "man <polecenie>" - podręcznik systemowy (nie zadawaj pytań bez przeczytania; wyjście z niego to klawisz 'q'), "apropos <polecenie>" - to wyświetla wszystkie polecenia związane z danym słowem, "whatis <polecenie>" - podobnie do apropos.
- 4. Większość mocy Unix-ów pochodzi z prostej koncepcji strumieni i potoków, bardziej rozwiniętych niż pod DOS-em. Proste polecenia mogą być połączone w bardziej złożony potok i wykonywać dość skomplikowane zadania. (Bardzo dużo ludzi używa tych zalet; tobie też radzę się tego pouczyć. Proste przykłady można znaleźć w plikach Makefile przy ściganiu i instalacji nowych aplikacji)
- 5. Konwencja oznaczeń: a. <...> oznacza coś co musi być podane, natomiast [...] oznacza coś co może być podane, ale nie musi. Np.: `tar -tf <plik.tar> [plik_log]` plik.tar musi być podany, a przekierowanie wyjścia do pliku plik_log - nie. b. od teraz skrót "PPS" oznacza "Przeczytaj Podręcznik Systemowy man, aby uzyskać więcej informacji. (Od tłumacza: oto trzy najczęściej używane skróty wśród "Linux-owców": RTFM - Read The Fascinating (Fucking) Manual (Przeczytaj Fascynujący [albo jak kto woli Pieprzony] Manual [man]) FAQ - Frequently Asked Questions - dokukment z Często Zadawanymi Pytaniami HOWTO - dokument taki jak ten - Jak To Zrobić)

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.

- - Pierwsza różnica: 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" (nie ważne w tej chwili co to znaczy) 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) (Od tłumacza: W tej chwili standardowo podczas instalacji Linux-a umieszczany jest na dysku system plików "ext2". 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ą - a mogą to być nawet znaki kontrolne, chociaż nie radzę ich używać, bo potem mogą być problemy z usunięciem takiego pliku) Zauważ, że użyłem tu małych jak i dużych liter. Otóż...
- - Druga różnica: 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.
- - Trzecia różnica: 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`.
- - Czwarta różnica: 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: - z gwiazdką (*) na końcu jeśli wydasz polecenie `ls -F` - 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 ~
- - Piąta różnica: 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.

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`

- uruchom X11, uruchom `xterm` lub jakiś inny emulator terminala i napisz:

         xhost +wielki.daleko.pl
         telnet wielki.daleko.pl

- po zalogowaniu się napisz:

         DISPLAY=tutaj.linux.pl:0.0
         <nazwa_programu> &

  zamiast `DISPLAY...` możesz napisać `setenv DISPLAY tutaj.linux.pl:0.0`. To zależy od powłoki na komputerze odległym.

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:

- stwórz katalogi `/mnt/a`, `/mnt/a:` i `/mnt/cdrom`
- dodaj w `/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

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ę:

- ncurses - do zabawy z trybem tekstowym,
- svgalib - do grafiki,
- XForms - do programowania pod XWindows,
- MGUI - także do programowania pod XWindows.

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:

- sunsite.unc.edu
- TSX-11.mit.edu
- nic.funet.fi

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

- sunsite.unc.edu to /pub/Linux/suniste/
- TSX-11.mit.edu to /pub/Linux/tsx-11/

Programy:

- at - pozwala uruchamiać programy o podanej godzinie w podanym dniu,
- awk - bardzo dobry język do manipulacji plikami z danym (i nie tylko) Na przykład:

         awk '$2 ~ "abc" {print $1, "\t", $4}' dane.dat

  Wyświteli pola 1. i 4. każdej linii z pliku dane.dat, której drugie pole = abc
- delete-undelete - to chyba wiadomo,
- df - podaje informacje o ilości wolnego i zajętego miejsca na dysku
- dosemu - pozwala uruchamiać niektóre DOS-owe programy oraz Win 3.x przy odrobinie mieszania z konfiguracją,
- file <nazwa> - podaje rodzaj pliku - archiwum, gif, text itp.
- find (zobacz sekcja Katalogi) jest jednym z najlepszych poleceń. Używany jest do wyszukiwania plików na dysku, które spełniają podane warunki i działania na nich. Ogólna postać polecenia find wygląda tak:
  find <katalog> <wyrażenie> gdzie wyrażenie zawiera kryteria wyszukiwania i działania.
  Przykłady:
  find . -type l -exec ls -l {} \;
  wyszukaj wszystkie dołączenia symboliczne w katalogu bieżącym i jego podkatalogach i pokaż na co wskazują.
  find / -name '*.old' -ok rm {} \;
  wyszukaj wszystkie pliki z całego dysku z rozszerzeniem .old i pytaj o skasowanie ich.
  find . -perm 755
  wyszukaj wszystkie pliki z prawami dostępu 755 - wykonywalne (zobacz Prawa dostępu) w bieżącym katalogu i jego podkatalogach.
  find . -user root
  wyszukaj pliki, których właścicielem jest root.
  Jest o wiele więcej możliwości, jak np. wyrażenia logiczne (and, or) - PPS.
- (f)grep - wyszukuje łańcuchy w plik-u/ach, np. grep -l "stdio" *.c - wyświetl nazwy plików .c, które zawierają ciąg stdio
- gnuplot - doskonały program do naukowego drukowania na ploterach
- gzexe - skompresuj program wykonywalny zachowując jego wykonywalność
- joe - wspaniały edytor. Uruchamiając go poleceniem `jstar` będziesz miał te same przypisania do klawiszy co w WordStar
- less - przypuszczalnie najlepszy do przeglądania plików tekstowych; jeśli jest dobrze skonfigurowany to możesz także oglądać pliki .gz, .z, .tar
- lpr <plik> - drukuje plik w tle. Aby sprawdzić status kolejki do drukowania napisz `lpq`
- mc - coś a'la Norton Commander
- pine - przyjazny program do obsługi poczty i nie tylko
- script <plik> - kopiuje to co się pojawia na ekranie do pliku dopóki nie wydasz polecenia `exit`.
- sudo - pozwala zwykłym użytkownikom na wykonywanie zadań root-a PPS
- uname -a - informacja o systemie
- zcat, zless - wyświetlają skompresowane za pomocą gzip-a pliki tekstowe
- Następujące polecenia są często potrzebne: `bc, cal, chsh, cmp, cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings, tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs, znew.`

## 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:

- ˙1 ... .8 - strony podręcznika systemowego.
- ˙arj - kompresja arj
- ˙dvi - plik wyjściowy TeX-a (patrz poniżej); xdvi - program do oglądania tych plików; dvips - program tłumaczący je na postscript .ps
- ˙gif - plik graficzny
- ˙gz - kompresja gzip
- ˙info - plik informacyjny (alternatywa dla "man-a")
- ˙jpg, .jpeg - plik graficzny
- ˙lsm - Linux Software Map. Plik tekstowy zawierający informacje o danym pakiecie
- ˙ps - plik postscipt-owy. Aby je oglądać zdobądź gs i opcjonalnie ghostscript
- ˙tgz, tar.gz - skompresowane archiwum
- ˙tex - plik dla TeX-a - narzędzie do składania dokumentów
- ˙texi - plik dla texinfo
- ˙xbm, .xpm, .xwd - plik graficzny
- ˙zip - archiwum zip
- ˙Z - kompresja compress

## 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:

- - wzmianka o systemie ext2 w nowych dystrybucjach,
- - wzmianka o najczęściej stosowanych skrótach,
- oraz inne pomniejsze dodatki.