Како користити команду лс за листање датотека и директоријума на Линук-у

Svakodnevno koristimo Linux komandu `ls` bez previše razmišljanja. To je propuštena prilika. Ako obratite pažnju, otkrićete mnoge korisne opcije, uključujući one koje bi trebalo da uvrstite u svoj arsenal komandne linije.

`ls` prikazuje datoteke i direktorijume

Komanda `ls` je verovatno prva komanda sa kojom se većina korisnika Linuxa susreće. Oni koji su često u komandnoj liniji je koriste svakodnevno, često bez razmišljanja. To može objasniti zašto ova komanda ima više mogućnosti nego što većina korisnika shvata. Koristimo je za prikazivanje datoteka kako bismo videli šta se nalazi u direktorijumu. Datoteke prikazujemo u dugom formatu kada želimo da pogledamo dozvole za datoteku. Osim toga, retko joj posvećujemo dodatnu pažnju.

Komanda `ls` je jedna od onih komandi sa mnogo opcija. Možda je to deo problema. Postoji toliko mnogo opcija, kako ih sve pregledati da biste pronašli one korisne? A nakon što ih pronađete, kako ih zapamtiti?

Korisne kombinacije komande `ls` sa nizovima opcija i parametara su idealni kandidati za alijase. Zapravo, u većini distribucija, ono što smatrate „golom“ komandom `ls` je zapravo alijas. Između ostalog, komanda `type` se može koristiti za prikaz osnovne definicije alijasa. Pogledajmo definiciju `ls`:

type ls

Parametar `–color=auto` se automatski uključuje svaki put kada koristite komandu `ls`. To je ono što omogućava različite boje za različite tipove datoteka u listi.

Jednostavni `ls` izlazi

Svako ko je proveo neko vreme koristeći Linux terminal zna da, podrazumevano, `ls` prikazuje datoteke i direktorijume u trenutnom direktorijumu.

ls

Ako želite da se vaš izlaz prikaže u jednoj koloni, koristite opciju `-1` (jedna datoteka po redu):

ls -1

O neobičnom imenu datoteke na vrhu liste ćemo govoriti za trenutak.

Korišćenje `ls` u drugim direktorijumima

Da bi `ls` prikazao datoteke u direktorijumu koji nije trenutni direktorijum, prosledite putanju do direktorijuma komandi `ls` u komandnoj liniji. Takođe možete proslediti više od jednog direktorijuma `ls` komandi i prikazati ih jedan za drugim. Ovde tražimo od `ls` da prikaže datoteke u dva direktorijuma, jednom koji se zove „Help“, a drugom „gc_help“.

ls Help gc_help

Kada `ls` završi sa prikazivanjem sadržaja prvog direktorijuma, prelazi na prikazivanje sadržaja drugog. Štampa ime svakog direktorijuma dok ih obrađuje:

Korišćenje šablona datoteka

Da biste selektivno prikazali skup datoteka, koristite šablonsko podudaranje. Znak pitanja `?` će zameniti bilo koji pojedinačni znak, a zvezdica `*` će zameniti bilo koji niz znakova. Da biste prikazali sve datoteke ili direktorijume koji imaju imena koja počinju sa „ip_“, koristite ovaj format:

ls ip_*

Da biste prikazali datoteke koje imaju ekstenzije „.c“, koristite ovaj format:

ls *.c

Takođe možete koristiti `ls` sa `grep` i koristiti mogućnosti podudaranja šablona komande `grep`. Hajde da potražimo sve datoteke koje imaju string „_pin_“ u svom imenu:

ls | grep _pin_

Ovo je skoro isto kao da koristite `ls` samostalno, sa dva džoker znaka:

ls | grep _pin_
ls *_pin_*

Zašto skoro isto? Obratite pažnju na različite rasporede. `grep` forsira izlaz u formatu jedno ime datoteke po liniji.

Znakovi koji se ne štampaju

Moguće je da naiđete na ime datoteke koje ima znak koji se ne štampa ili kontrolni karakter u svom nazivu. Obično se ovo može desiti kada raspakujete arhivu koju ste preuzeli sa veba ili preuzmete Git repozitorijum, a originalni autor je napravio grešku prilikom kreiranja datoteke, ali to nije primetio.

Naša čudna datoteka je jedna od ovih:

