User Tools

Site Tools


linux-admin:capitole:capitol-03

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux-admin:capitole:capitol-03 [2016/09/16 11:33]
mihaic [Bune practici]
linux-admin:capitole:capitol-03 [2016/09/22 10:24] (current)
mihaic [Exercițiu 5]
Line 17: Line 17:
   * Construcția ''​%%$(...)%%''​ versus ''​xargs''​   * Construcția ''​%%$(...)%%''​ versus ''​xargs''​
   * Obținerea listei de fișiere dintr-un director: ''​ls''​ vs. ''​find''​ vs. Bash arrays; ''​for''​ vs. ''​%%$(...)%%''​   * Obținerea listei de fișiere dintr-un director: ''​ls''​ vs. ''​find''​ vs. Bash arrays; ''​for''​ vs. ''​%%$(...)%%''​
-===== Resurse utile ===== 
- 
-  * TODO 
-  * TODO 
  
 ==== Slide-uri ==== ==== Slide-uri ====
  
-[[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​slides/​cap-03.pdf|Slide-uri capitol 3]]+[[http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-03.pdf|Slide-uri capitol 3]]
  
 <​html>​ <​html>​
Line 36: Line 32:
 ==== Demo-uri ==== ==== Demo-uri ====
  
-TODO+Folosirea comenzii ''​find''​ cu diverși parametri pentru a parcurge sistemul de fișiere. Afișarea executabilelor cu bitul de setuid activat din directoarele ce conțin executabile (''/​bin'',​ ''/​sbin'',​ ''/​usr/​bin'',​ ''/​usr/​sbin''​). 
 + 
 + 
 +Folosirea comenzii ''​dd''​ pentru a copia chunk-uri de fișiere. Opțiunile ''​bs'',​ ''​count'',​ ''​skip'',​ ''​seek''​. 
 + 
 +Exemplificarea globbing-ului 
 + 
 +==== Exercițiu 1 ==== 
 + 
 +Dorim să afișăm fișiere după diferite considerente. 
 + 
 +Folosiți ''​find''​ pentru a afișa toate **fișierele** din ierarhia ''/​etc/''​ (adică toate fișierele din ''/​etc/'',​ din subdirectoarele acestuia, din subdirectoarele subdirectoarelor etc.). **Indicație**:​ Folosiți opțiunea ''​-type''​ a comenzii ''​find''​. 
 + 
 +Folosiți ''​find''​ pentru a afișa toate fișierele din ierarhia ''/​etc/''​ al căror nume începe cu litere între ''​a''​ și ''​d''​. **Indicații**:​ Folosiți opțiunea ''​-name''​ a comenzii ''​find''​. Folosiți construcția ''​[a-d]*''​ pentru a indica un șir care începe cu o literă între ''​a''​ și ''​d''​ urmată de orice altceva. 
 + 
 +Folosiți ''​find''​ pentru a afișa toate fișierele din ierarhia ''/​etc/''​ al căror nume începe cu litere între ''​a''​ și ''​d''​ și are extensia ''​.conf''​ (adică se încheie în șirul ''​.conf''​). **Indicație**:​ Porniți de la comanda anterioară și extindeți argumentul transmis opțiunii ''​-name''​. 
 + 
 +Folosiți ''​find''​ pentru a afișa toate fișierele din ierahia ''/​etc/''​ care sunt deținute de utilizatorul ''​root''​ și grupul ''​root''​. **Indicație**:​ Folosiți optiunea ''​-user''​ a comenzii ''​find''​. 
 + 
 +Folosiți ''​find''​ pentru a a afișa toate fișierele din ierahia ''/​etc/''​ care sunt deținute de utilizatorul ''​root''​ și un grup diferit de ''​root''​. **Indicație:​** Folosiți ''​!''​ (semnul exclamării în fața opțiunii necesare pentru a o nega). 
 + 
 +Folosiți ''​find''​ pentru a a afișa toate fișierele din ierahia ''/​etc/''​ pentru care ''​others''​ au permisiuni de orice fel (adică ''​others''​ au **oricare** dintre permisiunile //read//, //write// sau //​execute//​). **Indicații**:​ Urmăriți opțiunea ''​-perm''​ în pagina de manual a comenzii ''​find''​. Urmăriți și exemplele de folosire căutând după șirul ''​EXAMPLES''​. 
 + 
 +Folosiți ''​find''​ pentru a a afișa toate fișierele din ierahia ''/​etc/''​ pentru care ''​others''​ nu au nici un fel de permisiuni (de orice fel: //read//, //write// sau //​execute//​). **Indicație:​** Folosiți ''​!''​ (semnul exclamării în fața opțiunii necesare pentru a o nega). 
 + 
 +==== Exercițiu 2 ==== 
 + 
 +Listați primele 10 **fișiere obișnuite** (//regular files//) din ierarhia ''/​etc''​ (adică din toate directoarele,​ subdirectoarele și subdirectoarele acestora etc.) sortate în ordinea dimesiunii ocupate de fiecare fișier. 
 + 
 +<note tip> 
 +Folosiți ''​find''​ cu opțiunea ''​-exec'',​ ''​stat''​ (cu opțiunea ''​-c''​ și formatul necesar pentru afișarea dimensiunii și numelui ca argument către opțiunea ''​-exec''​ a lui ''​find''​),​ ''​sort''​ și ''​head''​. 
 + 
 +Exemplu de rulare pentru ''​find''​ cu ''​-exec''​ este<​code>​ 
 +find /etc/ -type f -exec ls -l {} \; 
 +</​code>​ 
 +</​note>​ 
 + 
 +==== Exercițiu 3 ==== 
 + 
 +Creați un fișier care să conțină 2048 de octeți de zero (din ''/​dev/​zero''​) urmați de 2048 de octeți aleatori (din ''/​dev/​urandom''​) urmați de 2048 de octeți de zero și apoi urmați de 2048 de octeți din fișierul ''/​bin/​false''​ de la offsetul 4096 al fișierului. 
 + 
 +<note important>​ 
 +Argumentul pentru opțiunile ''​skip''​ și ''​seek''​ ale comenzii ''​dd''​ este dat în număr de blocuri, **nu** în număr de octeți. 
 +</​note>​ 
 + 
 +==== Exercițiu 4 ==== 
 + 
 +Folosiți ''/​dev/​urandom'',​ ''​dd''​ și ''​split''​ pentru a genera, într-un one liner, 100 de fișiere a câte 100 de octeți aleatori cu numele ''​partXYZ.dat''​ unde ''​XYZ''​ sunt valorile 000, 001, ..., 099. Adică ''​part000.dat'',​ ''​part001.dat'',​ ..., ''​part099.dat''​. 
 + 
 +<note tip> 
 +''​dd''​ poate scrie la standard output în **absența** opțiunii ''​of''​. 
 + 
 +''​split''​ poate citi de la standard input dacă se folosește construcția ''​-''​ (semnul minus) pentru numele fișierului. 
 +</​note>​ 
 + 
 +==== Exercițiu 5 ====
  
-TODO+Am văzut în secțiunea de Demo că putem folosi anumite caractere ce țin locul unor bucăți de text, de exemplu caracterul ''​*''​. De exemplu, dacă dorim să listăm toate fișierele din ''/​etc''​ care încep cu stringul ''​ssh''​ putem folosi comanda:
  
-==== TODOExercițiu 1 ====+<code bash> 
 +training@box:~$ ls /etc/ssh* 
 +</​code>​
  
-TODO+După cum observați, caracterul ''​*''​ ține loc pentru %%"​oricâte și orice caractere"​%%. Procedați asemănător și afișați fișierele sau directoarele din ''/​etc''​ cu extensia ''​.conf''​. ​
  
-==== TODO: Exercițiu 2 ====+Realizați o arhivă de tipul ''​zip''​ în directorul ''​home''​ al utilizatorului ''​training''​ (''/​home/​training''​) care să conțină toate fișierele și directoarele din ''/​etc/''​ care conțin stringul ''​conf''​ în numele lor.
  
-TODO+<note tip> 
 +Este foarte probabil ca printre fișierele și directoarele găsite să existe directoare care nu sunt goale. Pentru a arhiva și conținutul acestora trebuie să specificăm acest lucru explicit comenzii ''​zip''​. Căutați în output-ul comenzii 
 +<​code>​ 
 +zip --help 
 +</​code>​ 
 +după opțiunea care trece recursiv prin directoare (//recurse into directories//​). 
 +</​note>​
  
 +Comanda ''​unzip''​ dezarhivează o arhivă ''​.zip''​ dar are și o opțiunea de listare a conținutului acelei arhive fără a o dezarhiva însă. Identificați acea opțiune.
linux-admin/capitole/capitol-03.1474014793.txt.gz · Last modified: 2016/09/16 11:33 by mihaic