man — dokumentacija ugrađena u sistem

Ovo je poslednja lekcija uvodne serije i verovatno najvažnija. Sve ostalo su komande koje ćeš zaboraviti pa ponovo tražiti. man je alat kojim ih nalaziš sam — bez guglanja, bez interneta, na svakom Linux sistemu.

Na serveru u proizvodnji često nemaš pregledač, ponekad ni izlaz na internet. Dokumentacija je tu, instalirana zajedno sa sistemom.

Osnovna upotreba

$ man ls

Otvara se puno uputstvo za komandu. Izlazi se sa q.

Stranica je uvek podeljena po istim naslovima:

OdeljakŠta sadrži
NAMEime i jedan red opisa
SYNOPSISkako se komanda piše — najvažniji deo
DESCRIPTIONdetaljno objašnjenje
OPTIONSspisak svih opcija
EXAMPLESprimeri, kad ih ima
EXIT STATUSšta komanda vraća kao izlazni kod
FILESkonfiguracioni fajlovi koje koristi
SEE ALSOsrodne komande

Kad ti se žuri, idi pravo na EXAMPLES i SEE ALSO. Prvi ti da gotov obrazac, drugi otkrije alat koji možda bolje rešava tvoj problem.

Kretanje po stranici

Man stranicu prikazuje less, pa rade sve njegove prečice:

TasterRadnja
Spaceekran napred
bekran nazad
/ red po red
g / Gna početak / na kraj
/pojampretraga unapred
?pojampretraga unazad
n / Nsledeće / prethodno pojavljivanje
qizlaz

Ovo je jedina stvar koju stvarno treba usvojiti

Man stranica komande find ima preko hiljadu redova. Skrolovanje kroz nju je gubljenje vremena. Umesto toga — traži.

Recimo da te zanima kako ls sortira po veličini:

$ man ls
/sort
n

Ili konkretna opcija. Pošto se opcije u tekstu pojavljuju uvučene, pretraga sa razmakom ispred ti daje tačan pogodak umesto svakog spominjanja u tekstu:

/ -S

Razlika između čoveka koji „ne razume man stranice" i onoga koji ih koristi svodi se uglavnom na to da li zna za kosu crtu.

Kako se čita SYNOPSIS

Ovaj deo se najčešće preskače, a nosi najviše informacija. Zapis ima svoja pravila:

SYNOPSIS
       ls [OPTION]... [FILE]...
ZapisZnačenje
[ ]neobavezno
...može se ponoviti više puta
|jedno ili drugo
bez zagradaobavezno
podebljanokuca se doslovno
iskošenozameni svojom vrednošću

Znači, ls [OPTION]... [FILE]... govori: opcije nisu obavezne, može ih biti više, fajlovi nisu obavezni, može ih biti više.

Uporedi sa:

SYNOPSIS
       cp [OPTION]... SOURCE DEST
       cp [OPTION]... SOURCE... DIRECTORY

Ovde su SOURCE i DEST bez zagrada — obavezni su. Dva reda znače dva različita načina upotrebe: jedan fajl na jedno odredište, ili više fajlova u direktorijum.

Kad naučiš da čitaš ovaj zapis, iz tri reda saznaš ono za šta bi inače pročitao pola stranice.

Sekcije priručnika

Priručnik je podeljen na osam sekcija, jer isto ime ume da označava dve različite stvari:

SekcijaSadržaj
1korisničke komande
2sistemski pozivi kernela
3funkcije biblioteka
4uređaji u /dev
5formati fajlova i konfiguracija
6igre
7razno, konvencije, standardi
8administratorske komande

Broj u zagradi uz ime označava sekciju:

$ whatis passwd
passwd (1)  - change user password
passwd (5)  - password file

Sekcija se navodi ispred imena:

$ man 1 passwd     komanda za promenu lozinke
$ man 5 passwd     objašnjenje fajla /etc/passwd

Bez broja dobijaš prvu koja postoji, a to je obično sekcija 1.

Sekcija 5 je najkorisnija, a najmanje poznata

Ovde je dokumentacija konfiguracionih fajlova — svako polje, svaka vrednost, svaki podrazumevani izbor:

$ man 5 fstab
$ man 5 crontab
$ man 5 sshd_config
$ man 5 hosts
$ man 5 shadow

Kad ti ne bude jasno šta znači neki red u /etc/fstab ili kako se tačno piše crontab, odgovor je ovde, a ne na forumu.

Kad ne znaš ime komande

Ovo je obrnuta pretraga — traži po opisu:

$ apropos "disk space"
df (1)  - report file system disk space usage
du (1)  - estimate file space usage

$ apropos compress
gzip (1)     - compress or expand files
tar (1)      - an archiving utility
zip (1)      - package and compress files

