Cómo usar el comando touch en Ubuntu

touch” es un comando básico de Linux que sirve para crear archivos vacíos o cambiar los Timestamps de los archivos (última fecha u hora de acceso o modificación del archivo).

El comando touch es muy útil en el uso diario, es útil para probar las transferencias de archivos mediante la creación de archivos vacíos para pruebas, tener la capacidad de crear archivos ficticios para hacer cualquier cosa que queramos con ellos puede ayudar en cualquier momento, por ejemplo, para probar cualquier comando de Linux, que interactúe directamente con un archivo (para comandos como wipe, srm o shred) y no quiere arriesgarse a probar con archivos reales.

Cuando usamos el comando touch con el nombre de un archivo existente, no creará un nuevo archivo pero actualizará los Timestamps del archivo. Por otro lado, cambiar los Timestamps sería útil si queremos evitar que alguien sepa que accedimos a un archivo en la fecha y hora reales a las que realmente se accedió.

Timestamps

Los archivos de Linux tienen 3 timestamps: atime, mtime y ctime.

atime: Contiene información sobre cuándo se leyó el contenido del archivo con herramientas o comandos para mostrar el contenido del archivo como less, nano, vi, vim, cat, grep, head, etc. El Timestamps de atime cambia y se actualiza cada vez que se visualiza el archivo.

mtime: Muestra la última modificación del contenido de un archivo, incluido su nombre, pero no las propiedades o los permisos, solo el archivo en sí.

ctime: Al igual que mtime, ctime también muestra cuándo se modificó un archivo, pero también se actualiza cuando se cambió la propiedad, el grupo o el permiso de acceso de un archivo. Podemos editar atime y mtime pero no podemos editar el ctime, la hora se actualiza cuando se editan los permisos de un archivo o cuando los archivos se leen o modifican realmente.

Editando el timestamp:

Antes de ver el Timestamps de un archivo, crearemos un archivo llamado LinuxHintEmpyFile escribiendo:

touch LinuxHintEmpyFile

Luego, con el comando ls observamos que el archivo ya fue creado

Donde:

touch= Crea una archivo vacío llamado en este caso LinuxHintEmpyFile

Ahora para ver su Timestamps (marca de tiempo) escriba en la terminal:

stat LinuxHintEmpyFile

Devuelve la siguiente información:

File:         LinuxHintEmptyFile

Size:         0           Blocks: 0            IO Block: 4096   regular empty file

Device:    802h/2050d    Inode: 13766630      Links: 1

Access:     (0644/-rw-r–-r–-)  Uid: ( 1003/linuxhint)           Gid: ( 1003/linuxhint)

Access:     2019-05-14 22:57:09.320314528 +0300

Modify:     2019-05-14 22:57:09.320314528 +0300

Change:     2019-05-14 22:57:09.320314528 +0300

Birth:         –

El comando stat muestra los permisos de acceso, el último acceso (atime), la última modificación (mtime) y el último cambio (ctime).

Dado que la fecha y la hora de creación del archivo son las mismas, cambiaremos los permisos del archivo para ver la diferencia de salida de la estadística:

chmod -777 LinuxHintEmptyFile

stat LinuxHintEmptyFile

File:         LinuxHintEmptyFile

Size:         0          Blocks: 0            IO Block: 4096   regular empty file

Device:    802h/2050d    Inode: 13766630      Links: 1

Access:    (0000/———)      Uid: ( 1003/linuxhint)      Gid: ( 1003/linuxhint)

Access:     2019-05-14 22:57:09.320314528 +0300

Modify:     2019-05-14 22:57:09.320314528 +0300

Change:     2019-05-14 23:23:55.968391139 +0300

Birth:         –

Donde:

Chmod -777: Remueve los permisos sobre el archivo LinuxHintEmptyFile

Stat: muestra las Timestamps del archivo.

En la imagen de arriba podemos ver el ctime (Change) actualizado.

Ahora vamos a editar el archivo atime al 01/02/1999, escribimos:

touch -a –-date=“1999-02-01” LinuxHintEmptyFile

stat LinuxHintEmptyFile

File:         LinuxHintEmptyFile

Size:         0        Blocks: 0          IO Block: 4096   regular empty file

Device:    802h/2050d    Inode: 13766630      Links: 1

Access:     (0000/———-)   Uid: ( 1003/linuxhint)     Gid: ( 1003/linuxhint)

Access:     1999-02-01 00:00:00.000000000 +0200

Modify:     2019-05-14 22:57:09.320314528 +0300

Change:     2019-05-14 23:34:32.964421513 +0300

Birth:         –

Si también desea cambiar la fecha de acceso, escriba:

touch -a –-date=“1999-02-01 21:35” LinuxHintEmptyFile

stat LinuxHintEmptyFile

