Table of Contents

2. Folosirea eficientă a liniei de comandă

TODO

Subiecte abordate

Utilitare folosite

Resurse utile

Slide-uri

Slide-uri capitol 2

Exerciții

Demo-uri

TODO

TODO

Exerciții de încălzire

Scrieți la prompt, fără să rulați, comanda

cd /h

ș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. Se completează la lista de comenzi care încep cu ap

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.

După ce comanda este din nou completă, din aceeași poziție a cursorului, folosiți Ctrl + w și observați ce efect are.

Rulați următoarea comandă:

ping -c 1 google.com > result.out

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 + .. 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:

echo $_

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:

ping -c 1 8.8.8.8

Apăsați Ctrl + r și în noul prompt apărut tastați ping. Mai apăsați o dată Ctrl + r. Observați ce se afișează. Folosiți tasta ENTER. Apoi repeteți primul pas și folosiți ESC. Observați diferența dintre cele două utilizări.

Rulați comanda de schimbare a directorului:

cd /etc

După aceea, folosiți:

cd -
pwd

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/ ?

Folosiți uname pentru a afișa doar versiunea nucleului și a arhitecturii sistemului. (Hint: man uname)

Lucrul cu documentația

Fiecare comandă din Linux este însoțită de pagini de manual. Pentru a accesa manualul editorului vim, folosiți comanda:

man vim

Navigați prin manual folosind PageUp și PageDown.

Pentru a căuta prin manual după cuvântul fork, folosiți:

/fork <ENTER>

Deplasați-vă între aparițiile cuvântului folosind n și N.

Pentru a obține o scurtă descriere referitoare la o comandă, cât și secțiunea din manual în care se află, tastați comanda:

whatis make

După aceea, folosiți comanda:

apropos make

Observați diferența dintre ce returnează fiecare comandă.

Manualele sunt grupate pe secțiuni. Pentru a vedea ce conține fiecare secțiune, consultați manualul utilitarului man:

man man

și consultați tabelul aflat în paragraful Description.

Rulați comanda:

man printf

În ce secțiune se află pagina?

Pentru a afla informații despre funcția de bibliotecă printf, rulați comanda:

man 3 printf

Pentru a determina calea completă către comanda ls, folosiți:

which ls

De cele mai multe ori, comenzile builtin ale shell-ului nu au pagină de manual. Tastați comanda:

type source

Se observă că source este o comandă internă. Folosiți utilitarul help pentru a afla informații despre ea:

help source

Căutați în pagina de manual a comenzii find exemplul de comandă care căută în /sbin și /usr/sbin fișierele cu drept de execuție dar fără drept de citire.

Ce conține secțiunea 5 a paginilor de manual? Aflați informații despre fișierul /etc/passwd.

Determinați comenzile folosite pentru a lucra cu fișiere .zip. Hint: apropos

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.

Alte exerciții

Terminale

În mașina virtuală, după ce vă autentificați, din meniul Applications Menu → Terminal Emulatordeschideți un nou terminal.

Puteți folosi quick run, cu ajutorul scurtăturii Alt-F2 și rulând aplicatia xfce4-terminal.

Pentru exercițiile viitoare, folosiți astfel de terminale.

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

zip files.zip file1 file2

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ă.

Pentru a verifica faptul că avem un conținut adecvat al arhivei folosim comanda

unzip -l <nume-arhiva>.zip

unde <nume-arhiva> este numele arhivei.

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

fdisk -l

În cazul în care sistemul are disc cu suport de GPT, folosiți comanda

gdisk -l /dev/sda

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

which md5sum

Pentru a afla din ce pachet face parte executabilul trebuie să folosiți comanda

dpkg -S /cale/catre/executabil

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:

mkdir -p ~/store/system/
cp /etc/passwd ~/store/system/passwd-copy

Folosiți comanda less pentru a vizualiza conținutul fișierului astfel copiat.

Fiți eficienți, folosiți combinația Alt+. pentru obținerea ultimului argument al ultimei comenzi.

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.

Pentru a descărca fișierul de link-ul de mai sus folosiți comanda

wget http://swarm.cs.pub.ro/~razvan/r

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.

Folosiți-vă de comanda file urmată de numele unui fișier pentru a afla informații despre acel fișier.

Pentru fișiere comprimate LZOP instalați programul lzop folosind comanda:

sudo apt-get install lzop

Pentru fișiere comprimate XZ sau LZMA instalați programul xz-utils folosind comanda:

sudo apt-get install xz-utils

Pentru fișierele comrimate XZ sau LZMA trebuie să modificați numele fișierelor pentru a avea extensia .xz respectiv .lzma.

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 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).

netcat este un utilitar care permite deschiderea de clienți și servere de comunicare în rețea.

Urmăriți sintaxa clientul și a serverului în primele linii ale paginii de manual.

Folosire UDP

Rulați netcat pentru a permite comunicarea peste UDP.

Căutați în pagina de manual după șirul UDP și folosiți opțiunea corespunzătoare.

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.

Urmăriți sintaxa comenzii din pagina de manual pentru a afla cum se pornește un client, respectiv un server.

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ă.