Școala Web

19 comenzi esențiale de Linux

O listă de comenzi pe care le folosesc destul de des în terminalul de Linux.

Folosesc Linux de ceva ani. Este sistemul în care îmi pornește calculatorul și în care știu că pot să fac orice vreau.
Windows e inutilizabil, în afară de jocuri și ceva aplicații.
MacOS rulează doar pe hardware scump, și e cam limitat.

Însă sunt un utilizator atipic: Prefer să folosesc o interfață grafică (KDE Plasma) decât să fac totul din linie de comandă. Nevoia mă obligă să mai pornesc din-când-în-când și terminal-ul.

În acest articol, vreau să prezint câteva comenzi pe care le știu fără să caut documentație pentru ele.

1. man «coamndă»

Atunci când nu îți amintești sintaxa unei comenzi, ai 2 opțiuni:

  1. Să cauți pe Google
  2. Să rulezi man

Linux vine cu manual pentru cam toate comenzile, iar acest manual îl accesezi prin comanda man, urmată de numele comenzii pentru care vrei să te documentezi.

De exemplu:

man ls

Personal o folosesc atunci când nu rețin sintaxa unei comenzi.

Trebuie să te avertizez că sunt foarte multe informații afișate acolo.

2. Dublu-Tab

Asta nu e comandă propriu-zisă, dar de multe ori poți face auto-complete apăsând de două ori tasta Tab. Asta îmi permite să scriu comenzi mai repede. O folosesc în special pentru completarea numelor de directoare și fișiere.

Cred că mulți sunt speriați de terminal din cauză că nu știu treaba asta.

3. ls -alh «path?»

Comanda ls afișează fișierele din directorul curent, sau dintr-un director pe care îl dai ca parametru.

Eu îl folosesc cu flag-urile:

  • -a
    Face ca fișierele ascunse (care încep cu punct) să fie afișate
  • -l
    Afișează formatul „lung”, adică fișierele apar pe verticală, cu mai multe informații.
  • -h
    Afișează mărimea fișierului în format „human-friendly”

Ca să îmi amintesc parametrii, am reținut numele dat zeului arabilor. Da fapt, nu e nicio problemă dacă scrii ls -alah.

Din răspunsul afișat, extrag destul de multe informații:

  • Permisiunile
    Prima literă îmi spune dacă fișierul este director sau nu.
    Următoarele 3 îmi spun ce permisiuni are userul meu (r-read, w-write, x-execute).
    Apoi încă 3 litere pentru permisiunile grupurilor din care fac parte. Ultimele 3 sunt permisiunile altor utilizatori înregistrați în sistem.
  • Owner-ul
    Mai întâi îmi apare numele user-ului care este owner pe fișier sau director. Apoi numele grupului.
  • Spațiul ocupat
    Datorită faptului că folosesc -h, văd aici abrevierea, în loc să văd numărul de bytes.
  • Data și ora ultimei modificări
  • Numele fișierului
    În unele sisteme, numele poate fi colorat, ceea ce îmi pune în evidență folder-ele și fișierele executabile

4. cd «folder»

Prima comandă pe care am învățat-o, încă de pe vremea MS-DOS. Pur și simplu schimbi directorul.

Dacă vrei să mergi cu un director în sus, folosești ..

cd ..

5. chmod -Rv «permisiuni» «fișiere»

Permisiunile determină cine ce poate să facă unui fișier sau director. Opțiunile sunt 3 în Linux:

  • r (read, citire),
  • w (write, scriere),
  • x (execute, rulare)

Categoriile de useri sunt:

  • u (user-ul care deține fișierul)
  • g (orice user care face parte din grupul fișierului)
  • o (alți useri, care nu fac parte din grupul fișierului)

Când vorbim de useri, în Linux, poate să fie vorba atât de useri care folosesc calculatorul, dar și de useri folosiți de diferite sisteme sau aplicații.
De exemplu, un server web poate rula cu un anumit user (De exemplu www-data), dar acel user nu este unul real care se loghează cu parolă.
De aceea, chiar dacă ești singura persoană care folosește calculatorul, e bine să nu lași permisiuni prea relaxate fișierelor tale.

De multe ori folosesc flag-ul -R pentru a modifica un director și toate sub-directoarele și fișierele din el.

Uneori, ca să fiu sigur că am făcut ce trebuia, folosesc -v, care îmi afișează mai multe informații.

În privința permisiunilor, eu prefer să folosesc formatul cu litere.

# user are în plus permisiunea de a executa
chmod -v u+x file

# group și other nu mai au permisiuni
chmod -v og-rwx file

# grupul poate scrie și citi, dar nu executa
chmod -v g=rw file

# Se pot combina mai multe cu virgulă
chmod -v u+rw,g=r file

# -R intră recursiv în folder
chmod -Rv ugo+r director

6. chown -Rv $UID «fișier»

Pentru a schimba cine deține un fișier sau director, folosesc chown.

De multe ori am nevoie să asignez un fișier la userul cu care sunt logat, așa că folosesc variabila $UID sau $USER.

Grupul îl schimb mai rar, dar dacă am nevoie, sintaxa este: «user»:«grup».

O combinație interesantă e să asignezi un fișier userului și grupului tău:

chown -Rv $UID:$(id -g $UID) folder

7. history

Comanda history îmi arată ce comenzi am rulat. E foarte utilă când rulez mai multe comenzi, iar apoi trebuie să documentez, sau să salvez comenzile pentru uz ulterior.

