Polecenie man: użycie i opcje, numery sekcji i wyszukiwanie przez man -k

Środowisko testoweRodzina RHELAlmaLinux 9.8man-db 2.9konto rootDebian 12 · man-db 2.11 zwykłe konto
Polecenia powłokiman, whatis, aproposLokalizacja/usr/bin/man

Żeby sprawdzić na serwerze Linux, jak używać polecenia albo pliku konfiguracyjnego, otwiera się stronę podręcznika poleceniem man, a gdy nazwa nie jest znana, przeszukuje się krótkie opisy przez man -k. Przy szukaniu strony passwd na serwerach AlmaLinux 9 i Debian 12 okazało się, że Debian 12 ma zarówno stronę polecenia w sekcji 1, jak i stronę formatu pliku w sekcji 5, a AlmaLinux 9 nie ma strony w sekcji 5.

Poniższe wyniki pochodzą z serwera AlmaLinux 9.8 z konta root i z serwera Debian 12 ze zwykłego konta. Nazwa hosta i adres połączenia w symulatorze to wartości przykładowe.

1️⃣ Podstawowe użycie polecenia man

  • ↪️ Otwieranie strony, poruszanie się po ekranie, brak strony

Po wpisaniu nazwy polecenia za man otwiera się strona podręcznika tego polecenia. man przekazuje stronę do programu stronicującego (pagera), który wyświetla ją ekran po ekranie, dlatego po uruchomieniu nie wraca od razu do znaku zachęty. Pager ustawia zmienna środowiskowa MANPAGER albo PAGER, a gdy obie są puste, używany jest less.

Gdy wynik trafia do potoku, pojawia się sam tekst, bez pagera. Pierwsze 12 wierszy [man ls], przechwycone przez head, miało w pierwszym wierszu LS(1), a dalej kolejno sekcje NAME, SYNOPSIS i DESCRIPTION.

man ls | head -n 12
LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci-
       fied.

Liczba 1 w nawiasie w LS(1) w pierwszym wierszu to numer sekcji, w której znajduje się ta strona.

Na stronie [Space] pokazuje następny ekran, a [/słowo] i Enter szuka słowa. [n] przechodzi do następnego miejsca, w którym występuje to samo słowo, a [q] kończy man.

Po wpisaniu nazwy, która nie istnieje, pojawia się błąd [No manual entry for], a kod wyjścia wynosił 16.

man no-such-cmd9
No manual entry for no-such-cmd9
echo $?
16

Sekcja EXIT STATUS strony man opisuje 16 jako wartość dla sytuacji, gdy nie znaleziono co najmniej jednej ze stron, plików albo słów. Błąd użycia to 1, więc w skrypcie można obsłużyć oba przypadki osobno.

2️⃣ Numery sekcji man

  • ↪️ 1 polecenia, 5 pliki konfiguracyjne, 8 polecenia administracyjne

Gdy strony o tej samej nazwie są w kilku sekcjach, man przeszukuje sekcje w ustalonej kolejności i otwiera tylko pierwszą znalezioną stronę. Sekcje mają numery od 1 do 9, a przy pracy na serwerze najczęściej otwiera się sekcję 1 z poleceniami, sekcję 5 z formatami plików i sekcję 8 z poleceniami administracyjnymi.

SekcjaZawarte stronyPrzykład z serwera AlmaLinux 9.8
1Programy wykonywalne i polecenia powłokils, passwd, crontab, man
2Wywołania systemowe (funkcje udostępniane przez jądro)
3Funkcje biblioteczne
4Pliki specjalne (zwykle w /dev)
5Formaty plików i konwencje, np. /etc/passwdcrontab
6Gry
7Różne (pakiety makr i konwencje)
8Polecenia administracji systemem, zwykle dla rootauseradd, mandb
9Procedury jądra (niestandardowe)

crontab ma strony w dwóch sekcjach, bo polecenie i format pliku konfiguracyjnego noszą tę samą nazwę. Sprawdzenie przez [man -f crontab] pokazało razem wiersze sekcji 1 i 5.

man -f crontab
crontab (1)          - maintains crontab files for individual users
crontab (5)          - files used to schedule the execution of programs

Uruchomienie [man crontab] bez numeru sekcji otwiera stronę polecenia crontab z sekcji 1. Żeby zobaczyć format pliku z zaplanowanymi zadaniami, przed nazwą wpisuje się 5.

