<< Back to man.lupaworld.com


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference
Część 4 - Debian - samouczek


Ten rozdział przedstawia podstawowe informacje na temat systemu Debian i jest przeznaczony dla zupełnie początkujących użytkowników (newbies). Jeśli kiedykolwiek korzystałeś już z systemu uniksopodobnego, prawdopodobnie znasz wszystkie omówione w tym rozdziale informacje, ale możesz przeczytać go dla odświeżenia swojej wiedzy.


4.1 Zaczynamy

Po zainstalowaniu systemu Debian na swoim komputerze, musisz nauczyć się kilku rzeczy, aby go używać. Pozwól, że damy ci szybki kurs.


4.1.1 Logowanie do powłoki jako root

Po uruchomieniu systemu (reboot), zostanie przedstawiony Tobie graficzny lub tekstowy ekran logowania (zależnie od tego, który wybrałeś podczas wstępnego wyboru pakietów). Dla uproszczenia, jeśli pojawił się graficzny ekran logowania, naciśnij Ctrl-Alt-F1, [2] aby uzyskać tekstowy ekran logowania.

Przypuśćmy, że nazwa twojego hosta to foo. Wówczas twój znak zachęty wygląda tak:

     foo login:

Wpisz root, naciśnij klawisz Enter, a następnie wpisz hasło, które wybrałeś podczas procesu instalacji. W systemie Debian, zgodnie z tradycją systemów Unix, wielkość liter w haśle ma znaczenie. Po podaniu hasła system uruchomi się z informacją powitalną i przedstawi ci znak zachęty linii poleceń użytkownika root, czekając na wprowadzenie poleceń. [3]

     foo login: root
     Password: 
     Last login: Sun Oct 26 19:04:09 2003 on tty3
     Linux foo 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux
     
     Most of the programs included with the Debian GNU/Linux system are
     freely redistributable; the exact distribution terms for each program
     are described in the individual files in /usr/share/doc/*/copyright
     
     Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
     permitted by applicable law.
     
     root@foo:root#

Od tej chwili masz możliwość administracji systemem z linii poleceń użytkownika root. Konto root jest także nazywane kontem superużytkownika (superuser) lub uprzywilejowanego użytkownika. Z tego konta masz możliwość robienia w systemie wszystkiego:

Współdzielenie dostępu do konta roota przez posiadanie wspólnego hasła jest fatalnym pomysłem. Użycie programów takich jak sudo(8) jest właściwym sposobem na współdzielenie przywilejów administratora.

Zauważ też, że logowanie się najpierw na konto nieuprzywilejowanego użytkownika, a dopiero z niego na konto z przywilejami administracyjnymi jest uważane za dobry zwyczaj uniksowy. Jeśli zajdzie potrzeba, używaj komend sudo, super lub su -c, aby uzyskać ograniczone przywileje roota. Zobacz Bezpieczniejsza praca – sudo, Rozdział 9.2.4. [4]


4.1.2 Tworzenie minimlnego środowiska dla początkującego

Uważam, że nauka systemu operacyjnego komputera przypomina nieco naukę języka obcego. Mimo, że książki są pomocne, to nic nie zastąpi samodzielnej praktyki. Musisz zacząć działać samodzielnie, przy pomocy ułatwiających to narzędzi. W związku z tym, dobrym pomysłem jest zainstalowanie kilku dodatkowych pakietów, takich jak mc, vim, linx, doc-linux-text oraz debian-policy. [5]

     # apt-get update
      ...
     # apt-get install mc vim lynx doc-linux-text debian-policy 
      ...

Jeśli pakiety są już zainstalowane w systemie, zostaną dodane.


4.1.3 Dodawanie konta użytkownika

Podczas instalacji, zwykle tworzy się konto użytkownika nieuprzywilejowanego, służące do odbioru poczty elektronicznej wysyłanej do użytkownika root. [6] Ponieważ nie chcesz używać tego specjalnego konta do działalności treningowej, powienieneś utworzyć kolejne konto użytkownika.

Zakładając, że chcesz, aby nazwa nowego użytkownika była penguin, wpisanie:

     root@foo:root# adduser penguin
     ... odpowiedz na wszystkie pytania

utworzy to konto. [7] Zanim przejdziemy dalej, nauczmy się paru rzeczy.


4.1.4 Przełączanie między konsolami wirtualnymi

W domyślnej instalacji systemu Debian, dostępnych jest sześć niezależnych pseudo-terminali, czyli można używać konsoli tekstowej na sześciu przełączalnych terminalach VT-100. Przełączać się między nimi można przez jednoczesne naciśnięcie klawisza Lewy-Alt i jednego z klawiszy F1–F6. Każdy pseudo-terminal pozwala na niezależne logowanie się na konto systemowe. Środowisko wieloużytkownikowe to wspaniała cecha Uniksa, po poznaniu której ciężko pracować inaczej.

Jeśli przypadkowo naciśniesz Alt-F7 podczas pracy na systemie z uruchomionym środowiskiem graficznym X Window i konsola przełączy się w tryb graficzny, naciśnięcie Ctrl-Alt-F1 pozwoli na przywrócenie dostępu do konsoli tekstowej. Po prostu spróbuj przełączać się na różne konsole i powracać do wyjściowej, aby przywyknąć do środowiska z wieloma pseudo-terminalami.


4.1.5 Zamykanie systemu

Tak jak każdy współczesny OS, który cache'uje operacje na plikach w pamięci, także Debian wymaga właściwej procedury zamykania systemu w celu zachowania integralności plików, zanim zasilanie może zostać bezpiecznie wyłączone. Używaj następującej komendy z konta root do zamknięcia systemu:

     # shutdown -h now

Tak postępuje się w przypadku trybu wieluużytkownikowego. Jeśli pracujesz w trybie pojedynczego użytkownika (single-user), używaj komendy:

     # poweroff -i -f

Możesz także nacisnąć Ctrl-Alt-Delete aby zamknąć system. [8]

Zaczekaj na pojawienie się napisu "System halted" i dopiero wówczas wyłącz zasilanie. Jeśli funkcje APM lub ACPI zostały poprawnie włączone w BIOSie i Linuksie, system wyłączy się samodzielnie. Doczytaj szczegóły w Automatyczne wyłączanie komputera oraz komputery z większą ilością pamięci, Rozdział 3.7.4.


4.1.6 Do rzeczy

Teraz jesteś gotów rozpocząć zabawę z systemem Debian, przy czym dopóki używasz nieuprzywilejowanego konta penguin, nie musisz obawiać się, że coś zepsujesz w systemie. [9]

Zaloguj się na konto penguin. Jeśli jesteś zalogowany jako root, naciśnij Ctrl-D [10] aby zamknąć powłokę root i powrócić do znaku zachęty logowania. Wprowadź nowoutworzoną nazwę użytkownika penguin i przynależne jej hasło. [11] Zostanie ci przedstawiony następujący znak zachęty.

     penguin@foo:penguin$

Od teraz, poniższy przykładowy zapis będzie używany dla uproszczenia:

Teraz rozpoczniesz naukę systemu Debian, najpierw sposobu prostego Midnight Commander (MC), Rozdział 4.2, a następnie sposobu właściwego Praca w środowisku uniksopodobnym, Rozdział 4.3.


4.2 Midnight Commander (MC)

Midnight Commander (MC) jest uniwersalnym narzędziem konsoli Linuksa oraz innych środowisk terminalowych. Umożliwia ono użytkownikowi zdobycie doświadczenia w wykonywania poleceń systemowych przy użyciu menu, które są poręczniejsze i łatwiejsze w nauce od standardowych poleceń systemu Unix.

Użyj tego narzędzia by przejrzeć strukturę systemu Debian. To najlepszy sposóbnauki. Przy pomocy klwiszy kursorów oraz klasiwsza Enter zajrzyj w kilka kluczowych miejsc:


4.2.1 Konfigurowanie MC

Jeśli chcesz aby przy opuszczaniu programu MC zmieniał on aktualny katalog, musisz zmodyfikować plik ~/.bashrc (lub /etc/bash.bashrc, wywoływany z .bashrc), tak jak dokładnie opisano to w jego podręczniku, mc(1), przy opcji -P. [12]


4.2.2 Uruchamianie MC

     $ mc

MC zajmuje się wszystkimi operacjami na plikach, wykonywanymi z jego menu, wymagając minimalnego wysiłku od użytkownika. Naciśnij po prostu klawisz F1 aby uzyskać ekran pomocy. Możesz poruszać się po całym programie używając klawiszy kursorów oraz klawiszy funkcyjnych. [13]


4.2.3 Menedżer plików w MC

Domyślne ustawienie to dwa okna zawierające listy plików. Kolejnym użytecznym trybem jest ustawienie prawego okna w tryb „informacja”, co pozwala zobaczyć prawa dostępu itp. Poniżej są niektóre ważniejsze skróty klawiszowe. Z użyciem uruchomionego demona gpm można też używać myszy. (Upewnij się, że naciskasz klawisz Shift w celu uzyskania normalnego działania Kopiuj i Wklej w MC.)


4.2.4 Triki linii poleceń w MC


4.2.5 Edytor w MC

Wewnętrzny edytor ma interesujący schemat kopiuj-i-wklej. Naciśnięcie F3 oznacza początek wyboru, kolejne wciśnięcie F3 oznacza koniec wyboru i podświetla zaznaczony obszar. Wtedy możesz ruszać kursorem. Gdy naciśniesz F6, zaznaczony obszar zostanie przeniesiony do miejsca, w którym jest kursor. Gdy przyciśniesz F5, zaznaczony obszar zostanie skopiowany i wklejony w miejsce, w którym jest kursor. F2 zapisuje plik. F10 powoduje zakończenie MC. Klawisze kursora zwykle działają intuicyjnie.

Edytor może być wywołany dla pliku:

     $ mc -e plik_do_edycji
     $ mcedit plik_do_edycji

Nie jest to edytor wielo-okienkowy, ale możesz osiągnąć podobny efekt używając wielu konsoli linuksowych. Aby kopiować pomiędzy oknami, użyj klawiszy Alt-Fn do przełączania konsol wirtualnych, a do wklejania fragmentu pliku do innego pliku, użyj „Plik->Wstaw plik” lub „Plik->Kopiuj do pliku”.

Wewnętrzny edytor może być zastąpiony przez dowolnie wybrany zewnętrzny.

Wiele programów używa także zmiennej środowiskowej EDITOR lub VISUAL by określić, którego edytora użyć. Jeśli nie odpowiada Ci vim, ustaw go na mcedit przez dodanie poniższych linii do ~/.bashrc:

     ...
     export EDITOR=mcedit
     export VISUAL=mcedit
     ...

Zalecam jednak ustawienie ich na vim, jeśli to możliwe. Przywyknięcie do poleceń vim jest dobrą rzeczą, od kiedy edytor Vi jest nieodłączną cechą świata Linuksa/Uniksa. [14]


4.2.6 Podgląd w MC

Bardzo sprytne narzędzie. Jest świetny do wyszukiwania słów w dokumentach. Zawsze używam go do przeglądania plików w katalogu /usr/share/doc. To najszybszy sposób na przeglądanie mas informacji o Linuksie. Podgląd można uruchomić bezpośrednio w taki sposób:

     $ mc -v nazwa_pliku_do_podglądu

4.2.7 Własności auto-startu programu MC

Wciśnij Enter na pliku i właściwy program zajmie się jego zawartością. Jest to bardzo wygodna cecha MC.

     plik wykonywalny:  Wykonanie pliku wykonywalnego
     plik man, html:    Przesłanie zawartości pliku przez przeglądarkę
     plik tar.gz, plik deb: Przeglądanie zawartości pliku jako podkatalogu

By te przeglądarki/wirtualne pliki poprawnie działały, przeglądane pliki nie mogą mieć atrybutu wykonywalności. Zmień ich status używając polecenia chmod lub przez menu plików w MC.


4.2.8 Wirtualny system plików FTP w programie MC

MC może służyć do dostępu do plików przez Internet przy użyciu FTP. Wejdź do menu wciskając F9, następnie wpisz `p', by aktywować wirtualny system plików FTP. Wpisz URL w formie: nazwa_użytkownika:hasło@nazwa_hosta.nazwa_domeny, co spowoduje pojawienie się katalogu zdalnego, wyglądającego jak lokalny.

Wypróbuj http.us.debian.org/debian jak adres URL i przejrzyj archiwum plików systemu Debian. Przeczytaj Archiwa Debiana, Rozdział 2.1 by dowiedzieć się więcej o strukturze katalogów.


4.3 Praca w środowisku uniksopodobnym

Chociaż MC pozwala Ci zrobić niemal wszystko, jest bardzo ważną rzeczą aby nauczyć się używać narzędzi linii poleceń uruchamianych z powłoki aby zaznajomić się ze środowiskiem uniksopodobnym. [15]


4.3.1 Specjalne sekwencje klawiszy

W środowisku uniksopodobnym, istnieje kilka sekwencji klawiszy które mają znaczenie specjalne. [16]

Domyślna powłoka bash, posiada zdolność edycji-historii oraz oraz możliwość dopełniania poleceń przy pomocy klawisza tab, by wspomóc interaktywne używanie.

Inne ważne sekwencje klawiszy do zapamiętania:

Aby móc używać myszki w znakowej konsoli systemu Linux, musisz mieć uruchomionego demona gpm. [18] Zajrzyj do Konfiguracja myszy, Rozdział 3.3.


4.3.2 Podstawowe komendy uniksowe

Nauczymy się teraz podstawowych komend uniksowych. [19] Wypróbuj działanie wszystkich poniższych poleceń używając do tego konta zwykłego użytkownika penguin :

W ramach treningu przejrzyj dostępne katalogi by zaznajomić się z systemem. Jeśli masz jakiekolwiek pytania, przeczytaj obowiązkowo stronę podręcznika systemowego. Dla przykładu zacznij od poniższych poleceń:

     $ man man
     $ man bash
     $ man ls

Jest już także odpowiednia pora by uruchomić vim i wcisnąć klawisz F1. Powinieneś przeczytać przynajmniej pierwsze 35 linijek. Następnie przesuń kursor nad |tutor| i naciśnij Ctrl-] by rozpocząć kurs. Przeczytaj Edytory, Część 11 by nauczyć się więcej o edytorach.

Zauważ, że wiele polecen uniksopodobnych włączając w to niektóre GNU oraz BSD będą wyświetlały zwięzłą informację jeśli wywołasz je w jeden z poniższych sposobów:

     $ commandname --help
     $ commandname -h

Jako ćwiczenie, wypróbuj również przykłady znajdujące się w Debianowe porady, Część 8.


4.3.3 Wykonywanie poleceń

Teraz masz już jakieś pojęcie jak używać systemu Debian. Zajrzyjmy więć głębiej by poznać mechanizm wykonywania poleceń w systemie Debian. [24]


4.3.4 Proste polecenie

Proste polecenie jest sekwencją:

  1. przypisań zmiennych (opcjonalne)
  2. nazwy polecenia
  3. argumentów (opcjonalne)
  4. przekierowań (opcjonalne: > , >> , < , << , etc.)
  5. operatorów kontrolujących (opcjonalnie: && , || ; <newline> , ; , & , ( , ))

Bardziej skomplikowane polecenia wraz ze znakami cytowania i podmianą wyrażeń możesz obejrzeć w Przetwarzanie linii poleceń, Rozdział 13.2.6.


4.3.5 Wykonywanie polecenia oraz zmienna środowiskowa

Typowe wywołanie polecenia używa sekwencji powłoki tak jak poniżej: [25]

     $ date
     Sun Oct 26 08:17:20 CET 2003
     $ LC_ALL=fr_FR date
     dim oct 26 08:17:39 CET 2003

Powyżej, program date jest wykonywany jako zadanie w tle. Zmienna środowiskowa LC_ALL jest:

Większość wykonywanych poleceń nie posiada poprzedzających definicji zmiennej środowiskowej. Dla przykładu powyższego, alternatywnym przykłądem jest:

     $ LC_ALL=fr_FR
     $ date
     dim oct 26 08:17:39 CET 2003

Jak pewnie zdążyłeś zauważyć, na dane wyjściowe polecenia oddziaływuje zmienna środowiskowa w taki sposób, by otrzymać je po francusku. Jeśli chcesz aby zmienna środowiskowa była dziedziczona przez podprocesy (na przykład podczas działania skryptu powłoki), musisz "wyeksportować" tę zmienną w taki oto sposób:

     $ export LC_ALL

4.3.6 Ścieżka przeszukiwań poleceń

Kiedy wpisujesz polecenie w powłoce, wyszukuje ona odpowiedniego programu zaglądając do katalogów, które umieszczone są w zmiennej środowiskowej PATH. Wartość zmiennej środowiskowej PATH zwana jest również ścieżką przeszukiwań powłoki.

W domyślnej instalacji systemu Debian, zmienna środowiskowa PATH konta użytkownika może nie zawierać ścieżki /sbin. Więc, jeśli chcesz uruchamiać takie polecenia jak ifconfig z katalogu /sbin, musisz zmienić zmienną środowiskową PATH tak by zawierała tę ścieżkę. Zmienna środowiskowa PATH jest zazwyczaj inicjalizowana przez plik ~/.bash_profile, przeczytaj Konfiguracja Basha, Rozdział 3.2.


4.3.7 Opcje linii poleceń

Niektóre polecenia przyjmują argumenty. Te zaczynające się od - oraz od -- zwane są opcjami i kontrolują one zachowanie się polecenia.

     $ date
     Mon Oct 27 23:02:09 CET 2003
     $ date -R
     Mon, 27 Oct 2003 23:02:40 +0100

Tutaj, argument linii poleceń -R zmienia zachowanie polecenia date tak, by wyjściowiy ciąg znaków zgodny był z dokumentem RFC-2822.


4.3.8 Wzorce powłoki

Bardzo często zdarza się, że potrzebujemy by polecenie działało z grupą plików, a nie chcemy podawać ich wszystkich ręcznie. Dopełnianie nazw plików przez wzorce powłoki jest do tego celu w zupełności wystarczające.

Dla przykładu, wykonaj poniższe przykłady i przemyśl wyniki jakie dają:

     $ mkdir junk; cd junk; $ touch 1.txt 2.txt 3.c 4.h .5.txt
     $ echo *.txt
     1.txt 2.txt
     $ echo *
     1.txt 2.txt 3.c 4.h
     $ echo *.[hc]
     3.c 4.h
     $ echo .*
     . .. .5.txt
     $ echo .[^.]*
     .5.txt
     $ echo [^1-3]*
     4.h
     $ cd ..; rmdir junk

4.3.9 Wartość zwracana przez polecenia

Każde polecenie kończąc swoje wykonywanie zwraca wartość zwaną statusem zakończenia.

Wartość zwrócona przez polecenie jest dostępna zaraz po wykonaniu polecenia w zmiennej środowiskowej $?.

Zauważ, że jeśli status zakończenia używany jest w kontekście logicznym powłoki, powodzenie jest traktowane jako logiczna PRAWDA. Jest to czasem mylące gdyż powodzenie dotyczy wartości zero.

Przeczytaj Polecenia warunkowe powłoki, Rozdział 13.2.5.


4.3.10 Właściwa sekwencja poleceń

Spróbuj zapamiętać następujące idiomy poleceń. Zajrzyj do Parametry powłoki, Rozdział 13.2.3, Przekierowywanie powłoki, Rozdział 13.2.4, Polecenia warunkowe powłoki, Rozdział 13.2.5, oraz Przetwarzanie linii poleceń, Rozdział 13.2.6 po przeczytaniu tychże idiomów.


4.3.10.1 polecenie &

Polecenie zostanie wykonane w tle. Zadania w tle pozwalają użytkownikowi uruchamiać wiele programów w pojedynczej powłoce.

Zarządzanie procesami znajdującymi się w tle dokonywane jest przy pomocy poleceń wbudowanych powłoki: jobs, fg, bg i stop. Przeczytaj części "SIGNALS", "JOB CONTROL" i "SHELL BUILTIN COMMAND" w podręczniku systemowym bash(1). [26]


4.3.10.2 polecenie1 | polecenie2

Tutaj, na standardowe wejście polecenia2 zostaje przekierowane standardowe wyjście polecenia1. Oba polecenia mogą działać równolegle. Zwane jest to potokiem.


4.3.10.3 polecenie1 ; polecenie2

Tutaj, polecenie1 oraz polecenie2 wykonywane są sekwencyjnie.


4.3.10.4 polecenie1 && polecenie2

Wykonywane jest polecenie1. Jeśli zakończy się pomyślnie to wykonywane jest polecenie2. Wykonywanie poleceń ma tu charakter sekwencyjny. Na końcu zwracany jest status pomyślnego zakończenia, jeśli oba: polecenie1 i polecenie2 zakończyły się pomyślnie.


4.3.10.5 polecenie1 || polecenie2

Wykonywane jest polecenie1. Jeśli nie wykona się ono pomyślnie, wykonywane jest polecenie2. Tu także charakter wykonywania poleceń jest sekwencyjny. Status zakończenia jest zwracany pomyślny jeśli polecenie1 lub polecenie2 zakończyło się pomyślnie.


4.3.10.6 polecenie > foo

Przekierowuje standardowe wyjście z polecenia do pliku foo. (powoduje nadpisanie pliku)


4.3.10.7 polecenie >> foo

Przekierowuje standardowe wyjście polecenia do pliku foo. (powoduje dopisanie do pliku)


4.3.10.8 polecenie > foo 2>&1

Przekierowuje standardowe wyjście oraz wyjście błędów polecenia do pliku foo.


4.3.10.9 polecenie < foo

Przekierowuje standardowe wejście polecenia do pliku foo. Sprawdź:

     $ </etc/motd pager
      ... (the greetings)
     $ pager </etc/motd
      ... (the greetings)
     $ pager /etc/motd
      ... (the greetings)
     $ cat /etc/motd | pager
      ... (the greetings)

Pomimo, że wszystkie powyższe składnie robią dokładnie to samo, ostatni przykład uruchamia dodatkowe polecenie cat i przez to marnuje zasoby systemowe bez powodu.


4.3.11 Aliasy poleceń

Możesz ustawić sobie alias do często wykonywanych poleceń. Na przykład:

     $ alias la='ls -la'

Teraz, la działa jak ls -la lecz zapisywane jest krócej. Polecenie to powoduje wylistowanie wszystkich plików w katalogu w długim (szczegółowym) formacie.

Możesz określić dokładną ścieżkę lub zidentifikować polecenie używając type. Przykładowo:

     $ type ls
     ls is hashed (/bin/ls)
     $ type la
     la is aliased to `ls -la'
     $ type echo
     echo is a shell builtin
     $ type file
     file is /usr/bin/file

W powyższym powłoka ostatnio poszukiwała ls podczas gdy nie robiła tego w przypadku file, stąd wniosek, że powłoka posiada wewnętrzny bufor w którym przetrzymywana jest lokalizacja najczęściej używanych poleceń (ls).


4.4 Uniksopodobne przetwarzanie tekstów

Istnieje kilka standardowych narzędzi do przetwarzania tekstów, które są bardzo często używane w systemach uniksopodobnych.

Zajrzyj doZastępowanie przy pomocy wyrażeń regularnych, Rozdział 8.6.12, Kawałki kodu przekierowywania poleceń, Rozdział 8.6.17, oraz Szaleństwo krótkich skryptów Perla, Rozdział 8.6.19 Po kilka przykładowych skryptów.


4.4.1 Wyrażenia regularne

Wyrażenia regularne używane są w wielu narzędziach do przetwarzania tekstu. Są one analogią do wzorców powłoki (patrz Wzorce powłoki, Rozdział 4.3.8) lecz są zarówno bardziej skomplikowane jak i dają o wiele większe możliwości.

Wyrażenie regularne opisuje pasujący wzorzec i jest zbudowane ze znaków tekstowych oraz metaznaków. Metaznak jest znakiem ale traktowanym w specjalny sposób. Dwa główne style, BRE oraz ERE, zależne od używanych narzędzi, opisane są w Uniksopodobne przetwarzanie tekstów, Rozdział 4.4.

W stylu ERE, metaznaki zawierają "\ . [ ] ^ $ * + ? ( ) { } |". Wyrażenie regularne oznacza:

W stylu BRE metaznaki "+ ? ( ) { } |" tracą swoje specjalne znaczenie; w zamian należy poprzedzić je znakiem backslash "\+ \? \( \) \{ \} \|". Więc konstrukcja grupująca (r1|r2) musi być zapisana jako \(r1|r2\) w BRE. Emacs, wykorzystujący głównie BRE, traktuje "+ ? -" jako metaznaki. Z tego powodu nie ma potrzeby ich poprzedzania. Sprawdź rozdział Wyrażenia zastępujące, Rozdział 4.4.2 by dowiedzieć się jak została użyta konstrukcja grupująca.

Dla przykładu, grep może zostać użyty do przeszukiwania tekstu z użyciem wyrażeń regularnych:

     $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
                         GNU GENERAL PUBLIC LICENSE
                         GNU GENERAL PUBLIC LICENSE
       Yoyodyne, Inc., hereby disclaims all copyright interest in the program

4.4.2 Wyrażenia zastępujące

W wyrażeniach zastępujących następujące znaki mają specjalne znaczenie:

W Perlu dla ciągu zastępującego używany jest $n zamiast \n, a także & nie ma specjalnego znaczenia.

Przykładowo:

     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
     zzz=1abc2efg3hij4=
     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/'
     zzz=&=

Zwróć tutaj szczególną uwagę na styl wyrażenia regularnego objętego nawiasami kwadratowymi i w jaki sposób ciągi znaków pasujące do wzorca w procesie zastępowania ich wystąpień w tekście, przez różne narzędzia.

Te wyrażenia regularne mogą być takżę użyte do poruszania kursorem oraz do zastępowania tekstu w edytorach.

Przeczytaj prosze wszystkie związane z tym strony podręcznika systemowego, by lepiej zapoznać się z tymi poleceniami.


4.5 Uniksopodobny system plików

W GNU/Linux oraz innych uniksopodobnych systemach operacyjnych pliki zorganizowane są w katalogi. [27] Wszystkie pliki i katalogi są zgrupowane w jednym wielkim drzewie, hierarchii plików, której korzeniem (root) jest /.

Te pliki i katalogi mogą być rozmieszczone na wielu urządzeniach. Polecenie mount(8) pozwala dołączyć pewne systemy plików z podłączonych urządzeń do tego wielkiego drzewa plików. Odwrotnynm z kolei działaniem zajmuje się polecenie unmount(8), które pozwala z powrotem odłączyć dany system plików.


4.5.1 Podstawy uniksowego systemu plików

Oto podstawy:

Najlepsze rady dotyczące hierarchii plików zebrane sostały pod adresem Filesystem Hierarchy Standard. Jako początkujący powinieneć pamiętać następujące fakty:


4.5.2 Koncepcja systemu plików w systemie Debian

Zgodnie z tradycją uniksową, system Debian udostępnia system plików, w którym fizyczne dane na dyskach twardych i innych nośnikach, oraz interakcja pomiędzy sprzętem takim jak ekran konsoli i zdalnymi konsolami szeregowymi, zostały ujednolicone.

Każdy plik, katalog, nazwany potok lub urządzenie fizyczne w systemie Debian posiada strukturę danych zwaną węzłem, która opisuje związane z nim atrybuty takie jak: właściciel, grupa do której należy, ostatni czas dostępu, itd. Dokładna definicja struktury iwęzła w systemie Debian GNU/Linux znajduje się w /usr/include/linux/fs.h.

Ta ujednolicona reprezentacja jednostek fizycznych to potężne narzędzie, gdyż pozwala na stosowanie tych samych poleceń do tych samych operacji na całkowicie różnych od siebie urządzeniach.

Wszystkie Twoje pliki mogą znajdować się na jednym dysku --- lub możesz mieć 20 dysków, niektóre z nich podłączone do innych komputerów gdzieś w sieci. Nie będziesz mógł tego rozpoznać po samym wyglądzie drzewa katalogów, a niemal wszystkie polecenia działają tak samo i bez znaczenia jest na jakim urządzeniu fizycznym tak na prawdę, znajdują się Twoje pliki.


4.5.3 Prawa dostępu do plików i katalogów

Prawa dostępu do plików i katalogów są definiowane oddzielnie dla następujących trzech kategorii użytkowników, których dotyczą:

Dla pliku każde prawo pozwala odpowiednio na:

Dla katalogu każde prawo pozwala odpowiednio na:

Tutaj prawo wykonania dla katalogu oznacza nie tylko prawo do odczytu plików w nim zawartych, ale także na przeglądanie atrybutów takich jak rozmiar i czas modyfikacji.

Aby otrzymać informacje o uprawnieniach (oraz inne) plików i katalogów, używa się polecenia ls. Zobacz ls(1). Gdy ls jest wywołane z parametrem -l, wyświetla następujące informacje w następującej kolejności:

Aby zmienić właściciela pliku, używa się z konta root polecenia chown. Aby zmienić grupę pliku, używa się polecenia chgrp z konta właściciela pliku lub konta root. Aby zmienić prawa dostępu do plików czy katalogów, używa się polecenia chmod, także z konta użytkownika lub konta root. Podstawowa składnia pozwalająca na manipulowanie plikiem foo to:

     # chown nowy_wlasciciel foo
     # chgrp nowa_grupa foo
     # chmod  [ugoa][+-=][rwx][,...] foo

Zobacz chown(1), chgrp(1), oraz chmod(1) po więcej szczegółów.

Na przykład w celu uczynienia użytkownika foo właścicielem drzewa katalogów, a grupy bar współwłaścicielem, wykonaj następujące polecenia z konta root:

     # cd /some/location/
     # chown -R foo:bar
     # chmod -R ug+rwX,o=rX

Istnieją jeszcze trzy specjalne bity uprawnień:

Na wyjściu polecenia ls -l dużymi literami oznaczane są bity, na których miejscu bit wykonywalności nie był ustawiony.

Ustawienie ID użytkownika dla pliku wykonywalnego pozwala użytkownikowi na wykonanie tego pliku z ID właściciela pliku (na przykład root). Podobnie, ustawienie ID grupy dla pliku wykonywalnego, pozwala użytkownikowi na wykonanie pliku z ID grupy pliku (na przykład root). Ponieważ może to powodować ryzyko naruszenia bezpieczeństwa, włączanie tych opcji wymaga szczególnej ostrożności.

Ustawienie ID grupy dla katalogu uaktywnia schemat tworzenia plików w stylu BSD, w którym wszystkie pliki tworzone w tym katalogu należą do grupy, mającej do niego uprawnienia.

Ustawienie bitu lepkości dla katalogu zapobiega usuwaniu z niego plików przez użytkowników, którzy nie są właścicielami tych pliku. W celu zabezpieczenia zawartości pliku w katalogach zapisywalnych, takich jak /tmp czy w katalogach, w których prawo zapisu ma grupa, potrzeba nie tylko, by było wyłączone prawo zapisu dla pliku, ale także należy ustawić sticky bit dla katalogu. W innym przypadku plik może zostać usunięty, a następnie w jego miejsce może zostać utworzony nowy plik, o takiej samej nazwie przez dowolnego użytkownika, który ma prawo zapisu do tego katalogu.

Poniżej kilka interesujących przykładów praw do pliku.

     $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/pppd
     crw-rw----    1 root     dip      108,   0 Jan 18 13:32 /dev/ppp
     -rw-r--r--    1 root     root         1051 Jan 26 08:29 /etc/passwd
     -rw-r-----    1 root     shadow        746 Jan 26 08:29 /etc/shadow
     -rwsr-xr--    1 root     dip        234504 Nov 24 03:58 /usr/sbin/pppd
     $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src
     drwxrwxrwt    4 root     root         4096 Feb  9 16:35 /tmp
     drwxrwsr-x   10 root     staff        4096 Jan 18 13:31 /usr/local
     drwxrwsr-x    3 root     src          4096 Jan 19 08:36 /usr/src
     drwxrwsr-x    2 root     mail         4096 Feb  2 22:19 /var/mail
     drwxrwxrwt    3 root     root         4096 Jan 25 02:48 /var/tmp

Istnieje alternatywna metoda numeryczna do opisu praw pliku w chmod(1) poleceniach. Metoda ta używa trzech lub czterech cyfr o znaczeniu ósemkowym. Oznaczają one odpowiednio:

Brzmi to dość skomplikowanie ale jest całkiem proste. Jeśli spojrzysz na pierwsze kilka kolumn (2-10) będących wynikiem polecenia ls -l i odczytasz ich znaczenie binarnie (podstawa=2) reprezentację praw do pliku (gdzie "-" to "0" a "rwx" to "1"), wartość takiego wyrażenia numerycznego powinna mieć dla Ciebie poprawny sens jako reprezentacja ósemkowa (podstawa=8) praw dostępu do pliku. [30] Spójrz na ten przykład:

     $ touch foo bar
     $ chmod u=rw,go=r foo
     $ chmod 644 bar
     $ ls -l foo bar
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  foo
     -rw-r--r--    1 penguin  penguin  0 Nov  3 23:30  bar

Domyślna maska praw dostępu do pliku ustawiana jest przy użyciu wbudowanego polecenia powłoki umask. Zobacz builtins(7).


4.5.4 Znaczniki czasu

Dla plików GNU/Linux istnieją trzy typy znaczników czasu:

Zauważ, że ctime nie jest czasem utworzenia pliku.

Zauważ, że nawet zwykły odczyt z pliku w systemie Debian powoduje normalnie operację zapisu w celu aktualizacji informacji atime w inode. Montowanie systemu plików z opcją noatime pozwoli systemowi na ominięcie tej operacji i zaowocuje szybszym dostępem do pliku przy odczycie. Zobacz mount(8).

Użyj polecenia touch(1) aby zmienić znacznik czasu istniejącego pliku.


4.5.5 Dowiązania (links)

Istnieją dwie metody na związanie pliku foo z innym plikiem bar.

Spójrz na poniższe przykłady zmian w dowiązaniach, oraz na subtelne różnice w rezultacie polecenia rm.

     $ echo "Oryginalna zawartość" > foo
     $ ls -l foo
     -rw-r--r--    1 osamu    osamu           4 Feb  9 22:26 foo
     $ ln foo bar     # dowiązanie (hardlink)
     $ ln -s foo baz  # dowiązanie symboliczne
     $ ls -l foo bar baz
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 bar
     lrwxrwxrwx    1 osamu    osamu           3 Feb  9 22:28 baz -> foo
     -rw-r--r--    2 osamu    osamu           4 Feb  9 22:26 foo
     $ rm foo
     $ echo "Nowa zawartość" > foo
     $ cat bar
     Oryginalna zawartość
     $ cat baz
     Nowa zawartość

Dowiązanie symboliczne zawsze ma, jak widać w przykładzie powyżej prawa dostępu „rwxrwxrwx”, a jego faktyczne prawa dostępu są takie jak wskazywanego pliku.

Katalog . jest dowiązaniem do katalogu, w którym sam się pojawia, zatem liczba dowiązań do nowego katalogu rozpoczyna się od 2. Katalog .. jest dowiązaniem do katalogu nadrzędnego, zatem liczba dowiązań do katalogu rośnie wraz z liczbą nowych podkatalogów.


4.5.6 Nazwane potoki (FIFOs)

Naznway potok jest plikiem, który działa jak potok. Wrzucasz coś do pliku i dostajesz coś z niego na zewnątrz. Zwane jest to FIFO, lub First-In-First-Out (Pierwsze-Weszlo-Pierwsze-Wyszło): pierwsza rzecz jaką włożysz do takiego pliku, jest pierwszą rzeczą którą możesz z niego odebrać.

Jeśli zapisujesz do nazwanego potoku, proces który tego dokonuje, nie zakończy się dopóki dane, które zostały do niego zapisane, nie zostaną odczytane. Jeśli czytasz z nazwanego potoku, proces który dokonuje odczytu czeka z zakończeniem, dopóki tylko jest coś do odczytania. Nazwany potok ma zawsze zerową wielkość --- nie przechowuje żadnych danych, po prostu łączy dwa procesy tak jak | w powłoce. Jednakże, to iż taki potok ma swoją nazwę, powoduje, że dwa procesy nie muszą być w jednej linii poleceń a nawet, mogą być uruchamiane przez różnych użytkowników.

Spróbuj sam wykonując poniższy przykład:

     $ cd; mkfifo mypipe
     $ echo "hello" >mypipe & # put into background
     [1] 5952
     $ ls -l mypipe
     prw-r--r--    1 penguin penguin  0 2003-11-06 23:18 mypipe
     $ cat mypipe
     hello
     [1]+  Done                    echo hello >mypipe
     $ ls mypipe
     prw-r--r--    1 penguin penguin  0 2003-11-06 23:20 mypipe
     $ rm mypipe

4.5.7 Gniazda

Gniazdo jest podobne do nazwanego potoku (FIFO) i pozwala procesom na wymianę informacji. W przypadku gniazda jednak, procesy nie muszą być uruchomione w tym samym czasie, a nawet nie nie muszą być procesami potomnymi swoich przodków. To jest punkt styku ich komunikacji międzyprocesowej. Informacje mogą być wymieniane przez sieć pomiędzy dwoma różnymi komputerami.


4.5.8 Pliki urządzeń

Plik urządzenia odnosi się do fizycznego lub wirtualnego urządzenia, takiego jak dysk twardy, karta graficzna, ekran czy klawiatura, w Twoim systemie. Przykładem urządzenia wirtualnego jest konsola, reprezentowana przez /dev/console.

Istnieją dwa typy urządzeń:

Możesz odczytywać oraz zapisywać do plików urządzeń, lecz mogą one zawierać również dane binarne o całkowicie niezrozumiałym zapisie dla człowieka. Zapisywanie danych do takich plików jest czasami przydatne przy badaniu problemów tyczących się łączenia sprzętu. Dla przykładu możesz przesłać plik tekstowy do urządzenia drukarki /dev/lp0 lub wysłać odpowiednie polecenie modemowe na odpowiedni port szeregowy /dev/ttyS0. Jednak robiąc to nieostrożnie można spowodować poważne uszkodzenie, więc postępuj z rozwagą.


4.5.8.1 /dev/null i inne

/dev/null jest specjalnym plikiem urządzenia, które porzuca wszystko co do niego wrzucisz. Jeśli czegoś nie potrzebujesz, wrzuć to do /dev/null. Jest to taka dziura bez dna. Jeśli spróbujesz coś przeczytać z /dev/null, dostaniesz natychmiast znak końca pliku.

/dev/zero działa podobnie, z tym, że próba odczytu zwraca znak \0 (to nie to samo zero co "0" w kodzie ASCII). Patrz Sztuczne pliki, Rozdział 8.6.33.


4.5.8.2 Numer węzłowy urządzenia

Numer węzłowy urządzenia wyświetlany jet jako wynik polecenia ls:

     $ ls -l /dev/hda /dev/ttyS0 /dev/zero
     brw-rw----    1 root     disk       3,   0 Mar 14  2002 /dev/hda
     crw-rw----    1 root     dialout    4,  64 Nov 15 09:51 /dev/ttyS0
     crw-rw-rw-    1 root     root       1,   5 Aug 31 03:03 /dev/zero

Tutaj,

W starszych systemach, proces instalacyjny tworzył węzły urządzeń przy użyciu polecenia /sbin/MAKEDEV. Patrz MAKEDEV(8).

W systemach nowszych, system plików /dev jest automatycznie zapełniany przez urządzenie systemu plików podobne do /proc.


4.5.9 System plików /proc

System plików /proc jest tak naprawdę pseudo-systemem plików, który zawiera informacje o systemie oraz uruchomionych w nim procesach.

Ludzie często nie wiedzą co robić, gdy zauważają dość duży plik w /proc/kcore. Jest to mniej więcej kopia pamięci Twojego komputera. Używana jest do diagnozowania jądra. Obecnie ten plik nie istnieje, więc nie martw się o jego wielkość.

Patrz Dostrajanie jądra przy pomocy systemu plików proc, Rozdział 7.3 and proc(5).


4.6 System X Window

Patrz X, Rozdział 9.4.


4.6.1 Uruchamianie systemu X Window

System X Window może być uruchamiany automatycznie z podobnym do xdm graficznym demonem logowania lub poprzez wpisanie w konsoli: console.

     $ exec startx

4.6.2 Menu systemu X Window

Od kiedy środowisko X potrafi pomieścić wiele menedżerów okien, zmienił się znacząco interfejs użytkownika. Zapamiętaj, że zawsze po naciśnięciu prawego guzika myszy w głównym oknie menedżera, ujrzysz rozwijalne menu.

Jeśli nie możesz znależć któregoś programu w menu, zainstaluj odpowiednie pakiety. Patrz Podstawy zarządzania pakietami Debiana, Rozdział 6.2.


4.6.3 Skróty klawiszowe w systemie X Window

Poniżej lista ważniejszych sekwencji klawiszy, przydatnych podczas pracy w systemie X Window.


4.7 Dalsza nauka

Na tym etapie wiedzy, polecam Ci zaznajomienie się z kluczowymi książkowymi przewodnikami ze strony The Linux Documentation Project: Guides:

Zobacz Rozwiązywanie problemów, Część 15 po więcej materiałów do nauki.


[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]

Debian Reference

CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTC

Osamu Aoki osamu@debian.org
Koordynator tłumaczenia: Bartosz Feński aka fEnIo fenio@o2.pl
Autorzy, Rozdział A.1