Differences

This shows you the differences between two versions of the page.

Link to this comparison view

info1:laboratoare:05 [2020/11/17 12:13]
alexandru.vochescu
info1:laboratoare:05 [2020/11/24 12:42] (current)
alexandru.vochescu
Line 1: Line 1:
-====== Laborator 05 - Lucrul în linia de comandă ======+====== Laborator 05 - Lucrul în linia de comandă ​- 1 ======
  
 {{page>​uso:​laboratoare:​laborator-05:​improve-terminal&​nofooter&​noeditbutoon}} {{page>​uso:​laboratoare:​laborator-05:​improve-terminal&​nofooter&​noeditbutoon}}
Line 136: Line 136:
   - Căutați cuvântul cheie ''​%%list%%''​. Treceți la următoarea apariție a cuvântului cheie până ajungeți la opțiunea ''​%%-l%%''​.   - Căutați cuvântul cheie ''​%%list%%''​. Treceți la următoarea apariție a cuvântului cheie până ajungeți la opțiunea ''​%%-l%%''​.
   - Mergeți la finalul paginii folosind tasta ''​%%G%%''​. Căutați cuvântul cheie ''​%%color%%''​ până ajungeți la opțiunea ''​%%--color%%''​ (Hint: ''​%%?​%%''​).   - Mergeți la finalul paginii folosind tasta ''​%%G%%''​. Căutați cuvântul cheie ''​%%color%%''​ până ajungeți la opțiunea ''​%%--color%%''​ (Hint: ''​%%?​%%''​).
