|
/pub/Linux/docs/HOWTO
.
Nowsza wersja zawiera uaktualnione wskazania na katalog z jądrami na
ftp.icm.edu.pl.
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
bash
/pub/Linux/sunsite/docs/LDP/
.To HOWTO zastępuje poprzednie mini-HOWTO o tym samym tytule.
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:
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.
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 !!!
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.
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.
ls
.
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 ~
Możesz teraz skoczyć do sekcji Tłumaczenie poleceń z DOS-a na Linux-a, ale na twoim miejscu czytałbym dalej.
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
.
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 1To 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".
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ępneUwagi:
echo
$shell
cp -i
oraz mv -i
, aby zostać ostrzeżonym,
kiedy plik ma zostać zmazany.
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.
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
xterm
lub jakiś inny emulator
terminala i napisz:
xhost +wielki.daleko.pl telnet wielki.daleko.pl
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.
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.
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
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/turboUwaga 1: jeśli chcesz skasować katalog
rmdir
musi on być
pusty; możesz skasować katalog wraz z zawartością poleceniem
rm -r
.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ę ?cd -
odwraca ostatnie polecenie cd
.
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:
/mnt/a
, /mnt/a:
i /mnt/cdrom
/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.
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
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
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
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""
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ć.
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.
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.
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.
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.
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.
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:
awk '$2 ~ "abc" {print $1, "\t", $4}' dane.datWyświteli pola 1. i 4. każdej linii z pliku dane.dat, której drugie pole = abc
jstar
będziesz miał te same przypisania do klawiszy co w WordStar
lpq
exit
.
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.
W przyszłości na pewno zetkniesz się z wieloma rozszerzeniami. Oto lista tych najpopularniejszych:
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.
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.
"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-)
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:
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