Naredbe za koje (možda) niste znali 12: touch

Naredbu touch ste vjerojatno vidjeli u nekim skriptama, ali vas nije zanimalo što radi (ili vam jednostavno nije bilo jasno što bi ta naredba trebala raditi). Naredba touch ima, ukratko rečeno, dvije funkcije: može kreirati praznu datoteku, ili promijeniti vrijeme kreiranja bilo koje datoteke. Za što nam ta funkcionalnost uopće treba?

Kreiranje prazne datoteke ćemo najčešće rabiti kada neki program zahtijeva da određena datoteka već postoji, makar bila prazna. Tipičan primjer su daemoni, koji se često uopće neće pokrenuti, ili neće ništa zapisivati u svoje logove ukoliko njihova vlastita log datoteka ne postoji. Tada ćemo jednostavno kreirati log datoteku sa:

debian# touch datoteka.log
debian# ls -l
-rw-r--r-- 1 root root 0 Mar 23 12:56 datoteka.log

U ovakvim slučajevima će možda biti potrebno promijeniti i vlasništvo nad datotekom pomoću naredbe chown i chgrp. Moguće je odmah kreirati i više datoteka:

debian# touch datoteka1 datoteka2 datoteka3...

Drugi razlog zašto bi htjeli kreirati praznu datoteku se može naći u skriptama, koje na ovaj način kreiraju vremenske referentne datoteke (timestamp datoteke). Na ovaj način skripta može provjeriti, primjerice, koliko dugo se izvršava, može preživjeti restart poslužitelja ili vlastito "rušenje", što nije slučaj s internim načinom računanja vremenskih perioda.

Vrijeme kreirane datoteke možemo, osim s naredbom ls, provjeriti pomoću naredbe stat.

U slučaju potrebe, moguće je promijeniti originalne podatke o vremenu kreiranja datoteke:

debian# touch datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Mar 23 13:17 datoteka.log

Kao što se može vidjeti, vrijeme je promijenjeno na vrijeme koje je bilo u trenutku izvršavanja naredbe. No, vrijeme se može postaviti na proizvoljnu vrijednost:

debian# touch -t 200012312359.59 datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Dec 31 2000 datoteka.log

Datum smo postavili na 31. prosinca 2000, a vrijeme točno u 23 sata, 59 minuta i 59 sekundi. Format upisa vremena je [[CC]YY]MMDDhhmm[.ss], dakle moguće je rabiti samo kraći oblik mjesec:dan:sat:sekunda.

Također, možemo selektivno odabrati koje ćemo vrijeme mijenjati, sa opcijom -a mijenjamo samo ATIME (access time, ako je omogućen na particiji), a s opcijom -m mijenjamo samo MTIME (modification time):

debian# touch -a datoteka.log
debian# ls -lu datoteka.log
-rw-r--r-- 1 root root 0 Mar 23 13:48 datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Dec 31 2000 datoteka.log

Promijenili smo samo vrijeme pristupa datoteci (ATIME možemo vidjeti s naredbom ls -lu, dok je MTIME vidljiv već sa standardnim ls -l). Promijenimo sada samo MTIME vrijeme:

debian# touch -m datoteka.log
debian# ls -lu datoteka.log
-rw-r--r-- 1 root root 0 Mar 23 13:48 datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Mar 23 13:50 datoteka.log

Možemo vidjeti da je sada MTIME vrijeme kasnije od ATIME vremena.

Naredba touch omogućava da novo vrijeme datoteke postavite po već postojećoj datoteci, primjerice:

debian# ls -l /etc/hosts
-rw-r--r-- 1 root root 628 Mar 19 2009 /etc/hosts
debian# touch -r /etc/hosts datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Mar 19 2009 datoteka.log

Opcijom -r smo postavili smo ATIME i MTIME po datoteci /etc/hosts (mogli smo naravno, odabrati bilo koju drugu datoteku).

Što se tiče naredbe touch, ovo bi bilo uglavnom sve, no spomenut ćemo još i opciju -d, koja će biti lakša korisnicima s engleskog govornog područja, jer prima drugačiji format datuma:

debian# touch -d "October 10 1999 10:10" datoteka.log
debian# ls -l datoteka.log
-rw-r--r-- 1 root root 0 Oct 10 1999 datoteka.log

Pretpostavljamo da će se većina vas ipak držati "čistog" numeričkog načina zadavanja formata datuma.

Naredba touch je dio paketa coreutils.

Kuharice: 
Kategorije: 
Vote: 
4
Vaša ocjena: Nema Average: 4 (1 vote)