man 5 crontab | head -n 4
CRONTAB(5)                       File Formats                       CRONTAB(5)

NAME
       crontab - files used to schedule the execution of programs

Pierwszy wiersz zmienił się na CRONTAB(5) i File Formats, a w wierszu NAME zamiast opisu polecenia pojawił się opis pliku z zaplanowanymi zadaniami.

Jeśli we wskazanej sekcji nie ma strony o tej nazwie, pojawia się błąd. Na serwerze AlmaLinux 9.8 uruchomienie [man 5 passwd], żeby zobaczyć format pliku /etc/passwd, dało błąd informujący, że w sekcji 5 nie ma strony.

man 5 passwd
No manual entry for passwd in section 5

Na serwerze Debian 12 [man -f passwd] pokazało też wiersz passwd z sekcji 5. To, w których sekcjach jest strona, zależy od podręczników zainstalowanych na serwerze, dlatego przed dopisaniem numeru sekcji warto najpierw sprawdzić przez [man -f].

man -f passwd
passwd (1)           - change user password
passwd (1ssl)        - OpenSSL application commands
passwd (5)           - the password file

Sekcja 8 zawiera polecenia administracyjne uruchamiane głównie z konta root, takie jak useradd, które tworzy konta.

man -f useradd
useradd (8)          - create a new user or update default new user information

3️⃣ Opcje polecenia man i wyszukiwanie przez -k oraz -f

  • ↪️ whatis, apropos i położenie plików przez man -w

[man -f] wypisuje jednowierszowy opis stron o tej samej nazwie i działa tak samo jak whatis. Na serwerze AlmaLinux 9.8 [man -f passwd] i [whatis passwd] wypisały te same dwa wiersze.

man -f passwd
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

Wiersz 1ossl to strona polecenia OpenSSL, które też nosi nazwę passwd.

Gdy nazwa nie jest znana, [man -k] przeszukuje nazwy stron i krótkie opisy. Działa tak samo jak apropos, a słowo jest odczytywane jako wyrażenie regularne.

man -k '^passwd'
passwd (1)           - update user's authentication tokens
passwd (1ossl)       - OpenSSL application commands

^ oznacza początek wiersza, więc pojawiły się tylko wiersze zaczynające się od passwd. Szukać można też po słowie z opisu: [man -k 'directory contents'] znalazło razem z ls strony dir i vdir.

man -k 'directory contents'
dir (1)              - list directory contents
ls (1)               - list directory contents
vdir (1)             - list directory contents

[man -k] przeszukuje tylko krótkie opisy z sekcji NAME, więc nie znajdzie strony po nazwie opcji ani po słowie z treści. [man -K], które szuka także w treści, czyta wszystkie strony po kolei i trwa to długo.

Gdy szukanego słowa nie ma, pojawia się [nothing appropriate], a kod wyjścia wynosił 16.

man -k no-such-word9
no-such-word9: nothing appropriate.
echo $?
16

[man -w] wypisuje tylko położenie pliku źródłowego, bez otwierania strony.

man -w ls
/usr/share/man/man1/ls.1.gz
man -w 5 crontab
/usr/share/man/man5/crontab.5.gz

Oba pliki znajdowały się w folderach man1 i man5 w /usr/share/man, a liczba w nazwie folderu zgadzała się z numerem sekcji. Plik strony 1ossl, znaleziony przez [man -w 1ossl passwd], też był w folderze man1, tym samym co sekcja 1.

Opcje zebrano w dwóch kartach poniżej.

OpcjaKopiujOpis
-f, --whatisWypisuje jednowierszowy opis stron o tej samej nazwie. Działa jak whatis
-k, --aproposPrzeszukuje nazwy stron i krótkie opisy. Działa jak apropos
-w, --where, --path, --locationWypisuje tylko położenie pliku źródłowego, bez otwierania strony
-a, --allWypisuje po kolei wszystkie strony o pasującej nazwie
OpcjaKopiujOpis
-K, --global-aproposSzuka słowa w treści wszystkich stron. Trwa długo
-S, -s, --sectionslistaOkreśla sekcje do przeszukania i ich kolejność jako listę rozdzieloną przecinkami lub dwukropkami
-P, --pagerpagerOkreśla pager, który wyświetla stronę. Domyślnie less
-M, --manpathścieżkaOkreśla ścieżkę podręczników, w której szukane są strony
-L, --localelocaleOkreśla locale używane przy tym uruchomieniu
-l, --local-fileWyświetla wskazany plik jako stronę, bez przeszukiwania podręczników systemowych
-u, --updateAktualizuje pamięć podręczną indeksu zainstalowanych stron
-V, --versionWypisuje informacje o wersji

