User Tools

Site Tools


basic-unix:capitole:capitol-09

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
basic-unix:capitole:capitol-09 [2016/05/15 22:06]
razvan [X. TODO]
basic-unix:capitole:capitol-09 [2016/05/27 11:22] (current)
razvan [Generare parole aleatoare]
Line 1: Line 1:
 ====== 9. Aplicații practice ====== ====== 9. Aplicații practice ======
  
-TODO+Ne propunem să folosim comenzi și înlănțuirea comenzilor pentru a realiza funcționalități practice la niveul liniei de comandă.
  
-===== Subiecte abordate ​=====+===== Resurse utile =====
  
-  * TODO 
   * TODO   * TODO
   * TODO   * TODO
  
-==== Utilitare folosite ​====+===== Exerciții =====
  
-  * TODO +==== Fișiere ordonate după dimensiune ====
-  * TODO +
-  * TODO+
  
-===== Resurse utile =====+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.
  
-  * TODO +<note tip> 
-  * TODO+Folosiți find pentru a extrage fișierele. Apoi folosiți expandarea comenzii și ''​stat''​ pentru a afișa doar numele și dimensiunea fișierului. Adică o construcție de forma 
 +<​code>​ 
 +stat -c ... $(find ...) 
 +</​code>​
  
-===== Exerciții =====+Apoi filtrați output-ul comenzii de mai sus cu ajutorul comenzii ''​sort''​ pentru a sorta **numeric** în funcție de dimensiunea fișierului. Adică o construcție de forma: 
 +<​code>​ 
 +stat -c ... $(find ...) | sort ... 
 +</​code>​ 
 + 
 +Apoi filtrați output-ul prin comanda ''​tail''​ pentru a extrage doar primele ''​10''​ fișiere, în ordinea dimensiunii. Adică o construcție de forma: 
 +<​code>​ 
 +stat -c ... $(find ...) | sort ... | tail 
 +</​code>​ 
 +</​note>​ 
 + 
 +==== Generare fișiere multiple și conținut aleator ​==== 
 + 
 +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 important>​ 
 +**Nu** este nevoie să creați fișiere. Le creează comanda ''​split''​. 
 + 
 +**Nu** este nevoie de ''​for'',​ ''​seq''​ sau ''​touch''​. 
 +</​note>​ 
 + 
 +<note tip> 
 +Pentru a genera ''​100''​ de fișiere a câte ''​100''​ de octeți va trebui să generați cu comanda ''​dd''​ conținut de ''​100 x 100 10000''​ (zece mii) de octeți. 
 +</​note>​ 
 + 
 +<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. 
 + 
 +Adică veți trece output-ul comenzii ''​dd''​ în input-ul comenzii ''​split''​. 
 + 
 +Adică trebuie să aveți o construcție de forma 
 +<​code>​ 
 +dd if=/​dev/​urandom bs=... count=... | split ... - <​prefix>​ 
 +</​code>​ 
 +Folosiți ca **ultimele** două argumente pentru comanda ''​split''​ construcția ''​-''​ (semnul minus) însemnând că citește de la standard input și ''<​prefix>''​ reprezentând prefixul pe care vreți să îl puneți fișierelor nou create, adică șirul ''​part''​. 
 + 
 +Pentru ''​split''​ trebuie să folosiți opțiunile care: 
 +  * specifică cât de mulți octeți să fie în fiecare fișier generat 
 +  * specifică prefixul fișierelor nou create (în cazul nostru ''​part''​) 
 +  * specifică sufixul suplimentar al fișierelor nou create (în cazul nostru ''​.dat''​ 
 +  * specifică faptul că se folosește sufix numeric (''​XYZ''​ este numeric) 
 +  * specifică faptul că se folosește sufix pe 3 caractere (''​XYZ''​ are trei caractere) 
 + 
 +</​note>​ 
 + 
 +==== Generare parole aleatoare ==== 
 + 
 +Folosiți conținutul fișierului ''/​dev/​urandom''​ pentru a genera o parolă aleatoare de 16 caractere.
  
-==== Demo-uri ====+<note tip> 
 +Folosiți comanda ''​tr''​ cu opțiunile ''​-d''​ și ''​-c''​ pentru a extrage doar caractere tipările (litere mici, litere mari, numere).
  
-TODO+Folosiți comanda ''​head''​ cu opțiunea ''​-c''​ pentru a extrage doar ''​16''​ caractere din output-ul anterior. 
 +</​note>​
  
-TODO+Actualizați comanda de mai sus pentru a genera ''​20''​ de parola a câte ''​16''​ caractere.
  
-==== TODO 2 ====+<note tip> 
 +Pentru a sparge un șir lung în linii, puteți folosi comanda ''​fold''​.
  
-TODO+Comanda ''​fold''​ împarte informațiile primite la intrarea standard în linii pe care le afișează la ieșirea standard. Poate să extragă linii de dimensiune dată. Uzual se folosește în forma 
 +<​code>​ 
 +<​command>​ | fold 
 +</​code>​ 
 +unde ''<​command>''​ este o comandă care generează informații pe care apoi să le prelucreze comanda ''​fold''​.
  
-==== TODO 2 ====+Extrageți ''​20*16 ​320''​ caractere aleatoare și apoi folosiți comanda ''​fold''​ cu opțiunea ''​-w''​ pentru a le grupa în seturi de câte ''​16''​. Adică o construcție de forma 
 +<​code>​ 
 +cat /​dev/​urandom | ... | fold -w 16 
 +</​code>​ 
 +</​note>​
  
-TODO+==== Arhiva .tar.bz2 ====
  
 +<​code>​
 +tar -c -j -f top-files.tar.bz2 $(stat -c "%n %s" $(find /​usr/​share/​man -type f) | sort -k 2n | tail -20 | cut -d ' ' -f 1) $(stat -c "%n %s" $(find /etc -type f) | sort -k 2n | tail -30 | cut -d ' ' -f 1)
 +</​code>​
basic-unix/capitole/capitol-09.1463339160.txt.gz · Last modified: 2016/05/15 22:06 by razvan