LINUX NEWBIE ADMINISTRATOR GUIDE

ver. 0.66 2000-07-22

Cześć 5: Uczenie się z Linuksem

Stan Klimas

Stan and Peter Klimas

Proste odpowiedzi na pytania często zadawane przez początkujących, którzy zainstalowali Linuksa na swoich domowych komputerach i administrują swoimi domowymi sieciami

Rozpowszeniany na zasadach General Public Licence http://www.gnu.org/copyleft/gpl.html Twój odzew, komentarze, poprawki i ulepszenia są mile widziane. Wyślij je do penguin@thepenguin.zzn.com


Szybkie odnośniki

Start:   Linux Newbie Administrator Guide
Część 0: Dla niezdecydowanych (zalety Linuksa)
Część 1: Przed instalacją Linuksa
Część 2: Zasoby Linuksa, pomoc i trochę odnośników
Część 3: Najczęszcze pytania odnośnie podstawowych operacji
Część 4: Uczenie się z Linuksem
Część 6: Jak uaktualnić jądro systemu
Część 7: Linuksowe komendy i skróty (Shortcuts)
Część 8: Ważne linuksowe aplikacje (komercyjne i nie tylko)


Zawartość tej strony:

[w przygotowaniu]



Uczenie się z Linuksem

5.1Wbudowane w Linuksa narzędzia rozwojowe i języki programowania

