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 12:08]
razvan [Construire fișier cu informații binare]
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> <note tip>
Line 255: Line 259:
 xxd myfile.out xxd myfile.out
 </​code>​ </​code>​
-Output-ul este pe două zone: prima zonă sunt afișate datele în format hexazecimal,​ iar în a doua zonă în format ASCII, acolo unde se poate.+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>​
  
Line 261: Line 265:
 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.
  
-În cazul vostru, întrucât vețsări peste blocuri ​din fișierul de ieșire, ​veți folosi ​opțiunea ''​seek''​.+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>​ </​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 271: 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 288: 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.1463648928.txt.gz · Last modified: 2016/05/19 12:08 by razvan