User Tools

Site Tools


medium-unix:capitole:capitol-06

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
medium-unix:capitole:capitol-06 [2016/05/19 11:59]
razvan [Fișiere ordonate după dimensiune]
medium-unix:capitole:capitol-06 [2016/05/19 13:04] (current)
razvan [Generare parole aleatoare]
Line 239: Line 239:
  
 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. 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 tip>
 +Folosim opțiunile ''​skip''​ și ''​seek''​ ale ''​dd''​ pentru a putea sări peste regiuni din fișierul de la intrare și din fișierul de la ieșire. Mai multe informații mai jos.
 +</​note>​
 +
 +<note tip>
 +Sintaxa comenzii poate fi la modul
 +<​code>​
 +dd if=/​dev/​zero of=myfile.out bs=512 count=4
 +</​code>​
 +Comanda de mai sus copiază din fișierul de intrare (''​if'':​ //input file//) ''/​dev/​zero''​ la fișierul de ieșire (''​of'':​ //output file//) ''​myfile.out'',​ un număr (//count//) de ''​4''​ blocuri de dimensiune ''​512''​ (''​bs'':​ //block size//).
 +
 +Pentru exercițiul curent este recomandat să folosiți dimensiunea blocului de ''​2048''​ de octeți (''​bs=2048''​).
 +</​note>​
 +
 +<note tip>
 +Ca să investigăm conținutul binar al unui fișier folosind comanda ''​xxd''​ într-o construcție de forma
 +<​code>​
 +xxd myfile.out
 +</​code>​
 +Output-ul este pe două zone: prima zonă (din stânga) sunt afișate datele în format hexazecimal,​ iar în a doua zonă (din dreapta) în format ASCII, acolo unde se poate.
 +</​note>​
  
 <note important>​ <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. 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>​ 
  
 +Opțiunea ''​seek''​ este pentru a sări peste zone din fișierul de ieșire, iar opțiunea ''​skip''​ este pentru a sări peste zone din fișierul din intrare.
 +</​note>​
 ==== Generare fișiere multiple și conținut aleator ==== ==== 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''​. 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> <note tip>
Line 252: Line 286:
  
 ''​split''​ poate citi de la standard input dacă se folosește construcția ''​-''​ (semnul minus) pentru numele fișierului. ''​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>​ </​note>​
  
 ==== Căutare cu grep ==== ==== Căutare cu grep ====
  
-Folosiți ''​grep''​ pentru a selecta alias-urile cu destinația de forma ''​nume.prenume@gmail.com''​ din fișierul ''​liases''​ din [[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​arc/​cap-06-res.zip|arhiva capitolului]]. Intrările din fișierul ''​aliases''​ se consideră de forma ''​alias:​ destinație''​.+Folosiți ''​grep''​ pentru a selecta alias-urile cu destinația de forma ''​nume.prenume@gmail.com''​ din fișierul ''​aliases''​ din [[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​arc/​cap-06-res.zip|arhiva capitolului]]. Intrările din fișierul ''​aliases''​ se consideră de forma ''​alias:​ destinație''​.
  
 ==== Generare parole aleatoare ==== ==== Generare parole aleatoare ====
Line 269: Line 319:
  
 Actualizați comanda de mai sus pentru a genera ''​20''​ de parola a câte ''​16''​ caractere. Actualizați comanda de mai sus pentru a genera ''​20''​ de parola a câte ''​16''​ caractere.
 +
 +<note important>​
 +Recomandăm să **nu** folosiți ''​for''​ (merge, dar vrem să folosim ''​fold''​ :-P). Vedeți indicațiile legate de folosirea comenzii ''​fold''​ de mai jos.
 +</​note>​
  
 <note tip> <note tip>
-Extrageți ''​20*16 = 320''​ caractere aleatoare și apoi folosiți comanda ''​fmt''​ cu opțiunea ''​-w''​ pentru a le grupa în seturi de câte ''​16''​.+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''​. 
 + 
 +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>​ </​note>​
medium-unix/capitole/capitol-06.1463648391.txt.gz · Last modified: 2016/05/19 11:59 by razvan