Introduzione

Il comando touch ci consente di aggiornare i timestamp su file e directory esistenti, nonché di 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.

Timestamp dei file Linux

Prima di andare su 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 è stato effettuato l'accesso / apertura al file da un comando o un'applicazione come cat , vim o grep .
  • mtime (modifica ora) - L'ultima volta che è stato modificato il contenuto del file.
  • ctime (modifica ora) - L'ultima volta che l'attributo o il contenuto del file è stato modificato. L'attributo include autorizzazioni per file, proprietà del file o posizione del file.

Per visualizzare lo stato del file, inclusi i timestamp, utilizzare il comando stat:

stat file_name

La creazione di un nuovo file richiede autorizzazioni di scrittura nella directory principale. Altrimenti, riceverai un errore di autorizzazione negata.

Come utilizzare il comando touch

Nella sua forma più semplice se usato senza alcuna opzione, se il nome del file specificato come argomento non esiste touch creerà un nuovo file.

Se il file esiste già, touch cambierà l'ultimo file e i tempi 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, specificare i nomi dei file come argomenti:

touch file1 file2 file3

Se non si desidera che il comando touch crei nuovi file, utilizzare l'opzione -c( --no-create).

Ad esempio, se il file file1 esiste il seguente comando cambierà i timestamp del file altrimenti, non farà nulla:

touch -c file1

Cambiando solo i tempi di accesso o modifica

Per impostazione predefinita, se non viene utilizzata alcuna opzione, touch aggiornerà l'ultimo file e i tempi di modifica all'ora corrente. Utilizzando le opzioni -a e -m, è possibile modificare solo uno di questi timestamp.

Cambia solo il tempo di accesso

Utilizzare l'opzione -a per modificare solo il tempo di accesso al file:

touch -a file1

Cambia solo il tempo di modifica

Utilizzare l'opzione -m per modificare l'ora di modifica del file:

touch -m file1

Impostazione di timestamp specifici

Il comando touch ci consente inoltre di aggiornare o creare un file con un'ora specifica diversa dall'ora corrente.

Utilizzare l'opzione -d( --date=) per specificare una stringa di data e usarla al posto dell'ora corrente.

Ad esempio, per modificare sia l'ultimo accesso sia i tempi di modifica del file file1 al 1 ° giugno 2018 11:02, utilizzare il comando seguente:

touch -d '1 June 2018 11:02' file1

La stringa della data deve essere racchiusa tra virgolette singole.

È inoltre possibile fornire una stringa di data e ora parziale al comando touch. Fornendo solo la data, cambia automaticamente l'anno in quello corrente:

touch -d '12 June' file1

Utilizzare l'opzione -t per specificare un timestamp e usarlo 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 del file file1 al 1 ° giugno 11:02 dell'anno in corso.

touch -t 12061102 file1

Utilizzando il timestamp di un altro file

L'opzione -r( --reference=) ci consente di specificare un file di riferimento e di utilizzare i suoi timestamp anziché l'ora corrente.

Ad esempio, il comando seguente indica a touch di utilizzare i tempi di file1 per file2:

touch -r file1 file2

Modifica della data/ora del collegamento simbolico

Per impostazione predefinita, se si utilizza un comando touch su un collegamento simbolico, i timestamp del file di riferimento verranno modificati.

Utilizzare -h( --no-dereference) per modificare il timestamp del collegamento simbolico.

Ad esempio, per modificare i timestamp del collegamento simbolico symlink1 dovrai usare:

touch -h symlink1

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il comando touch di Linux.