info — detaljna GNU dokumentacija

Ako si ikada otvorio man stranicu neke GNU komande i na dnu naišao na ovo, već si sreo info:

$ man ls
...
SEE ALSO
       Full documentation <https://www.gnu.org/software/coreutils/ls>
       or available locally via: info '(coreutils) ls invocation'

To nije ljubazna preporuka nego upozorenje. Man stranica za mnoge GNU alate je skraćena verzija — spisak opcija bez objašnjenja. Prava dokumentacija je u info formatu.

Zašto uopšte postoje dva sistema

Man stranice su starije, iz Unix sveta, i pisane su kao jedan dugačak tekst za jednu komandu. Za ls je to sasvim dovoljno.

Ali kako se dokumentuje bash, koji ima desetine ugradenih komandi, pravila proširivanja i ceo jezik za skripte? Ili gawk, koji je programski jezik za sebe? GNU projekat je zato napravio sopstveni format, u kome je dokumentacija knjiga sa poglavljima kroz koja se krećeš.

Praktična podela:

  • man — brza provera opcije. Otvoriš, nadeš, zatvoriš.
  • info — kad hoćeš da razumeš alat, ne samo da mu proveriš zastavicu.

Otvaranje

$ info ls
$ info bash
$ info coreutils

Bez argumenta dobijaš spisak svega što na sistemu postoji:

$ info

Za odredeni deo veće knjige koristi se oblik iz man stranice:

$ info '(coreutils) ls invocation'

Navodnici su tu jer izraz sadrži razmake i zagrade, koje bi shell inače tumačio — isto pravilo kao u lekciji Džokeri i navodnici.

Prva zbunjujuća stvar

$ info ls
LS(1)                       User Commands                      LS(1)

NAME
       ls - list directory contents

Ovo izgleda kao man stranica jer to i jeste man stranica. Kad za komandu ne postoji info dokument, info ćutke prikaže man stranicu. Nije kvar, nego zamena.

Da vidiš pravu stvar, traži knjigu kojoj komanda pripada:

$ info coreutils 'ls invocation'

Kretanje: čvorovi umesto stranica

Info dokument nije jedan tekst nego stablo čvorova. Vrh izgleda ovako:

File: bash.info,  Node: Top,  Next: Introduction,  Up: (dir)

Bash Features
*************

* Menu:

* Introduction::                An introduction to the shell.
* Definitions::                 Some definitions used in the rest of
* Basic Shell Features::        The shell "building blocks".
* Shell Builtin Commands::      Builtin commands you can use.

Gornji red je navigacija: gde si, šta je sledeće, šta je iznad. Redovi sa zvezdicom su meni — kucni Tab da skočiš na sledeću stavku, pa Enter da udeš u nju.

