[ powrót ] [ Spis treści ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ dalej ]
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:
odczytu, zapisu oraz usuwania każdego pliku w systemie, niezależnie od praw dostępu do tego pliku
zmiany właściciela pliku oraz praw dostępu do każdego pliku w systemie
ustawiania haseł dla nieuprzywilejowanych użytkowników w systemie
logowania się na dowolne konto w systemie bez znajomości jego hasła
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:
# : znak zachęty w koncie root
$ : znak zachęty nieuprzywilejowanego użytkownika
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.)
F1: Menu pomocy
F3: Wewnętrzny podgląd pliku
F4: Wewnętrzny edytor
F9: Uaktywnienie rozwijanego menu
F10: Wyjście z Midnight Commander
Tab: Przełączanie pomiędzy dwoma oknami
Insert: Wybranie pliku do operacji na wielu plikach, np. dla kopiowania
Del: Usunięcie pliku (Bądź ostrożny—ustaw MC w tryb bezpiecznego usuwania.)
Klawisze kursora: Oczywiste
Każde polecenie cd
zmienia katalog pokazany na wybranym ekranie.
Ctrl-Enter lub Alt-Enter wkleja nazwę pliku do linii poleceń. Używaj tego
łącznie z poleceniem cp
lub mv
z edycją w powłoce.
Alt-Tab pokaże dostępne polecenia z linii poleceń.
Możesz określić katalogi startowe dla obu okien podając je jako parametry przy wywoływaniu MC; na przykład mc /etc /root.
Esc + klawisz numeryczny == Fn (np. Esc + 1 = F1, itd.; Esc + 0 = F10)
Klawisz Esc == klawisz Alt (= Meta, M-); np. wpisz Esc + c by otrzymać Alt-C
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]
Ctrl-U: Usuwa linię przed kursorem.
Ctrl-H: Usuwa znak przed kursorem.
Ctrl-D: Kończy standardowe wejście (zamyke powłokę jeśli używasz powłoki)
Ctrl-C: Kończy działający program.
Ctrl-Z: Tymczasowo zatrzymuje program (przenosi program w tło, zobacz polecenie &, Rozdział 4.3.10.1)
Ctrl-S: Wstrzymuje wyjście na ekran. [17]
Ctrl-Q: Przywraca wyjście na ekran.
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.
strzałka w górę: Zaczyna przeszukiwać historię poleceń.
Ctrl-R: Uruchamia przeszukiwanie historii poleceń.
TAB: Dopełnia wprowadzoną nazwę pliku w linii poleceń.
Ctrl-V TAB: Wprowadza TAB bez próby rozwinięcia go do dopasowania.
Inne ważne sekwencje klawiszy do zapamiętania:
Ctrl-Alt-Del: Ponownie uruchom/zatrzymaj system, zobacz Doinstaluj jeszcze trochę pakietów po wstępnej instalacji, Rozdział 3.7.1.
Przeciągnięcie-lewym-klawiszem myszy: Zaznacza i kopiuje do schowka.
Kliknięcie środkowym klawiszem myszy: Wkleja ze schowka w miejsce kursora.
Meta-klawisz (terminologia Emacs) jest tradycyjnie powiązany z klawiszem lewy Alt. Niektóre systemy mogą być skonfigurowane tak, że Meta-klawisz odpowiada klawiszowi Windows.
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 :
pwd
Wyświetla nazwę katalogu, w którym się aktualnie znajdujesz.
whoami
Wyświetla Twoją nazwę użytkownika.
file foo
Wyświetla typ pliku foo.
type -p nazwa_polecenia
Wyświetla położenie pliku polecenia nazwa_polecenia.
which nazwa_polecenia robi to samo.
type nazwa_polecenia
Wyświetla informacje o poleceniu nazwa_polecenia.
apropos słowo-klucz
Wyszukuje polecenia związazane ze słowem-kluczowym.
man -k słowo-klucz robi to samo.
whatis nazwa_polecenia
Wyświetla jednolinijkowe wyjaśnienie o działaniu polecenia nazwa_polecenia.
man -a nazwa_polecenia
Wyświetla krótkie wyjaśnienie o działaniu poleceniu nazwa_polecenia. (styl uniksowy)
info nazwa_polecenia
Wyświetla raczej obszerne wyjaśnienie o działaniu polecenia nazwa_polecenia. (styl GNU)
ls
Listuje zawartość katalogu. (nie wyświetla plików oraz katalogów rozpoczynających się od kropki) [20]
ls -a
Listuje zawartość katalogu (wszystkie pliki i katalogi)
ls -A
Listuje zawartość katalogu. (wszystkie pliki i katalogi, za wyjątkiem
"..
" oraz ".
")
ls -la
Listuje całą zawartość wraz ze szczegółowymi informacjami. Przeczytaj Koncepcja systemu plików w systemie Debian, Rozdział 4.5.2.
ls -d
Listuje podkatalogi znajdujące się w bieżącym katalogu.
lsof foo
Wyświetla programy korzystające z pliku foo.
mkdir foo
Tworzy nowy katalog o nazwie foo, w aktualnym katalogu.
rmdir foo
Usuwa katalog foo znajdujący się w aktualnym katalogu.
cd foo
Zmienia aktualny katalog na katalog foo
w bieżącym
katalogu lub w katalogu wymienionym w zmiennej CDPATH. Przeczytaj
o poleceniu cd
w builtins(7)
.
cd /
Zmienia bieżący katalog na katalog główny.
cd
Zmienia katalog bieżacy na katalog domowy uzytkownika.
cd /foo
Zmienia katalog bieżący na ścieżke bezwzględna /foo
.
cd ..
Zmienia katalog na nadrzędny.
cd ~foo
Zmienia katalog na katalog domowy użytkownika foo.
cd -
Zmienia katalog na poprzedni.
</etc/motd pager
Wyświetla zawartość pliku /etc/motd
używając domyślnego pager'a.
Przeczytaj polecenie < foo,
Rozdział 4.3.10.9. [21]
touch junkfile
Tworzy pusty plik o nazwie junkfile
.
cp foo bar
Kopiuje istniejący plik foo
do nowego pliku
bar
.
rm junkfile
Usuwa plik junkfile
.
mv foo bar
Zmienia nazwę istniejącego pliku foo
na
bar
.
mv foo bar/baz
Przenosi istniejący plik foo
do nowego miejsca o nazwie
bar/baz
. Katalog bar/
musi
istnieć.
chmod 600 foo
Usuwa z listy praw dostępu do istniejącego pliku foo
prawa odczytu oraz zapisu dla innych użytkowników. (brak praw wykonywania dla
wszystkich)
chmod 644 foo
Zmienia prawa dostępu do istniejącego pliku foo
na
umożliwiające odczyt ale zabranijące zapisu do pliku dla innych użytkowników.
(brak prawa wykonywania dla wszystkich)
chmod 755 foo
Zmienia prawa dostępu do istniejącego pliku foo
na
prawo oidczytu lecz brak prawa zapisu. (prawo wykonywania dla wszystkich)
top
Wyświetla informacje o procesach na pełnym ekranie. Wciśnij "q" by zakończyć.
ps aux | pager
Wyświetla informacje o wszystkich działających procesach używając na wyjściu stylu BSD. Zobacz polecenie1 | polecenie2, Rozdział 4.3.10.2.
ps -ef | pager
Wyświetla informacje o wszystkich działającyh procesach używając na wyjściu uniksowego stylu system-V.
ps aux | grep -e "[e]xim"
Wyświetla wszystkie procesy exim
. Więcej na temat wyrażeń
regularnych możesz dowiedzieć się ze strony podręcznika grep(1)
wprowadzając man grep.
ps axf | pager
Wyświetla informacje o wszystkich działającyh procesach używając na wyjściu stylu tworzenia grafiki przy pomocy znaków ASCII.
kill 1234
Ubija proces identifikowany poprzez jego numer ID: 1234. Przeczytaj Usuwanie procesów, Rozdział 8.5.1.
grep -e "pattern" *.html
Wyszukuje i wyświetla wszystkie wystąpienia "wzorca" w plikach .html znajdujących się w bieżącym katalogu.
gzip foo
Kompresuje plik foo
i tworzy
foo.gz
używając kodowania Lempel-Ziv (LZ77).
gunzip foo.gz
Dekompresuje plik foo.gz
i tworzy
foo
.
bzip2 foo
Kompresuje plik 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
)
bunzip2 foo.bz2
Dekompresuje plik foo.bz2
i tworzy
foo
.
tar -xvvf foo.tar
Wydobywa pliki z archiwum foo.tar
.
tar -xvvzf foo.tar.gz
Wydobywa pliki z archiwum foo.tar.gz
tar -xvvf --bzip2 foo.tar.bz2
Wydobywa pliki z archiwum foo.tar.bz2
. [22]
tar -cvvf foo.tar bar/
Archiwizuje zawartość folderu bar/
w pliku archiwum
foo.tar
.
tar -cvvzf foo.tar.gz bar/
Archiwizuje zawartość folderu bar/
w skompresowanym
archiwum foo.tar.gz
.
tar -cvvf --bzip2 foo.tar.bz2 bar/
Archiwizuje zawartość folderu bar/
w archiwum
foo.tar.bz2
. [23]
zcat README.gz | pager
Wyświetla zawartość skompresowanego pliku README.gz
używając
domyślnego pager'a.
zcat README.gz > foo
Tworzy plik o zdekompresowanej foo
zawartości pliku
README.gz
.
zcat README.gz >> foo
Dołącza zdekompresowaną zawartość pliku README.gz
na koniec pliku
foo
. (Jeśli ten plik nie istnieje, zostanie najpierw utworzony)
find . -name pattern
Wyszukuje nazwy plików pasujące do wzorca. (wolniejsz)
locate -d . pattern
Wyszukuje nazwy plików pasujące do wzorca powłoki. (szybsze, przy użyciu regularnie aktualizowanej bazy plików)
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ą:
przypisań zmiennych (opcjonalne)
nazwy polecenia
argumentów (opcjonalne)
przekierowań (opcjonalne: > , >> , < , << , etc.)
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.
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:
nieustawiona (domyślne zachowanie systemu, tak jak i w przypadku C) dla pierwszego polecenia
ustawiona na fr_FR (locale francuskie) dla drugiego polecenia
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.
*
Zastępuje grupę złożoną z zera lub więcej znaków.
Wyjątkiem od tej reguły są pliki zaczynające się od ".".
?
Zastępuje dokładnie jeden znak.
[...]
Zastępuje dokładnie jeden znak z grupy znajdującej się w nawiasach kwadratowych.
[a-z]
Zastępuje dokładnie jeden znak z grupy znaków od a do z.
[^...]
Zastępuje dokładnie jeden znak inny niż te znajdujące się w nawiasach (za wyjątkiem "^").
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.
zwracana wartość = 0 jeśli zakończyło się pomyślnie.
zwracana wartość = różna od zera, jeśli polecenie zakończyło się z błędem.
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.
Bez użycia wyrażenia regularnego :
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.
Z użyciem podstawowych wyrażeń regularnych (BRE):
grep
dopasowuje tekst do wzorca.
ed
jest prymitywnym edytorem linii poleceń.
sed
jest edytorem strumieni.
vi
jest edytorem ekranowym.
emacs
jest edytorem ekranowym.
Z użyciem rozszerzonych wyrażeń regularnych (ERE):
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:
c
Dopasowuje nie-metaznaki "c".
\c
Dopasowuje znaki liter "c".
.
Zastępuje każdy znak włączając w to znak nowej linii.
^
Zastępuje "początek" ciągu znaków.
$
Zastępuje "koniec" ciągu znaków.
\<
Zastępuje "początek" słowa.
\>
Zastępuje "koniec" słowa.
[abc...]
Ta lista zastępuje każdy ze znaków "abc...".
[^abc...]
Ta zanegowana lista zastępuje każdy ze znaków inny niż "abc...".
r*
Zastępuje zero lub więcej wyrażeń regularnych identyfikowanych przez "r".
r+
Zastępuje jeden lub więcej wyrażeń regularnych identyfikowanych przez "r".
r?
Zastępuje zero lub jedno wyrażenie regularne identyfikowane przez "r".
r1|r2
Zastępuje jedno wyrażenie regularne identyfikowane przez "r1" lub "r2".
(r1|r2)
Zastępuje jedno z wyrażeń regularnych identyfikowaych przez "r1" lub "r2" i traktuje je jako wyrażenie regularne objęte nawiasami kwadratowymi.
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:
&
Reprezentuje dopasowanie wyrażenia regularnego. (w programie
emacs
używaj \&)
\n
Reprezentuje n-te dopasowanie wyrażenia regularnego (ujętego w nawias).
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:
Wielkość liter w nazwach plików ma znaczenie. To znaczy, że
MOJPLIK
oraz MOjPlik
są całkiem
innymi plikami.
Katalog główny zwany jest krótko /
. Nie myl jednak katalogu
głównego (root) z użytkownikiem "root" . Zobacz Logowanie do powłoki jako root, Rozdział 4.1.1.
Każdy katalog ma swoją nazwę, która może zawierać wszystkie litery i i symbole
za wyjątkiem /
. [28] Katalog główny (root) jest wyjątkiem; jego nazwa to
/
(wymawiane "slesz" lub "katalog główny") i
nie może ona zostać zmieniona.
Każdy plik lub katalog oznaczony jest poprzez w pełni określającą nazwę
pliku, absolutną nazwę pliku lub
ścieżkę, podając sekwencję katalogów, przez które należy
przejść by dotrzeć do pliku. Te trzy terminy są synonimami. Wszystkie
absolutne nazwy plików rozpoczynają się od katalogu /
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]
Katalog główny (root) ma kilka gałęzi, takich jak /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.
Nie ma tutaj katalogu, który odnosiłby się do fizycznego urządzenia takiego jak dysk twardy. Jest to zasadnicza różnica w kontekście takich systemó jak CP/M, DOS oraz Windows, gdzie wszystkie ścieżki rozpoczynają się od nazwy urządzenia; na przykład C:\. Patrz Koncepcja systemu plików w systemie Debian, Rozdział 4.5.2.
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:
/
Znak /
reprezentuje katalog główny (root).
/etc
To miejsce gdzie przechowywane są pliki konfiguracyjne systemu.
/var/log
To miejsce przechowywania logów systemowych.
/home
To katalog zawierający katalogi domowe zwykłych użytkowników.
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ą:
Właściciel pliku (u),
inni użytkownicy w grupie, do której należy plik (g), oraz dla
wszystkich pozostałych użytkowników (o).
Dla pliku każde prawo pozwala odpowiednio na:
odczyt (r): odczyt zawartości pliku,
zapis (w): modyfikację zawartości pliku, oraz
wykonanie (x): uruchomienie pliku jako polecenia.
Dla katalogu każde prawo pozwala odpowiednio na:
odczyt (r): wyświetlenie zawartości katalogu,
zapis (w): dodawanie i usuwanie plików w katalogu, oraz
wykonanie (x): dostęp do plików w katalogu.
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:
Typ pliku (pierwsza litera)
-: zwykły plik
d: katalog
l: dowiązanie symboliczne (symlink)
c: urządzenie znakowe
b: urządzenie blokowe
p: nazwany potok
s: gniazdo
prawa dostępu do pliku (kolejnych dziewięć znaków, po trzy kolejno dla: właściciela, grupy, oraz pozostałych)
liczba dowiązań (hardlink) do pliku
nazwa użytkownika będącego właścicielem pliku
nazwa grupy, do której należy plik
rozmiar pliku w znakach (bajtach)
data i czas modyfikacji pliku (mtime)
nazwa pliku.
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ń:
ustawia ID użytkownika (s lub S zamiast x użytkownika),
ustawia ID grupy (s lub S zamiast x grupy), oraz
bit lepkości (sticky bit) (t lub T zamiast x pozostałych).
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:
1-sza cyfra opcjonalna: suma opcji ustawione ID użytkownika (=4), ustawione ID grupy (=2), oraz bit lepkości (=1)
2-ga cyfra: suma praw odczytu (=4), zapisu (=2), oraz wykonywania (=1) dla użytkownika
3-cia cyfra: to samo ale dla grupy
4-ta cyfra: to samo ale dla innych
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:
mtime: czas modyfikacji (ls -l),
ctime: czas zmiany statusu (ls -lc), oraz
atime: czas ostatniego dostępu (ls -lu).
Zauważ, że ctime nie jest czasem utworzenia pliku.
Nadpisanie pliku zmieni wszystkie mtime, ctime i atime pliku.
Zmiana praw lub właściciela pliku zmieni ctime oraz atime pliku.
Odczyt pliku zmieni jego atime.
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.
dowiązanie (hardlink) jest to inna nazwa dla istniejącego pliku (ln foo bar),
dowiązanie symboliczne lub „symlink” jest specjalnym plikiem, który wskazuje na inny poprzez nazwę (ln -s foo 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ń:
urządzenie znakowe
Dostęp do takiego urządzenia odbywa się znak po znaku, to znaczy, że najmniejsza porcja danych jaka może być zapisana lub odczytana z urządzenia to jeden znak (bajt).
urządzenie blokowe
Dostęp do takiego urządzenia następuje poprzez zczytania lub zapisanie większej ilości danych, zwanych blokami, które zawierają pewną ilość znaków. Dobrym przykładem jest tutaj Twój dysk twardy.
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.
Aby uruchomić powłokę, wybierz z menu program Xterm:
"XShells" --> "XTerm".
Aby przeglądać strony internetowe w trybie graficznym, wybierz Mozillę:
"Apps" --> "Net" --> "Mozilla Navigator".
Aby przeglądać pliki PDF w trybie graficznym, wybierz Xpdf:
"Apps" --> "Viewers" --> "Xpdf".
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.
Ctrl-Alt-F1 do F6: Przełącza na inne pseudo-terminale (podobnie do systemów X window, DOSEMU, itp.)
Alt-F7: Przełącza z powrotem do systemu X Window
Ctrl-Alt-minus: Zmienia rozdzielczość w systemie X Window (minus odnosi się do klawisza na klawiaturze numerycznej)
Ctrl-Alt-plus: Zmienia rozdzielczość w przeciwną stronę w systemie X Window (plus odnosi sie do klawisza na klawiaturze numerycznej)
Ctrl-Alt-Backspace: Kończy działanie X Serwera
Alt-X, Alt-C, Alt-V: Standardowe kombinacje klawiszy: wycinanie, kopiowanie oraz wklejanie działające tak jak w systemach Windows/Mac. W niektórych programach powyższe kombinacje z klawiszem Alt zostały zastąpione odpowiednimi kombinacjami z klawiszem Ctrl, na przykłąd w Netscape Composer..
Na tym etapie wiedzy, polecam Ci zaznajomienie się z kluczowymi książkowymi
przewodnikami ze strony The
Linux Documentation Project: Guides
:
"The Linux System Administrators' Guide",
Opisuje wszelkie aspekty dotyczące utrzymania systemu na chodzie, włączając w to konta użytkownikóa, kopie zapasowe oraz konfigurowanie systemu.
pakiet: sysadmin-guide
"The Linux Network Administrator's Guide, Second Edition",
Jest to podręcznik administracji siecią w środowisku Linux.
pakiet: (not available)
plik: (not applicable)
"Linux: Rute User's Tutorial and Exposition"
A nice online and hardcover book covering GNU/Linux system administration.
By Paul Sheer
Published by Prentice Hall
Package: rutebook
(from non-free)
File: /usr/share/doc/rutebook/
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, czwartek, 18 styczeń 2007, 11:53:26 UTCosamu#at#debian.org
fenio@o2.pl