fb-pixel

Usare il comando touch su Linux per modificare il timestamp

Pubblicato in:

by:

Scopri come usare il comando touch per modificare il timestamp dei file. Questo comando può essere usato anche per creare file vuoti, ma il suo scopo principale è quello di permetterci di modificare la data di accesso e modifica di uno o più file.

Vediamo come usare il comando e le sue opzioni.

Sintassi del comando touch

Il comando touch ci permette di creare file vuoti o modificare il timestamp di file esistenti. Si può usare, per esempio, per modificare la data dell’ultimo accesso a un file.

La sintassi di base del comando touch è questa:

touch [opzioni] nome-file

Usando il comando senza opzioni si può creare un file vuoto. Per esempio, prendiamo il seguente comando:

touch documento

Se nella cartella corrente non esiste nessun file con questo nome, verrà creato un file vuoto “documento“. Dopo aver creato il file, potremo usare altri comandi Linux per eseguire operazioni, ad esempio:

  • copiare il file con cp;
  • rinominare o spostare il file con mv;
  • eliminare il file con il comando rm.

Passiamo ora a degli esempi specifici per capire meglio come si usa il comando touch.

Come usare il comando touch per la creazione di file

Vediamo come creare uno o più file usando il comando touch da terminale.

Come creare un file

Possiamo usare il comando touch per creare nuovi file vuoti. Questo comando può quindi essere utile quando vogliamo creare rapidamente un nuovo file vuoto per poterlo poi modificare con un editor di testo direttamente da terminale, come ad esempio nano.

Vediamo un esempio pratico.

Per creare il file “documento.txt”, uso il comando in questo modo:

touch documento.txt
Usare Comando Touch Creare Un File

Nell’esempio qui sopra ho usato il comando ls per visualizzare il contenuto della cartella corrente:

  • l’ho usato all’inizio per assicurarmi che non ci fosse un file con lo stesso nome nella cartella corrente;
  • l’ho usato di nuovo alla fine per verificare che il file fosse stato creato correttamente.

Se, dopo aver creato il file, utilizzo il comando:

nano documento.txt

Posso aprire il file con l’editor nano e verificarne il contenuto. Essendo un file appena creato con il comando touch, vedrai che il documento è vuoto.

Nano Documento Vuoto Creato Con Touch

Come creare più file

Possiamo creare più file vuoti, dando una sola volta il comando touch. Per farlo ci basta indicare i nomi dei file, separandoli con uno spazio.

Per esempio per creare i file:

  • post.txt
  • post-fb.txt
  • post-linkedin.txt

Userò il comando:

touch post.txt post-fb.txt post-linkedin.txt
Usare Comando Touch Creare Piu File

Nell’esempio qui sopra ho usato il comando ls per visualizzare il contenuto della cartella e assicurarmi che i file fossero stati creati.

Come funziona il timestamp e come modificarlo

Come dicevamo, il comando touch può essere utilizzato per modificare il timestamp dei file. Prima di procedere con degli esempi, dobbiamo però chiarire che ci sono tre tipi di timestamp registrati per ogni file su Linux.

  • atime – o access timestamp – indicata data e ora in cui c’è stato accesso al file per l’ultima volta.
  • mtime – o modified timestamp – si riferisce all’ultima volta in cui il contenuto del file è stato modificato;
  • ctime – o change timestamp – indica l’ultima volta che gli attributi del file sono cambiati. Ad esempio può riferirsi a quando sono stati modificati i permessi del file.

Per visualizzare i timestamp attuali di un file, possiamo usare il comando ls e le sue opzioni, ora ti mostro come fare.

Come verificare il timestamp attuale dei file

Abbiamo diverse opzioni per visualizzare i timestamp di un file:

  • per verificare un timestamp specifico, come l’atime, ultimo accesso al file, possiamo usare il comando ls e le sue opzioni;
  • per visualizzare tutti i timestamp con un solo comando, possiamo usare il comando stat.

Ecco come.

Per visualizzare l’atime, il timestamp realtivo all’ultimo accesso, usiamo il comando:

ls -lu nome-file

Per visualizzare l’mtime, il timestamp dell’ultima modifica, usiamo il comando:

ls -l nome-file

Per visualizzare il ctime, il timestamp dell’ultima modifica degli attributi, usiamo il comando:

ls -lc nome-file

In alternativa, possiamo usare il comando stat per visualizzare tutti i timestamp, in questo modo:

stat nome-file

Nell’esempio qui sotto ho utilizzato le opzioni di ls e il comando stat per visualizzare i timestamp del file “doc.txt”:

Visualizzare Timestamp File Linux Terminale

Come usare il comando touch per modificare il timestamp

Possiamo usare il comando touch e le sue opzioni per modificare il timestamp dei file.

Partiamo da una panoramica delle opzioni.

Impostare la data di accesso di un file a quella corrente

Per modificare solo l’atime, cioè la data di accesso a un file, possiamo usare l’opzione -a in questo modo:

touch -a nome-file

Questo comando ci permette di sovrascrivere la data di ultimo accesso, impostando quella corrente.

