Comando touch in Linux
Il comando touch in Linux viene utilizzato per modificare i timestamp dei file, tuttavia uno degli usi più comuni del comando touch include la creazione di un nuovo file vuoto.
Con il comando touch, puoi modificare l'accesso, modificare e cambiare l'ora di file e cartelle in Linux. Puoi aggiornare i timestamp o modificarli in una data passata.
La sintassi per il comando touch è abbastanza semplice:
touch [option] file

Cosa sono i timestamp dei file in Linux, di nuovo?
Ho scritto dettagliatamente sui timestamp in Linux in un articolo precedente. Consiglio di leggerlo per una migliore e più chiara comprensione. Per motivi di un rapido richiamo, elencherò i timestamp qui:
- ora di accesso:l'ultima volta in cui è stato effettuato l'accesso a un file
- ora di modifica:l'ultima volta in cui un file è stato modificato
- ora di modifica:l'ultima volta in cui sono stati modificati i metadati del file (autorizzazione del file, proprietà, ecc.)
Puoi vedere i timestamp di un file usando il comando stat nel modo seguente:
stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11940163 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 14:12:24.476483367 +0530
Modify: 2018-09-02 14:12:24.476483367 +0530
Change: 2018-09-02 14:12:24.476483367 +0530
Birth: -
Il comando Stat mostra anche il numero di inode del file.
9 Esempi pratici di comandi touch in Linux
Vediamo ora come utilizzare il comando touch con alcuni semplici ma utili esempi.
1. Crea un file
vuotoCome accennato in precedenza, questo è l'uso più comune del comando touch. Tutto quello che devi fare è usare il tocco con il nome del file.
touch <filename>
Questo creerà un file vuoto se il file non esiste.
touch empty_file
ls -l empty_file
-rw-r--r-- 1 abhishek abhishek 0 Sep 2 14:37 empty_file
Ma cosa succede se il file esiste già? In tal caso, aggiornerà tutti e tre i timestamp del file all'ora corrente.
2. Crea più file vuoti
Puoi usare il tocco anche per creare più di un file vuoto. Fornisci solo i nomi dei file che desideri creare.
touch <file1> <file2> <file3>
Se pensi che sia stancante scrivere tutti i nomi di file, puoi generare automaticamente i nomi di file in questo modo:
touch new-file-{1..10}.txt
Questo creerà nuovo-file-1.txt, nuovo-file-2.txt fino a nuovo-file-10.txt.
3. Evita di creare un file con il tocco se non esiste
Touch aggiornerà i timestamp del file di input se esiste e creerà un file vuoto se il file di input non esiste.
Ma cosa succede se non vuoi toccare per creare un nuovo file vuoto? Vuoi che aggiorni i timestamp del file ma se il file non esiste, non dovrebbe essere creato.
Puoi usare il comando touch con l'opzione -c in questi casi:
touch -c <filename>
Ricorda :Touch creerà un nuovo file vuoto se non esiste, altrimenti modificherà i timestamp del file esistente. Puoi interrompere la creazione di un nuovo file con l'opzione -c.
4. Modifica tutti i timestamp di un file
Se usi il tocco su un file esistente, cambierà l'accesso, modificherà e cambierà l'ora di quel file.
Ad esempio, ho questo file chiamato sherlock.txt con i seguenti timestamp:
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-25 09:44:56.092937000 +0530
Modify: 2018-08-09 09:41:05.028309000 +0530
Change: 2018-08-25 09:44:56.096937182 +0530
Se utilizzo il tocco su questo comando, tutti i timestamp verranno modificati con i timestamp correnti.
touch sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
Birth: -
Nota:non dovresti preoccuparti di ctime (cambia ora). È una proprietà di sistema e non può/non deve essere controllata dall'utente. Il tuo obiettivo dovrebbe essere l'accesso e la modifica del tempo.
5. Aggiorna solo l'ora di accesso al file
Potresti non voler sempre cambiare tutti i timestamp di un file. Se desideri semplicemente modificare il tempo di accesso di un file, puoi utilizzare l'opzione -a con il tocco.
touch -a sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
Birth: -
6. Aggiorna modifica solo l'ora del file
Se vuoi semplicemente aggiornare l'ora di modifica di un file al timestamp corrente, usa l'opzione -m del comando touch.
touch -m sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
Birth: -
7. Usa timestamp di un altro file
Puoi anche utilizzare i timestamp di un altro file come riferimento con l'opzione -r nel modo seguente:
touch -r <source_file> <target_file>
Questo imposterà l'ora di accesso e modifica del file di destinazione uguale all'ora di accesso e modifica del file di origine.
8. Imposta un orario di accesso e modifica specifico
Potresti aver notato che in quasi tutti i casi (tranne quello del file di riferimento), i timestamp vengono modificati nel timestamp corrente.
Ma non sei vincolato a questo. Touch consente di impostare l'accesso e l'ora di modifica su una data passata o futura. Puoi usare l'opzione -t e un timestamp nel seguente formato:
[[CC]AA]MMGGhhmm[.ss]
- CC – Prime due cifre di un anno
- YY:le seconde due cifre di un anno
- MM – Mese dell'anno (01-12)
- DD – Giorno del mese (01-31)
- hh – Ora del giorno (00-23)
- mm – Minuti dell'ora (00-59)
- ss – Secondi (00-59)
Nel caso di cui sopra, il CC è facoltativo. In effetti, anche CCYY è facoltativo, in tal caso ci vorrà l'anno in corso. Allo stesso modo, anche i secondi sono facoltativi, il valore predefinito è 00.
Lascia che ti mostri un esempio modificando il timestamp in 12021301, ovvero 12° mese, secondo giorno, 13° ora e primo minuto dell'anno in corso:
touch -t 12021301 agatha.txt
stat agatha.txt
File: agatha.txt
Size: 457 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928279 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
Birth: -
Se provi a inserire una data non valida, vedrai un errore. Noterai anche che il tempo di modifica utilizza il timestamp corrente, non lo stesso di accesso e modifica. È perché è una proprietà di sistema.
9. Modifica il timestamp di un collegamento simbolico
Puoi anche utilizzare il comando touch con collegamenti simbolici. Devi solo usare l'opzione -h mentre gestisci i collegamenti simbolici. Il resto rimane lo stesso dei file normali.
touch -h <symbolic_link>
Spero che questi esempi di comandi touch in Linux siano utili. Se hai domande o suggerimenti, fammi sapere.