Sedam tastera koji su dovoljni

  • Tab — na sledeću stavku menija ili link
  • Enter — udi u izabranu stavku
  • l — nazad, tamo odakle si došao (kao dugme „nazad" u pretraživaču)
  • u — nivo iznad
  • n i p — sledeće i prethodno poglavlje na istom nivou
  • s — pretraga kroz ceo dokument
  • q — izlaz

Ako se izgubiš, t te vraća na sam vrh knjige, a ? otvara spisak svih prečica.

Napomena za one koji su navikli na less: info koristi prečice u stilu emacs-a, pa / ovde nije pretraga. Slovo s jeste.

Indeks je ono što zaista tražiš

Najbrži put do odgovora nije listanje poglavlja nego pretraga indeksa, tasterom i:

$ info bash
i shift        Enter

Skače pravo na deo o komandi shift. Sledeće poklapanje u indeksu je , (zarez). Ovo je razlika izmedu petnaest sekundi i pet minuta traženja.

Kada info stvarno vredi

Za većinu komandi ti je dovoljan man. Ali za ove alate je info dokument kompletan priručnik, često od nekoliko stotina strana:

  • bash — najbolji besplatni referentni priručnik za shell skripte koji imaš na sistemu
  • coreutils — objašnjenja svih osnovnih komandi na jednom mestu
  • gawk i sed — sa primerima kojih u man stranici nema
  • make, gcc, gdb — kompletna dokumentacija alata za razvoj
  • tartar ima man stranicu, ali objašnjenja formata i primere ima samo u info dokumentu

Konkretno poredenje: man stranica za bash pomene opciju set -o pipefail u jednoj rečenici. Info dokument ima ceo odeljak o statusu izlaza u lancima, sa primerima. O samim lancima piše u lekciji Piping i redirekcija.

Kad ti se ne kreće kroz čvorove

Sasvim legitimna želja. Ceo dokument se može izbaciti kao običan tekst:

$ info bash | less

Ali to daje samo prvi čvor. Za celu knjigu, sa svim poglavljima:

$ info --subnodes bash | less

Odatle dalje radiš alatima koje već znaš:

$ info --subnodes bash | grep -n "pipefail"
4821:'pipefail'
4822:     If set, the return value of a pipeline is the value of the last

Ili snimi u fajl pa otvori u editoru (Tekstualni editori):

$ info --subnodes bash > ~/bash-prirucnik.txt
$ wc -l ~/bash-prirucnik.txt
9847

Devet hiljada redova dokumentacije koja je već na tvom disku.

Ako info ne postoji

$ info bash
bash: info: command not found

Na minimalnim instalacijama i u kontejnerima info dokumenti se brišu da bi slika bila manja. Instalacija:

$ sudo apt install info          # Debian, Ubuntu
$ sudo dnf install info          # Fedora, RHEL

Sami dokumenti dolaze uz paket texinfo i uz pakete pojedinih alata. Ako sistem nije tvoj i ne smeš da instaliraš, ostaju ti man stranica i ugradena pomoć:

$ ls --help | grep -A2 "sort"

Sitnice

pinfo, ako ti tastatura ne odgovara

$ sudo apt install pinfo
$ pinfo bash

Isti sadržaj, ali sa prečicama u stilu less i lakšim kretanjem strelicama. Nije svuda instaliran, pa vredi znati i originalne prečice.

Isti tekst u pretraživaču

Svi GNU info dokumenti postoje i kao HTML na gnu.org/software/ime-paketa/manual. Prednost lokalne verzije je što odgovara tačno onoj verziji alata koja je na tvom sistemu — a to je često cela razlika izmedu rešenja koje radi i onog koje ne radi.

Zašto se dokument zove „(dir)"

Kad u gornjem redu piše Up: (dir), to znači da si na vrhu jedne knjige, a iznad je opšti spisak svih knjiga. Do njega stižeš sa d.

Kratka referenca

Pokretanje

  • info — spisak svih dokumenata
  • info paket — otvori dokument
  • info coreutils 'ls invocation' — odredeno poglavlje
  • info --subnodes paket | less — sve kao običan tekst

Prečice

  • Tab / Enter — izaberi i udi u stavku
  • l — nazad · u — nivo iznad · t — na vrh · d — spisak svih knjiga
  • n / p — sledeće / prethodno poglavlje
  • s — pretraga teksta
  • i — pretraga indeksa · , — sledeće poklapanje
  • ? — pomoć · q — izlaz

Vežba

  1. Otvori info bash i preko indeksa nadi objašnjenje ugradene komande trap.
  2. Iz istog dokumenta se vrati na vrh, pa udi u poglavlje o promenljivim okruženja koristeći meni.
  3. Nadi u coreutils dokumentu odeljak o komandi ls i pročitaj šta piše o opciji -v. Uporedi sa onim što o njoj kaže man ls.
  4. Izbaci ceo bash priručnik u fajl i prebroj koliko puta se u njemu javlja reč PIPESTATUS, koristeći grep.
  5. Bez otvaranja pretraživača utvrdi da li tvoja verzija sed podržava opciju --in-place sa sufiksom za rezervnu kopiju.

Treći zadatak najbolje pokazuje razliku izmedu ta dva sistema dokumentacije.


Osnovni priručnik i njegove sekcije su na stranici man, a pretraga dokumentacije po ključnoj reči na stranici man-db.

Cela lekcija je deo vodiča Linux osnove.

Comments

Popular posts from this blog

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

Konverzija tipova podataka u Pythonu

groupadd