This shows you the differences between two versions of the page.
uso:laboratoare:laborator-06:inspect-files [2023/11/07 19:16] maria_irina.gherman [Inspectarea rapida a conținutului fișierelor] |
uso:laboratoare:laborator-06:inspect-files [2023/11/07 19:27] (current) maria_irina.gherman [Căutarea în fișiere] |
||
---|---|---|---|
Line 210: | Line 210: | ||
===== Căutarea în fișiere ===== | ===== Căutarea în fișiere ===== | ||
- | Așa cum am văzut până în acest punct din carte, majoritatea comenzilor Linux afișează o gamă largă de informații pe care apoi utilizatorul (adică noi) le filtrează pentru a extrage ceea ce îl intresează. La începutul acestei secțiuni, dar și de-a lungul cărții, am folosit utilitarul ''%%grep%%'' ca să filtrăm rezultatul unei comenzi. | + | Așa cum am văzut până în acest punct, majoritatea comenzilor Linux afișează o gamă largă de informații pe care apoi utilizatorul (adică noi) le filtrează pentru a extrage ceea ce îl interesează. La începutul acestui laborator, dar și de-a lungul materiei, am folosit utilitarul ''%%grep%%'' ca să filtrăm rezultatul unei comenzi. |
- | Comanda ''%%grep%%'' este una dintre cele mai folosite în linie de comandă. Sintaxa de folosire a ''%%grep%%'' este următoarea: | + | Comanda ''%%grep%%'' este una dintre cele mai folosite în linia de comandă. Sintaxa de folosire a ''%%grep%%'' este următoarea: |
<code bash> | <code bash> | ||
Line 251: | Line 251: | ||
==== Exerciții ==== | ==== Exerciții ==== | ||
- | - Căutați //patternul// "l" în fișierul ''%%binary_search.c%%'', pentru a vedea unde este folosit parametrul **left**. Observați cât de multe rezultate irelevante ați găsit datorită faptului că am căutat doar caracterul **l**. Aici există o lecție de învățat. Numele variabilelor sunt foarte improtante: nu fac doar codul mai ușor de înțeles, dar ajută și căutarea. Folosiți //patternul// "param l" în încercarea de a restrânge căutarea. | + | - Căutați //patternul// "l" în fișierul ''%%binary_search.c%%'', pentru a vedea unde este folosit parametrul **left**. Observați cât de multe rezultate irelevante ați găsit datorită faptului că am căutat doar caracterul **l**. Aici există o lecție de învățat. Numele variabilelor sunt foarte importante: nu fac doar codul mai ușor de înțeles, dar ajută și căutarea. Folosiți //patternul// "param l" în încercarea de a restrânge căutarea. |
- Căutați //patternul// "arr" în fișierul ''%%binary_search.c%%''. | - Căutați //patternul// "arr" în fișierul ''%%binary_search.c%%''. | ||
- Căutați //patternul// "binarysearch1" în fișierul ''%%binary_search.c%%'' pentru a vedea cum este apelată funcția de căutare. | - Căutați //patternul// "binarysearch1" în fișierul ''%%binary_search.c%%'' pentru a vedea cum este apelată funcția de căutare. | ||
Line 257: | Line 257: | ||
==== Extra: Opțiuni uzuale ale grep ==== | ==== Extra: Opțiuni uzuale ale grep ==== | ||
- | === Afișarea numărului liniei care conține patternul === | + | === Afișarea numărului liniei care conține pattern-ul === |
- | 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 pattern-ul căutat: |
<code bash> | <code bash> | ||
Line 310: | Line 310: | ||
=== Căutarea recursivă a unui pattern === | === Căutarea recursivă a unui pattern === | ||
- | În căutările noastre de până acum, ca și în exemplele de mai sus, am presupus că știm în ce fișiere se găsește informația căutată de noi. Acest lucru este adevărat pentru fișiere din sistem cu informații bine cunoscute, cum ar fi ''%%/proc/meminfo%%'', dar atunci când lucrăm cu un proiect nou nu vom ști în ce fișiere să căutăm informația dorită. De exemplu, în cazul proiectului cu algoritmi implementați în C, noi am făcut presupunerea că vom găsi linii care conțin patternul **search** în fișierul ''%%workspace/C/searching/binary_search.c%%''. | + | În căutările noastre de până acum, ca și în exemplele de mai sus, am presupus că știm în ce fișiere se găsește informația căutată de noi. Acest lucru este adevărat pentru fișiere din sistem cu informații bine cunoscute, cum ar fi ''%%/proc/meminfo%%'', dar atunci când lucrăm cu un proiect nou, nu vom ști în ce fișiere să căutăm informația dorită. De exemplu, în cazul proiectului cu algoritmi implementați în C, noi am făcut presupunerea că vom găsi linii care conțin patternul **search** în fișierul ''%%workspace/C/searching/binary_search.c%%''. |
- | Atunci când nu știm în ce fișiere se află informația căutată putem să-i spunem lui ''%%grep%%'' să caute recursiv prin toată ierarhia de fișiere dintr-un anumit director. Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%'', ca în exemplul de mai jos: | + | Atunci când nu știm în ce fișiere se află informația căutată, putem să-i spunem lui ''%%grep%%'' să caute recursiv prin toată ierarhia de fișiere dintr-un anumit director. Pentru a efectua o căutare recursivă folosim opțiunea ''%%-r%%'', ca în exemplul de mai jos: |
<code bash> | <code bash> |