Cum să utilizați comanda ls pentru a lista fișiere și directoare pe Linux

Utilizăm frecvent comanda Linux `ls`, adesea fără a-i acorda atenția cuvenită. Acest lucru este regretabil. O analiză mai atentă dezvăluie o multitudine de opțiuni utile, inclusiv câteva care merită adăugate la repertoriul tău de comandă.

ls: Afișarea Fișierelor și a Dosarelor

Comanda `ls` este, probabil, prima interacțiune a majorității utilizatorilor cu sistemul Linux. Cei care lucrează în mod regulat cu linia de comandă o folosesc în mod automat, zi de zi. Acesta ar putea fi motivul pentru care multe dintre facilitățile acestei comenzi sunt adesea ignorate. O folosim pentru a vedea ce se află într-un director, sau în format detaliat pentru a examina permisiunile fișierelor. Dar dincolo de aceste utilizări de bază, potențialul său rămâne neexploatat.

Comanda `ls` oferă o gamă largă de opțiuni. Acest aspect poate fi o parte a problemei. Având atâtea opțiuni disponibile, poate fi dificil să le selectezi pe cele mai utile. Iar după ce le-ai identificat, cum să le reții?

Combinațiile avantajoase ale comenzii `ls`, împreună cu opțiunile și parametrii aferenți, sunt ideale pentru crearea de aliasuri. În realitate, în majoritatea distribuțiilor, comanda `ls` „simplă” este de fapt un alias. Comanda `type` poate fi utilizată pentru a afișa definiția de bază a aliasurilor. Să analizăm definiția lui `ls`:

type ls

Parametrul `–color=auto` este introdus automat de fiecare dată când folosești `ls`. Acesta este responsabil pentru diferențierea prin culoare a diferitelor tipuri de fișiere în liste.

Listări de Bază

Utilizatorii care au experiență cu terminalul Linux știu că, implicit, `ls` afișează fișierele și dosarele din directorul activ.

ls

Pentru a genera o listă cu un fișier pe linie, folosește opțiunea `-1`:

ls -1

Vom discuta despre numele de fișier neobișnuit din partea de sus a listei puțin mai târziu.

Utilizarea `ls` cu Directoare Diferite

Pentru a lista fișierele dintr-un alt director decât cel curent, specifică calea către acel director după comanda `ls`. De asemenea, poți specifica mai multe directoare, iar `ls` le va lista succesiv. Aici, solicităm lui `ls` să afișeze fișierele din două directoare, numite „Ajutor” și „gc_help”.

ls Help gc_help

După ce afișează conținutul primului director, `ls` trece la afișarea celui de-al doilea, indicând numele fiecărui director procesat:

Utilizarea Pattern-urilor de Fișiere

Pentru a afișa selectiv un grup de fișiere, utilizează potrivirea cu pattern-uri. Semnul de întrebare `?` reprezintă un singur caracter, iar asteriscul `*` reprezintă orice secvență de caractere. Pentru a lista orice fișiere sau directoare cu nume care încep cu `ip_`, folosește următorul format:

ls ip_*

Pentru a lista fișierele cu extensia `.c`, folosește acest format:

ls *.c

De asemenea, poți folosi `ls` împreună cu `grep` și beneficia de abilitățile de potrivire a pattern-urilor oferite de `grep`. Să căutăm fișierele care conțin șirul `_pin_` în nume:

ls | grep _pin_

Această metodă este similară cu utilizarea directă a comenzii `ls` cu wildcard-uri:

ls | grep _pin_
ls *_pin_*

De ce similară și nu identică? Observă diferențele de afișare. `grep` forțează listarea unui singur nume de fișier pe linie.

Caractere Neprintabile

Uneori te poți întâlni cu un fișier al cărui nume conține caractere de control sau neprientabile. De obicei, acest lucru se întâmplă când dezarhivezi un fișier descărcat de pe internet, sau când preiei un depozit git unde autorul a creat din greșeală un fișier cu astfel de caractere.

Fișierul nostru cu nume neobișnuit este un exemplu:

În cazul în care, folosind un browser de fișiere, apeși „F2” pentru a redenumi acest fișier, caracterele neprientabile sunt înlocuite cu simboluri ciudate.

