ls

ls ispisuje sadržaj direktorijuma. To je verovatno komanda koju ćeš kucati najčešće od svih — i zato vredi znati više od golog ls.

ls [opcije] [putanja]

Bez putanje radi nad tekućim direktorijumom, koji proveravaš sa pwd.

$ ls
beleske.txt  dokumenti  skripta.sh  slike

Kako se čita ls -l

Ovo je najvažniji deo cele stranice.

$ ls -l
-rw-r--r--  1 alen alen   284 Aug 22 10:15 beleske.txt
drwxr-xr-x  3 alen alen  4096 Aug 20 18:02 dokumenti
-rwxr-xr-x  1 alen alen  1024 Aug 21 09:30 skripta.sh
lrwxrwxrwx  1 alen alen    12 Aug 22 11:40 tekuci -> dokumenti

Red po red, kolona po kolona:

  • Prvi znak je tip: - običan fajl, d direktorijum, l simbolički link.
  • Devet znakova posle su dozvole, u tri grupe po tri — vlasnik, grupa, ostali. Kako se to čita, objašnjeno je na stranici Pregled prava pristupa.
  • Broj je broj hard linkova. Kod direktorijuma nije broj fajlova unutra, nego 2 + broj poddirektorijuma — otud 3 za dokumenti. Objašnjenje je u lekciji Inode-ovi i linkovi.
  • Dva imena su vlasnik i grupa.
  • Broj je veličina u bajtovima. Kod direktorijuma to je veličina same tabele imena, a ne sadržaja — zato svi direktorijumi obično pokazuju 4096.
  • Datum je vreme poslednje izmene sadržaja.
  • Ime, a kod linka i strelica ka meti.

Veličine su čitljivije uz -h:

$ ls -lh
-rw-r--r-- 1 alen alen 1,4G Aug 22 10:15 backup.tar.gz
-rw-r--r-- 1 alen alen  284 Aug 22 10:15 beleske.txt

Kombinacije koje ćeš zaista koristiti

U praksi se opcije ne kucaju pojedinačno, nego u ustaljenim kombinacijama.

ls -la — i skriveni fajlovi

$ ls -la
drwxr-xr-x  5 alen alen 4096 Aug 22 11:40 .
drwxr-xr-x 24 root root 4096 Aug 10 08:00 ..
-rw-r--r--  1 alen alen 3771 Aug 15 12:00 .bashrc
-rw-------  1 alen alen  807 Aug 15 12:00 .profile
-rw-r--r--  1 alen alen  284 Aug 22 10:15 beleske.txt

Imena koja počinju tačkom ls podrazumevano preskače. Nema u tome ničeg tajnog — to je dogovor, ne zaštita. Tu žive podešavanja, pa je ls -la prva komanda kad tražiš konfiguraciju u kućnom direktorijumu.

Unosi . i .. nisu smeće nego stvarni zapisi na disku, kao što piše u lekciji Apsolutne i relativne putanje. Ako ti smetaju, -A radi isto što i -a, samo bez njih.

ls -lt — najnovije prvo

$ ls -lt /var/log
-rw-r-----  1 syslog adm  184320 Aug 22 12:31 syslog
-rw-r-----  1 syslog adm   12043 Aug 22 12:28 auth.log
-rw-r--r--  1 root   root  32768 Aug 21 06:25 dpkg.log

Ovo je refleks pri traženju kvara: koji fajl je poslednji menjan. Sa -r se redosled obrne, pa ls -ltr stavlja najnovije na dno — udobno kad je spisak duži od ekrana, jer ono što te zanima ostane pred očima.

ls -lS — najveće prvo

$ ls -lSh
-rw-r--r-- 1 alen alen 1,4G Aug 22 10:15 backup.tar.gz
-rw-r--r-- 1 alen alen  22M Aug 20 14:02 video.mp4

Traži samo u jednom direktorijumu. Za rekurzivno traženje potrošača prostora bolji je du.

ls -ld — o samom direktorijumu

$ ls -l /etc/ssh
total 580
-rw-r--r-- 1 root root   1650 Aug 15 09:00 ssh_config
-rw------- 1 root root   2610 Aug 15 09:00 sshd_config

$ ls -ld /etc/ssh
drwxr-xr-x 4 root root 4096 Aug 15 09:00 /etc/ssh

