Czytanie stron man
1.
Wstęp
Program man
Każdy użytkownik Linuksa korzystał z polecenia man. Na pierwszy rzut oka
jego obsługa wydaje się prosta. Program ten posiada jednak kilka ciekawszych
funkcji niż tylko proste przewijanie strony. Ten dokument ma na celu
zaprezentować jego pełne możliwości.
Podział stron man
Strony man znajdują się głównie w katalogu /usr/share/man. Tak
długo, jak długo strona manuala będzie znajdowała się w katalogach wymienionych
w zmiennej środowiskowej MANPATH, man będzie w stanie ją odczytać. W
Gentoo zmienną MANPATH konfiguruje się w
/etc/env.d. Wewnątrz tego katalogu znajdują się katalogi o nazwach
manX, gdzie X to numer sekcji. Na przykład standardowy podział stron man
wygląda w ten sposób:
Listing 1.1: Standardowa struktura man |
$ ls /usr/share/man | grep man
man0p
man1
man1p
man2
man3
man3p
man4
man5
man6
man7
man8
man9
mann
|
Powyższa numeracja sekcji wygląda dosyć standardowo. Należy zauważyć, że
znajdują się tam katalogi mann oraz man#p. Poniższa
tabela opisuje katalogi stron man wraz z ich zawartością:
| Nazwa katalogu |
Opis |
| man0p |
p oznacza tu POSIX, tak jak w innych katalogach, które mają "p" w
nazwach. Strony manuali w tym katalogu opisują funkcje różnych plików
nagłówkowych POSIX.
|
| man1 |
Ta sekcja jest dla standardowych poleceń. Większość programów umieszcza
swoje manuale tutaj, więc jest ona największa.
|
| man1p |
Ta sekcja opisuje wersję POSIX poleceń opisanych w 1p. Ponieważ opisuje
tylko podstawowe polecenia, jest o wiele mniejsza niż man1.
|
| man2 |
Ta sekcja opisuje systemowe sygnały jądra Linux |
| man3 |
Ta sekcja opisuje funkcje standardowej biblioteki C |
| man4 |
Ta sekcja opisuje specjalne urządzenia. Urządzenia te są głównie kernelowe,
ale Xorg-X11 również ma tu swoje wpisy.
|
| man5 |
Ta sekcja opisuje zawartość ważnych plików, których używają programy. Są tu
np. części man portage dla opisu struktury plików portage
oraz man 5 make.conf z opisem tworzenia make.conf.
|
| man6 |
Ta sekcja prezentuje gry i inne specjalne gadżety |
| man7 |
Ta sekcja opisuje standardy, takie jak zestawy znaków, komunikaty SQL,
normy ISO i wyrażenia regularne.
|
| man8 |
Ta sekcja opisuje komendy administracyjne (te uruchamiane z konta roota)
|
| man9 |
Niezbyt duży katalog zawierający dokumentację dla różnych części jądra.
|
| mann |
Ta sekcja jest używana głównie przez Tcl/Tk. Litera n oznacza
"nowy".
|
Nie jest to dokładna lista. Opisuje jedynie te strony man, którymi może być
zainteresowana większość ludzi. Czasem można sprawdzić za co odpowiada sekcja,
patrząc tylko na powyższą tabelę. W następnym rozdziale przyjrzymy się używaniu
programu man.
2.
Praca z układem man
Przeglądanie układu man
Teraz, kiedy rozumiemy już układ stron man, możemy zacząć przyglądać się
poleceniom. Czasami będzie trzeba dokładniej określić, którą stronę manuala
potrzebujemy. Pierwszym sposobem jest adresowanie przy pomocy sekcji. Aby
znaleźć opis sekcji, można użyć man sekcja intro, na przykład:
Listing 2.1: Używanie man intro do opisywania sekcji |
$ man 3 intro
INTRO(3) Linux Programmer's Manual INTRO(3)
NAME
intro - Introduction to library functions
DESCRIPTION
This chapter describes all library functions excluding the library
functions described in chapter 2, which implement system calls.
There are various function groups which can be identified by a
letter which is appended to the chapter number:
....
|
Niestety, nie zawsze to działa. Na szczęście jest inny sposób wyszukiwania
poleceń, które mogą zwrócić różne rezultaty (jak wywołanie biblioteki i
polecenie systemowe, posiadające taką samą nazwę). Aby to zrobić, dodamy
parametr -K do man:
Listing 2.2: Używanie man -K do wyszukiwania za pomocą ciągu |
$ man -K sleep
/usr/share/man/man0p/time.h.0p.gz? [ynq] n
/usr/share/man/man0p/unistd.h.0p.gz? [ynq] n
/usr/share/man/man2/alarm.2.gz? [ynq] n
/usr/share/man/man2/pause.2.gz? [ynq] n
/usr/share/man/man2/futex.2.gz? [ynq] n
/usr/share/man/man2/nanosleep.2.gz? [ynq] y
/usr/share/man/man2/semop.2.gz? [ynq] q
|
Czasami wynik może być o wiele większy. W takim wypadku dobrym wyjściem jest
podanie większej ilości słów kluczowych. Wiemy już jak znaleźć manual, który
nas interesuje. W następnym dziale zajmiemy się przeglądaniem manuali.
Przeglądanie manuali
Przeglądać manuale można na dwa sposoby, pierwszy z nich to man [nazwa
strony manuala]. Drugim sposobem jest man [sekcja] [nazwa strony
manuala]. Weźmy jako przykład bc. Możemy zobaczyć pierwszą stronę
manuala, która pokazuje się dla bc (która jest w sekcji 1, ponieważ jest
to najniższa sekcja, która zawiera man dla bc):
Listing 2.3: Przeglądanie domyślnej strony man |
$ man bc
bc(1) bc(1)
NAME
bc - An arbitrary precision calculator language
...
|
A co jeśli chcemy wersję POSIX? Wtedy możemy użyć drugiego sposobu:
Listing 2.4: Przeglądanie określonej strony man ze względu na sekcję |
$ man 1p bc
BC(P) POSIX Programmer's Manual BC(P)
NAME
bc - arbitrary-precision arithmetic language
...
|
I manual zostaje wyświetlony. Teraz kiedy już go widzimy nadszedł czas żeby z
nim popracować. W następnej sekcji przyjrzymy się nawigacji i wyszukiwaniu.
Nawigacja i szukanie w stronach man
Nawigacja jest dość prosta. Aby poruszać się w górę i w dół linia po linii,
należy korzystać z klawiszy strzałek "góra" i "dół". Aby przeglądać strona po
stronie, należy używać klawiszy "Page Up" oraz "Page Down". Instrukcje
nawigacji przyjmują, że zmienna środowiskowa PAGER jest ustawiona tak,
by używała standardowego programu stronicującego, czyli less. Less
posiada także kilka innych poleceń do nawigacji, ale klawisze strzałek
przeważnie wystarczają.
Listing 2.5: Dodatkowe klawisze nawigacji dla less |
e ^E j ^N CR * Przewiń o jedną linię (lub o N linii).
y ^Y k ^K ^P * Cofnij o jedną linię (lub o N linii).
f ^F ^V SPACE * Przewiń o jeden ekran (lub o N linii).
b ^B ESC-v * Cofnij o jeden ekran (lub o N linii).
z * Przewiń o jeden ekran (i ustaw ekran na N).
w * Cofnij o jeden ekran (i ustaw ekran na N).
ESC-SPACE * Przewiń o jeden ekran, ale nie zatrzymuj się na końcu pliku.
d ^D * Przewiń o pół okna (i ustaw pół okna na N).
u ^U * Cofnij o pół okna (i ustaw pół okna na N).
ESC-) RightArrow * W lewo o pół szerokości ekranu (lub o N pozycji).
ESC-( LeftArrow * W prawo o pół szerokości ekranu (lub o N pozycji).
F Przewijaj ciągle; jak "tail -f".
|
Przeszukiwanie jest bardziej interesujące. Dwoma podstawowymi wyszukiwarkami są
/zapytanie oraz ?zapytanie. Pierwsza wersja przeszukuje do
przodu, a druga wstecz. zapytanie to wyrażenie regularne. Więcej o
wyrażeniach regularnych można poczytać w man 7 regex. Weźmy na przykład
wyszukiwanie opcji -D dla emerge. Po pierwsze, wyświetlmy manuala
emerge:
Listing 2.6: Wyświetlanie manuala emerge |
$ man emerge
|
Kiedy już manual się wyświetli, naciskamy klawisz /, który spowoduje
pojawienie się znaku zachęty, a następnie wpisujemy szukane wyrażenie:
Listing 2.7: Wyszukiwanie wprzód |
gracefully handles updating installed packages to newer releases as well.
EBUILDS, TBZ2S, CLASSES AND DEPENDENCIES
/\-D
|
Uwaga:
Znak \ jest znakiem ucieczki dla -, który bez niego byłby błędnie
zinterpretowany jako część wyrażenia regularnego.
|
To przeszuka manuala i podświetli wyszukiwane informacje:
Listing 2.8: Wyniki wyszukiwania do przodu |
--deep (-D)
Ta flaga kiedy jest używana w połączeniu z --update wymusza na emerge
rozpatrywanie wszystkich zależności drzewa pakietów, łącznie z
bezpośrednimi zależnościami pakietów. Na przykład, te uaktualnienia w
bibliotekach, które nie są bezpośrednio wyświetlone jako zależności
pakietu.
|
Jeśli skasujemy przez przypadek wzorzec wyszukiwania, a chcemy kontynuować
przeszukiwanie, wystarczy ponownie nacisnąć klawisz / i enter. To
spowoduje wyszukanie ostatniego użytego wzorca. Czasem strona man najpierw
tylko wspomina o jakiejś opcji, a jej opis znajduje się w dalszej części mana.
Weźmy stronę man 5 portage. Wypisuje używane pliki, a następnie wyjaśnia
ich użycie. Wyszukiwanie do przodu kilka razy zwróci wyniki, ale jest
łatwiejszy sposób, aby się z tym uporać. Jest to druga opcja wyszukiwania,
wyszukiwanie wstecz. Użyjmy jej by znaleźć opis package.unmask.
Najpierw wyświetlmy man 5 portage:
Listing 2.9: Wyświetlanie man 5 portage |
$ man 5 portage
|
A teraz wciskamy SHIFT+g, co przeniesie nas na koniec strony.
Listing 2.10: Koniec manuala po wciśnięciu SHIFT+g |
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
lines 418-442/442 (END)
|
Teraz pójdźmy dalej i wpiszmy zapytanie do wyszukiwania przy pomocy opcji
?zapytanie. Najpierw należy nacisnąć klawisz ?, aby przenieść się
do znaku zachęty, a następnie wpisać package.unmask, czyli nasze
zapytanie:
Listing 2.11: Określanie zapytania |
SEE ALSO
emerge(1), ebuild(1), ebuild(5), make.conf(5)
Portage 2.0.51 Jan 2004 PORTAGE(5)
?package.unmask
|
Następnie należy wcisnąć enter, aby otrzymać wynik:
Listing 2.12: Rezulatat wyszukiwania |
package.unmask
Just like package.mask above, except here you list packages you want to unmask.
Useful for overriding the global package.mask file (see below). Note that
this does not override packages that are masked via KEYWORDS.
...
|
Podobnie jak w przypadku znaku /, użycie ? bez podania wzorca
spowoduje wyszukanie ostatniego zapytania.
Podsumowanie
To koniec tekstu o przeglądaniu stron man. Mamy nadzieję, że pozwoli on
poznać nawigację po stronach manuali i dostarczy kilku wskazówek bardziej
doświadczonym użytkownikom. Ci którzy preferują alternatywne metody
przeglądania manuali mogą zajrzeć jeszcze tutaj:
- app-text/man2html - program do konwersji manuali do html
- app-text/tkman - przeglądarka manuali oparta na tk
Oprócz tego domyślna przeglądarka internetowa dla KDE, Konqueror
może wyświetlać manuale używając składni man: w pasku adresu.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|