Differences

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

Link to this comparison view

uso:cursuri:curs-06 [2020/11/16 18:08]
ebru.resul
uso:cursuri:curs-06 [2022/11/07 15:27] (current)
sergiu.weisz
Line 1: Line 1:
 ====== Curs 06 - Automatizarea sarcinilor. Shell scripting ======= ====== Curs 06 - Automatizarea sarcinilor. Shell scripting =======
  
-  * [[https://drive.google.com/​file/d/1T1e_WwzO09TRIqOFq8uxet2jJFubZejq/view?​usp=sharing| Slide-uri curs]] +  * [[https://docs.google.com/​presentation/d/1WF2R5P-L0bRIQu--DwQNH3lMeJY03qAT/edit?​usp=sharing&​ouid=108131427433094834232&​rtpof=true&​sd=true| Slide-uri curs]]
-  * [[https://​drive.google.com/​open?​id=1NlzJf0mJ7rpgp3lYJsEdQa7sPF-0a8pj| Handout 3on1 and notes space]] +
-  * [[https://​drive.google.com/​open?​id=1WD_veJN7rYfo7b3eJsPsN4lTOREYjpR3 | Handout 6on1]]+
   * **Suport de curs**   * **Suport de curs**
-    * [[http://elf.cs.pub.ro/uso/res/​carte/​uso_cap-13-auto.pdf|Capitolul 13: Automatizarea sarcinilor]]+    * [[https://github.com/​systems-cs-pub-ro/carte-uso/releases | Utilizarea sistemelor de operare]] 
 +        * Secțiunea ​13 - Automatizarea sarcinilor
  
 +<​HTML>​
 +<​center>​
 +<iframe src="​https://​docs.google.com/​presentation/​d/​e/​2PACX-1vSX5DZFvcDSXTq-6Ix7A7b4u0eJyuS2akgtTf88P5WUazC6opuAfqtkLsFyC3H4jg/​embed?​start=false&​loop=false&​delayms=3000"​ frameborder="​0"​ width="​480"​ height="​389"​ allowfullscreen="​true"​ mozallowfullscreen="​true"​ webkitallowfullscreen="​true"></​iframe>​
 +</​center>​
 +</​HTML>​
  
 ===== Demo ===== ===== Demo =====
Line 16: Line 20:
 Shell-ul este un interpretor de comenzi care faciliteaza accesul utilizatorului la resursele sistemului de operare. Shell-ul este un interpretor de comenzi care faciliteaza accesul utilizatorului la resursele sistemului de operare.
  
-Cum arata un script shell:+Cum arată ​un script shell:
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Line 22: Line 26:
 </​code>​ </​code>​
  
-  * Ce inseamna ​''#​!/​bin/​bash?''​ +  * Ce înseamnă ​''#​!/​bin/​bash?''​ 
-Secventa ​de caractere (''​shebang''​) care este prezenta ​tot timpul la inceputul ​unui script ​si care indica ​interpretorul scriptului (in exemplul dat fiind shell-ul Bash).+Secvența ​de caractere (''​shebang''​) care este prezentă ​tot timpul la începutul ​unui script ​și care indică ​interpretorul scriptului (în exemplul dat fiind shell-ul Bash).
  
-  * Cum cream si rulam un script? +  * Cum creăm și rulăm ​un script? 
-Putem deschide command line-ul, ​cream un fisier ​cu extensia ''​.sh''​ (good practice), pe care ulterior ​il editam ​folosind orice editor text (vim, Sublime etc.), ​caruia ​ulterior trebuie sa ii dam drepturi de executie ​(chmod pentru a schimba ​si ls -l pentru verificare). La sfarsit, putem rula script-ul ca pe orice executabil.+Putem deschide command line-ul, ​creăm ​un fișier ​cu extensia ''​.sh''​ (good practice), pe care ulterior ​îl edităm ​folosind orice editor text (vim, Sublime etc.), ​căruia ​ulterior trebuie sa îi dăm drepturi de execuție ​(chmod pentru a schimba ​și ls -l pentru verificare). La sfârșit, putem rula script-ul ca pe orice executabil.
 <​code>​ <​code>​
 student@uso:​~/​Documents$ vi script.sh student@uso:​~/​Documents$ vi script.sh
Line 37: Line 41:
  
   * De ce shell scripting?   * De ce shell scripting?
-Script-urile ​ofera posibilitatea de automatizare a sarcinilor ​putand ​utiliza o serie mai mare de comenzi ​laolalta. De asemenea, structurile repetitive (for, while) ​si cele decizionale (if, else) pot fi implementate ​usor folosind shell scripting. Operatorii logici sunt si ei des folositi ​pentru a inlantui ​mai multe comenzi, la fel ca si pipe-urile (“|”) - folosite pentru a folosi output-ul unei comenzi ​in comanda ​urmatoare.+Script-urile ​oferă ​posibilitatea de automatizare a sarcinilor ​putând ​utiliza o serie mai mare de comenzi ​laolaltă. De asemenea, structurile repetitive (for, while) ​și cele decizionale (if, else) pot fi implementate ​ușor folosind shell scripting. Operatorii logici sunt și ei des folosiți ​pentru a înlănțui ​mai multe comenzi, la fel ca și pipe-urile (“|”) - folosite pentru a folosi output-ul unei comenzi ​în comanda ​următoare.
  
  
-Mai jos este un demo cu comenzile cele mai folosite pentru shell scripting ​si pentru a automatiza lucrul ​in linia de comanda.+Mai jos este un demo cu comenzile cele mai folosite pentru shell scripting ​și pentru a automatiza lucrul ​în linia de comandă.
  
 ==== Comanda grep ==== ==== Comanda grep ====
-Comanda grep extrage liniile care contin ​o expresie regulata ​data dintr-un ​fisier.+Comanda grep extrage liniile care conțin ​o expresie regulata ​dată dintr-un ​fișier.
 <​code>​ <​code>​
 student@uso:​~/​Documents$ cat cap_si_pajura | grep frate student@uso:​~/​Documents$ cat cap_si_pajura | grep frate
Line 50: Line 54:
 Am fost frate pentru frate. x2 Am fost frate pentru frate. x2
 Am fost frate pentru frate. x2 Am fost frate pentru frate. x2
-<​code>​+</code>
  
-==== Comenzile head si tail ==== +==== Comenzile head și tail ==== 
-Comenzile head si tail sunt folosite pentru ​afisarea ​primelor/​ultimelor linii sau caractere dintr-un input+Comenzile head si tail sunt folosite pentru ​afișarea ​primelor/​ultimelor linii sau caractere dintr-un input
  
 <​code>​ <​code>​
Line 67: Line 71:
  
 ==== Comanda seq ==== ==== Comanda seq ====
-Comanda seq este folosita ​pentru a genera o secventa ​de numere. +Comanda seq este folosită ​pentru a genera o secvență ​de numere. 
-Flagul -s este folosit pentru a stabili caracterul care delimiteaza ​numerele. Delimitatorul implicit este ‘\n’.+Flagul -s este folosit pentru a stabili caracterul care delimitează ​numerele. Delimitatorul implicit este ‘\n’.
 <​code>​ <​code>​
 student@uso:​~$ seq 4 student@uso:​~$ seq 4
Line 79: Line 83:
 </​code>​ </​code>​
  
-In comanda de mai sus 1 reprezinta ​numarul de la care pornim ​numaratoarea, 2 este incrementul,​ iar 5 este numarul ​la care ne oprim. +În comanda de mai sus 1 reprezintă ​numarul de la care pornim ​numărătoarea, 2 este incrementul,​ iar 5 este numărul ​la care ne oprim. 
-Optiunea ​-f este folosita ​pentru a afisa secventa intr-un anumit format.+Opțiunea ​-f este folosită ​pentru a afișa secvența într-un anumit format.
 <​code>​ <​code>​
 student@uso:​~$ seq -f "Star Wars Episode %01g" 3 student@uso:​~$ seq -f "Star Wars Episode %01g" 3
Line 90: Line 94:
  
 ==== Comanda cut ==== ==== Comanda cut ====
-Comanda cut este folosita ​pentru a taia aceeasi sectiune ​din fiecare linie a unui input si afisa aceste ​parti ale liniilor. +Comanda cut este folosită ​pentru a tăia aceeași secțiune ​din fiecare linie a unui input și a afișa aceste ​părți ​ale liniilor. 
-De exemplu, pentru ​urmatorul fisier ​vrem sa afisam ​doar numele filmelor, nu si anul in care au avut loc premiera ​fiecaruia.+De exemplu, pentru ​următorul fișier ​vrem să afișăm ​doar numele filmelor, nu și anul în care avut loc premiera ​fiecăruia.
 <​code>​ <​code>​
 student@uso:​~$ cat asok.txt student@uso:​~$ cat asok.txt
Line 110: Line 114:
 </​code>​ </​code>​
  
-Optiunea ​''​-f''​ se foloseste ​selecta ce coloane din input vrem sa fie afisate, iar optiunea ​''​-d'' ​defineste ​delimitatorul dintre coloane.+Opțiunea ​''​-f''​ se folosește pentru a selecta ce coloane din input vrem să fie afișate, iar opțiunea ​''​-d'' ​definește ​delimitatorul dintre coloane.
  
 ==== Comanda sed ==== ==== Comanda sed ====
-Comanda sed se poate folosi cu mai multe scopuri, sed fiind un stream editor avansat. Se foloseste in principal pentru ​insertii ​sau steregere ​de caractere ​intr-un input.+Comanda sed se poate folosi cu mai multe scopuri, sed fiind un stream editor avansat. Se folosește în principal pentru ​inserții ​sau șteregere ​de caractere ​într-un input.
 <​code>​ <​code>​
 student@uso:​~$ cat text.txt student@uso:​~$ cat text.txt
Line 132: Line 136:
 </​code>​ </​code>​
  
-In exemplul de mai sus, prima aparitie ​de pe fiecare linie a cuvantului ​“unu” este inlocuita ​cu “bani”. Caracterul s care vine imediat ​dupa sed indica operatia ​care se face pe input (substitution)+În exemplul de mai sus, prima apariție ​de pe fiecare linie a cuvântului ​“unu” este înlocuită ​cu “bani”. Caracterul s care vine imediat ​după sed indică operația ​care se face pe input (substitution).
  
-Mai jos sunt schimbate toate aparitiile cuvantului ​“unu”. ​+Mai jos sunt schimbate toate aparițiile cuvântului ​“unu”. ​
 <​code>​ <​code>​
 student@uso:​~$ sed '​s/​unu/​bani/​g'​ text.txt student@uso:​~$ sed '​s/​unu/​bani/​g'​ text.txt
Line 146: Line 150:
 </​code>​ </​code>​
  
-Comanda se poate folosi ​si pentru a sterge ​linii din input.+Comanda se poate folosi ​și pentru a șterge ​linii din input.
  
 <​code>​ <​code>​
Line 157: Line 161:
 </​code>​ </​code>​
  
-Comanda de mai sus sterge ​a treia linie. +Comanda de mai sus șterge ​a treia linie. 
-Mai jos se sterge ​linia care contine cuvantul secventa ​de caractere “cinci”.+Mai jos se șterge ​linia care conține secvența ​de caractere “cinci”.
  
 <​code>​ <​code>​
Line 169: Line 173:
 </​code>​ </​code>​
  
-Folosind regex-uri, putem face pattern matching destul de usor folosind ​aceasta comanda+Folosind regex-uri, putem face pattern matching destul de ușor folosind ​această comandă
-De exemplu, comanda de mai jos sterge ​linia care contine ​string-ul “nu” la inceputul ​unui sir.  ​+De exemplu, comanda de mai jos șterge ​linia care conține ​string-ul “nu” la începutul ​unui șir.  ​
  
 <​code>​ <​code>​
Line 182: Line 186:
  
 ==== Comanda wc ==== ==== Comanda wc ====
-Comanda wc este folosita ​pentru a numara ​liniile, cuvintele sau carcterele dintr-un input.+Comanda wc este folosită ​pentru a număra ​liniile, cuvintele sau carcterele dintr-un input.
  
 <​code>​ <​code>​
Line 194: Line 198:
 </​code>​ </​code>​
  
-4 este numarul ​de linii, 56 este numarul ​de cuvinte, iar 307 este numarul ​de caractere.+4 este numărul ​de linii, 56 este numărul ​de cuvinte, iar 307 este numărul ​de caractere.
  
 ==== for, while, if, else ==== ==== for, while, if, else ====
  
-Inainte ​de a prezenta aceste ​instructiuni, trebuie ​sa intelegem ​ce presupune folosirea caracterului $ in niste situatii.+Înainte ​de a prezenta aceste ​instrucțiuni, trebuie ​să înțelegem ​ce presupune folosirea caracterului ​''​$'' ​in niște situații.
  
-$(command) - se inlocuieste ​cu output-ul comenzii “command”+''​$(command)'' ​- se înlocuiește ​cu output-ul comenzii “command”
 <​code>​ <​code>​
 student@uso:​~$ echo Output-ul este $(echo acesta) student@uso:​~$ echo Output-ul este $(echo acesta)
Line 206: Line 210:
 student@uso:​~$ student@uso:​~$
 </​code>​ </​code>​
-$(var) - valoarea ce se gaseste in variabila var+''​$(var)'' ​- valoarea ce se găsește în variabila var
 <​code>​ <​code>​
 student@uso:​~$ a=5 student@uso:​~$ a=5
Line 215: Line 219:
  
 ==== Instructiunea if ==== ==== Instructiunea if ====
-Sintaxa lui if este urmatoarea:+Sintaxa lui if este următoarea:
  
 <​code>​ <​code>​
Line 223: Line 227:
 fi fi
 </​code>​ </​code>​
-Pe langa aceasta mai putem avea si if-else sau if-elif-else-fi spre exemplu+Pe lângă ​aceasta mai putem avea și if-else sau if-elif-else-fi spre exemplu
 <​code>​ <​code>​
 if [ conditie ] if [ conditie ]
Line 243: Line 247:
 fi fi
 </​code>​ </​code>​
-Mai jos este un exemplu de folosire a unui if intr-un script. Sintaxele diferite de mai sus functioneaza ​la fel ca cele de pe care le stim de la programare. ​In schimb, ​conditiile ​sunt cele care necesita ​un plus de atentie.+Mai jos este un exemplu de folosire a unui if într-un script. Sintaxele diferite de mai sus funcționează ​la fel ca cele pe care le știm de la programare. ​În schimb, ​condițiile ​sunt cele care necesită ​un plus de atenție.
  
 <​code>​ <​code>​
Line 265: Line 269:
 </​code>​ </​code>​
  
-Instructiunile ​for si while pot fi folosite ​atat in cadrul terminalului ​in comenzi, ​dar pot fi folosite si in script-uri. +Instrucțiunile ​for și while pot fi folosite ​atât în cadrul terminalului ​în comenzi, ​cât și în script-uri. 
-Mai jos este un exemplu cu loop-ul for folosit ​intr-o comanda+Mai jos este un exemplu cu loop-ul for folosit ​într-o comandă
  
 <​code>​ <​code>​
Line 290: Line 294:
 student@uso:​~$ student@uso:​~$
 </​code>​ </​code>​
-Script-ul de mai sus afiseaza ​suma numerelor de la 1 la 4. +Script-ul de mai sus afișează ​suma numerelor de la 1 la 4. 
-In acelasi ​mod poate fi folosit ​si while:+În același ​mod poate fi folosit ​și while:
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Line 303: Line 307:
 </​code>​ </​code>​
  
-Script-ul ​afiseaza ​valorile de la 0 la 3+Script-ul ​afișează ​valorile de la 0 la 3
 <​code>​ <​code>​
 student@uso:​~$ ./script.sh student@uso:​~$ ./script.sh
Line 312: Line 316:
 student@uso:​~$ student@uso:​~$
 </​code>​ </​code>​
-Mai jos avem un script care pune la sfarsitul ​liniilor pare dintr-un text un string:+Mai jos avem un script care pune la sfârșitul ​liniilor pare dintr-un text un string:
 <​code>​ <​code>​
 #!/bin/bash #!/bin/bash
Line 327: Line 331:
 done done
 </​code>​ </​code>​
-Se observa ca acest script ​foloseste atat un while, ​cat si un if, precum ​si comanda sed.+Se observă că acest script ​folosește atât un while, ​cât și un if, precum ​și comanda sed.
 <​code>​ <​code>​
 student@uso:​~$ cat text.txt student@uso:​~$ cat text.txt
Line 344: Line 348:
 student@uso:​~$ student@uso:​~$
 </​code>​ </​code>​
- 
- 
- 
- 
uso/cursuri/curs-06.1605542906.txt.gz · Last modified: 2020/11/16 18:08 by ebru.resul
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