Utilizează opțiunea `-b` (escape) pentru a vedea conținutul real al numelui fișierului. Această opțiune instruiește comanda `ls` să utilizeze secvențele de escape din limbajul de programare C pentru a afișa caracterele de control.

ls -b a*

Astfel, caracterul misterios se dezvăluie a fi un caracter newline, reprezentat în C ca `\n`.

Ignorarea Fișierelor

Pentru a exclude anumite fișiere dintr-o listă, folosește opțiunea `–hide`. Să presupunem că nu dorești să vezi fișierele backup `.bak`. Poți folosi această comandă:

ls
ls --hide=*.bak

Fișierele `.bak` sunt omise din a doua listă.

Listare Detaliată

Opțiunea `-l` (listare lungă) instruiește `ls` să afișeze informații detaliate despre fiecare fișier.

ls -l

Avem multe informații aici, deci haide să le analizăm.

Prima informație afișată de `ls` este dimensiunea totală a fișierelor din listă. Apoi, fiecare fișier sau director este afișat pe o singură linie.

Primul set de zece caractere reprezintă tipul fișierului și permisiunile proprietarului, ale grupului și ale altor utilizatori.

Primul caracter indică tipul fișierului și poate fi unul dintre:

–: Fișier obișnuit.
b: Fișier special bloc.
c: Fișier special caracter.
d: Director.
l: Legătură simbolică.
n: Fișier de rețea.
p: Pipe denumit.
s: Socket.

Următoarele nouă caractere sunt grupate în trei seturi de câte trei. Fiecare grup reprezintă permisiunile de citire, scriere și execuție, în această ordine. Dacă permisiunea este acordată, va fi prezent un `r`, `w` sau `x`. Dacă permisiunea este refuzată, se va afișa o cratimă `-`.

Primul set de trei caractere reprezintă permisiunile pentru proprietarul fișierului. Al doilea set reprezintă permisiunile membrilor grupului, iar ultimul set, permisiunile pentru alți utilizatori.

Uneori, permisiunea de execuție pentru proprietar este afișată ca `s`. Acesta este bitul setuid. Dacă este prezent, fișierul va fi executat cu privilegiile proprietarului, nu cu ale utilizatorului care rulează fișierul.

Permisiunea de execuție pentru grup poate fi afișată tot cu `s`. Acesta este bitul setgid. Atunci când este aplicat unui fișier, fișierul va fi executat cu privilegiile grupului proprietarului. În cazul unui director, orice fișiere create în interiorul său vor prelua permisiunile grupului din director, nu de la utilizatorul care le creează.

Permisiunea de execuție pentru ceilalți utilizatori poate fi uneori reprezentată de un `t`. Acesta este bitul sticky. Se aplică frecvent directoarelor. Când este setat, indiferent de permisiunile de scriere și execuție ale fișierelor din director, doar proprietarul fișierului, proprietarul directorului sau utilizatorul root pot redenumi sau șterge fișierele din director.

O utilizare comună a bitului sticky este în directoare precum `/tmp`. Acesta poate fi accesat pentru scriere de toți utilizatorii computerului. Bitul sticky al directorului asigură că utilizatorii și procesele lor pot redenumi sau șterge doar propriile fișiere temporare.

Putem observa bitul sticky în directorul `/tmp`. Observă folosirea opțiunii `-d` (director). Aceasta instruiește `ls` să afișeze detaliile directorului. Fără această opțiune, `ls` ar afișa fișierele din director.

ls -l -d /tmp

Numărul care urmează permisiunilor reprezintă numărul de link-uri hard către fișier sau director. Pentru un fișier, acesta este de obicei unu, dar crește odată cu adăugarea altor link-uri hard. Un director are de obicei cel puțin două link-uri hard, unul către el însuși, și celălalt către intrarea sa în directorul părinte.

Urmează numele proprietarului și al grupului, apoi dimensiunea fișierului și data ultimei modificări. În final, este afișat numele fișierului.

Dimensiuni de Fișiere Ușor de Citit

