Wstęp - Read The … Manual
W pierwszej części z serii “Skrypty powłoki Bash” zajmiemy się najważniejszym zagadnieniem przy pracy z powłoką Bash, jak i samym Linuxem.
Zagadnieniem tym jest system manuali inaczej dokumentacja samej dystrybucji, zainstalowanych programów i wiele więcej. Opowiem trochę o manualach oraz jak z nich korzystać.
Pierwszy kontakt
Komendą powłoki, która służy do wywołania manuala, jest komenda man
.
Manual wywołujemy przy użyciu man <termin>
w przypadku braku sprecyzowania szukanego terminu od razu otrzymamy pytanie, którą “stronę” chcemy obejrzeć.
Przed wyruszeniem w drogę należy … wiedzieć gdzie się idzie
Gdy zaczynamy nową przygodę, chcemy jak najwięcej wiedzieć o naszym celu jak do niego dotrzeć, czemu akurat ten kierunek i tym podobne. W dzisiejszym przypadku naszą przygodą będzie nauka manuala (nudne, żmudne, ale 5 minut dokumentacji oszczędza 8 godz. szukania błędów).
Załóżmy, że nie wiemy zupełnie nic, nikt nam o naszym celu nie chce powiedzieć (o manualu znaczy się :) ) więc musimy wykorzystać niekonwencjonalne metody - poprosić man’a by sam się przedstawił.
Możemy uzyskać informację komendą:
man man
I man z chęcią sam się nam przedstawi.
Ukaż się Siło … w sumie czysta.
MAN(1) Manual pager utils MAN(1)
NAME
man - an interface to the on-line reference manuals
Man otworzy się nam domyślnie w programie less
chyba że ustawimy zmienną PAGER
na inny program.
Na samej górze strony widzimy w prawy i lewym roku nazwę naszego poszukiwanego zapytania oraz numer sekji, w której się ten termin znajduje. Po środku mamy taką ogólną informację jak “zaszufladkowany” jest szukany przez nas termin.
Dalej nasz termin, w tym przypadku komenda man
się przedstawia z imienia oraz skróconej informacji czego on to nie potrafi.
Proszę się nie przejmować słowem on-line. Bez internetu również działa, bo wszelka dostępna dokumentacja jest zapisywana lokalnie na dysku w katalogu
/usr/share/man/
Niżej otrzymujemy swoiste streszczenie na temat tego, jak korzystać z polecenia oraz jakie przełącniki posiada, które zmieniają jego działanie.
SYNOPSIS
man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-i|-I] [--regex|--wildcard]
[--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-justification] [-p string] [-t] [-T[device]]
[-H[browser]] [-X[dpi]] [-Z] [[section] page[.section] ...] ...
man -k [apropos options] regexp ...
man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
man -f [whatis options] page ...
man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager] [-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]]
[-H[browser]] [-X[dpi]] [-Z] file ...
man -w|-W [-C file] [-d] [-D] page ...
man -c [-C file] [-d] [-D] page ...
man [-?V]
Najczęściej używanym przełącznikiem jest -k
, który jest w pewnym sensie aliasem do komendy apropos
, która wyszukuje manuale w poszukiwaniu danego słowa w nazwie lub opisie (sekcja NAME)
mówię “w pewnym sensie” ponieważ, swego czasu, gdy zbierałem materiały do prowadzenia szkolenia, to wyniki komend
man -k
orazapropos
różniły się, dzisiaj już nie pamiętam, jakie były tego okoliczności oraz dlaczego tak się działo, ale gdy sobie przypomnę, to dodam :)
Dla testów wywołajmy komendę man -k
dla terminu, który nas obecnie interesuje.
Np.
man -k bash
i okazuje się, że tych “bash’y” jest więcej niż jeden.
bash (1) - GNU Bourne-Again SHell
bash-builtins (7) - bash built-in commands, see bash(1)
bashbug (1) - report a bug in bash
builtins (7) - bash built-in commands, see bash(1)
rbash (1) - restricted bash, see bash(1)
Jeżeli chcemy poszukać informacji na temat jakiegoś terminu, ale pamiętamy, tylko że zaczyna się na “wa”, możemy “zapytać” w takis sposób
man -k ^wa
, otrzymamy w ten sposób komendy, których nazwa lub opis rozpoczyna się od wa (niezależnie od wielkości)
Powiedzmy, że chcemy się dowiedzieć, czy istnieje manual tylko dla tego jedynego terminu, który nas interesuje.
w takim przypadku użyjemy przełącznika -f
:
man -f bash
I teraz otrzymujemy informację tylko o naszym terminie.
bash (1) - GNU Bourne-Again Shell
Panie adminie, gdzie patrzeć?
w sekcji opisu (ang - DESCRIPTION), możemy zobaczyć pewną listę. Lista ta, to spis sekcji, jakim są przypisane strony manuala. Każda sekcja ma informacje na inny temat:
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
Może się zdarzyć, że jeden termin będzie w dwóch sekcjach. Wtedy komenda ‘man term’ otworzy stronę z sekcji o niższej numeracji.
Weźmy dla przykładu termin hostname.
Komenda man -f hostname
zwraca nam dwa wyniki:
hostname (1) - show or set the system's host name
hostname (5) - Local hostname configuration file
w tym momencie, by otworzyć stronę z sekcji piątej, musimy jawnie określić numer strony, używając ‘man 5 hostname’ lub ‘man hostname.5’
Na dziś to już koniec. Jeśli artykuł był przydatny lub ciekawy, udostępnijcie i polecajcie, a przede wszystkim czekajcie na następną część :)