Che cosa tocca il comando 'toccato' quando applicato a una directory?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Che cosa tocca il comando 'toccato' quando applicato a una directory?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Risposte:
Come indicato nella manpage , l'uso principale di touch
questo è:
Aggiorna i tempi di accesso e modifica di ciascun FILE all'ora corrente.
Quindi aggiorna i tempi di accesso e modifica della directory.
L'esempio in alto non chiarisce che "touch" imposta l'ora della directory (la nuova ora nella lista era la stessa dell'originale, semplicemente perché il tocco era così presto dopo la creazione della directory) .. Sì, la definizione di "FILE" nella documentazione include le directory, quindi puoi usare il tocco per cambiare i loro timestamp, MA ...
Ci sono alcune situazioni in cui non è possibile modificare il timestamp di una directory (per alcuni tipi di directory montate in remoto) anche se si dispone dell'autorizzazione per fare qualsiasi altra cosa. ad esempio questa montatura NFS:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
Inoltre, puoi riscontrare problemi con alcune vecchie date non supportate su alcuni server, ad esempio:
$ mkdir /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir
Questo funziona:
$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr 1 2014 /Acer/kopies/test.dir
Funzionerebbe su una directory locale ma dà una strana data sotto i montaggi di Samba:
$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26 60410 /Acer/kopies/test.dir
~~~~~~~~~~~~~
touch
è un programma Unix standard utilizzato per modificare l'accesso di un file e la modifica dei timestamp. Viene anche usato per creare un nuovo file vuoto.La specifica Unix singola (SUS) specifica che il tocco dovrebbe cambiare i tempi di accesso, i tempi di modifica o entrambi, per un file. Il file è identificato da un percorso fornito come singolo argomento. Specifica inoltre che se il file identificato non esiste, il file viene creato e i tempi di accesso e modifica vengono impostati come specificato. Se non vengono specificati nuovi timestamp, toccare utilizza l'ora corrente.
-Wikipedia
Puoi trovare informazioni più approfondite sul touch
comando (o qualsiasi altro comando che desideri conoscere) utilizzando il man
comando in questo modo:
man touch
Il motivo immediato della domanda è il fatto che la risoluzione temporale predefinita ls -l
è in minuti, quindi una voce del filesystem toccata nello stesso minuto apparirà esattamente la stessa ls -l
nell'output predefinito .
La soluzione a questo è descritta su /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp
e sostanzialmente prevede ls -l --time-style=full-iso
invece l' esecuzione .