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.
Po zainstalowaniu systemu Debian na swoim komputerze, musisz nauczyć się kilku rzeczy, aby go używać. Pozwól, że damy ci szybki kurs.
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]
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.
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.
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.
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.
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.
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:
/etc
oraz podkatalogi.
/var/log
oraz podkatalogi.
/usr/share/doc
oraz podkatalogi.
/sbin
and /bin
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]
$ 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]
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.)
cd
zmienia katalog pokazany na wybranym ekranie.
cp
lub mv
z edycją w powłoce.
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]
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
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.
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.
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]
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.
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 :
..
" oraz ".
")
foo
w bieżącym
katalogu lub w katalogu wymienionym w zmiennej CDPATH. Przeczytaj
o poleceniu cd
w builtins(7)
.
/foo
.
/etc/motd
używając domyślnego pager'a.
Przeczytaj polecenie < foo,
Rozdział 4.3.10.9. [21]
junkfile
.
foo
do nowego pliku
bar
.
junkfile
.
foo
na
bar
.
foo
do nowego miejsca o nazwie
bar/baz
. Katalog bar/
musi
istnieć.
foo
prawa odczytu oraz zapisu dla innych użytkowników. (brak praw wykonywania dla
wszystkich)
foo
na
umożliwiające odczyt ale zabranijące zapisu do pliku dla innych użytkowników.
(brak prawa wykonywania dla wszystkich)
foo
na
prawo oidczytu lecz brak prawa zapisu. (prawo wykonywania dla wszystkich)
exim
. Więcej na temat wyrażeń
regularnych możesz dowiedzieć się ze strony podręcznika grep(1)
wprowadzając man grep.
foo
i tworzy
foo.gz
używając kodowania Lempel-Ziv (LZ77).
foo.gz
i tworzy
foo
.
foo
i tworzy
foo.bz2
używając algorytmu kompresji tekstu poprzez
sortowanie blokowe Burrows-Wheeler i kodowanie metodą Huffman'a. (lepsza
kompresja niż przy użyciu gzip
)
foo.bz2
i tworzy
foo
.
foo.tar
.
foo.tar.gz
foo.tar.bz2
. [22]
bar/
w pliku archiwum
foo.tar
.
bar/
w skompresowanym
archiwum foo.tar.gz
.
bar/
w archiwum
foo.tar.bz2
. [23]
README.gz
używając
domyślnego pager'a.
foo
zawartości pliku
README.gz
.
README.gz
na koniec pliku
foo
. (Jeśli ten plik nie istnieje, zostanie najpierw utworzony)
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.
Teraz masz już jakieś pojęcie jak używać systemu Debian. Zajrzyjmy więć głębiej by poznać mechanizm wykonywania poleceń w systemie Debian. [24]
Proste polecenie jest sekwencją:
Bardziej skomplikowane polecenia wraz ze znakami cytowania i podmianą wyrażeń możesz obejrzeć w Przetwarzanie linii poleceń, Rozdział 13.2.6.
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
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.
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.
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
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.
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.
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]
Tutaj, na standardowe wejście polecenia2
zostaje przekierowane
standardowe wyjście polecenia1
. Oba polecenia mogą działać
równolegle. Zwane jest to potokiem.
Tutaj, polecenie1
oraz polecenie2
wykonywane są
sekwencyjnie.
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.
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.
Przekierowuje standardowe wyjście z polecenia
do pliku
foo. (powoduje nadpisanie pliku)
Przekierowuje standardowe wyjście polecenia
do pliku
foo. (powoduje dopisanie do pliku)
Przekierowuje standardowe wyjście oraz wyjście błędów polecenia
do
pliku 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.
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
).
Istnieje kilka standardowych narzędzi do przetwarzania tekstów, które są bardzo często używane w systemach uniksopodobnych.
head
wyświetla poczśtek pliku.
tail
wyświetla końcowa część pliku.
sort
sortuje linie pliku tekstowego.
uniq
usuwa zduplikowane linie z posortowanego pliku.
tr
zamienia lub kasuje znaki.
diff
porównuje pliki linia po linii.
grep
dopasowuje tekst do wzorca.
ed
jest prymitywnym edytorem linii poleceń.
sed
jest edytorem strumieni.
vi
jest edytorem ekranowym.
emacs
jest edytorem ekranowym.
egrep
dopasowuje tekst do wzorca.
awk
narzędzie do prostego przetwarzania tekstów. Zajrzyj do Awk, Rozdział 13.3.
perl
potężne narzędzie do przetwarzania tekstów. Zajrzyj do Perl, Rozdział 13.4.
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.
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
W wyrażeniach zastępujących następujące znaki mają specjalne znaczenie:
emacs
używaj \&)
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.
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.
Oto podstawy:
MOJPLIK
oraz MOjPlik
są całkiem
innymi plikami.
/
. Nie myl jednak katalogu
głównego (root) z użytkownikiem "root" . Zobacz Logowanie do powłoki jako root, Rozdział 4.1.1.
/
. [28] Katalog główny (root) jest wyjątkiem; jego nazwa to
/
(wymawiane "slesz" lub "katalog główny") i
nie może ona zostać zmieniona.
/
i pomiędzy
każdym katalogiem lub nazwą pliku znajduje się /
. Pierwszy
/
jest nazwą katalogu, ale kolejne są po prostu separatorami by
rozróżnić części nazwy pliku.
Słowa tutaj używane mogą być mylące. Weżmy następujący przykłąd:
/usr/share/keytables/us.map.gz
To jest w pełni określająca nazwa pliku; niektórzy nazywają ją
ścieżką. Ludzie czasem nazywają nazwą pliku samo
us.map.gz
. [29]
/etc
ii
/usr
. Te podkatalogi także posiadają swoje gałęzie (podkatalogi),
na przykład /etc/init.d
i /usr/local
. Cała ta
struktura zwana jest drzewem katalogów.
Możesz myśleć o w pełni określającej nazwie pliku jak o drodze od podstawy
drzewa (/
), aż do konkretnej gałęzi (pliku). Nie raz też
usłyszysz jak inni mówią o drzewie katalogów jakby to było drzewo
rodzinne, gdzie podkatalogi mają swoich
rodziców, a ścieżka to dokładne pochodzenie pliku.
Istnieją także ścieżki względne, które rozpoczynają się całkiem gdzie indziej
niż katalog główny (root). Powinieneś zapamiętać, że ../
odnosi
się do katalogu nadrzędnego.
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:
/
/
reprezentuje katalog główny (root).
/etc
/var/log
/home
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.
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)
.
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.
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.
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
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.
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ą.
/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.
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,
/dev/hda
posiada pierwszorzędny numer urządzenia 3 oraz pomoniczy
numer urządzenia 0. Ustawione jest też prawo odczytu/zapisu dla użytkowników
należacych do grupy disk,
/dev/ttyS0
posiada pierwszorzędny numer urządzenia 4 oraz
drugorzędny numer urządzenia 64. Prawa odczytu/zapisu ustawione są dla
użytkowników należących do grupy dialout i
/dev/zero
posiada pierwszorzędny numer urządzenia 1 oraz
drugorzędny numer urządzenia 5. Prawa odczytu/zapisu ustawione są dla
wszystkich.
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
.
/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)
.
Patrz X, Rozdział 9.4.
System X Window może być uruchamiany automatycznie z podobnym do
xdm
graficznym demonem logowania lub poprzez wpisanie w konsoli:
console.
$ exec startx
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.
Poniżej lista ważniejszych sekwencji klawiszy, przydatnych podczas pracy w systemie X Window.
Na tym etapie wiedzy, polecam Ci zaznajomienie się z kluczowymi książkowymi
przewodnikami ze strony The
Linux Documentation Project: Guides
:
sysadmin-guide
/usr/share/doc/sysadmin-guide/html/index.html
http://www.tldp.org/LDP/sag/index.html
(not available)
(not applicable)
http://www.tldp.org/LDP/nag2/index.html
rutebook
(from non-free)
/usr/share/doc/rutebook/
http://www.icon.co.za/~psheer/book/index.html.gz
Zobacz Rozwiązywanie problemów, Część 15 po więcej materiałów do nauki.
Debian Reference
CVS, poniedziałek, 3 kwiecień 2005, 22:58:23 UTCosamu@debian.org
fenio@o2.pl