Comando Touch Cambiare Access Time Corrente

In questo esempio ho usato il comando:

touc -a doc.txt

In questo modo ho impostato come data di ultimo accesso (atime), data e ora corrente.

Usare l’opzione -a ci permette di modificare il timestamp dell’accesso. Come vedi qui, però, viene modificato sia il timestamp di accesso che di cambio (il ctime).

Non viene, invece, modificato il timestamp dell’ultima modifica al contenuto (mtime).

Modificare la data di accesso di un file

Oltre a poter impostare la data di accesso di un file a quella corrente, possiamo anche modificare la data di accesso a un file, scegliendo una data differente.

Per farlo usiamo due opzioni del comando touch, -a e -t, in questo modo:

touch -at [timestamp] nome-file

Per specificare la data (timestamp) dobbiamo seguire questo formato:

[[CC]YY]MMDDhhmm[.ss]
  • CC – indica le prime due cifre dell’anno. (le doppie parentesi quadre significa che è opzionale specificarle)
  • YY – indica le seconde due cifre dell’anno;
  • MM – per il mese;
  • DD – per il giorno;
  • hh – per l’ora; mm – per i minuti;
  • ss – per i secondi.

Per esempio per impostare la data: 5 aprile 2010, ore 10:30, useremo questa notazione:

201004051030

Nel nostro esempio, per impostare questa data di accesso per il file “doc.txt” userò il comando:

touch -at 201004051030 doc.txt

Nell’esempio si può vedere che la data di accesso è stata modificata correttamente, mentre gli altri timestamp sono rimasti invariati.

Modificare Data Accesso Comando Touch

Impostare la data di modifica di un file a quella corrente

Possiamo usare il comando touch per cambiare solo il timestamp della data di ultima modifica di un file.

Se vogliamo impostare la data di modifica a quella corrente, ci basta usare l’opzione -m in questo modo:

touch -m nome-file

Nel nostro esempio:

touch -m doc.txt

Con il comando qui sopra ho cambiato la data di modifica del file, impostando la data corrente:

Comando Touch Cambiare Modification Time Corrente

Nota che usando questo comando, verranno aggiornate la data di modifica (mtime) e la data di cambio (ctime).

Modificare la data di modifica di un file

Proprio come abbiamo visto per la data di accesso, possiamo anche cambiare la data di ultima modifica di un file (mtime) impostando una nuova data.

Per farlo dobbiamo utilizzare sempre la notazione che abbiamo visto negli esempi precedenti per il timestamp:

[[CC]YY]MMDDhhmm[.ss]

Per fare questa modifica, usiamo il comando in questo modo:

touch -mt [timestamp] nome-file

Per esempio per impostare la data: 5 febbraio 2015, ore 10:50, useremo il comando:

touch -mt 201502051050 doc.txt
Modificare Data Modifica Comando Touch

Nell’esempio abbiamo cambiato la data di modifica del file, verificandola con il comando stat.

Creare un file impostando un timestamp specifico

Quando creiamo un file usando il comando touch, il timestamp del file viene impostato a quella corrente.

Per esempio creando il file “prova.txt” e visualizzando i timestamp, vediamo che tutti i timestamp sono impostati alla data corrente.

Adesso, proviamo a creare un file specificando un timestamp diverso, per farlo dobbiamo utilizzare l’opzione -t:

touch -t 201503071050.11 provash.txt

In questo esempio, ho impostato il timestamp alla data del 7 marzo 2015, ore 10:50:11. Con questo comando vengono modificati la data di accesso e di modifica del file.

In questo esempio puoi vedere cosa succede se:

  • usiamo touch senza opzioni (viene impostato il timestamp con la data corrente);
  • usiamo touch con opzione t e indicando il timestamp (viene impostato il timestamp scelto da noi per data di accesso e modifica).
Comando Touch Opzioni Timestamp

Metodi alternativi per modificare il timestamp (data come stringa)

Negli esempi precedenti abbiamo visto come impostare il timestamp usando questo formato di data e ora:

[[CC]YY]MMDDhhmm[.ss]

Se usiamo l’opzione -t, infatti dobbiamo specificare il timestamp in questo tipo di formato.

L’altra alternativa è quella di utilizzare l’opzione -d e indicare la data come stringa. Vediamo come con un esempio.

Indicando la data in forma di stringa, possiamo usare varie tipologie di notazione, ci sono alcuni esempi sul manuale.

Per esempio potremmo indicare la data per esteso (giorno mese anno), in questo modo:

11 May 2010

Oppure per indicare anche l’orario:

2010-05-11T10:50:00

In questo esempio abbiamo creato due file usando l’opzione -d per indicare la data come stringa in due modi differenti:

Comando Touch Data Stringa Opzione D

Nel secondo esempio, usando il comando:

touch -d '11 May 2010' file.txt

Viene impostata la data indicata e, visto che l’orario non è specificato, viene impostato alle 00:00.

Modificare data di modifica e accesso con touch e opzione -d

Come abbiamo visto prima, possiamo modificare il timestamp di ultima modifica di un file usando l’opzione -m.