Ako je pogledamo u pretraživaču datoteka i pritisnemo „F2“ da bismo je preimenovali, znaci koji se ne štampaju su predstavljeni neobičnim simbolom.

Možete koristiti opciju `-b` (escape) da biste videli šta naziv datoteke zaista sadrži. Ova opcija dovodi do toga da `ls` koristi escape sekvence C programskog jezika za predstavljanje kontrolnih znakova.

ls -b a*

Otkriveno je da je misteriozni znak znak novog reda, predstavljen u C-u kao `\n`.

Ignorisanje datoteka

Da biste neke datoteke izostavili iz liste, koristite opciju `–hide`. Pretpostavimo da ne želite da vidite rezervne „.bak“ datoteke u listi. Možete koristiti ovu komandu:

ls
ls --hide=*.bak

Datoteke „.bak“ nisu uključene u drugu listu.

Lista dugog formata

Opcija `-l` (duga lista) uzrokuje da `ls` pruži detaljne informacije o svakoj datoteci.

ls -l

Ovde ima mnogo informacija, pa hajde da prođemo kroz njih.

Prva stvar koju `ls` prikazuje je ukupna veličina svih datoteka u listi. Zatim se svaka datoteka ili direktorijum prikazuje u redu za sebe.

Prvi skup od deset slova i crtica su tip datoteke i dozvole vlasnika, grupe i ostalih.

Prvi znak predstavlja tip datoteke. To će biti jedan od:

–: Obična datoteka.
b: Specijalna datoteka bloka.
c: Specijalna datoteka sa znakovima.
d: Direktorijum.
l: Simbolička veza.
n: Mrežna datoteka.
p: Imenovana cev.
s: Utičnica.

Sledećih devet znakova su tri grupe od po tri znaka koji se prikazuju uzastopno. Svaka grupa od tri predstavlja dozvole za čitanje, pisanje i izvršavanje, tim redosledom. Ako je dozvola odobrena, biće prisutno `r`, `w` ili `x`. Ako dozvola nije data, prikazuje se crtica `-`.

Prvi skup od tri znaka su dozvole za vlasnika datoteke. Drugi skup od tri dozvole je za članove grupe, a poslednji skup od tri dozvole je za ostale.

Ponekad je dozvola za izvršenje za vlasnika predstavljena sa `s`. Ovo je setuid bit. Ako postoji, to znači da se datoteka izvršava sa privilegijama vlasnika datoteke, a ne korisnika koji izvršava datoteku.

Dozvola za izvršenje za grupu takođe može biti `s`. Ovo je setgid bit. Kada se ovo primeni na datoteku, to znači da će datoteka biti izvršena sa privilegijama grupe vlasnika. Kada se koristi sa direktorijumom, sve datoteke kreirane u njemu će preuzeti grupne dozvole iz direktorijuma u kome se kreiraju, a ne od korisnika koji kreira datoteku.

Dozvola za izvršenje za ostale ponekad može biti predstavljena sa `t`. Ovo je sticky bit. Obično se primenjuje na direktorijume. Ako je ovo podešeno, bez obzira na privilegije pisanja i izvršavanja koje su postavljene za datoteke u direktorijumu, samo vlasnik datoteke, vlasnik direktorijuma ili root korisnik mogu preimenovati ili izbrisati datoteke u direktorijumu.

Uobičajena upotreba sticky bita je na folderima kao što je `/tmp`. Ovo mogu da pišu svi korisnici na računaru. Sticky bit u direktorijumu osigurava da korisnici – i procesi koje su korisnici pokrenuli – mogu samo preimenovati ili izbrisati svoje privremene datoteke.

Možemo videti sticky bit u direktorijumu `/tmp`. Obratite pažnju na upotrebu opcije `-d` (direktorijum). Ovo dovodi do toga da `ls` izveštava o detaljima direktorijuma. Bez ove opcije, `ls` će izvestiti o datotekama unutar direktorijuma.

ls -l -d /tmp

Broj koji sledi iza dozvola je broj tvrdih veza do datoteke ili direktorijuma. Za datoteku, ovo je obično jedan, ali ako se naprave druge čvrste veze, ovaj broj će se povećati. Direktorijum obično ima najmanje dve čvrste veze. Jedna je veza do samog sebe, a druga je njen unos u roditeljski direktorijum.

Sledeće se prikazuje ime vlasnika i grupe. Nakon njih slede veličina datoteke i datum poslednje izmene datoteke. Na kraju se daje ime datoteke.

