This shows you the differences between two versions of the page.
|
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. | ||
| + | |||