Comando de directorio táctil de Linux

9

¿Qué 'toca' el comando cuando se aplica a un directorio?

$ 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
Dragos Rizescu
fuente

Respuestas:

8

Como se indica en la página de manual , el uso principal de toucheste es:

Actualice los tiempos de acceso y modificación de cada ARCHIVO a la hora actual.

Por lo tanto, actualiza los tiempos de acceso y modificación del directorio.

Jorge Suárez de Lis
fuente
4

El ejemplo en la parte superior no deja en claro que "tocar" establece la hora del directorio (la nueva hora en la lista fue la misma que la original, simplemente porque el toque fue tan pronto después de que se creó el directorio). Sí, la definición de "ARCHIVO" en la documentación incluye directorios, por lo que puede usar el tacto para cambiar sus marcas de tiempo, PERO ...

Hay algunas situaciones en las que no puede cambiar la marca de tiempo de un directorio (para algunos tipos de directorios montados remotamente) incluso si tiene permiso para hacer cualquier otra cosa. Por ejemplo, este montaje NFS:

$ touch -d "2014-07-02 12:15" /public/test.dir    
touch: setting times of ‘/public/test.dir’: Operation not permitted

Además, puede tener problemas con algunas fechas antiguas que no son compatibles con algunos servidores, por ejemplo:

$ 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

Esto funciona:

$ 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

Esto funcionaría en un directorio local pero da una fecha extraña en los montajes de 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
                              ~~~~~~~~~~~~~
usuario235510
fuente
2

touches un programa estándar de Unix que se usa para cambiar las marcas de tiempo de acceso y modificación de un archivo. También se usa para crear un nuevo archivo vacío.

La especificación Single Unix (SUS) especifica que la función táctil debe cambiar los tiempos de acceso, los tiempos de modificación o ambos para un archivo. El archivo se identifica mediante un nombre de ruta proporcionado como un argumento único. También especifica que si el archivo identificado no existe, el archivo se crea y los tiempos de acceso y modificación se establecen como se especifica. Si no se especifican nuevas marcas de tiempo, toque usa la hora actual.

-Wikipedia

Puede encontrar información más detallada sobre el touchcomando (o cualquier otro comando que desee conocer) utilizando el mancomando de esta manera:

man touch

Atari911
fuente
2

La razón inmediata de la pregunta es el hecho de que la resolución de tiempo predeterminada ls -les en minutos, por lo que una entrada del sistema de archivos tocada en el mismo minuto aparecerá exactamente igual en la ls -lsalida predeterminada .

La solución a esto se describe en /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp y básicamente implica la ejecución en su ls -l --time-style=full-isolugar.

Josip Rodin
fuente