emacs
(w X-terminal'u) Edytor tekstowy emacs. Bardzo zaawansowany i skomplikowany. Jest dobry tylko dla "guru": emacs to nie jest po porostu edytor tekstowy, ma "własny sposób na życie". Emacs sprawia wrażenie bogatego albo nadętego, w zależności od twojego punktu widzenia. Prawdopodobnie istnieją trzy wersje emacs'a zainstalowane w twoim systemie: (1) tekstowa: wpisz "emacs" na terminalu tekstowym (nie w X-window) (unikam tego jak ognia); (2) tryb graficzny: wpisz "emacs" w terminalu X-window (do strawienia dla początkujących, którzy zdecydowali się poświęcić nieco czasu na jego opanowanie; oraz (3) wersja X-window: wpisz "xemacs" w terminalu X-window.

vi
Słynny (stary znany?) edytor tekstowy "vi" (zdecydowanie nie rekomendowany dla początkujących). By wyjść z "vi" (bez zapisywania zmian) użyj tych pięciu znaków: <ESC>:q!<Enter> Ja używam edytora pico i nigdy nie potrzebowałem vi.

Eksperci na prawdę kochają vi, ale vi jest niewątpliwie trudny, chyba że używasz go codziennie. Oto opinia zaawansowanego użytkownika na temat vi (http://linuxtoday.com/stories/16620.html):

"Pierwszy raz zetknąłem się z vi w 1988 roku i znienawidziłem go. Byłem pierwszakiem w college'u... VI wydawał się archaiczny, skomplikowany i niemożliwy... Teraz po 12 latach kocham vi, i jest to faktycznie jedyny edytor, którego używam. Skąd ta zmiana? Właśnie nauczyłem się używać vi... Teraz rozumiem, czy jest vi, potężnym, w pełni wyposażonym i konfigurowalnym edytorem..."

Krótkie wprowadzenie do podstawowych komend vi i jego trybów pracy można zobaczyć na http://www.thelinuxgurus.org/vitut.html

gcc nazwa_pliku.c
Kompiler GNU C. Całkiem nieźle rozwijający się. Dobre, darmowe podręczniki dostępne są w sieci.
Jak skompilować prosty program w C?
Uruchom swój ulubiony edytor tekstowy i wpisz w nim swój kod źródłowy. Na przykład, mogę użyć pico:
pico hello.c
i wpisz przykładowy program w C Kerningham'a and Richie'a (twórców "c"):
#include <stdio.h>
void main(void) {
printf("hello world\n");
}
Zapisz plik i wywołaj kompiler GNU C by skompilować plik "hello.c":
gcc hello.c
Kompiler gcc wytwarza wykonywalny plik binarny "a.out", który może zostać uruchomiony:
./a.out


g++ nazwa_pliku.C
Kompiler GNU C++. Duże "C" jest często używane dla źródeł w C++. Jeśli potrzebujesz "zintegrowanego środowiska programistycznego" [oryg. "integrated development envrionment" (IDE) - dop. tłum.] kdevelop jest niewątpliwie czymś, na co warto zobaczyć.

kdevelop
(wpisz w X-terminal'u) zintegrowane środowisko programistyczne dla K[DE]. Na prawdę warte ściągnięcia (jeśli nie masz go ze swoją dystrybucją).

perl
Potężny i szeroko stosowany język skryptowy. Elastyczny, jednak z kryptograficznym wyglądem. Bardzo popularny wśród guru. Doskonale nada się, jeśli masz do wykonania proste zadania. Myśl o perlu jak o "swiss-army knife" [nie wiem, co to za nóż :-). Jeśli ktoś wie, email do tłumacza, please!] do prostego programowania.

Jak napisać prosty skrypt w perlu?
Perl jest językiem skryptowym, znany ze swoich możliwości, elastyczności i prawdopodobnie krypotograficznej składni. Jest także bardzo popularny wśród guru linuksa oraz unix'ów (i nie tylko). Możesz użyć pico (lub dowolny inny edytor) by stworzyć prosty skrypt perla. Skrypt poniżej nie robi nic pożytecznego, tylko pokazuje kilka możliwości perla:
#!/usr/bin/perl -w
# głupi przykład skryptu perla
# linie zaczynające się od #są komentarzami, za wyjątkiem pierwszej linii.
# nazwy zmiennych skalarnych zaczynają się od $
$a=2;
$b=3;
# każda linia kończy się średnikiem, jak w "c"
print $a**$b,"\n";
$hello_world='Hello World';
print $hello_world,"\n";
system "ls";
Pierwsza linia mówi powłoce, jak wykonać plik tekstowy. Opcja "-w" powoduje, że perl wypisuje pewne dodatkowe ostrzeżenia, etc., które mogą być użyteczne przy odpluskwianiu. Następne dwie linie (zaczynające się od #) są komentarzami. Kolejne linie niemal same się opisują: przypisują wartości do dwóch zmiennych ($a i $b), podnieść $a do potęgi $b i wydrukuj rezultat. "\n" drukuje nową linię, tak samo jak w języku "c". Następnie definiuję następną zmienną, zawierającą łańcuch znaków "Hello World" i w następnej linii drukuję ją na ekranie. Ostatecznie wykonuję komendę lokalnego systemu operacyjnego "ls", która w Linuksie drukuje zawartość bieżącego katalogu. Na prawdę głupi skrypt
Oczywiście należy pamiętać o nagraniu i nadaniu plikowi praw do wykonania (zobacz poprzednie odpowiedzi) i dopiero wtedy można go wykonywać.
python
Nowoczesny i bardzo elegancki, zorientowany obiektowo interpreter. Potężny i (teoretycznie) bardziej czytelny i niż perl. Bardzo dobry (i duży) darmowy podręcznik G. van Rossum'a (twórcy Pythona) jest dostępny w sieci (zobacz: http://www.python.org/doc/ do przeglądania, albo ftp://ftp.python.org do ściągania).
Jak napisać prosty program w Pythonie?

Wyedutuj plik, który będzie zawierał Twój program w Pythonie:

pico try_python
Wpisz w niego prosty kod pythona, by zobaczyć, czy działa:
#!/usr/bin/env python
print 2+2
Pierwsza linia (zaczynająca się od #!) mówi powłoce, jak wykonać ten plik tekstowy --musi się tam znajdować (zawsze jako pierwsza linia), by Linux wiedział, czym konkretnie jest ten plik tekstowy. Druga linia jest prostym wyrażeniem Python'a:
Po zapisaniu pliku i uczynieniu go wykonywalnym:
chmod a+x try_python
można go uruchomić, wpisując:
./try_python
Python jest wspaniałym, bardzo nowoczesnym językiem programowania, warto go spróbować.
tcl
(Czytaj "tickle".) Popularny język skryptowy.
Prosty program przy użyciu tcl:

#!/usr/bin/tclsh
puts stdout {Hello World!}

wish
(wpisz w X-terminalu). Jest to "front - end" do Tk, rozszerzenie X-window do tcl. Często używane do budowania "front-edn'ów" [nakładek] do programów.
Jak napisać prosty program GUI [z graficznym interfejsem użytkownika - dop. tłum] (używając Tk)?
Tk jest nakładką graficzną na łatwy a jednak potężny język programowania, jakim jest tcl.   Na przykład można użyć pico by stworzyć plik tekstowy, zawierający prosty program tk:
pico try_tk
i wpisz prosty przykład kodu tk, by zobaczyć jak działa:
#!/usr/bin/wish
button .my_button -text "Hello World" -command exit
pack .my_button
Pierwsza linia (zaczynająca się od #!) mówi powłoce, którego narzędzia użyć, by wykonać Twój tekstowy plik. Następne dwie linie są przykładem prostego programu tk. Najpierw utworzyłem przycisk o nazwie "my_button" i umieściłem go na szczycie hierarchii klasy (kropka na początku "my button"). Do przycisku przypisałem tekst "Hellow World" i linie komendy, wykonywanej przy naciśnięciu przycisku. Ostatnia linia dostosowuje rozmiar okna programu, aby mieścił mój przycisk.
Po zapisaniu pliku, uczyniłem go wykonywalnym:
chmod a+x try_tk
po czym mogłem go wykonać, wpisując (w X-terminalu, ponieważ wymaga on do działania X-window):
./try_tk
Tk jest bardzo popularny do tworzenia graficznych interfejsów użytkownika do programów.
glade
(wpisz w X-terminal'u) Graficzny kreator interfejsów użytkownika.

guile
Implementacja języka programowania "Scheme".

g77
GNU FORTRAN. Jeśli chcesz używać FORTRANA, zobacz: http://studbolt.physast.uga.edu/templon/fortran.html a znajdziesz kompiler FORTRANA, który spełni Twoje indywidualne potrzeby pod Linuksem.

make
Uruchom narzędzie "make" by zbudować (skompilować, zlinkować, etc.) projekt opisany w pliku Makefile, znajdującym się w bieżącym katalogu.

cvs
Concurrent versions system [System ujednoliconej wersji ? Nie znam oficjalnego tłumaczenia, jeśli jest, proszę o list - dop. tłum.] . Spróbuj: info cvs by uzyskać więcej informacji. Użyteczne do utrzymywania "depozytu kodu źródłowego", gdy wiele programistów pracuje nad tym samym programem.

diff file1 file2 > patchfile
Porównuje zawartość dwóch plików i pokazuje różnice. Zapisuje wynik do pliku patchfile.

patch file_to_patch patchfile
Zastosowuje patch'a [czasem nazywa się to "łatą" albo "nakładką" - dop. tłum.] (jest to plik wytworzony przez diff, który pokazuje różnice pomiędzy dwoma plikami) nazwanego w tym przykładzie patchfile na plik file_to_patch. Jeśli patch był utworzony przy użyciu poprzedniej komendy, użył bym patch file1 patchfile by zmienić file1 na file2.

sdiff file1 file2
Porównywanie dwóch plików tekstowych, poprzez wyświetlenie ich w sąsiadujących kolumnach. Wynik idzie na "standartowe wyjście", np. normalnie na ekran.

grep
Przeszukuje zawartość pliku tekstowego w poszukiwaniu podanego wzorca. Definitywnie warto nauczyć się chociaż podstaw tej komendy.

Prosty przykład. Komenda:
grep moj_wyraz * | more

przeszuka wszystkie pliki w bieżącym katalogu i pokaże linie, zawierające wzorzec moj_wyraz.

Wzorce są określane przy pomocy potężnej i zestandaryzowanej notacji, zwanej "wyrażenia regularne". Wyrażenia regularne są często używane przez wiele narzędzi przetwarzających tekst, np. Perl.

Krótki opis wyrażeń regularnych.

Specjalnymi znakami są: "\" (slash), "." (kropka), "*" (gwiazdka), "[" (nawias kwadratowy), "^" (cater, ma specjalne znaczenie tylko na początku łańcucha znaków), "$" (symbol dolara, ma specjalne znaczenie tylko na końcu łańcucha). Znak kończący łańcuch ma także specjalne znaczenie w łańcuchu.

Slash "\" jest używany jako znak wyłączający działanie innych znaków specjalnych [oryg. "escape" character - dop. tłum.].
Tak więc, "\\" poszukuje slash'a, "\." poszukuje kropki, "\*" poszukuje gwiazdki, "\[" poszukuje nawiasu kwadratowego, "\^" poszukuje znaku caret, nawet na początku łańcucha, "\$" poszukuje znaku dolara, nawet na końcu łańcucha.

Kropka "." zastępuje każdy pojedynczy znak. [Komedy dir i ls używają do tego "?"].

Dowolny łańcuch znaków może być zastąpiony przez ".*" (tak, jest to gwiazdka poprzedzona kropką). [Komedy dir lub ls używają w zamian "*"]. Ogólnie, gdy po dowolnym znaku następuje "*", to oznacza to zerową lub dowolną ilość powtórzeń tego znaku. Nawias kwadratowy wprowadza grupę znaków [oryg. "set" - dop. tłum.]. Tak więc [abD] oznacza: zarówno a lub b lub D. [a-zA-C] oznacza dowolny znak od a do z lub od A do C.

Uwaga na pewne znaki wewnątrz grupy. W grupie specjalne znaczenie mają tylko "[", "]", "-", i "^", oraz kombinacje "[:", "[=", and "[.". Slash nie ma specjalnego znaczenia w grupie.

Niektórymi użytecznymi kategoriami znaków są: [:upper:]  = kapitaliki, [:lower:] =wersaliki, [:alpha:]  = litery, w tym kapitaliki i wersaliki, , [:digit:] =0 do 9, [:space:] ="puste miejsca", w tym <Spacje>+<Tabulatory>+<znaki nowych linii> i podobne, [:graph:] = drukowalne znaki bez spacji, [:print:] = drukowalne znaki ze spacjami, [:punct] =znaki graficzne bez znaków alfa i cyfr, [:cntrl:] = znaki kontrolne, czyli znaki nie drukowalne.

"Daszek" "^" oznacza "początek nowej linii". Tak więc "^a" oznacza "znajdź linie zaczynające się od "a".

Znak dolara, "$" oznacza "koniec linii". Tak więc "a$" oznacza "znajdź linie kończące się na "a".

Dowolny znak odgraniczający koniec łańcucha ma znaczenie specjalne, poprzedź go backslashem, jeśli chcesz go użyć w łańcuchu.

tr
Tak zwane "narzędzie tłumaczące". Przydatne, jeśli potrzebujesz zamienić wszystkie wystąpienia jakiś znaków w pliku tekstowym albo usunąć podwójne spacje.
Na przykład :

cat moj_plik | tr 1 2 > moj_nowy_plik

Powyższa komenda bierze zawartość pliku moj_plik, przekazuje go do narzędzia tłumaczącego tr,  które zamienia wszystkie wystąpienia znaku "1" na "2", wynik tego procesu przekazywany jest do pliku moj_nowy_plik.

gawk
GNU awk (głównie do przetwarzania plików tekstowych). Perl potrafi wszystko, co awk i jeszcze więcej.

sed
(= edytor potokowy) Narzędzie do przetwarzania plików tekstowych.

file filename
Wyznacza rodzaj pliku filename.

strings filename | more
Wyświetla łańcuchy zawarte w pliku binarnym o nazwie filename. Może być użyteczny przy pierwszym kroku egzaminowania nieznanych plików wykonywalnych.

dc
Obsługiwany z linii komend, arbitralnej precyzji "odwrotnej notacji polskiej" kalkulator.

dc jest oparty na koncepcji stosu, który jest centralą operacji nowoczesnych komputerów. Komputerowy stos przypomina stos talerzy w kuchni, ostatni, który na nim się znalazł, pierwszy zostanie z niego ściągnięty (jest on także znany jako LIFO="last-in, first-out"). Inaczej jest w przypadku kolejki (innej ważnej koncepcji), gdzie pierwszy który wchodzi, pierwszy wychodzi.

Możesz wykonywać operacje tylko na liczbie(ach), które znajdują się na szczycie stosu. Dwie podstawowe operacje to wypchnij i pobierz (wypchnij na szczyt stosu i pobierz ze szczytu stosu). Operacje "unary" pobierają jedną wartość ze stosu ("unary" oznacza "wymagający jednego operanda" [ ang. "requiring one operand" - dop. tłum). Operacje "binary" pobierają dwie wartości ze stosu ("binary" oznacza "wymagający dwóch operandów"). Operacje "tertiary" pobierają trzy wartości ze stosu ("tertiary" oznacza "wymagający trzech operandów"). We wszystkich przypadkach, wynik zawsze jest wypychany spowrotem na stos.

Kalkulatory "odwrotnej notacji polskiej" (zwyczajne, ręczne) są bardzo popularne wśród ludzi zorientowanych technicznie oraz w akademiach. Odwrotna notacja polska nie wymaga używania nawiasów.

Historia. Nie używająca nawiasów logika została opracowana przez polskiego matematyka Jana Łukasiewicza (1878-1956) przed Drugą Wojną Światową. Oryginalnie operator poprzedzał wartości. Dla potrzeb aplikacji komputerowych została ona zmodyfikowana tak, że operator następuje po wartościach, stąd w słowo "odwrotna" w nazwie odwrotnej notacji polskiej. By przećwiczyć pewne operacje na stosie, spróbuj:

dc [uruchom kalkulator arbitralnej precyzji, wykorzystujący odwrotną notację polską]
1 [wypchnij "1" na stos]
2 [wypchnij kolejną liczbę na stos]
3 [wypchnij jeszcze jedną liczbę na stos]
4 [wypchnij jeszcze jedną liczbę na stos]
f [wydrukuj cały stos; powinieneś zobaczyć 1 2 3 4]
p [wydrukuj liczbę ze szczytu stosu, bez zmieniania jego zawartości, powinieneś zobaczyć 4]
+ [przeprowadź dodawanie (operację cyfrową), czyli weź dwie wartości ze stosu (3,4) i rezultat (7) wypchnij spowrotem do stosu]
p [wydrukuj liczbę ze szczytu stosu, np. rezultat ostatniego dodawania (7).]
p [wydrukuj jeszcze raz liczbę ze szczytu stosu, by upewnić się, że nie był on zmieniony podczas ostatniej operacji]
* [perform multiplication (binary operation), therefore pop two last values, and push the result (14)]
p [print the result of the multiplication (14)]
P [pop the last number off the stack (14)]
p [print the number on the top of the stack]
2000 [push a large integer on the stack]
k [set the precision to the value which is on the top of the stack, i.e. 2000]
1 [push another number on the stack]
f [print the content of the entire stack]
701 [push another number on the stack]
/ [divide last two numbers on the stack, i.e. "1/701" with 2000 decimal places of precision]
p [print the result of the last division]
q [quit the arbitrary precision reverse Polish notation calculator]
Zwróć uwagę, że gdy używasz odwrotnej notacji polskiej nigdy nie potrzebujesz nawiasów. Zobacz man dc , jeśli chcesz poznać zastosowania dc.
bc
Interaktywny kalkulator arbitralnej precyzji. Wpisz "quit", gdy skończysz. Wpisz "scale=20" (lub ileś tam) zanim przeprowadzisz dzielenia na liczbach zmniennoprzecinkowych albo zobaczysz tylko quotient zamiast właściwego wyniku.

Przejdź do części 6: Jak uaktualnić jądro systemu