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 lesschyba ż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 oraz apropos 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ęść :)