Polecenie man: użycie i opcje, numery sekcji i wyszukiwanie przez man -k
Ż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
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 12LS(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-cmd9No manual entry for no-such-cmd9echo $?16Sekcja 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
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.
| Sekcja | Zawarte strony | Przykład z serwera AlmaLinux 9.8 |
|---|---|---|
| 1 | Programy wykonywalne i polecenia powłoki | ls, passwd, crontab, man |
| 2 | Wywołania systemowe (funkcje udostępniane przez jądro) | |
| 3 | Funkcje biblioteczne | |
| 4 | Pliki specjalne (zwykle w /dev) | |
| 5 | Formaty plików i konwencje, np. /etc/passwd | crontab |
| 6 | Gry | |
| 7 | Różne (pakiety makr i konwencje) | |
| 8 | Polecenia administracji systemem, zwykle dla roota | useradd, mandb |
| 9 | Procedury 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 crontabcrontab (1) - maintains crontab files for individual users
crontab (5) - files used to schedule the execution of programsUruchomienie [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 4CRONTAB(5) File Formats CRONTAB(5)
NAME
crontab - files used to schedule the execution of programsPierwszy 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 passwdNo manual entry for passwd in section 5Na 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 passwdpasswd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password fileSekcja 8 zawiera polecenia administracyjne uruchamiane głównie z konta root, takie jak useradd, które tworzy konta.
man -f useradduseradd (8) - create a new user or update default new user information3️⃣ Opcje polecenia man i wyszukiwanie przez -k oraz -f
[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 passwdpasswd (1) - update user's authentication tokens
passwd (1ossl) - OpenSSL application commandsWiersz 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-word9no-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.gzman -w 5 crontab/usr/share/man/man5/crontab.5.gzOba 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.
| Opcja | Kopiuj | Opis |
|---|---|---|
| -f, --whatis | Wypisuje jednowierszowy opis stron o tej samej nazwie. Działa jak whatis | |
| -k, --apropos | Przeszukuje nazwy stron i krótkie opisy. Działa jak apropos | |
| -w, --where, --path, --location | Wypisuje tylko położenie pliku źródłowego, bez otwierania strony | |
| -a, --all | Wypisuje po kolei wszystkie strony o pasującej nazwie |
| Opcja | Kopiuj | Opis |
|---|---|---|
| -K, --global-apropos | Szuka słowa w treści wszystkich stron. Trwa długo | |
| -S, -s, --sectionslista | Określa sekcje do przeszukania i ich kolejność jako listę rozdzieloną przecinkami lub dwukropkami | |
| -P, --pagerpager | Określa pager, który wyświetla stronę. Domyślnie less | |
| -M, --manpathścieżka | Określa ścieżkę podręczników, w której szukane są strony | |
| -L, --localelocale | Określa locale używane przy tym uruchomieniu | |
| -l, --local-file | Wyświetla wskazany plik jako stronę, bez przeszukiwania podręczników systemowych | |
| -u, --update | Aktualizuje pamięć podręczną indeksu zainstalowanych stron | |
| -V, --version | Wypisuje 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].
4️⃣ Budowa strony man
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 ALSOman crontab | grep -E '^[A-Z]+( [A-Z]+)*$'NAME
SYNOPSIS
DESCRIPTION
OPTIONS
CAVEATS
SEE ALSO
FILES
STANDARDS
DIAGNOSTICS
AUTHORNazwy sekcji różnią się trochę między stronami, a najczęstsze są podane poniżej.
| Sekcja | Zawartość |
|---|---|
| NAME | Nazwa i jednowierszowy opis (wiersz wypisywany przez man -f i man -k) |
| SYNOPSIS | Sposób zapisu polecenia |
| DESCRIPTION | Opis działania (strona ls podaje tu także opisy opcji) |
| OPTIONS | Jeden akapit na każdą opcję |
| EXIT STATUS | Znaczenie kodów wyjścia |
| FILES | Pliki, które polecenie czyta lub zapisuje |
| SEE ALSO | Powią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 3Usage: 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
Harmonogram zadań
Linux: konfiguracja crontab
Jak za pomocą polecenia crontab zaplanować zadania serwera tak, żeby uruchamiały się o ustalonych porach.
Ustalanie położenia
Linux which, whereis, locate: 3 polecenia do znajdowania położenia (ścieżki) pliku
Polecenia, które pozwalają znaleźć, w jakiej ścieżce są plik wykonywalny i plik podręcznika polecenia.
Przekazywanie wyniku
Przekierowanie w Linuksie (Redirection)
Przepływ standardowego wejścia i standardowego wyjścia, który przekazuje wynik polecenia do pliku albo do innego polecenia.
ℹ️ 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.