🔲 Symulator polecenia man

W symulatorze poniżej można otworzyć stronę przez [man ls] i przechodzić po ekranach chipami [Space], [/list], [n] i [q]. Na tym samym serwerze wirtualnym można dopisać numer sekcji, jak w [man 5 crontab], albo wpisać [man -f], [man -k] i [man -w].

Symulator polecenia manman-db 2.9 · konto root
[root@server work]#
Działa tylko w przeglądarce. Na ekranie strony naciska się chipy Space, /słowo, n i q, a klawisze ↑↓ przywołują wcześniej wpisane polecenia.

4️⃣ Budowa strony man

  • ↪️ Czytanie NAME, SYNOPSIS, DESCRIPTION i OPTIONS

Strona man dzieli się na sekcje z nagłówkami pisanymi wielkimi literami. Po wyciągnięciu samych nagłówków przez grep i porównaniu ich okazało się, że strona ls ma opisy opcji wewnątrz DESCRIPTION, a strona crontab ma osobną sekcję OPTIONS.

man ls | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
AUTHOR
REPORTING BUGS
COPYRIGHT
SEE ALSO
man crontab | grep -E '^[A-Z]+( [A-Z]+)*$'
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHOR

Nazwy sekcji różnią się trochę między stronami, a najczęstsze są podane poniżej.

SekcjaZawartość
NAMENazwa i jednowierszowy opis (wiersz wypisywany przez man -f i man -k)
SYNOPSISSposób zapisu polecenia
DESCRIPTIONOpis działania (strona ls podaje tu także opisy opcji)
OPTIONSJeden akapit na każdą opcję
EXIT STATUSZnaczenie kodów wyjścia
FILESPliki, które polecenie czyta lub zapisuje
SEE ALSOPowiązane strony

Symbole w SYNOPSIS są zgodne z regułami ustalonymi przez stronę man. To, co jest w nawiasach kwadratowych, można pominąć. Opcji rozdzielonych pionową kreską (|) nie można używać razem, a argument z trzema kropkami (...) można podać kilka razy.

SYNOPSIS polecenia ls to ls [OPTION]... [FILE]..., więc zarówno opcje polecenia, jak i argumenty wiersza poleceń, takie jak nazwy plików, można wszystkie pominąć albo podać kilka razy.

[--help] to skrót użycia wypisywany przez sam program, dlatego trafia prosto do terminala, bez pagera. Usage w pierwszym wierszu [ls --help] miało tę samą postać co SYNOPSIS, a cały wynik liczył 121 wierszy, mniej niż 245 wierszy [man ls].

ls --help | head -n 3
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Strona man ma jeszcze sekcje, których nie ma w [--help], takie jak AUTHOR i SEE ALSO. Do szybkiego sprawdzenia jednej opcji wystarczy [--help], a gdy potrzebny jest opis podzielony na sekcje, na przykład format pliku konfiguracyjnego albo kody wyjścia, otwiera się man.

🔢 FAQ & polecane treści

cd to polecenie wbudowane w bash, dlatego [man cd] prowadzi do strony zbierającej wszystkie polecenia wbudowane. Na serwerze AlmaLinux 9.8 [type cd] wypisało [cd is a shell builtin], a [man -w cd] wypisało położenie pliku builtins.1.gz. Użycie pojedynczego polecenia wbudowanego można sprawdzić od razu przez [help cd].

Uruchomienie [man -a nazwa] otwiera po kolei strony o pasującej nazwie. Żeby zobaczyć tylko położenie plików, dopisuje się [-w]. Na serwerze AlmaLinux 9.8 uruchomienie [man -w -a crontab] dało dwa wiersze z plikami crontab w folderach man1 i man5.

Indeks, który przeszukują [man -k] i [man -f], tworzy i aktualizuje mandb. Dlatego strona, której jeszcze nie ma w indeksie, nie pojawia się w wynikach wyszukiwania, a indeks odbudowuje się, uruchamiając [mandb] z konta root.

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 5   +   4   =