Čoveku čitljive veličine datoteka

Imati veličine datoteka u bajtovima nije uvek zgodno. Da biste videli veličine datoteka u najprikladnijim jedinicama (kilobajti, megabajti, itd.) koristite opciju `-h` (čitljivo za ljude):

ls -l -h

Prikaz skrivenih datoteka

Da biste videli skrivene datoteke, koristite opciju `-a` (sve):

ls -l -a

Dva unosa `.` i `..` predstavljaju trenutni direktorijum i roditeljski direktorijum, respektivno. Datoteka pod nazivom `.base_settings` je sada prvi put vidljiva.

Izostavljanje `.` i `..` iz prikaza

Ako ne želite da vaš izlaz bude pretrpan sa `.` i `..` unosima, ali želite da vidite skrivene datoteke, koristite opciju `-A` (skoro sve):

ls -l -A

Skrivena datoteka je i dalje navedena, ali `.` i `..` unosi su potisnuti.

Rekurzivno prikazivanje direktorijuma

Da bi `ls` prikazao datoteke u svim poddirektorijumima, koristite opciju `-R` (rekurzivna).

ls -l -R

`ls` prolazi kroz celo stablo direktorijuma ispod početnog direktorijuma i prikazuje datoteke u svakom poddirektorijumu.

Prikaz UID-a i GID-a

Da biste prikazali ID korisnika i ID grupe umesto korisničkog imena i imena grupe, koristite opciju `-n` (numerički uid i gid).

ls -n

Sortiranje listi

Možete sortirati listu prema ekstenziji, veličini datoteke ili vremenu izmene. Ove opcije ne moraju da se koriste sa formatom duge liste, ali obično ima smisla to učiniti. Ako sortirate po veličini datoteke, ima smisla videti veličine datoteka u listi. Kada sortirate prema tipu ekstenzije, format dugačke liste nije toliko važan.

Da biste sortirali po ekstenziji, koristite opciju `-X` (sortiraj po proširenju).

ls -X -1

Direktorijumi su prvi navedeni (nemaju ekstenzije), a zatim ostali slede po abecednom redu, prema ekstenzijama.

Da biste sortirali prema veličini datoteke, koristite opciju `-S` (sortiraj prema veličini datoteke).

ls -l -h -S

Redosled sortiranja je od najveće do najmanje.

Da biste sortirali listu prema vremenu izmene, koristite opciju `-t` (sortiraj prema vremenu izmene).

ls -l -t

Lista je sortirana po vremenu izmene.

Ako je vreme izmene datoteke unutar tekuće godine, prikazane informacije su mesec, dan i vreme. Ako datum izmene nije bio u tekućoj godini, informacije koje se prikazuju su mesec, dan i godina.

Brz način da dobijete najnovije i najstarije datoteke u direktorijumu je da koristite `ls` sa komandama `head` i `tail`.

Da biste dobili najnoviju datoteku ili direktorijum, koristite ovu komandu:

ls -t | head -1

Da biste dobili najstariju datoteku ili direktorijum, koristite ovu komandu:

ls -t | tail -1

Za obrnuti redosled sortiranja

Da biste obrnuli bilo koji od redosleda sortiranja, koristite opciju `-r` (obrnuto).

ls -l -h -S -r

Lista je sada poređana od najmanje do najveće datoteke.

I ima još toga

Pogledajte stranicu `man` za `ls`, postoji mnogo više opcija. Neke od njih zadovoljavaju pomalo nejasne slučajeve upotrebe, ali s vremena na vreme biće vam drago što znate za njih.

Da li treba da vidite vremenske oznake datoteke sa maksimalnom preciznošću koju Linux može da pruži? Koristite opciju sa punim radnim vremenom:

ls --full-time

Možda želite da vidite inode broj datoteka? Koristite opciju inode:

ls -i

Da li radite na monohromatskom ekranu i želite da uklonite sav rizik od zbunjivanja datoteka za direktorijume i veze? Koristite opciju klasifikovanja i `ls` će dodati jednu od ovih na svaki unos u listi:

/: Direktorijum.
@: Simbolička veza.
|: Imenovana cev.
=: Utičnica.
*: Izvršne datoteke

ls -F

Kopajte malo. Otkrićete da je `ls` bogata riznica i nastavićete da otkrivate dragulje.