Differences

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

Link to this comparison view

uso:laboratoare:new:05-cli:get-a-life [2018/10/30 10:02]
liza_elena.babu
uso:laboratoare:new:05-cli:get-a-life [2019/10/31 11:32] (current)
adrian.zatreanu
Line 1: Line 1:
 ===== Get a life ===== ===== Get a life =====
  
-  ​Să scrie un script ​în care trebuie să schimbe directorul de lucru. (Hint: ''​source''​) +==== Filtre de text avansate ==== 
-  - Mutați-vă la calea ''​~/​uso.git/labs/​05-cli/​support/​get-a-life/​ex2/''​ și rulați scriptul ''​just_regular_updates_here.sh''​. Continuați să folosiți comenzile de bază (ls, cat, cd). Observați ce se întâmplă și rezolvați problema. + 
-  - La calea ''​~/​uso.git/labs/​05-cli/​support/​get-a-life/​ex3/''​ se află fișierul ''​image.png''​. Inspectați tipul fișierului. Scopul acestui exercițiu este să aflați un mesaj secret. (Hint: ''​file''​) +Până acum am folosit câteva filtre de text precum ''​tr'',​ ''​cut''​ sau ''​grep'',​ fiecare având câte un  
-  - În directorul ''​~/​uso.git/labs/​05-cli/​support/​get-a-life/​ex4/''​ se află numeroase fișiere. Să creeze o arhivă cu fișierele ce au o dimensiue ​mai mare de 10MB. +scop binedefinit,​ însă ele nu vor putea face absolut orice operație am vrea noi să facem asupra unui text.  
-  - Să creeze un script care pornește programul ''​firefox''​ doar dacă acesta nu există deja. Altfel, nu-l pornește, ci doar afișează informații ​depsre ​el. Configurați acest script să ruleze din ''​cron''​ la fiecare 5 minute. (Hint: ​ [[https://​www.thegeekstuff.com/​2011/​07/​cron-every-5-minutes|cron]])+Pentru asta au fost inventate câteva filtre de text mai avansate precum ''​sed''​ și ''​awk''​. 
 + 
 +=== sed === 
 +Înainte să începeți acest tutorial, navigați către calea ''/​home/​student/​uso-lab/​05-cli/​support/​get-a-life/​sed-tutorial''​. 
 + 
 +În acest director avem fișierul ''​songs.txt''​ cu următorul conținut:​ 
 + 
 +<code bash> 
 +student@uso:​~/​.../​support/​get-a-life/​sed-tutorial$ cat songs.txt  
 +1, Justin Timberlake, Title 545, Price $6.30 
 +2, Taylor Swift, Title 723, Price $7.90 
 +3, Mick Jagger, Title 610, Price $7.90 
 +4, Lady Gaga, Title 118, Price $6.30 
 +5, Johnny Cash, Title 482, Price $6.50 
 +6, Elvis Presley, Title 335, Price $6.30 
 +7, John Lennon, Title 271, Price $7.90 
 +</​code>​ 
 + 
 +Vrem să înlocuim toate aparițiile prețului ''​$6.30''​ cu ''​$7.30''​. Vom folosi ''​sed''​ pentru a face acest  
 +lucru. 
 + 
 +<code bash> 
 +student@uso:​~/​.../​support/​get-a-life/​sed-tutorial$ sed '​s/​6\.30/​7.30/'​ songs.txt > songs2.txt 
 +student@uso:​~/​.../​support/​get-a-life/​sed-tutorial$ cat songs2.txt  
 +1, Justin Timberlake, Title 545, Price $7.30 
 +2, Taylor Swift, Title 723, Price $7.90 
 +3, Mick Jagger, Title 610, Price $7.90 
 +4, Lady Gaga, Title 118, Price $7.30 
 +5, Johnny Cash, Title 482, Price $6.50 
 +6, Elvis Presley, Title 335, Price $7.30 
 +7, John Lennon, Title 271, Price $7.90 
 +</​code>​ 
 + 
 +=== awk === 
 +Mai devreme am văzut că putem extrage numele tuturor utilizatorilor din sistem folosind ''​tr''​. Vrem să  
 +facem asta folosind și filtrul ''​awk''​. 
 + 
 +Ne amintim că informațiile despre toți utilizatorii din sistem se află în fișierul ''/​etc/​passwd''​. 
 + 
 +<code bash> 
 +student@uso:​~/​.../​support/​get-a-life/​sed-tutorial$ cat /​etc/​passwd 
 +root:​x:​0:​0:​root:/​root:/​bin/​bash 
 +daemon:​x:​1:​1:​daemon:/​usr/​sbin:/​usr/​sbin/​nologin 
 +bin:​x:​2:​2:​bin:/​bin:/​usr/​sbin/​nologin 
 +(...) 
 +</​code>​ 
 + 
 +Pentru a extrage doar prima coloană, vom folosi următoarea comandă: 
 + 
 +<code bash> 
 +student@uso:​~/​.../​support/​get-a-life/​sed-tutorial$ awk -F: '​{print $1}' /​etc/​passwd 
 +root 
 +daemon 
 +bin 
 +(...) 
 +</​code>​ 
 + 
 + 
 +<​note>​ 
 +Mai sus am prezentat doar câte un exemplu pentru fiecare filtru. Puteți găsi mult mai multe informații  
 +despre ''​sed'',​ ''​awk''​ și multe altele [[http://​coewww.rutgers.edu/​linux/​lessons/​lesson9/​shell_script_tutorial.html|aici]].  
 +</​note>​ 
 + 
 +==== Exerciții ==== 
 +  - Scrieți ​un script care trebuie să schimbe directorul de lucru în ''​~''​De ce nu ar merge dacă am scrie pur și simplu ''​cd ~''​ în script? ​(Hint: ''​source''​) 
 +  - Mutați-vă la calea ''​~/​uso-lab/​05-cli/​support/​get-a-life/​ex2/''​ și rulați scriptul ''​just_regular_updates_here.sh''​. După rularea scriptului închideți terminalul curent și deschideți unul nou. Continuați să folosiți comenzile de bază (ls, cat). Observați ce se întâmplă și rezolvați problema. 
 +  - La calea ''​~/​uso-lab/​05-cli/​support/​get-a-life/​ex3/''​ se află fișierul ''​image.png''​. Inspectați tipul fișierului. Scopul acestui exercițiu este să aflați un mesaj secret. (Hint: ''​file''​) 
 +  - În directorul ''​~/​uso-lab/​05-cli/​support/​get-a-life/​ex4/''​ se află numeroase fișiere. Să se creeze o arhivă cu fișierele ce au o dimensiune ​mai mare de 10MB. 
 +  - Să se creeze un script care pornește programul ''​firefox''​ doar dacă acesta nu rulează deja. Altfel, nu-l pornește, ci doar afișează informații ​despre ​el. Configurați acest script să ruleze din ''​cron''​ la fiecare 5 minute. (Hint: ​ [[https://​www.thegeekstuff.com/​2011/​07/​cron-every-5-minutes|cron]]) 
 +  - Realizați un script care să creeze câte o arhivă pentru fiecare branch al repository-ului. (Hint: ''​man git'',​ [[https://​www.cyberciti.biz/​faq/​bash-for-loop/​|for]])  
 +  - Folosind tot website-ul de [[http://​ezprompt.net|aici]],​ modificați prompt-ul astfel încât să vă arate și branch-ul curent Git pe care vă aflați. 
 + 
 +Înainte: 
 +   
 +<code bash> 
 +student@uso:​~$ 
 +</​code>​ 
 +   
 +După: 
 +<code bash> 
 +student@uso:​~[lab-05-cli]$ 
 +</​code>​
uso/laboratoare/new/05-cli/get-a-life.1540886534.txt.gz · Last modified: 2018/10/30 10:02 by liza_elena.babu
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