User Tools

Site Tools


basic-unix: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
basic-unix:capitole:capitol-03 [2016/05/23 11:27]
razvan [TODO 2]
basic-unix:capitole:capitol-03 [2016/05/23 12:02] (current)
razvan
Line 74: Line 74:
 Vreau să copiez o comandă din terminal fără a folosi mouse-ul. Cum fac? Vreau să copiez o comandă din terminal fără a folosi mouse-ul. Cum fac?
   * **R**: Folosim săgeată sus pentru a prelua comanda lungă anterioară. Apoi vom folosi ''​**Ctrl+a**''​ pentru a ne duce la începutul rândului. Apoi apăsăm ''​**Ctrl+k**''​ pentru a copia toată linia. Observăm că a dispărut. Acum apăsăm ''​**Ctrl+y**''​ (yank).   * **R**: Folosim săgeată sus pentru a prelua comanda lungă anterioară. Apoi vom folosi ''​**Ctrl+a**''​ pentru a ne duce la începutul rândului. Apoi apăsăm ''​**Ctrl+k**''​ pentru a copia toată linia. Observăm că a dispărut. Acum apăsăm ''​**Ctrl+y**''​ (yank).
 +
 +==== Prompt-ul și comenzi simple ====
 +
 +Rulați comanda ''​whoami''​. Ce v-a afișat? Care este utilizatorul curent și care este numele mașinii?
 +
 +Rulați comanda ''​hostname''​ și observați ce afișează.
 +
 +Rulați comanda ''​sudo su''​. Verificați din nou utilizatorul curent cu comanda ''​whoami''​.
 +
 +Părăsiți prompt-ul de ''​root''​ folosind comanda ''​exit''​ sau combinația de taste ''​Ctrl+d''​.
 +
 +==== Comenzi rulate de root ====
 +
 +Rulați, ca utilizator obișnuit, comanda
 +<​code>​
 +ifconfig
 +</​code>​
 +Observați că nu afișează nimic.
 +
 +Apoi, rulați ''​sudo su''​ ca să obțineți un prompt de ''​root''​ și rulați și acolo comanda
 +<​code>​
 +ifconfig
 +</​code>​
 +Observați că acum afișează informații despre rețea.
 +
 +Pentru a identifica această cauză, rulați, în fiecare dintre cele două prompturi (de utilizator obișnuit și de ''​root''​) cele două comenzi de mai jos
 +<​code>​
 +echo $PATH
 +which ifconfig
 +</​code>​
 +
 +==== Comenzi cu argumente ====
 +
 +Aflați informații despre Linux-ul instalat folosind comanda ''​uname''​ cu parametrul (flag-ul) ''​-a''​ sau {{{--all}}}. Ce alte flag-uri are comanda ''​uname''?​
 +
 +Rulați comanda ''​zip''​. Merge fără a avea vreun argument?
 +
 +Creați două fișiere cu comanda ''​touch''​. ''​touch''​ primește ca argumente (număr variabil de argumente) numele fișierelor. Rulati comanda
 +<​code>​
 +touch file1 file2 file3
 +</​code>​
 +
 +Arhivați fișierele //file1// și //file2// într-o arhivă //​files.zip//​. Comanda
 +<​code>​
 +zip files.zip file1 file2
 +</​code>​
 +
 +Rulati comanda ''​zip''​ fără parametri și observați flag-ul de "quiet operation"​.
 +
 +Rulați comanda ''​zip''​ cu flag-ul ''​-q''​ pentru a adăuga și fișierul //file3// la arhivă. Adică rulați
 +<​code>​
 +zip -q files.zip file3
 +</​code>​
 +
 +==== Documentație ====
 +
 +Aflați ce face comanda ''​who''​ folosind utilitarul ''​whatis'':​ ''​whatis who''​. Ce argumente poate primi comanda ''​who''?​
 +
 +<note tip>
 +Folosiți help-ul intern al comenzii: {{{who --help}}}.
 +</​note>​
 +
 +Similar, aflați ce face comanda ''​last''​.
 +
 +Rulați comanda
 +<​code>​
 +id
 +</​code>​
 +
 +Pentru a afișa informații despre utilizatorul curent. Folosiți opțiunea pentru a afișa doar UID-ul utilizatorului. La fel, folosiți opțiunea pentru a afișa doar GID-urile grupurilor din care face parte utilizatorul.
  
 ==== Rulare vimtutor ==== ==== Rulare vimtutor ====