L’opzione -m usata insieme all’opzione -t, ci permette di modificare il timestamp di modifica usando il formato ([[CC]YY]MMDDhhmm[.ss]).

Se, invece, vogliamo modificare il timestamp di modifica, ma usando la data sotto forma di stringa, possiamo farlo usando le opzione -m e -d, in questo modo:

touch -md 'stringa data' nomefile

Nel nostro esempio:

touch -md '5 May 2010' file.txt

Con questo comando ho modificato la data di modifica del file, impostandola al 2010-05-05 00:00.

Modificare Data Modifica Comando Touch Opzione D

Seguendo questo stesso esempio, possiamo modificare la data di accesso al file, usando l’opzione -a combinata all’opzione -d.

touch -ad 'stringa data' nomefile

Nel nostro esempio:

touch -ad '3 May 2012' file.txt
Modificare Data Accesso Comando Touch Opzione D

Come usare il comando touch evitando la creazione di nuovi file

Se vogliamo usare il comando touch esclusivamente per modificare un file esistente e vogliamo quindi assicurarci che non venga creato un nuovo file vuoto, possiamo usare l’opzione -c.

Usando touch con -c, viene fatta una verifica:

  • se il file indicato non esiste, non viene creato nessun nuovo file;
  • se il file esiste, viene applicata la modifica indicata.

Vediamo un esempio pratico per chiarire.

Voglio modificare il timestamp del file “provash.txt”, ma non voglio che il file venga creato se non esiste già.

Il comando che uso per impostare il nuovo timestamp è questo:

touch -ct 201206071250 provash.txt

Per prima cosa: uso il comando in una cartella in cui il file non esiste. Il risultato è che non viene creato nessun file.

Dopo: mi sposto (con il comando cd) in una cartella che contiene già un file con il nome “provash.txt”, in questo caso, dando lo stesso comando, viene modificato il timestamp.

Usare Comando Touch Con Opzione C

Questo è un semplice esempio per farti capire una situazione tipo in cui potresti voler usare l’opzione -c per assicurarti che non venga creato un file vuoto se quel file non esiste già.

Come copiare il timestamp da un file esistente

Possiamo usare il comando touch per copiare i timestamp di ultimo accesso e modifica del file, usando un file come riferimento.

La sintassi da usare è questa, indicando prima il file dal quale copiare il timestamp e dopo quello di destinazione:

touch -r file-di-riferimento file

Per esempio voglio che il file “nuovo.txt” abbia gli stessi timestamp (accesso e modifica) del file “doc.txt”, userò il comando:

touch -r doc.txt nuovo.txt

In questo esempio nella situazione di partenza i file “doc.txt” e “nuovo.txt” hanno timestamp differenti come data di accesso e modifica. Voglio utilizzare “doc.txt” come file di riferimento e copiare i suoi timestamp sul file “nuovo.txt”.

Usando il comando touch come visto sopra, possiamo copiare i timestamp: alla fine, il file “nuovo.txt” avrà i timestamp del file “doc.txt”.

Comando Touch Con Opzione R

Possiamo usare il comando touch per modificare il timestamp di un link simbolico, lasciando invariata la data del documento di riferimento.

Per farlo possiamo usare l’opzione -h per impostare la data corrente.

Nel mio esempio, ho questa situazione di partenza:

  • il link simbolico “doc” è associato al file “doc.txt”;
  • doc e doc.txt hanno timestamp differenti.

Se voglio modificare solo il timestamp del link simbolico doc, lasciando invariata la data del file “doc.txt”, uso il comando:

touch -h doc

Mi basta indicare il nome del link simbolico e usare l’opzione -h.

In questo esempio possiamo vedere come usando l’opzione -h stiamo effettivamente modificando il timestamp del link simbolico, lasciando invariato quello del file.

Comando Touch Modificare Link Simbolico

Possiamo usare l’opzione -h con le altre opzioni che abbiamo visto, per modificare il timestamp del link simbolico. Per esempio se voglio impostare un timestamp di modifica a una data specifica, userò il comando touch con le opzioni h e d:

  • con h faccio sì che il comando funzioni con i link simbolici;
  • con d imposto una data per la modifica (mtime) usando una stringa.
Modificare Timestamp Link Simbolico

Nel mio esempio:

touch -hd '1 May 2000' doc

Con questo comando sto modificando la data di modifica del link simbolico “doc” impostandola al 1° maggio 2000. La data di modifica del file associato (doc.txt), resta invariata.

Conclusioni

Visto che su Linux ci sono diversi timestamp per ogni file (data di accesso, modifica e change per i cambiamenti di proprietà dei file), è molto utile conoscere come fare a modificarli. Da terminale possiamo sfruttare il comando touch sia per modificare il timestamp, magari aggiornandolo alla data corrente oppure impostando una data specifica, che per creare dei file vuoti. Con i diversi esempi che abbiamo visto, avrai imparato a modificare la data usando notazioni differenti.

Avevi già usato il comando? Se sì, quale notazione trovi più comoda da usare per la data?


Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *