Ogni file in Linux è associato a timestamp, che specificano l'ora dell'ultimo accesso, l'ora dell'ultima modifica e l'ora dell'ultima modifica.
Ogni volta che creiamo un nuovo file o modifichiamo un file esistente o i suoi attributi, questi timestamp verranno aggiornati automaticamente.
Il comando touch viene utilizzato per modificare questi timestamp (ora di accesso, ora di modifica e ora di modifica di un file).
1. Crea un file vuoto usando il tocco
Puoi creare un file vuoto usando il comando touch. L'esempio seguente creerà un nuovo file a zero byte denominato tgs.txt.
$ touch tgs.txt
Puoi anche usare l'opzione -c per evitare di creare nuovi file. Se utilizzi l'opzione -c e se un file non esiste, il tocco non creerà il file.
$ touch -c a.txt
Comandi come ls command e find command utilizzano queste informazioni di timestamp per elencare e trovare file.
Puoi anche creare più di 1 file da un singolo comando touch. L'esempio seguente creerà 4 file denominati a, b, c e d.
$ touch a b c d
2. Modifica il tempo di accesso al file usando -a
Possiamo modificare il tempo di accesso di un file usando -a opzione. Per impostazione predefinita, prenderà l'ora di sistema corrente e aggiornerà il campo atime.
Prima dell'esecuzione del comando touch:
$ stat tgs.txt File: `tgs.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2012-10-18 23:58:21.663514407 +0530 Modify: 2012-10-18 23:58:21.663514407 +0530 Change: 2012-10-18 23:58:21.663514407 +0530
$ touch -a tgs.txt
Dopo il comando touch sopra (Si noti che il tempo di accesso è cambiato):
$ stat tgs.txt File: `tgs.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2012-10-19 00:08:23.559514525 +0530 Modify: 2012-10-18 23:58:21.663514407 +0530 Change: 2012-10-19 00:08:23.559514525 +0530
3. Cambia il tempo di modifica del file usando -m
Puoi modificare l'ora di modifica di un file usando l'opzione -m.
$ touch -m *.o
Il metodo sopra può essere utilizzato per modificare il tempo m di tutti i file obj, quando si utilizza l'utilità make.
NOTA:Non è possibile modificare il ctime utilizzando il comando touch
4. Impostazione esplicita del tempo di accesso e modifica utilizzando -t e -d
Invece di prendere il timestamp corrente, puoi specificare esplicitamente l'ora usando le opzioni -t e -d.
Il formato per specificare -t è [[CC]YY]MMDDhhmm[.SS]
$ touch -t [[CC]YY]MMDDhhmm[.SS]
Quanto segue spiega il formato precedente:
- CC – Specifica le prime due cifre dell'anno
- YY – Specifica le ultime due cifre dell'anno. Se il valore di YY è compreso tra 70 e 99, si assume che il valore delle cifre CC sia 19. Se il valore di YY è compreso tra 00 e 37, si presume che il valore delle cifre CC sia 20. È non è possibile fissare la data oltre il 18 gennaio 2038.
- MM – Specifica il mese
- DD – Specifica la data
- hh – Specifica l'ora
- mm – Specifica il minuto
- SS – Specifica i secondi
Ad esempio:
$ touch -a -m -t 203801181205.09 tgs.txt
Verifica la modifica precedente utilizzando il comando stat:
$ stat tgs.txt File: `tgs.txt' Size: 3 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 394283 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/lakshmanan) Gid: ( 1000/lakshmanan) Access: 2038-01-18 12:05:09.000000000 +0530 Modify: 2038-01-18 12:05:09.000000000 +0530 Change: 2012-10-19 00:40:58.763514502 +0530
Puoi anche usare una stringa per cambiare l'ora
Un altro esempio:
$ touch -d "2012-10-19 12:12:12.000000000 +0530" tgs.txt
Per gli sviluppatori, il comando touch sarà davvero utile quando si lavora con i Makefile
5. Copia il timestamp da un altro file usando -r
Puoi anche prendere un file come riferimento e aggiornare l'ora per altri file, in modo che entrambi i file contengano lo stesso tempo.
Il seguente esempio di comando touch aggiornerà il timestamp del file a.txt con il timestamp del file tgs.txt.
$ touch a.txt -r tgs.txt