This shows you the differences between two versions of the page.
uso:laboratoare:laborator-06:improve-cli-summary [2022/11/07 19:16] iustina.caramida [Inspectarea paginilor de manual] |
uso:laboratoare:laborator-06:improve-cli-summary [2023/11/07 20:09] (current) maria_irina.gherman [Sumar: O înțelegere mai bună a shellului] |
||
---|---|---|---|
Line 21: | Line 21: | ||
* Prezentarea pachetului ''%%tldr%%'' - poate fi util pentru cazurile uzuale, dar nu trebuie să ne fie frică să căutăm în ''%%man%%'' pentru detalii | * Prezentarea pachetului ''%%tldr%%'' - poate fi util pentru cazurile uzuale, dar nu trebuie să ne fie frică să căutăm în ''%%man%%'' pentru detalii | ||
- | ===== Selectarea multiplor fișiere folosind globbing ===== | + | ==== Selectarea multiplor fișiere folosind globbing ==== |
Folosim //globbing// pentru a selecta mai multe fișiere al căror nume corespunde unui tipar: | Folosim //globbing// pentru a selecta mai multe fișiere al căror nume corespunde unui tipar: | ||
Line 31: | Line 31: | ||
* Scăpăm de semnificația specială a unei expresii încadrând-o între ''%%"%%'' (ghilimele). | * Scăpăm de semnificația specială a unei expresii încadrând-o între ''%%"%%'' (ghilimele). | ||
- | ===== Căutarea unui fișier în sistem ===== | + | ==== Căutarea unui fișier în sistem ==== |
- | ==== Utilitarul locate ==== | + | === Utilitarul find === |
- | + | ||
- | Folosim utilitarul ''%%locate%%'' pentru a căuta un fișier în întreg sistemul de fișiere. | + | |
- | + | ||
- | Are avantajul că este foarte rapid, deoarece folosește o bază de date pentru a indexa fișierele. | + | |
- | + | ||
- | * **Are două dezavantaje:** | + | |
- | - Baza de date trebuie reconstruită periodic. Dacă vrem să reconstruim manual baza de date, avem nevoie de drepturi privilegiate pentru a rula comanda ''%%updatedb%%''. | + | |
- | - Utilitarul caută în tot sistemul de fișiere: nu putem să specificăm un punct de start pentru căutare. Este necesar să filtrăm rezultatul căutării cu punctul de start dorit, așa cum am făcut în exemplul de mai sus: ''%%| grep workspace/C%%''. | + | |
- | + | ||
- | ==== Utilitarul find ==== | + | |
Folosim ''%%find%%'' pentru a căuta după criterii mai complexe decât numele fișierului, cum ar fi tipul fișierului, data ultimei modificări, etc. | Folosim ''%%find%%'' pentru a căuta după criterii mai complexe decât numele fișierului, cum ar fi tipul fișierului, data ultimei modificări, etc. | ||
Line 49: | Line 39: | ||
De cele mai multe ori vom folosi ''%%find%%'' în conjuncție cu opțiunea ''%%-exec%%'' pentru a rula o comandă asupra fișierelor găsite. | De cele mai multe ori vom folosi ''%%find%%'' în conjuncție cu opțiunea ''%%-exec%%'' pentru a rula o comandă asupra fișierelor găsite. | ||
- | Utilitarul ''%%find%%'' este mai lent decât ''%%locate%%'', dar nu necesită o bază de date care trebuie actualizată periodic. ''%%locate%%'' este probabil suficient pentru majoritatea cazurilor când suntem interesați de căutarea unui fișier. j | + | ===== Sumar: Inspectarea fișierelor ===== |
- | ====== Sumar: Inspectarea fișierelor ====== | + | ==== Inspectarea rapidă a conținutului fișierelor ==== |
- | + | ||
- | === Inspectarea rapida a conținutului fișierelor === | + | |
Pentru a vedea rapid conținutul unui fișier folosim utlitarul ''%%less%%''. În cadrul unei sesiuni ''%%less%%'' putem folosi aceeleași taste ca în cadrul sesiunii interactive ''%%man%%'' pentru navigarea în pagină: | Pentru a vedea rapid conținutul unui fișier folosim utlitarul ''%%less%%''. În cadrul unei sesiuni ''%%less%%'' putem folosi aceeleași taste ca în cadrul sesiunii interactive ''%%man%%'' pentru navigarea în pagină: | ||
Line 68: | Line 56: | ||
Pentru a afișa parțial conținutul unui fișier sau a extrage rezultatul unei comenzi folosim utilitarele ''%%head%%'' și ''%%tail%%''. | Pentru a afișa parțial conținutul unui fișier sau a extrage rezultatul unei comenzi folosim utilitarele ''%%head%%'' și ''%%tail%%''. | ||
- | === Căutarea în fișiere === | + | ==== Căutarea în fișiere ==== |
Folosim comanda ''%%grep%%'' pentru a căuta un //pattern// într-un fișier sau în rezultatul unei comenzi (cum ar fi ''%%cat%%''). Modul de folosire este ''%%grep PATTERN cale/către/fișier%%'' sau ''%%cmd | grep PATTERN%%''. | Folosim comanda ''%%grep%%'' pentru a căuta un //pattern// într-un fișier sau în rezultatul unei comenzi (cum ar fi ''%%cat%%''). Modul de folosire este ''%%grep PATTERN cale/către/fișier%%'' sau ''%%cmd | grep PATTERN%%''. | ||
- | === Compararea fișierelor === | + | Putem folosi funcția de căutare în sesiunea interactivă ''%%less%%'' pentru a găsi linia și fișierul care ne interesează. |
- | Comparăm două fișiere, octet cu octet, folosind utilitarul ''%%cmp%%''. | + | ==== Opțiuni uzuale ale grep ==== |
- | + | ||
- | Comparăm textual două fișiere folosind utilitarul ''%%diff%%''. | + | |
- | + | ||
- | ===== Opțiuni uzuale ale grep ===== | + | |
Folosim opțiunea ''%%-n%%'' pentru a afișa și numărul liniei care conține patternul căutat. | Folosim opțiunea ''%%-n%%'' pentru a afișa și numărul liniei care conține patternul căutat. | ||
Line 88: | Line 72: | ||
Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%''. | Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%''. | ||
- | De cele mai multe ori vom folosi opțiunile ''%%-n%%'', ''%%-i%%'' și ''%%-r%%'' în aceelași timp. Astfel avem o căutare cât mai cuprinzătoare și putem folosi funcția de căutare în sesiunea interactivă ''%%less%%'' pentru a găsi linia și fișierul care ne interesează. | + | De cele mai multe ori vom folosi opțiunile ''%%-n%%'', ''%%-i%%'' și ''%%-r%%'' în același timp. |
**Extra:** Dacă dorim să căutăm cuvântul **search** folosim opțiunea ''%%-w%%'' (word) pentru a trata patternul ca un cuvânt, ca în exemplul următor: ''%%grep -nri -w "search" workspace/C/ | less%%''. | **Extra:** Dacă dorim să căutăm cuvântul **search** folosim opțiunea ''%%-w%%'' (word) pentru a trata patternul ca un cuvânt, ca în exemplul următor: ''%%grep -nri -w "search" workspace/C/ | less%%''. | ||
- | ====== Sumar: O înțelegere mai bună a shellului ====== | + | ===== Sumar: O înțelegere mai bună a shellului ===== |
- | ===== Configurarea shellului bash ===== | + | ==== Configurarea shellului bash ==== |
Fișierul de configurare al shellului **BASH** este ''%%~/.bashrc%%''. Atunci când un utilizator pornește un shell bash, conținutul fișierului ''%%~/.bashrc%%'' este citit și sunt aplicate configurările specifice utilizatorului. | Fișierul de configurare al shellului **BASH** este ''%%~/.bashrc%%''. Atunci când un utilizator pornește un shell bash, conținutul fișierului ''%%~/.bashrc%%'' este citit și sunt aplicate configurările specifice utilizatorului. | ||
- | |||
- | Valorile variabilelor ''%%HISTSIZE%%'' și ''%%HISTFILESIZE%%'' limitează numărul maxim de comenzi, respectiv linii, din fișierul ''%%~/.bash_history%%''. | ||
Un alias este un nume (//placeholder//) care înlocuiește un șir de caractere. Pentru o organizare mai bună, este recomandat ca utilizatorul să-și definească aliasurile în fișierul ''%%~/.bash_aliases%%''. | Un alias este un nume (//placeholder//) care înlocuiește un șir de caractere. Pentru o organizare mai bună, este recomandat ca utilizatorul să-și definească aliasurile în fișierul ''%%~/.bash_aliases%%''. | ||
- | ===== Înlănțuirea comenzilor ===== | + | ==== Înlănțuirea comenzilor ==== |
Atunci când își încheie execuția, orice proces întoarce un cod de eroare, care este un număr: valoarea ''%%0%%'' semnifică că acesta și-a încheiat execuția cu succes, iar orice ală valoare indică o eroare. | Atunci când își încheie execuția, orice proces întoarce un cod de eroare, care este un număr: valoarea ''%%0%%'' semnifică că acesta și-a încheiat execuția cu succes, iar orice ală valoare indică o eroare. | ||
Line 114: | Line 96: | ||
Atunci când folosim operatorul ''%%|%%'' preluăm rezultatul comenzii din stânga operatorului și îl oferim ca intrare comenzii aflate în dreapta operatorului. Operatorul ''%%|%%'' ne permite să prelucrăm datele de interes, trecându-le prin mai multe utilitare, fiecare cu un scop bine definit. | Atunci când folosim operatorul ''%%|%%'' preluăm rezultatul comenzii din stânga operatorului și îl oferim ca intrare comenzii aflate în dreapta operatorului. Operatorul ''%%|%%'' ne permite să prelucrăm datele de interes, trecându-le prin mai multe utilitare, fiecare cu un scop bine definit. | ||
- | ===== Redirectări ===== | + | ==== Redirectări ==== |
Folosim operatorul ''%%>%%'' pentru a redirecta **STDOUT** sau **STDERR** într-un fișier. Pentru a redirecta ieșirea standard folosim sintaxa ''%%cmd > nume-fișier%%''. Pentru a redirecta ieșirea standard a erorilor folosim sintaxa ''%%cmd 2> nume-fișier%%''. | Folosim operatorul ''%%>%%'' pentru a redirecta **STDOUT** sau **STDERR** într-un fișier. Pentru a redirecta ieșirea standard folosim sintaxa ''%%cmd > nume-fișier%%''. Pentru a redirecta ieșirea standard a erorilor folosim sintaxa ''%%cmd 2> nume-fișier%%''. | ||
- | Implicit, operatoru ''%%>%%'' șterge (trunchează) conținutul fișierului destinație. Dacă vrem să păstrăm conținutul fișierului și să adăugăm rezultatul redirectării în continuarea acestuia, folosim operatorul ''%%>>%%''. | + | Implicit, operatorul ''%%>%%'' șterge (trunchează) conținutul fișierului destinație. Dacă vrem să păstrăm conținutul fișierului și să adăugăm rezultatul redirectării în continuarea acestuia, folosim operatorul ''%%>>%%''. |
Folosim sintaxa ''%%&> cale/către/nume-fișier%%'' pentru a redirecta atât STDERR, cât și STDOUT, în fișierul primit ca argument. | Folosim sintaxa ''%%&> cale/către/nume-fișier%%'' pentru a redirecta atât STDERR, cât și STDOUT, în fișierul primit ca argument. | ||
- | ==== Fișiere speciale ==== | + | === Fișiere speciale === |
* Fișierul ''%%/dev/null%%'' este un fișier care ignoră orice este scris în el. | * Fișierul ''%%/dev/null%%'' este un fișier care ignoră orice este scris în el. |