This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
medium-unix:capitole:capitol-02 [2016/05/16 10:45] razvan [TODO 2] |
medium-unix:capitole:capitol-02 [2016/05/16 20:19] (current) razvan [Resurse utile] |
||
---|---|---|---|
Line 20: | Line 20: | ||
* TODO | * TODO | ||
+ | ==== Slide-uri ==== | ||
+ | |||
+ | [[http://koala.cs.pub.ro/training/res/medium-unix/slides/cap-02.pdf|Slide-uri capitol 2]] | ||
+ | |||
+ | <html> | ||
+ | <center> | ||
+ | <iframe src="http://docs.google.com/viewer?url=http://koala.cs.pub.ro/training/res/medium-unix/slides/cap-02.pdf&embedded=true" width="600" height="470" style="border: none;"></iframe> | ||
+ | </center> | ||
+ | </html> | ||
===== Exerciții ===== | ===== Exerciții ===== | ||
Line 28: | Line 37: | ||
TODO | TODO | ||
- | ==== Exerciții ==== | + | ==== Exerciții de încălzire ==== |
- | Scrieți la prompt: <code bash> | + | Scrieți la prompt, fără să rulați, comanda<code bash> |
cd /h | cd /h | ||
- | </code> și apoi folosiți tasta {{{TAB}}} pentru autocompletare. | + | </code> și apoi folosiți tasta {{{TAB}}} pentru autocompletare. Se completează la ''cd /home''. |
- | Pentru listarea tuturor comenzilor ce încep cu {{{ap}}}, scrieți acest prefix în terminal și folosiți de două ori consecutiv tasta {{{TAB}}}. | + | Pentru listarea tuturor comenzilor ce încep cu {{{ap}}}, scrieți acest prefix în terminal și folosiți de două ori consecutiv tasta {{{TAB}}}. Se completează la lista de comenzi care încep cu ''ap'' |
- | Folosiți combinația de taste {{{Ctrl + a}}} pentru a vă deplasa la începutul comenzii. Similar, folosiți {{{Ctrl + e}}} pentru a vă deplasa înapoi la finalul comenzii. | + | Scieți comanda ''apt-get install nmap'', fără să o executați. Folosiți combinația de taste {{{Ctrl + a}}} pentru a vă deplasa la începutul comenzii. Similar, folosiți {{{Ctrl + e}}} pentru a vă deplasa înapoi la finalul comenzii. Folosind săgețile, plasați cursorul după cuvântul {{{get}}}. După aceea, folosiți combinația {{{Ctrl + k}}}. Observați efectul. |
- | + | ||
- | Folosind săgețile, plasați cursorul după cuvântul {{{get}}}. După aceea, folosiți combinația {{{Ctrl + k}}}. Observați efectul. | + | |
După ce comanda este din nou completă, din aceeași poziție a cursorului, folosiți {{{Ctrl + w}}} și observați ce efect are. | După ce comanda este din nou completă, din aceeași poziție a cursorului, folosiți {{{Ctrl + w}}} și observați ce efect are. | ||
Line 46: | Line 53: | ||
</code> | </code> | ||
- | După aceea, folosiți combinația de taste {{{Alt + .}}} (adică țineți apăsat tasta ''Alt'' și apoi apăsați tasta ''.'' (punct)). Observați efectul acesteia. | + | După aceea, folosiți combinația de taste {{{Alt + .}}} (adică țineți apăsat tasta ''Alt'' și apoi apăsați tasta ''.'' (punct)). Observați efectul acesteia: completează ultimul argument al ultimei comenzi. |
- | Folosiți de mai multe ori {{{Alt + .}}}. Care este rezultatul? | + | Folosiți de mai multe ori {{{Alt + .}}}. Rezultatul este parcurgerea ultimului argument al ultimelor comenzi la fiecare apăsare |
Ștergeți ce s-a afișat la punctul anterior. Rulați comanda: <code bash> | Ștergeți ce s-a afișat la punctul anterior. Rulați comanda: <code bash> | ||
echo $_ | echo $_ | ||
- | </code> Care este diferența față de {{{Alt + .}}}? | + | </code> Diferența față de ''Alt + .'' este că este neinteractiv și că nu afișează expandarea acelui argument. |
În același terminal în care ați tastat comenzile de mai sus, rulați comanda: <code bash> | În același terminal în care ați tastat comenzile de mai sus, rulați comanda: <code bash> | ||
Line 67: | Line 74: | ||
cd - | cd - | ||
pwd | pwd | ||
- | </code> Observați ce efect are. | + | </code> Observați ce efect are: schimbă directorul în directorul anterior. |
Rulați comanda {{{ls /var/cache/apt/archives/}}} (utilizând cât mai mult command completion). Ce comandă vă permite schimbarea cât mai eficientă în directorul {{{/var/cache/apt/archives/}}} ? | Rulați comanda {{{ls /var/cache/apt/archives/}}} (utilizând cât mai mult command completion). Ce comandă vă permite schimbarea cât mai eficientă în directorul {{{/var/cache/apt/archives/}}} ? | ||
Line 126: | Line 133: | ||
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. | 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. | ||
- | ==== TODO 2 ==== | ||
- | TODO | + | ==== Alte exerciții ==== |
+ | |||
+ | === Terminale === | ||
+ | |||
+ | În **mașina virtuală**, după ce vă autentificați, din meniul ''Applications Menu -> Terminal Emulator''deschideți un nou **terminal**. | ||
+ | |||
+ | Puteți folosi quick run, cu ajutorul scurtăturii **Alt-F2** și rulând aplicatia **xfce4-terminal**. | ||
+ | |||
+ | <note> | ||
+ | Pentru exercițiile viitoare, folosiți astfel de terminale. | ||
+ | </note> | ||
+ | |||
+ | === Prompt-ul și comenzi simple === | ||
+ | |||
+ | Rulați comanda ''whoami''. Observați **prompt-ul** și determinați utilizatorul curent și care este numele mașinii. | ||
+ | |||
+ | Rulați comanda ''hostname'' și observați ce afișează. | ||
+ | |||
+ | Rulați comanda ''sudo su'' și observați schimbările prompt-ului. Verificați din nou utilizatorul curent cu comanda ''whoami''. | ||
+ | |||
+ | === Comenzi cu argumente === | ||
+ | |||
+ | Aflați informații despre Linux-ul instalat folosind comanda ''uname'' cu opțiunea ''-a'' sau {{{--all}}}. Folosiți o opțiune adecvată pentru a afișa doar versiunea arhitecturii sistemului de calcul. | ||
+ | |||
+ | Rulați comanda ''zip'' fără argumente și observați că nu funcționează fără argumente. | ||
+ | |||
+ | Creați două fișiere (''file1'' și ''file2'') cu comanda ''touch''. ''touch'' primește ca argumente (număr variabil de argumente) numele fișierelor. | ||
+ | |||
+ | Arhivați fișierele //file1// și //file2// într-o arhivă //files.zip// folosind comanda | ||
+ | <code> | ||
+ | zip files.zip file1 file2 | ||
+ | </code> | ||
+ | |||
+ | Rulati comanda ''zip'' fără parametri și determinați opțiunea de "quiet operation". | ||
+ | Rulați comanda ''zip'' cu acea opțiune pentru a **adăuga** și un fișier //file3// la arhivă. | ||
+ | |||
+ | <note tip> | ||
+ | Pentru a verifica faptul că avem un conținut adecvat al arhivei folosim comanda | ||
+ | <code> | ||
+ | unzip -l <nume-arhiva>.zip | ||
+ | </code> | ||
+ | unde ''<nume-arhiva>'' este numele arhivei. | ||
+ | </note> | ||
+ | |||
+ | === Documentație === | ||
+ | |||
+ | Aflați ce face comanda ''who'' folosind utilitarul ''whatis'': ''whatis who''. Folosiți help-ul intern al comenzii: {{{who --help}}} pentru a vedea ce opțiuni poate primi comanda ''who''. | ||
+ | |||
+ | Similar, aflați ce face comanda ''last''. Căutați în pagina de manual (rulați {{{man last}}}) după cuvântul cheie "full" (tastați "/full") pentru a afla flag-ul care afișeaza data și ora în format complet. Rulați comanda ''last'' cu parametrul aflat. | ||
+ | |||
+ | ==== Folosire eficientă a liniei de comandă ==== | ||
+ | |||
+ | Pentru a deschide un tab nou de terminal folosiți scurtătura ''Ctrl+Shift+t''. Închideți tab-urile nou deschise folosind scurtătura ''Ctrl+d''. | ||
+ | |||
+ | Vreți să afișați discurile sistemului.Rulați comanda<code bash> | ||
+ | fdisk -l | ||
+ | </code> În cazul în care sistemul are disc cu suport de GPT, folosiți comanda <code bash> | ||
+ | gdisk -l /dev/sda | ||
+ | </code> | ||
+ | Vă dați seama că trebuie să rulați sub ''sudo''. Ce faceți? (gândiți-vă la eficiență) | ||
+ | |||
+ | Vreți să aflați informații despre executabilul aferent comenzii ''md5sum''. Întâi aflați care este calea către executabilul aferent comenzii. Pentru aceasta rulați comanda<code bash> | ||
+ | which md5sum | ||
+ | </code> | ||
+ | Pentru a afla din ce pachet face parte executabilul trebuie să folosiți comanda<code bash> | ||
+ | dpkg -S /cale/catre/executabil | ||
+ | </code> | ||
+ | Contrucția ''$(comanda)'' vă întoarce rezutaltul comenzii ''comanda''.Ce faceți? (gândiți-vă la eficiență) | ||
+ | |||
+ | Rulați comenzile de mai jos pentru a crea un director nou și pentru a face o copie a fișierului ''/etc/passwd'':<code bash> | ||
+ | mkdir -p ~/store/system/ | ||
+ | cp /etc/passwd ~/store/system/passwd-copy | ||
+ | </code> | ||
+ | Folosiți comanda ''less'' pentru a vizualiza conținutul fișierului astfel copiat. | ||
+ | |||
+ | <note tip> | ||
+ | Fiți eficienți, folosiți combinația ''Alt+.'' pentru obținerea ultimului argument al ultimei comenzi. | ||
+ | </note> | ||
+ | |||
+ | Rulați încă o dată comanda care afișa din ce pachet face parte utilitarul ''md5sum''. Fiți eficienți, căutați în istoricul de comenzi. | ||
+ | |||
+ | ==== Find the secret messages ==== | ||
+ | |||
+ | Folosiți fișierul de la link-ul http://swarm.cs.pub.ro/~razvan/r și aflați mesajele secrete. | ||
+ | |||
+ | <note tip> | ||
+ | Pentru a descărca fișierul de link-ul de mai sus folosiți comanda<code> | ||
+ | wget http://swarm.cs.pub.ro/~razvan/r | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Este un joc de tipul păpușă rusească (matroshka) în care aveți arhivă în arhivă în arhivă etc. La final veți ajunge la un fișier text cu un mesaj dat. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Folosiți-vă de comanda ''file'' urmată de numele unui fișier pentru a afla informații despre acel fișier. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Pentru fișiere comprimate LZOP instalați programul ''lzop'' folosind comanda:<code> | ||
+ | sudo apt-get install lzop | ||
+ | </code> | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Pentru fișiere comprimate XZ sau LZMA instalați programul ''xz-utils'' folosind comanda:<code> | ||
+ | sudo apt-get install xz-utils | ||
+ | </code> | ||
+ | |||
+ | Pentru fișierele comrimate XZ sau LZMA trebuie să modificați numele fișierelor pentru a avea extensia ''.xz'' respectiv ''.lzma''. | ||
+ | </note> | ||
+ | |||
+ | ==== Generare și folosire imagine ISO ==== | ||
+ | |||
+ | Vrem să creăm o imagina ISO pentru toate fișierele dn ierarhia ''/etc''. | ||
+ | |||
+ | Creați un fișier ''etc.iso'' folosind comanda ''genisoimage'' care să conțină fișierele din ierarhia ''/etc''. | ||
+ | |||
+ | Apoi montați imaginea ISO pentru a valida structura corectă a fișierului ''.iso''. Folosiți indicațiile de [[http://askubuntu.com/a/193632|aici]]. | ||
+ | |||
+ | ==== Comunicare în rețea folosind netcat ==== | ||
+ | |||
+ | Folosiți ''netcat'' pentru a porni, pe un tab de terminal, un server și pe alt tab de | ||
+ | terminal un client conectat la acel server, pe ''localhost'' (''127.0.0.1''). | ||
+ | |||
+ | <note> | ||
+ | ''netcat'' este un utilitar care permite deschiderea de clienți și servere de comunicare în rețea. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Urmăriți sintaxa clientul și a serverului în primele linii ale paginii de manual. | ||
+ | </note> | ||
+ | |||
+ | === Folosire UDP === | ||
+ | |||
+ | Rulați ''netcat'' pentru a permite comunicarea peste UDP. | ||
+ | |||
+ | <note tip> | ||
+ | Căutați în pagina de manual după șirul ''UDP'' și folosiți opțiunea corespunzătoare. | ||
+ | </note> | ||
+ | |||
+ | ==== Verificare lățime de bandă folosind iperf ==== | ||
+ | |||
+ | Folosiți utilitarul ''iperf'' pentru a porni un client și un server și pentru a verifica lățimea de bandă pe ''localhost''. | ||
+ | |||
+ | <note tip> | ||
+ | Urmăriți sintaxa comenzii din pagina de manual pentru a afla cum se pornește un client, respectiv un server. | ||
+ | </note> | ||
+ | |||
+ | Porniți întâi serverul. | ||
+ | |||
+ | Ca argument pentru client (pentru conectare la server) folosiți ''localhost'' (stația locală). Durează circa ''10'' secunde de comunicare între client și server pentru stabilirea lățimii de bandă. | ||