- 
- 
-==== Utilizarea pachetului tldr ==== 
- 
-Utilitarul ''​%%tldr%%''​ (too long, didn't read) oferă o versiune simplificată a paginilor de manual. Acesta ne va arăta un rezumat al utilizării unei comenzi cu opțiunile cele mai des folosite în comunitate. 
- 
-<code bash> 
-student@uso:​~$ tldr ls 
-ls 
-List directory contents. 
- 
- - List files one per line: 
-   ls -1 
- 
- - List all files, including hidden files: 
-   ls -a 
- 
- - Long format list (permissions,​ ownership, size and modification date) of all files: 
-   ls -la 
- 
- - Long format list with size displayed using human readable units (KB, MB, GB): 
-   ls -lh 
- 
- - Long format list sorted by size (descending):​ 
-   ls -lS 
- 
- - Long format list of all files, sorted by modification date (oldest first): 
-   ls -ltr 
-</​code>​ 
-<​note>​ 
- 
- 
-Acesta trebuie tratat ca un cheatsheet accesibil din linie de comandă. ''​%%tldr%%''​ nu elimină utilizarea paginilor ''​%%man%%'',​ dar ne ajută să găsim rapid opțiunile uzuale. Acestea fiind spuse, vă recomandăm ca întotdeaună să citiți și să înțelegeți din paginile ''​%%man%%''​ ce efect au opțiunile unei comenzi înainte de a le folosi. Feriți-vă să rulați comenzi orbește, pentru că așa ați găsit pe StackOverflow,​ tldr, etc. Întotdeauna asigurați-vă că ați înțeles cum și de ce rulați comanda și abia apoi treceți la fapte. 
-</​note>​ 
- 
-=== Exerciții: Utilizarea pachetului tldr === 
- 
-Instalați pachetul ''​%%tldr%%''​ pe mașina voastră. 
- 
-  - Accesați pagina ''​%%tldr%%''​ a utilitarului ''​%%ls%%''​. 
-  - Accesați pagina ''​%%tldr%%''​ a utilitarului ''​%%zip%%''​. 
-  - Accesați pagina ''​%%tldr%%''​ a utilitarului ''​%%tar%%''​. 
-  - Accesați pagina ''​%%tldr%%''​ a utilitarului ''​%%git%%''​. 
-  - Accesați pagina ''​%%tldr%%''​ a utilitarului ''​%%man%%''​. 
  
 ===== Selectarea multiplor fișiere folosind globbing ===== ===== Selectarea multiplor fișiere folosind globbing =====
Line 296: Line 252:
   - Creați un director numit ''​%%Excursie Brasov, 2020-2021%%''​. Mutați fișierele **DCIM** din intervalul 1400 - 1700 în directorul creat.   - Creați un director numit ''​%%Excursie Brasov, 2020-2021%%''​. Mutați fișierele **DCIM** din intervalul 1400 - 1700 în directorul creat.
   - Creați un director numit ''​%%cursuri/​anul-I%%''​. Mutați toate fișierele care conțin cuvintele **curs** sau **slide** în directorul creat. Folosiți sintaxa ''​%%*{curs,​slide}*%%''​.   - Creați un director numit ''​%%cursuri/​anul-I%%''​. Mutați toate fișierele care conțin cuvintele **curs** sau **slide** în directorul creat. Folosiți sintaxa ''​%%*{curs,​slide}*%%''​.
 +
 +===== Căutarea unui fișier în sistem =====
 +
 +De multe ori ne aflăm în situația în care căutăm un fișier pe disc: ex. doar ce am clonat un proiect de pe GitHub și vrem să inspectăm fișierul **Makefile** pentru a vedea cum compilăm și rulăm proiectul. Un alt exemplu poate fi că vrem să vedem cum arată fișierele de test existente în proiect; de multe ori, ințelegem mai bine proiectul doar prin simpla inspectare a testelor.
 +
 +Există două utilitare care ne permit să căutăm în cadrul sistemului de fișiere: ''​%%locate%%''​ și ''​%%find%%''​. In cadrul acestui laborator vom vorbi doar despre utilitarul ''​%%locate%%''​.
 +
 +==== Utilitarul locate ====
 +
 +Utilitarul ''​%%locate%%''​ folosește o bază de date pentru a căuta în fișierele de pe sistem. Inspectăm pagina de manual a utilitarului pentru a vedea cum îl putem folosi, folosind comanda ''​%%man%%'':​
 +
 +<code bash>
 +student@uso:​~$ man locate
 +
 +SYNOPSIS
 +       ​locate [OPTION]... PATTERN...
 +</​code>​
 +Observăm că ''​%%locate%%''​ primește ca argument un șir de caractere, **PATTERN**,​ care fac parte din numele fișierului pe care în căutăm, dar nu trebuie să-i dăm numele exact:
 +
 +<code bash>
 +student@uso:​~$ locate todos.txt
 +/​home/​student/​Desktop/​todos.txt
 +student@uso:​~$ locate todos
 +/​home/​student/​Desktop/​todos.txt
 +</​code>​
 +Putem să folosim și sintaxa globbing pentru a descrie numele fișierului căutat:
 +
 +<code bash>
 +student@uso:​~$ locate "​*.txt"​
 +/​home/​student/​vm-actions-log.txt
 +/​home/​student/​.local/​lib/​python2.7/​site-packages/​Keras_Applications-1.0.8.dist-info/​top_level.txt
 +/​home/​student/​.local/​lib/​python2.7/​site-packages/​Keras_Preprocessing-1.1.2.dist-info/​top_level.txt
 +/​home/​student/​.local/​lib/​python2.7/​site-packages/​Markdown-3.1.1.dist-info/​entry_points.txt
 +/​home/​student/​.local/​lib/​python2.7/​site-packages/​Markdown-3.1.1.dist-info/​top_level.txt
 +/​home/​student/​.local/​lib/​python2.7/​site-packages/​Werkzeug-1.0.1.dist-info/​top_level.txt
 +</​code>​
 +Căutările cu ''​%%locate%%''​ sunt foarte rapide. Acest lucru se datorează utilizării bazei de date pentru a indexa fișierele din sistem. Într-o configurație implicită (//​default//​),​ baza de date se reconstruiește periodic, o dată la 24h. Asta înseamnă că ''​%%locate%%''​ nu va găsi fișiere care au fost create după reconstrucția bazei de date. Dacă vrem să reconstruim baza de date, folosim comanda ''​%%updatedb%%''​.
 +
 +Hai să clonăm repository-ul **TheAlgorithms/​C**. Acesta conține implementările diferitor algoritmi folosind limbajul de programare C.
 +
 +<code bash>
 +student@uso:​~$ cd workspace
 +student@uso:​~/​workspace$ git clone https://​github.com/​TheAlgorithms/​C.git
 +student@uso:​~/​workspace$ cd C
 +</​code>​
 +Fiind vorba despre un repository care implementează algoritmi clasici, ne așteptăm să găsim și algoritmi de căutare, cum ar fi binary-search. Hai să căutăm după cuvântul cheie **search**.
 +
 +<code bash>
 +student@uso:​~/​workspace$ locate search | grep workspace/C
 +student@uso:​~/​workspace$ ​
 +</​code>​
 +Observăm că nu am găsit nici un rezultat. Cum spuneam mai devreme, trebuie să reconstruim baza de date pentru a căuta în fișierele nou create.
 +
 +<code bash>
 +student@uso:​~/​workspace/​C$ sudo updatedb
 +[sudo] password for student: ​
 +</​code>​
 +Comanda ''​%%updatedb%%''​ trebuie executată în mod privilegiat,​ așa că folosim ''​%%sudo%%''​. Parola utilizatorului **student**,​ pe mașina noastră virtuală, este **student**.
 +
 +<code bash>
 +student@uso:​~/​workspace/​C$ locate search | grep workspace/C
 +/​home/​student/​workspace/​C/​searching
 +/​home/​student/​workspace/​C/​data_structures/​binary_trees/​binary_search_tree.c
 +/​home/​student/​workspace/​C/​searching/​CMakeLists.txt
 +/​home/​student/​workspace/​C/​searching/​binary_search.c
 +/​home/​student/​workspace/​C/​searching/​fibonacci_search.c
 +/​home/​student/​workspace/​C/​searching/​interpolation_search.c
 +/​home/​student/​workspace/​C/​searching/​jump_search.c
 +/​home/​student/​workspace/​C/​searching/​linear_search.c
 +/​home/​student/​workspace/​C/​searching/​modified_binary_search.c
 +/​home/​student/​workspace/​C/​searching/​other_binary_search.c
 +/​home/​student/​workspace/​C/​searching/​pattern_search
 +/​home/​student/​workspace/​C/​searching/​ternary_search.c
 +/​home/​student/​workspace/​C/​searching/​pattern_search/​CMakeLists.txt
 +/​home/​student/​workspace/​C/​searching/​pattern_search/​boyer_moore_search.c
 +/​home/​student/​workspace/​C/​searching/​pattern_search/​naive_search.c
 +/​home/​student/​workspace/​C/​searching/​pattern_search/​rabin_karp_search.c
 +</​code>​
 +=== Exerciții ===
 +
 +  - Folosind ''​%%locate%%''​ căutați fișierele care conțin șirul ''​%%bubble_sort%%''​ în nume.
 +  - Folosind ''​%%locate%%''​ căutați fișierele care conțin șirul ''​%%quick_sort%%''​ în nume.
 +  - Folosind ''​%%locate%%''​ căutați fișierele care conțin șirul ''​%%merge_sort%%''​ în nume.
 +  - Folosind ''​%%locate%%''​ căutați fișierele care conțin șirul ''​%%sort%%''​ în nume.
 +
  
info1/laboratoare/05.1605607991.txt.gz · Last modified: 2020/11/17 12:13 by alexandru.vochescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0