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 |
|---|---|
| NAME | ime i jedan red opisa |
| SYNOPSIS | kako se komanda piše — najvažniji deo |
| DESCRIPTION | detaljno objašnjenje |
| OPTIONS | spisak svih opcija |
| EXAMPLES | primeri, kad ih ima |
| EXIT STATUS | šta komanda vraća kao izlazni kod |
| FILES | konfiguracioni fajlovi koje koristi |
| SEE ALSO | srodne 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:
| Taster | Radnja |
|---|---|
Space | ekran napred |
b | ekran nazad |
↓ / ↑ | red po red |
g / G | na početak / na kraj |
/pojam | pretraga unapred |
?pojam | pretraga unazad |
n / N | sledeće / prethodno pojavljivanje |
q | izlaz |
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]...
| Zapis | Značenje |
|---|---|
[ ] | neobavezno |
... | može se ponoviti više puta |
| | jedno ili drugo |
| bez zagrada | obavezno |
| podebljano | kuca se doslovno |
| iskošeno | zameni 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:
| Sekcija | Sadržaj |
|---|---|
| 1 | korisničke komande |
| 2 | sistemski pozivi kernela |
| 3 | funkcije biblioteka |
| 4 | uređaji u /dev |
| 5 | formati fajlova i konfiguracija |
| 6 | igre |
| 7 | razno, konvencije, standardi |
| 8 | administratorske 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
- Otvori
man lsi pronađi šta radi opcija-S, koristeći pretragu - Sazna koje sve sekcije ima
passwdi pogledaj obe - Kroz
man 5 fstabpronađi šta znači opcijanoatime - Pronađi komandu za merenje zauzeća diska, ne znajući joj ime
- Proveri da li je
echoprogram ili deo shell-a - U
man bashpronađi odeljak o istoriji komandi - Otvori
man mani 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
Post a Comment