File: LinuxHintEmptyFile

Size:         0        Blocks: 0            IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766630      Links: 1

Access:     (0000/———-)   Uid: ( 1003/linuxhint)      Gid: ( 1003/linuxhint)

Access:     1999-02-01 21:35:00.000000000 +0200

Modify:     2019-05-14 22:57:09.320314528 +0300

Change:     2019-05-14 23:42:49.016445166 +0300

Birth:         –

Editando el Timestamps de mtime:

La sintaxis para editar mtime es la misma, para cambiar el ctime a 1989.02.01 escriba:

touch -m –-date=“1989-02-01” LinuxHintEmptyFile

stat LinuxHintEmptyFile

File: LinuxHintEmptyFile

Size:        0             Blocks: 0          IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766630    Links: 1

Access:     (0000/———-)   Uid: ( 1003/linuxhint)             Gid: ( 1003/linuxhint)

Access:     1999-02-01 21:35:00.000000000 +0200

Modify:     1989-02-01 00:00:00.000000000 +0200

Change:     2019-05-14 23:49:56.560465553 +0300

Birth:         –

Ahora puede observar que la fecha de modificación se actualizó, para actualizar también su hora de manera similar con atime, escriba:

touch -m –-date=“1989-02-01 20:22” LinuxHintEmptyFile

stat LinuxHintEmptyFile

File: LinuxHintEmptyFile

Size:         0        Blocks: 0          IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766630      Links: 1

Access:     (0000/———-)    Uid: ( 1003/linuxhint)    Gid: ( 1003/linuxhint)

Access:     1999-02-01 21:35:00.000000000 +0200

Modify:     1989-02-01 20:22:00.000000000 +0200

Change:     2019-05-14 23:52:10.156471924 +0300

Birth:         –

Ahora vamos a crear un segundo archivo y usaremos el comando touch para copiar las Timestamps de un archivo sobre el segundo:

touch LHFile2

stat LHFile2

File: LHFile2

Size:         0          Blocks: 0          IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766635      Links: 1

Access:     (0644/-rw-r–r–)  Uid: ( 1003/linuxhint)       Gid: ( 1003/linuxhint)

Access:     2019-05-15 00:02:14.020500718 +0300

Modify:     2019-05-15 00:02:14.020500718 +0300

Change:     2019-05-15 00:02:14.020500718 +0300

Birth:         –

Hemos accedido, modificado y cambiado el 2019-05-15 00:02:14, para copiar las Timestamps del archivo del tipo LinuxHintEmptyFile:

touch -r LinuxHintEmptyFile LHFile2

stat LHFile2

File: LHFile2

Size:         0        Blocks: 0          IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766635      Links: 1

Access:     (0644/-rw-r–r–)   Uid: ( 1003/linuxhint)       Gid: ( 1003/linuxhint)

Access:     1999-02-01 21:35:00.000000000 +0200

Modify:     1989-02-01 20:22:00.000000000 +0200

Change:     2019-05-15 00:03:11.592503463 +0300

Birth:         –

Como se ve ahora, ambos archivos comparten el mismo Timestamps.

Si queremos cambiar todos los Timestamps a la hora actual, sólo tenemos que escribir touch

stat LHFile2

File: LHFile2

Size:         0         Blocks: 0            IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766635      Links: 1

Access:     (0644/-rw-r–r–)   Uid: ( 1003/linuxhint)       Gid: ( 1003/linuxhint)

Access:     1999-02-01 21:35:00.000000000 +0200

Modify:     1989-02-01 20:22:00.000000000 +0200

Change:     2019-05-15 00:03:11.592503463 +0300

Birth:         –

(En la imagen siguiente describo este paso y el próximo)

touch LHFile2<strong><em>

stat LHFile2

File: LHFile2

Size:         0          Blocks: 0            IO Block: 4096   regular empty file

Device:     802h/2050d    Inode: 13766635      Links: 1

Access:     (0644/-rw-r–r–)  Uid: ( 1003/linuxhint)       Gid: ( 1003/linuxhint)

Access:     2019-05-15 00:08:51.652519679 +0300

Modify:     2019-05-15 00:08:51.652519679 +0300

Change:     2019-05-15 00:08:51.652519679 +0300

Birth:         –

Como hemos visto el segundo stat muestra atime, mtime y ctime  actualizados tras aplicar el comando  touch.


Espero que este tutorial haya sido útil como una introducción al comando touch, para obtener más información sobre este tipo de comando escriba en la consola “man touch“, si tiene alguna pregunta, póngase en contacto con nosotros mediante soporte LinuxHint. Sigue a LinuxHint para obtener más consejos y actualizaciones sobre Linux.


Este artículo es una traducción al español del original “How to use the touch command on Ubuntu