El comando touch en Linux: crear archivos vacíos y actualizar fechas

Introducción

En el mundo de Linux, el comando touch es una herramienta sencilla pero poderosa que forma parte del conjunto básico de utilidades de shell. Aunque su nombre sugiere solo «tocar» un archivo, su funcionalidad principal es doble: crear archivos vacíos cuando no existen y actualizar las marcas de tiempo (fecha de último acceso y de última modificación) de los archivos existentes. Este comportamiento lo convierte en un aliado frecuente para administradores de sistemas, desarrolladores y cualquier persona que trabaje con scripts y automatización.

Sintaxis básica

La forma más simple de usar touch es:

touch [opciones] nombre_del_archivo

Si el archivo especificado no está presente en el sistema de archivos, touch lo crea como un archivo vacío de cero bytes. Si ya existe, el comando actualiza sus timestamps al momento actual, a menos que se indique lo contrario mediante opciones específicas.

Crear archivos vacíos

Uno de los usos más comunes de touch es generar rápidamente archivos de prueba o placeholders. Por ejemplo, para crear varios archivos de log vacíos en un directorio, basta con:

  • touch app.log error.log debug.log

Este comando producirá tres archivos, cada uno con tamaño cero, listos para ser llenados por la aplicación o por procesos posteriores. Además, se puede combinar con expansión de llaves para crear secuencias:

  • touch archivo_{1..5}.txt

Lo anterior genera archivo_1.txt, archivo_2.txt, …, archivo_5.txt.

Actualizar fechas y horas

Cuando el objetivo es solo modificar la marca de tiempo sin cambiar el contenido, touch lo hace por defecto. Esto resulta útil en escenarios como:

  • Forzar la recompilación de proyectos basados en make, donde los archivos fuente deben parecer más nuevos que los objetos.
  • Indicar que un archivo de configuración ha sido revisado, aunque su contenido no haya cambiado.
  • Resetear el temporizador de ciertos demonios que actúan según la antigüedad de un archivo de estado.

Si se desea establecer una fecha y hora específica en lugar de la actual, se utiliza la opción -t seguida de un timestamp en formato [[CC]YY]MMDDhhmm[.ss]. Por ejemplo:

  • touch -t 202312011030.00 informe.pdf

Este comando pone la marca de tiempo de informe.pdf al 1 de diciembre de 2023 a las 10:30:00.

Opciones útiles

Algunas opciones frecuentes de touch incluyen:

  • -a: cambia solo el tiempo de último acceso (atime).
  • -m: cambia solo el tiempo de última modificación (mtime).
  • -c: no crea el archivo si no existe; solo actualiza timestamps de archivos existentes.
  • -r referencia: usa las marcas de tiempo del archivo de referencia como modelo.
  • -d cadena: interpreta una cadena legible por humanos (por ejemplo, -d "yesterday") para establecer la fecha.

Estas opciones permiten un control granular sobre qué aspecto del timestamp se modifica y evitan la creación accidental de archivos cuando no se desea.

Ejemplos prácticos

A continuación, algunos comandos que ilustran la versatilidad de touch:

  • touch README.md – crea un archivo vacío llamado README.md.
  • touch -a datos.csv – actualiza solo el tiempo de último acceso de datos.csv.
  • touch -r plantilla.txt copia.txt – copia las marcas de tiempo de plantilla.txt a copia.txt.
  • touch -d "2 days ago" notas.txt – establece la fecha de notas.txt a dos días atrás.

Buenas prácticas y consejos

Aunque touch es sencillo, conviene seguir ciertas recomendaciones:

  • Verificar siempre el path completo o relativo para evitar crear archivos en ubicaciones no deseadas.
  • En entornos de producción, preferir la opción -c cuando solo se quiere actualizar timestamps sin riesgo de crear archivos accidentalmente.
  • Documentar en comentarios de scripts la razón detrás de cada uso de touch, ya que su efecto puede ser sutil pero significativo para herramientas como make o cron.
  • Utilizar formato ISO 8601 (YYYY-MM-DDTHH:MM:SS) con la opción -d cuando se necesita legibilidad y precisión.

Conclusión

El comando touch puede parecer insignificante a primera vista, pero su capacidad para crear archivos vacíos y manipular marcas de tiempo lo convierte en un elemento esencial del arsenal de cualquier usuario de Linux. Dominar sus opciones y comprender cuándo aplicarlo permite optimizar tareas de desarrollo, administración de sistemas y automatización. La próxima vez que necesites un archivo placeholder o quieras forzar una actualización de timestamps, recuerda que touch está listo para hacerlo con una sola línea.