Bez -d dobijaš sadržaj, sa -d podatke o samom direktorijumu. Neizbežno kad proveravaš dozvole nad direktorijumom, na primer zašto web server ne može da uđe u /var/www.

ls -i — broj inode-a

$ ls -li
1310721 -rw-r--r-- 2 alen alen 284 Aug 22 10:15 original.txt
1310721 -rw-r--r-- 2 alen alen 284 Aug 22 10:15 kopija.txt

Isti broj znači da su to dva imena za isti fajl.

Sitnice koje zbunjuju

Redosled nije onaj koji očekuješ

$ ls
slika1.png  slika10.png  slika2.png

Nije greška — sortira se po znakovima, a znak „1" dolazi pre znaka „2", pa slika10 pretiče slika2. Za ljudski redosled postoji -v:

$ ls -v
slika1.png  slika2.png  slika10.png

Ista logika objašnjava zašto ls slika?.png ne hvata slika10.png — o tome u lekciji Džokeri i navodnici.

Rekurzivno listanje ume da poplavi ekran

$ ls -R /etc | less

Bez pejdžera ispis proleti kroz terminal. Detaljnije o listanju kroz less. A ako tražiš konkretan fajl, find je pravi alat, ne ls -R.

Ispis se menja kad ide kroz cev

$ ls
beleske.txt  dokumenti  skripta.sh

$ ls | cat
beleske.txt
dokumenti
skripta.sh

ls proverava da li piše na terminal. Ako da — ređa u kolone i boji. Ako ne — jedno ime po redu, bez boja. Zato ispis izgleda drugačije čim ga preusmeriš, o čemu ima više na stranici Piping i redirekcija. Ako želiš jedno ime po redu i na ekranu, koristi ls -1 (jedinica, ne malo L).

Ime sa razmakom ili novim redom

Zato se izlaz ls nikada ne obrađuje u skriptama. Ovo puca čim neko ime sadrži razmak:

for f in $(ls); do ...

Ispravno je koristiti džoker ili find:

for f in *; do ...
find . -maxdepth 1 -type f -print0 | xargs -0 ...

Da vidiš problematične znakove u imenima, tu je ls -b.

Boja govori šta je šta

Plavo su direktorijumi, zeleno izvršni fajlovi, cijan simbolički linkovi, a crveno na crnoj podlozi obično slomljen link. Ako boja nema, dodaj --color=auto — ili koristi -F, koje isto značenje prenosi znakovima:

$ ls -F
beleske.txt  dokumenti/  skripta.sh*  tekuci@

Kosa crta je direktorijum, zvezdica izvršni fajl, majmunče simbolički link.

Korisni aliasi

Većina distribucija već ima ll, ali proveri i dodaj u ~/.bashrc ono što ti nedostaje:

alias ll='ls -alhF'
alias lt='ls -ltrh'

Kako aliasi rade i zašto ne postoje na tuđem serveru, piše na stranici alias.

Kratka referenca

  • -l — detaljan prikaz
  • -h — čitljive veličine (ide uz -l)
  • -a — i skriveni fajlovi · -A — bez . i ..
  • -t — po vremenu izmene · -S — po veličini · -v — ljudski redosled brojeva
  • -r — obrnuto sortiranje
  • -d — o samom direktorijumu, ne o sadržaju
  • -i — broj inode-a
  • -R — rekurzivno
  • -1 — jedno ime po redu
  • -F — oznake tipa uz ime

Ceo spisak opcija je u man stranici: man ls.

Vežba

$ cd /var/log
  1. Izlistaj fajlove sortirane tako da je poslednji izmenjen na dnu ekrana.
  2. Pronađi tri najveća fajla, sa čitljivim veličinama.
  3. Proveri dozvole nad samim direktorijumom /var/log, ne nad njegovim sadržajem.
  4. U svom kućnom direktorijumu izlistaj samo skrivene fajlove, bez . i ...

Za četvrti zadatak treba ti kombinacija ls i džokera — a šablon nije očigledan.


Kretanje kroz direktorijume je na stranici cd, a šta je koji sistemski direktorijum na stranici Direktorijumi i fajlovi Linux sistema.

Cela lekcija je deo vodiča Linux osnove.

Comments

Popular posts from this blog

Početak u Linuxu — šta je i zašto se uči

Konverzija tipova podataka u Pythonu

groupadd