Line 114: Line 184:
 <code bash> <code bash>
 ./hello ./hello
-</​code> ​+</code
 + 
 +==== Afișare mesaje la consolă ==== 
 + 
 +Pentru a afișa mesaje la consolă putem folosi comanda ''​echo'':​ 
 +<​code>​ 
 +echo Hello 
 +echo "​I'​m here"​ 
 +echo -e "​\t1\t2"​ 
 +</​code>​ 
 + 
 +==== Coduri de eroare ==== 
 + 
 +O comandă își poate termina execuția cu succes (status 0) sau cu eroare (status diferit de 0). Într-un terminal statusul cu care s-a încheiat ultima comandă lansată se poate vedea cu ajutorul comenzii: 
 +<​code>​ 
 +echo $? 
 +</​code>​ 
 + 
 +true și false sunt două programe care întotdeauna se termină cu succes, respectiv cu eroare. Testați acest lucru: 
 +<​code>​ 
 +true 
 +echo $? 
 +false 
 +echo $? 
 +</​code>​ 
 + 
 +Folosind operatorii ''&&''​ și ''​||'',​ putem rula o a doua comandă doar dacă prima s-a încheiat cu succes, respectiv eroare. Operatorii se aseamănă cu funcțiile logice AND și OR. 
 + 
 +<​code>​ 
 +true  && echo "​Success"​ 
 +false && echo "​Success"​ 
 +true  || echo "​Fail"​ 
 +false || echo "​Fail"​ 
 +</​code>​ 
 + 
 +Căutați un fișier (folosind ''​locate''​) și afișați pe ecran "​FOUND",​ în cazul în care fișierul a fost găsit. 
 + 
 + 
 +==== Globbing ==== 
 + 
 +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: 
 + 
 +<code bash> 
 +student@uso:​~$ ls /etc/ssh* 
 +</​code>​ 
 + 
 +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''​.  
 + 
 +Realizați o arhivă de tipul ''​zip''​ în directorul ''​home''​ al utilizatorului ''​student''​ (''/​home/​student''​) care să conțină toate fișierele și directoarele din ''/​etc/''​ care conțin stringul ''​conf''​ în numele lor. 
 + 
 +<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. 
 + 
 +==== Lucrul cu fișiere ==== 
 + 
 +Creați trei fișiere, denumite ''​unu'',​ ''​doi''​ și ''​trei''​ în directorul propriu (directorul de tip home) și afişați-le folosind comanda {{{ls}}}. Adăugați apoi parametrul ''​-l''​ comenzii ''​ls''​ pentru a afișa mărimile acestor fișiere. 
 + 
 +Așteptați un minut după crearea fișierelor de mai sus. Folosiți comanda {{{touch}}} pe fișierul {{{unu}}}. Folosiți, din nou, comanda {{{ls -l}}}. Ce observați?​ 
 + 
 +Creați în directorul propriu două directoare denumite ''​dir1''​ și ''​dir2''​. Listați conținutul directoarelor. 
 + 
 +Creați fisierul {{{file.dat}}} care să conțină 10MB de date aleatoare, folosiți comanda 
 +<​code>​ 
 +dd if=/​dev/​urandom of=file.dat bs=1M count=10 
 +</​code>​ 
 + 
 +Comprimare fișierul {{{file.dat}}} pe rând în format {{{gzip}}}, {{{bzip2}}} și {{{zip}}}. Care sunt diferențele de mărime ale arhivelor?​ 
 + 
 +<note tip> 
 +După fiecare comprimare fișierul inițial se șterge în cazul comenzilor ''​gzip''​ și ''​bzip2''​ așa că va trebui să-l regenerați. 
 +</note>
  
 +Aflați cât durează fiecare comandă de comprimare folosind comanda ''​time''​ înaintea oricărei alte comenzi.
basic-unix/capitole/capitol-03.1463992072.txt.gz · Last modified: 2016/05/23 11:27 by razvan