====== 4. Folosirea documentației ======
În folosirea Linux, în special a liniei de comandă, documentația este esențială. Există opțiunea căutării pe Google, dar aceasta riscă să returneze foarte multe rezultate. În multe situații consultarea documentației locale (paginile de manual) poate fi o soluție mult mai adecvată.
===== Subiecte abordate =====
* Comenzi de ajutor în linia de comandă
* Folosirea paginilor de manual: căutare
==== Utilitare folosite ====
* ''whatis'', ''apropos''
* ''%%--help%%''
* ''man''
===== Resurse utile =====
* TODO
* TODO
===== Exerciții =====
==== Demo-uri ====
Rolul comenzilor ''apropos'' și ''whatis''.
Opțiunea ''%%--help%%'' e folosită foarte rar pentru că de obicei folosim paginile de manual care sunt ușor accesibile.
Deschiderea unei pagini de manual, structura paginilor de manual, căutarea în pagini de manual.
Match-ul anterior, match-ul precedent în pagina de manual.
Secțiuni de pagini de manual
man printf
man 3 printf
man read
man 2 read
man write
man 2 write
man man # see the table listing sections
==== Căutare în pagini de manual ====
Căutați în pagina de manual (rulați {{{man last}}}) după cuvântul cheie "full" (tastați "/full") pentru a afla flag-ul care afișeaza data și ora în format complet. Rulați comanda ''last'' cu parametrul aflat.
Folosiți un extra-argument al comenzii ''ls'' pentru a avea dimensiunile în format ''human-readable''. Căutați în pagina de manual a comenzii ''ls''.
Determinați **doar** dimensiunea directorului ''/etc'' (nu și a subdirectoarelor) în format human readable. Căutați în pagina de manual a comenzii ''du'' după cuvântul cheie ''summarize'' și identificați opțiunea (argumentul) comenzii ''du'' care vă afișează dimensiunea directorului în format sumarizat.
Căutați în pagina de manual a comenzii {{{find}}} **exemplul** de comandă care căută în {{{/sbin}}} și {{{/usr/sbin}}} fișierele cu drept de execuție dar fără drept de citire.
Ce conține secțiunea 5 a paginilor de manual? Aflați informații despre fișierul {{{/etc/passwd}}}.
Determinați comenzile folosite pentru a lucra cu fișiere {{{.zip}}}. Folosiți comanda ''apropos'' pentru aceasta.
==== Acțiuni care necesită consultarea paginii de manual ====
Descărcați pagina de la link-ul http://koala.cs.pub.ro/training/wiki/basic-unix/home?do=export_pdf într-un fișier cu numele ''training-start.pdf''. Folosiți comanda ''wget''. Căutați după șirul ''output'', citiți cu atenție informațiile și nu vă grăbiți: ce găsiți prima oară nu este ceea ce căutați.
Adăugați un utilizator în sistem, în mod neinteractiv, folosind comanda ''useradd''. Numele utilizatorului să fie ''hector'' să aibă directorul home în ''/home/heroes/hector'', să aibă ca shell de login ''/bin/bash''.
Apoi folosiți comanda ''chpasswd'' ca să schimbați în mod neinteractiv parola utilizatorului.
==== Construire fișier cu informații binare ====
Pentru a crea un fișier cu 1024 de date aleatoare folosim comanda
dd if=/dev/urandom of=file bs=1024 count=1
Creați un fișier care să conțină 2048 de octeți de zero (din ''/dev/zero'') urmați de 2048 de octeți aleatori (din ''/dev/urandom'') urmați de 2048 de octeți de zero și apoi urmați de 2048 de octeți din fișierul ''/bin/false'' de la offsetul 4096 al fișierului.
Folosiți mai multe comenzi ''dd'' pentru a face acest lucru.
Folosim opțiunile ''skip'' și ''seek'' ale ''dd'' pentru a putea sări peste regiuni din fișierul de la intrare și din fișierul de la ieșire. Mai multe informații mai jos.
Sintaxa comenzii poate fi la modul
dd if=/dev/zero of=myfile.out bs=512 count=4
Comanda de mai sus copiază din fișierul de intrare (''if'': //input file//) ''/dev/zero'' la fișierul de ieșire (''of'': //output file//) ''myfile.out'', un număr (//count//) de ''4'' blocuri de dimensiune ''512'' (''bs'': //block size//).
Pentru exercițiul curent este recomandat să folosiți dimensiunea blocului de ''2048'' de octeți (''bs=2048'').
Ca să investigăm conținutul binar al unui fișier folosind comanda ''xxd'' într-o construcție de forma
xxd myfile.out
Output-ul este pe două zone: prima zonă (din stânga) sunt afișate datele în format hexazecimal, iar în a doua zonă (din dreapta) în format ASCII, acolo unde se poate.
**Bonus**: Folosiți comanda ''xxd'' pentru a afișa pe rând, primii 32 de octeți de la offset-ul ''0'', apoi offset-ul ''2048'', apoi ''4096'' și apoi ''6144''.
Argumentul pentru opțiunile ''skip'' și ''seek'' ale comenzii ''dd'' este dat în număr de blocuri, **nu** în număr de octeți.
Opțiunea ''seek'' este pentru a sări peste zone din fișierul de ieșire, iar opțiunea ''skip'' este pentru a sări peste zone din fișierul din intrare.
==== Folosire top în mod neinteractiv ====
Comanda top este folosită pentru monitorizarea proceselor. Căutați în manual după modul ''batch'' și faceți ca top să ruleze în modul neinteractiv (batch) și să afișeze de 5 ori lista de procese.
==== Monitorizare cu sar ====
Dacă nu aveți instalat pachetul ''sysstat'' instalați-l.
Dacă nu puteți instala pachetul folosind comanda
sudo apt-get install sysstat
atunci descărcați fișierul arhivă de [[|aici]], decomprimați-l și apoi, în subdirectorul ''packages/'' rulați comanda
sudo dpkg -i *
Folosiți utilitarele ''iostat'', ''pidstat'' și ''mpstat'' pentru a monitoriza informații despre sistem. Realizați rulări care:
- Afișează informațiile aferente **o singură dată**.
- Afișează informațiile aferente la fiecare 5 secunde.
- Afișați, acolo unde se poate, informații doar pentru procesul shell curent (PID-ul său este indicat de construcția ''$$'').
==== Formatare fișiere ====
Copiați conținut de lorem ipsum de [[http://loripsum.net/|aici]] într-un fișier. Apoi faceți formatare la 40 de caractere linie folosind comanda ''fold''.
Formatați conținutul fișierului ''/etc/passwd'' pe coloane folosind comanda ''column''. Parcurgeți pagina de manual a comenzii ''column'' pentru opțiunile aferente.
Folosiți comanda ''split'' pentru a împărți conținutul fișierului ''/etc/passwd'' în mai multe fișiere, fiecare fișier cuprinzând câte 4 linii.