8. Rularea de executabile (./«fișier»)

Ca să rulezi un fișier executabil, pur și simplu prefixezi numele fișierului cu ./
Asta spre deosebire de CMD-ul de la Windows unde poți să rulezi un executabil doar cu numele, fără altceva.

9. sudo «comandă»

root este userul care poate să facă orice vrea în Linux.

Ar fi o problemă mare de securitate să te loghezi ca root, așa că te loghezi cu user-ul tău, care poate rula comenzi în numele lui root, prefixând comanda cu sudo.

Înainte să ruleze, ți se va cere să introduci parola. E vorba de parola ta de user.

10. echo $variabilă

Comanda echo afișează o linie de text. În linia de comandă, e foarte utilă atunci când vrei să afișezi valoarea unei variabile.

În Bash (limbajul cel mai comun în terminalele Linux), variabilele sunt prefixate de $.

Iată câteva variabile utile:

VariabilăDescriere
$PATHLista de directoare în care există programe ce pot fi executate fără ./
$USERNumele user-ului curent
$PWDCalea directorului curent

11. pwd

Această comandă îmi afișează calea completă a directorului în care sunt. E foarte utilă atunci când am nevoie să o copiez.

12. which «program»

Dacă ai nevoie să știi unde este instalat un program, îi dai numele comenzii which. Condiția e ca acel program să poată fi lansat din terminal.

Folosesc cel mai des pentru a afla dacă un program a fost instalat ca „Snap”, „Flatpack”, sau cu sistemul de pachete al distribuției (de exemplu: apt în Ubuntu). Snap-urile și Flatpack-urile de multe ori au acces restricționat și așa aflu dacă e cazul să caut un anumit program altundeva.

13. cat «fișier»

Afișează conținutul unui fișier. Nu e mult de spus aici.

14. grep «cuvânt» «fișier»

Comanda grep caută cuvântul dat în fișier și afișează liniile în care acel cuvânt apare.

Pentru că fișierul este ultimul parametru, înseamnă că pot să folosesc grep după bară verticală. Astfel, output-ul unei comenzi este dat lui grep, și astfel pot să fac o căutare simplă.

# Caută cuvântul docker în răspuns
history | grep docker

15. tail -f -n 50 «fișier»

Atunci când am un sistem care loghează date într-un fișier, folosesc comanda tail -f «fișier» pentru a afișa textul din fișier, inclusiv textul adăugat după ce am pornit comanda.

Pentru a opri urmărirea, apăs CTRL+C

Parametrul -n 50 face să îmi afișeze ultimele linii scrise în fișier înainte să îl deschid. Altfel se afișează ultimele 10 linii.

Ambii parametri pot fi omiși dacă nu mă interesează o anumită funcționalitate.

16. mkdir -p «folder»

Pentru a crea un folder din linie de comandă, se folosește mkdir.

Uneori am nevoie de flag-ul -p, care face să se creeze toate directoarele părinte.

De exemplu, mkdir A/B/C va da eroare dacă nu există A sau B.
În schimb, mkdir -p A/B/C va crea fără discuții orice director care nu există. Nu va da eroare nici măcar dacă există deja C.

17. cp «sursă» «destinație»

Copiază un fișier.

Dacă destinația este un director, se copiază sursa în acel director.
Altfel, se tratează destinația ca numele clonei.

Pentru a copia directoare, se folosește flag-ul -R

18. mv «sursă» «destinație»

Comportamentul și parametrii sunt asemănătoare comenzii cp, doar că mv șterge sursa.

Se mai poate folosi pentru a redenumi fișiere sau directoare.

19. rm -Rfv «director»

Comanda rm este folosită pentru a șterge fișiere sau directoare.

-R permite ștergerea unui director care nu este gol.

Câteodată se cere confirmare pentru fiecare fișier ce va fi șters, așa că dacă sunt 100% sigur ce vreau să șterg, folosesc și -f.

-v e acolo ca să îmi spună ce s-a șters.

Trebuie mare atenție: fișierele șterse din terminal sunt șterse definitiv. Nu mai trec prin vreun Trash/Recycle Bin, cum se întâmplă în managerele de fișiere.

Comenzi pe care le uit mereu

Comenzile de până acum sunt comenzi pe care le-am reținut în mod natural, lucrând cu ele. Însă sunt unele pe care le uit mereu, poate pentru că nu le folosesc atât de des.

ComandăDescriere
headAfișează primele linii dintr-un fișier. Mereu uit că această comandă există
nlAlternativă la cat, dar afișează și numărul liniei
sortSortează conținutul unui fișier. Un tool foarte puternic, dar care nu se lipește de mine.
awkProcesează datele dintr-un fișier. Împreună cu sort, se pot extrage date interesante din fișiere.
lnCreează un link. Link-urile permit fișierelor să fie în mai multe locații, fără să fie duplicate.
dfAfișează spațiul ocupat de fiecare partiție din sistem.
duAfișează spațiul total ocupat de fișiere și directoare. Îl folosesc atunci când rămân fără spațiu și vreau investighez ce ocupă mult spațiu.
curlAcesta este un program pre-instalat pe multe distribuții. Îi dai un URL și îți descarcă fișierul de acolo.
wgetAlternativă la curl
dateAfișează data și ora curentă. Existența acestei comenzi nu e greu de reținut, dar de multe ori am nevoie să formatez data și uit mereu sintaxa.