Isto radi i man -k:

$ man -k firewall
$ man -k "user account"

Suženo na jednu sekciju:

$ apropos -s 8 network

Za kratak opis komande koju već znaš po imenu:

$ whatis systemctl
systemctl (1) - Control the systemd system and service manager

Ako apropos ne vraća ništa, baza pretrage nije izgrađena:

# mandb

Više o samoj bazi u lekciji man-db.

man, --help ili info

Tri izvora, tri različite namene:

$ ls --help        kratak podsetnik, staje na ekran
$ man ls           puno uputstvo
$ info ls          detaljan priručnik sa poglavljima

Praktično pravilo: --help kad ti treba samo da se podsetiš opcije, man kad treba da razumeš. info koriste uglavnom GNU alati i tamo je ponekad opširnije nego man.

Kad je --help dugačak, prosledi ga kroz pajp:

$ dnf --help | less
$ tar --help | grep -i extract

Korisne opcije same komande man

$ man -f passwd          isto što i whatis
$ man -k mreza           isto što i apropos
$ man -a passwd          redom prikaži sve sekcije
$ man -w ls              gde se fajl stranice nalazi
$ man man                priručnik o priručniku

Man stranica u tekstualni fajl, kad ti treba van sistema:

$ man ls | col -b > ls.txt

Bez col -b u fajlu ostanu kontrolni znaci za podebljanje.

Kad stranica ne postoji

$ man dnf
No manual entry for dnf

Tri moguća razloga.

Minimalna instalacija je izbacila dokumentaciju

Na serverskim i kontejnerskim instalacijama man stranice se često ne instaliraju, radi uštede prostora. Vrati ih:

# dnf install -y man-pages man-db

Na RHEL porodici dokumentacija se ume preskočiti i pri instalaciji paketa. Proveri u /etc/dnf/dnf.conf da li stoji tsflags=nodocs i ukloni taj red ako ti dokumentacija treba.

Komanda je ugrađena u shell

$ man cd
No manual entry for cd

cd, export, alias i slične nisu zasebni programi nego deo bash-a. Za njih:

$ help cd
$ man bash

Da li je nešto ugrađeno, proveri sa:

$ type cd
cd is a shell builtin

$ type ls
ls is aliased to `ls --color=auto'

Program koristi drugu dokumentaciju

Noviji alati često imaju sopstveni sistem pomoći:

$ dnf help
$ git help commit
$ kubectl explain pod.spec
$ docker run --help

Gde su stranice na disku

$ man -w ls
/usr/share/man/man1/ls.1.gz

$ ls /usr/share/man/
man1  man2  man3  man4  man5  man6  man7  man8

Fajlovi su komprimovani i pisani u posebnom formatu za formatiranje. Ne otvaraj ih direktno — man ih raspakuje i prikazuje.

Kratka alternativa

Man stranice su iscrpne, ali ponekad želiš samo tri primera. Za to postoji tldr:

# dnf install -y tldr
$ tldr tar

Vraća nekoliko najčešćih upotreba, bez teorije. Odličan dodatak, ali ne i zamena — tldr ne postoji na svakom sistemu i ne pokriva konfiguracione fajlove.

Zašto je ovo važnije nego što deluje

Komande se menjaju između verzija i distribucija. Opcija koju si video u tutorijalu od pre pet godina možda više ne postoji, ili radi drugačije. Man stranica na tvom sistemu opisuje tačno onu verziju koju imaš.

To važi i za odgovore sa interneta i za ono što ti kaže AI asistent — oboje su korisni, ali se odnose na neku prosečnu verziju. Provera je uvek ista:

$ man komanda
/opcija

Administrator koji ume da čita dokumentaciju rešava probleme koje nikad pre nije video. To je razlika koja se u praksi najbrže primeti.

Vežba

  1. Otvori man ls i pronađi šta radi opcija -S, koristeći pretragu
  2. Sazna koje sve sekcije ima passwd i pogledaj obe
  3. Kroz man 5 fstab pronađi šta znači opcija noatime
  4. Pronađi komandu za merenje zauzeća diska, ne znajući joj ime
  5. Proveri da li je echo program ili deo shell-a
  6. U man bash pronađi odeljak o istoriji komandi
  7. Otvori man man i pogledaj šta radi opcija -K

Poslednja stavka je bonus — man -K pretražuje sadržaj svih stranica, ne samo opise. Spora je, ali nađe stvari koje apropos propusti.


Povezano: man-db · info · less i more · Rad iz komandne linije

Comments

Popular posts from this blog

Početak u Linuxu — šta je i zašto se uči

Konverzija tipova podataka u Pythonu

groupadd