Il comando touch ci consente di aggiornare i timestamp su file e directory esistenti, oltre a creare nuovi file vuoti.
In questa guida ti mostreremo come utilizzare il comando touch attraverso esempi pratici e spiegazioni dettagliate delle opzioni di comando più comuni.
Data e ora dei file Linux #
Prima di passare a come utilizzare il comando touch, iniziamo esaminando i timestamp dei file in Linux.
Un file in Linux ha tre timestamp:
- atime (tempo di accesso) - L'ultima volta che il file è stato aperto/aperto da qualche comando o applicazione come cat, vim o grep.
- mtime (modifica ora) - L'ultima volta che il contenuto del file è stato modificato.
- ctime (cambia ora) - L'ultima volta che l'attributo o il contenuto del file è stato modificato. L'attributo include i permessi del file, la proprietà del file o il percorso del file.
Per visualizzare lo stato del file, inclusi i timestamp, utilizza stat
comando.
stat file_name
La creazione di un nuovo file richiede autorizzazioni di scrittura sulla directory padre. In caso contrario, riceverai un errore di autorizzazione negata.
Come utilizzare il comando touch #
Nella sua forma più semplice quando viene utilizzato senza alcuna opzione, se il nome del file specificato come argomento non esiste, touch creerà un nuovo file.
Se il file esiste già, toccare cambierà l'ultimo accesso al file e gli orari di modifica all'ora corrente.
Ad esempio, se il file file1
non esiste il seguente comando lo creerà altrimenti, cambierà i suoi timestamp:
touch file1
Per creare o modificare più file contemporaneamente, specifica i nomi dei file come argomenti:
touch file1 file2 file3
Se non vuoi che il comando touch crei nuovi file, usa il -c
(--no-create
) opzione.
Ad esempio, se il file file1
esiste il seguente comando cambierà i timestamp del file, altrimenti non farà nulla:
touch -c file1
Modifica solo degli orari di accesso o modifica #
Per impostazione predefinita, se non viene utilizzata alcuna opzione touch aggiornerà l'ultimo accesso al file e gli orari di modifica all'ora corrente. Usando il -a
e -m
opzioni, puoi modificare solo uno di questi timestamp.
Modifica solo l'ora di accesso #
Usa il -a
opzione per modificare solo il tempo di accesso al file:
touch -a file1
Cambia solo l'ora di modifica #
Usa il -m
opzione per modificare il tempo di modifica del file:
touch -m file1
Quando si modifica l'ora di modifica, verrà aggiornata anche l'ora di modifica.
Impostazione di timestamp specifici #
Il comando touch ci consente anche di aggiornare o creare un file con un'ora specifica diversa dall'ora corrente.
Usa -d
(--date=
) opzione per specificare una stringa di data e utilizzarla al posto dell'ora corrente.
Ad esempio, per modificare sia l'ultimo accesso che gli orari di modifica di file1
al 1 giugno 2018 11:02 useresti il seguente comando:
touch -d '1 June 2018 11:02' file1
La stringa della data deve essere racchiusa tra virgolette singole.
Puoi anche fornire una stringa data-ora parziale al comando touch. Fornendo solo la data, cambia automaticamente l'anno in quello corrente:
touch -d '12 June' file1
Usa il -t
opzione per specificare un timestamp e utilizzarlo al posto dell'ora corrente. L'argomento timestamp deve essere nel seguente formato:
use [[CC]YY]MMDDhhmm[.ss]
Ad esempio, il comando seguente imposterà gli ultimi tempi di accesso e modifica di file1
al 1 giugno 11:02 dell'anno in corso.
touch -t 06011102 file1
Utilizzo del timestamp di un altro file #
Il -r
(--reference=
) consente di specificare un file di riferimento e di utilizzare i relativi timestamp anziché l'ora corrente.
Ad esempio, il comando seguente dirà al tocco di utilizzare i tempi di file1
per file2
:
touch -r file1 file2
Modifica del timestamp del collegamento simbolico #
Per impostazione predefinita, se utilizzi un comando touch su un collegamento simbolico, cambierà i timestamp del suo file di riferimento.
Usa il -h
(--no-dereference
) per modificare il timestamp del collegamento simbolico.
Ad esempio, per modificare i timestamp del collegamento simbolico symlink1
useresti:
touch -h symlink1
Conclusione #
A questo punto dovresti avere una buona comprensione di come usare il comando touch di Linux.