Home Dokumentacje Debian Reference (version 1) - Część 4 - Debian - samouczek
22 | 08 | 2019
Debian Reference (version 1) - Część 4 - Debian - samouczek Drukuj


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


Debian Reference (version 1)
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:

  • 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]


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:

  • # : 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.


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:

  • /etc oraz podkatalogi.

  • /var/log oraz podkatalogi.

  • /usr/share/doc oraz podkatalogi.

  • /sbin and /bin


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.)

  • 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


4.2.4 Triki linii poleceń w MC

  • 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


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]

  • 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.


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 :

  • 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

  • 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

  • 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

  • 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

  • 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.


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ą:

  • 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.


    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:

    • 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
    

    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.

    • *

      • 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
    

    4.3.9 Wartość zwracana przez polecenia

    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.


    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.

    • 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.


    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:

    • 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
    

    4.4.2 Wyrażenia zastępujące

    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.


    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:

    • Wielkość liter w nazwach plików ma znaczenie. To znaczy, że MOJPLIK oraz MOjPlikcał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.


    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ą:

    • 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).


    4.5.4 Znaczniki czasu

    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.


    4.5.5 Dowiązania (links)

    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.


    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ń:

    • 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ą.


    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,

    • /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.


    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.

    • 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.


    4.6.3 Skróty klawiszowe w systemie X Window

    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..


    4.7 Dalsza nauka

    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",

    • "The Linux Network Administrator's Guide, Second Edition",

    • "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: 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 (version 1)

    This translation is based on old version of Debian Reference (English, version 1.x), well before Sat, 26 Jan 2008.

    Osamu Aoki osamu#at#debian.org
    Koordynator tłumaczenia: Bartosz Feński aka fEnIo Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć.
    Autorzy, Rozdział A.1


     
    Linki sponsorowane

    W celu realizacji usług i funkcji na witrynach internetowych ZUI "ELPRO" stosujemy pliki cookies. Korzystanie z witryny bez zmiany ustawień dotyczących plików cookies oznacza, że będą one zapisywane w urządzeniu wyświetlającym stronę internetową. Więcej szczegółów w Polityce plików cookies.

    Akceptuję pliki cookies z tej witryny.