Il comando touch è molto utile nell'uso quotidiano, è utile per testare i trasferimenti di file creando file vuoti per il test, avere la capacità di creare file fittizi per fare tutto ciò che vogliamo con loro può aiutare in qualsiasi momento, ad esempio per testare qualsiasi comando Linux che interagisce direttamente con un file, per comandi come pulire, srm, o brandello non vuoi provare file reali.
Quando utilizziamo il comando touch con il nome di un file esistente, touch non creerà un nuovo file ma aggiornerà i timestamp del file. D'altra parte cambiare i timestamp sarebbe utile se vogliamo evitare che qualcuno sappia che abbiamo avuto accesso a un file falsificando la data e l'ora reali in cui è stato effettivamente effettuato l'accesso.
Timestamp
I file Linux hanno 3 timestamp: atime, mtime e ctime.
un tempo: atime contiene informazioni su quando il contenuto del file è stato letto con strumenti o comandi per visualizzare il contenuto del file come less, nano, vi, vim, cat, grep, head e così via. Il timestamp atime cambia e viene aggiornato ogni volta che viene visualizzato il file.
mtime: mtime mostra l'ultima modifica del contenuto di un file, incluso il suo nome, ma non la proprietà o i permessi, solo il file stesso.
ctime: come mtime ctime mostra anche quando un file è stato modificato ma viene aggiornato anche quando la proprietà, il gruppo o l'accesso all'autorizzazione su un file sono stati modificati. Possiamo modificare atime e mtime ma non possiamo modificare ctime, il tempo get viene aggiornato quando vengono modificati i permessi di un file o quando i file vengono realmente letti o modificati
Modifica del timestamp atime:
Prima di vedere i timestamp di un file, creiamolo digitando:
$ touch LinuxHintEmptyFile$ ls
LinuxHintEmptyFile
Dove:
touch = crea un file vuoto chiamato LinuxHintEmptyFIle
ls = elenca i file nella directory
Ora per vedere i timestamp del file nel tipo di terminale
$ stat LinuxHintEmptyFileFile: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 22:57:09.320314528 +0300
Nascita: -
Il comando stat mostra i permessi di accesso, ultimo accesso (atime), ultima modifica (mtime) e ultima modifica (ctime).
Poiché il file è stato creato di recente, la data e l'ora sono le stesse, cambiamo le autorizzazioni del file per vedere la differenza di output della statistica:
$ chmod -777 LinuxHintEmptyFile$ stat LinuxHintEmptyFile
File: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0000/----------) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 23:23:55.968391139 +0300
Nascita: -
Dove:
Chmod -777: rimuove tutti i permessi sul file LinuxHintEmptyFile.
statistica: mostra i timestamp del file
Nell'immagine sopra possiamo vedere che ctime (Change) è stato aggiornato.
Ora modifichiamo il file atime su 1/2/99, digita:
$ touch -a --date="1999-02-01" LinuxHintEmptyFile$ stat LinuxHintEmptyFile
File: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0000/----------) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 00:00:00.00000000 +0200
Modifica: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 23:34:32.964421513 +0300
Nascita: -
Se vuoi anche cambiare il tipo di accesso alla data:
$ touch -a --date="1999-02-01 21:35" LinuxHintEmptyFile$ stat LinuxHintEmptyFile
File: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0000/----------) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 21:35:00.00000000 +0200
Modifica: 14-05-2019 22:57:09.320314528 +0300
Modifica: 14-05-2019 23:42:49.016445166 +0300
Nascita: -
Modifica del timestamp di mtime:
La sintassi per modificare mtime è la stessa, per cambiare ctime in 1989.02.01 tipo:
$ touch -m --date="1989-02-01" LinuxHintEmptyFile$ stat LinuxHintEmptyFile
File: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0000/----------) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 21:35:00.00000000 +0200
Modifica: 1989-02-01 00:00:00.00000000 +0200
Modifica: 14-05-2019 23:49:56.560465553 +0300
Nascita: -
Ora puoi vedere che la data di modifica è stata aggiornata, per aggiornare anche l'ora in modo simile con il tipo atime:
$ touch -m --date="1989-02-01 20:22" LinuxHintEmptyFile$ stat LinuxHintEmptyFile
File: LinuxHintEmptyFile
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766630 Collegamenti: 1
Accesso: (0000/----------) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 21:35:00.00000000 +0200
Modifica: 1989-02-01 20:22:00.00000000 +0200
Modifica: 14-05-2019 23:52:10.156471924 +0300
Nascita: -
Ora creiamo un secondo file e utilizzeremo il comando touch per copiare i timestamp di un file sul secondo:
$ tocca LHFile2$ stat LHFile2
File: LHFile2
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766635 Collegamenti: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 2019-05-15 00:02:14.020500718 +0300
Modifica: 2019-05-15 00:02:14.020500718 +0300
Modifica: 2019-05-15 00:02:14.020500718 +0300
Abbiamo un file accessibile, modificato e modificato il 15/05/2019 00:02:14, per copiare i timestamp del file dal tipo di file LinuxHintEmptyFile:
$ touch -r LinuxHintEmptyFile LHFile2$ stat LHFile2
File: LHFile2
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766635 Collegamenti: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 21:35:00.00000000 +0200
Modifica: 1989-02-01 20:22:00.00000000 +0200
Modifica: 2019-05-15 00:03:11.592503463 +0300
Nascita: -
Come vedi ora entrambi i file condividono gli stessi timestamp.
Se vogliamo cambiare tutti i timestamp con l'ora corrente, dobbiamo solo digitare "touch":
$ stat LHFile2File: LHFile2
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766635 Collegamenti: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 1999-02-01 21:35:00.00000000 +0200
Modifica: 1989-02-01 20:22:00.00000000 +0200
Modifica: 2019-05-15 00:03:11.592503463 +0300
Nascita: -
$ tocca LHFile2
$ stat LHFile2
File: LHFile2
Dimensione: 0 Blocchi: 0 Blocco IO: 4096 file vuoto normale
Dispositivo: 802h/2050d Inode: 13766635 Collegamenti: 1
Accesso: (0644/-rw-r--r--) Uid: ( 1003/linuxhint) Gid: ( 1003/linuxhint)
Accesso: 2019-05-15 00:08:51.652519679 +0300
Modifica: 2019-05-15 00:08:51.652519679 +0300
Modifica: 2019-05-15 00:08:51.652519679 +0300
Nascita: -
Come vedi il secondo statistica mostra l'aggiornamento un tempo, mtime e ctime dopo il comando toccare.
Spero che questo tutorial sia stato utile come introduzione al comando touch, per maggiori informazioni su questo comando digita “tocco dell'uomo”, se hai qualche domanda contattaci aprendo un supporto ticket su LinuxHint Support. Continua a seguire LinuxHint per ulteriori suggerimenti e aggiornamenti su Linux.