Differences

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

Link to this comparison view

uso:laboratoare:ac:laborator-08:concepts [2022/09/29 11:48]
liza_elena.babu removed
— (current)
Line 1: Line 1:
- 
-===== Concepte ===== 
- 
-^ Comandă ​ ^ Descriere scurtă ​      ^ 
-| **''​cat''​** | afișare conținut fișier | 
-| **''​seq''​** | generare secvență de numere | 
-| **''​grep''​** | extrage linii care conțin o anumită expresie regulată | 
-| **''​cut''​** | extragere anumite coloane | 
-| **''​sed''​** | filtru de text avansat, folosit pentru substituții | 
-| **''​wc''​** | contorizare număr de linii, cuvinte sau caractere | 
-| **''​head''​** | afișare a primelor linii sau caractere | 
-| **''​tail''​** | afișare a ultimelor linii sau caractere | 
-| **''​for''​** | parcurgere listă de elemente pentru aplicarea de comenzi pentru fiecare element în parte | 
-| **''​if''​** | condiție de execuție a unor comenzi | 
-| **''​$(comm)''​** | expandarea unei comenzi (//command expansion//​) - înlocuirea cu output-ul comenzii | 
-| **''​comm1 | comm2''​** | legarea a două comenzi: output-ul primei comenzi devine input pentru cea de-a doua comandă | 
-| **''​$var''​ sau ''​${var}''​** | valoarea variabilei ''​var''​ | 
-| **''​${#​var}''​** | lungimea valorii variabilei ''​var''​ (în caractere) | 
-| **''​${var:​2:​3}''​** | un subșir al valorii variabilei ''​var'':​ de la indexul ''​2''​ se extrag ''​3''​ caractere | 
- 
- 
-Pentru acest laborator vom folosi comenzi și noțiuni prezentate în laboratoarele de până acum în special laboratorul trecut ([[:​uso:​laboratoare:​laborator-07]]). Vor fi puține comenzi nou introduse; cel mai mult ne va interesa cum dându-se o situație practică vom putea folosi shell-ul pentru automatizare. 
- 
-**Automatizarea sarcinilor** se referă la delegarea / degrevarea acțiunilor utilizatorilor către programe în sistemul de calcul. Un program va face automat, de sine stătător, acțiuni pe care le-ar face utilizatorul,​ rezultând în timp mai puțin consumat de utilizator. 
- 
-Acțiunile care sunt candidate pentru automatizare sunt în general acțiuni repetitive, nu foarte simple și neinteractive. Automatizarea acestora va elibera utilizator de la executarea repetată, plictisitoare,​ manuală a acestora. 
- 
-==== Perspective pentru automatizare ==== 
- 
-Automatizarea sarcinilor urmărește eficiență,​ în special temporală. Cu cât face mai rapid acțiuni repetitive, cu atât este mai bine. Acțiunile repetitive necesită interacțiune minimă cu utilizatorul,​ pentru a eficientiza timpul 
- 
-Când automatizăm,​ folosim scripting și folosim funcționalități existente. Un principiu esențial al automatizării este //​don'​t repeat yourself// (nu reinventăm roata). Dacă există comenzi sau funcționalități existente, le folosim pe acelea. Altfel spus, urmărim atât eficiența execuției cât și eficiența dezvoltării. 
- 
-Eficiența execuției o putem realiza nu doar prin scripting ci și prin acțiuni precum: 
-  * folosirea de scurtături de taste 
-  * folosirea funcționalităților de tipul //command completion//​ sau //history search// 
-  * folosirea de alias-uri de comenzi 
-  * folosirea de șabloane: //​globbing//​ sau expresii regulate (//regular expressions//​) 
- 
-Atunci când folosim scripting în shell, ne folosim de funcțioanlități existente ale shell-ului, pe care le vom descrie mai jos. 
- 
-==== Scripting ==== 
- 
-Scripting presupune folosirea unui limbaj interpretat (numit limbaj de scripting). Acesta poate fi un limbaj precum Python sau Perl sau Ruby sau poate fi chiar shell-ul CLI (interpretorul de comenzi). Limbajele de scripting au avantajul **dezvoltării rapide**: adăugăm și testăm rapid funcționalități noi. 
- 
-Shell scripting are avantajul folosirii comenzilor existente în shell (comenzi de lucru cu fișiere, cu procese, comenzi de filtrare de text). Pentru acțiuni rapide (de tipul //​quick'​n'​dirty//​),​ shell scripting este o soluție foarte bună. Atunci când avem prelucrări numerice sau prelucrări de șiruri, shell scripting poate fi insuficient și este indicat să apelăm la un limbaj de scripting mai complet, precum Python sau Ruby sau Perl. 
- 
-==== Funcționalități shell ==== 
- 
-Funcționalitățile shell-ului sunt folosite în eficiența rulării comenzilor și în automatizare. Le-am folosit și amintit pe parcursul ultimelor laboratoare,​ în special în [[:​uso:​laboratoare:​new:​05-cli]]. Astfel de funcționalități sunt: 
-  * redirectarea comenzilor în fișiere, folosind operatorii de redirectare:​ ''​%%>​%%'',​ ''​%%<​%%'',​ ''​%%>>​%%''​ 
-  * redirectarea ieșirii unei comenzi către intrarea altei comenzi: operatorul ''​%%|%%''​ (//pipe//) 
-  * variabile shell 
-  * escaping folosind //​backslash//,​ ghilimele sau apostrofuri 
- 
-Pe parcursul acestui laborator vom folosi funcționalități ale shell-ului care sunt în special folosite în shell scripting: 
-  * expresii regulate 
-  * argumente în linia de comandă 
-  * comenzi interne shell pentru controlul fluxului: ''​if'',​ ''​for'',​ ''​while''​ 
- 
-==== Automatizarea prin shell scripting ==== 
- 
-Automatizarea prin shell scripting presupune în mod uzual **o secvență de comenzi**. Aceste comenzi sunt adăugate într-un script unde vor fi rulate la comun, fără a fi nevoie de rularea manuală a fiecărei comenzi. 
- 
-Pentru a configura rulare unei secvențe de comenzi putem condiționat rularea scriptului folosind **variabile sau argumente în linia de comandă**. Acestea pot genera un comportament diferit al scriptului în funcție de valorile lor. 
- 
-Pe baza variabilor, argumentelor din linia de comanda sau datelor de intrare, un script poate lua **decizii condiționate**. Verificarea unei condiții poate duce la un comportament sau altul. 
- 
-În rularea unui script adesea vom dori ca o acțiune să țintească mai multe fișiere sau procese sau șiruri. Pentru aceasta, vom urmări folosirea de **bucle pentru parcurgerea de liste de elemente**. 
- 
-Comenzile folosite pot primi ca argument sau la intrarea standard ieșirea altor comenzi. În shell scripting folosim funcționalități de înlănțuire a comenzilor precum **//command expansion// sau //​pipe-uri//​** ducând la rezultate mai complexe. 
  
uso/laboratoare/ac/laborator-08/concepts.1664441298.txt.gz · Last modified: 2022/09/29 11:48 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