Dimensiunea fișierelor exprimată în octeți nu este întotdeauna practică. Pentru a vedea dimensiunile fișierelor în unitățile potrivite (kiloocteți, megaocteți, etc.), folosește opțiunea `-h` (human-readable):

ls -l -h

Afișarea Fișierelor Ascunse

Pentru a vizualiza fișierele ascunse, folosește opțiunea `-a` (all):

ls -l -a

Intrările `.` și `..` reprezintă directorul curent și, respectiv, directorul părinte. Un fișier numit `.base_settings` este acum vizibil pentru prima dată.

Omiterea Intrarilor `.` și `..`

Dacă dorești să eviți supraaglomerarea listei cu intrările `.` și `..`, dar vrei să vezi fișierele ascunse, folosește opțiunea `-A` (almost all):

ls -l -A

Fișierele ascunse sunt afișate, dar intrările `.` și `..` sunt omise.

Listarea Recursivă a Directoarelor

Pentru ca `ls` să afișeze fișierele din toate subdirectoarele, utilizează opțiunea `-R` (recursivă).

ls -l -R

`ls` parcurge tot arborele de directoare de sub directorul curent și listează fișierele din fiecare subdirector.

Afișarea UID și GID

Pentru a afișa ID-ul utilizatorului și ID-ul grupului în locul numelui de utilizator și grup, utilizează opțiunea `-n` (numeric uid și gid).

ls -n

Sortarea Listelor

Poți sorta lista după extensie, dimensiunea fișierului sau ora modificării. Aceste opțiuni se pot utiliza și fără formatul de listare lungă, dar este mai util să le combini. Dacă sortezi după dimensiunea fișierului, este logic să vezi și dimensiunile acestuia în listă. Când sortezi după extensie, formatul listării lungi nu este la fel de relevant.

Pentru a sorta după extensie, folosește opțiunea `-X` (sort by extension).

ls -X -1

Directoarele sunt listate primele (fără extensii), apoi restul fișierelor sunt afișate în ordine alfabetică după extensie.

Pentru a sorta după dimensiunea fișierului, utilizează opțiunea `-S` (sort by size).

ls -l -h -S

Ordinea de sortare este de la cel mai mare la cel mai mic.

Pentru a sorta lista după timpul ultimei modificări, utilizează opțiunea `-t` (sort by time).

ls -l -t

Lista este sortată după ora modificării.

Dacă ora modificării fișierului este din anul curent, informațiile afișate sunt luna, ziua și ora. Dacă data modificării a fost dintr-un alt an, sunt afișate luna, ziua și anul.

O metodă rapidă de a obține cele mai recente și cele mai vechi fișiere dintr-un director este folosirea `ls` împreună cu comenzile `head` și `tail`.

Pentru a obține cel mai recent fișier sau director, utilizează această comandă:

ls -t | head -1

Pentru a obține cel mai vechi fișier sau director, utilizează această comandă:

ls -t | tail -1

Inversarea Ordinii de Sortare

Pentru a inversa oricare dintre ordinele de sortare, folosește opțiunea `-r` (reverse).

ls -l -h -S -r

Lista este acum ordonată de la cel mai mic fișier la cel mai mare.

Și Mai Sunt Multe

Consultă pagina de manual a comenzii `ls`, există multe alte opțiuni. Unele dintre ele sunt utile în situații mai rare, dar uneori, vei fi fericit că știi de ele.

Dorești să vezi marcajele de timp ale fișierelor cu precizia maximă permisă de Linux? Utilizează opțiunea `–full-time`:

ls --full-time

Poate dorești să vizualizezi numărul inod al fișierelor? Folosește opțiunea `-i`:

ls -i

Lucrezi pe un ecran monocrom și vrei să eviți orice confuzie între fișiere, directoare și link-uri? Folosește opțiunea de clasificare, iar `ls` va adăuga unul dintre simbolurile de mai jos la fiecare intrare din listă:

/: Director.
@: Legătură simbolică.
|: Pipe denumit.
=: Socket.
*: Fișier executabil

ls -F

Explorează. Vei descoperi că `ls` este o unealtă puternică și vei continua să descoperi noi modalități de a o folosi.