Comando touch

touch

El comando touch es una utilidad estándar en sistemas operativos Unix y Linux que se emplea principalmente para crear archivos vacíos nuevos o para actualizar las marcas de tiempo (fecha y hora de acceso y modificación) de archivos y directorios ya existentes sin alterar su contenido.

Categoría Sistema y gestión de archivos
Disponible en Linux, macOS y sistemas UNIX-like
Equivalente en Windows type nul > [archivo] (en CMD) o New-Item [archivo] (en PowerShell)
Sustituye a Métodos manuales o editores de texto para la generación rápida de ficheros vacíos de control o scripts.
¿Requiere permisos de administrador? No, por lo general solo se requieren permisos de escritura en el directorio donde se desea crear o modificar el archivo.

¿Qué significa su nombre?

El nombre TOUCH proviene del verbo en inglés "tocar". Su denominación hace referencia literal a la acción de "tocar" un archivo para alterar sus metadatos temporales de registro.

Con el paso del tiempo, su uso se popularizó masivamente entre los administradores de sistemas y desarrolladores como el atajo más rápido y limpio para inicializar ficheros en blanco.

¿Para qué sirve?

El comando touch sirve principalmente para dos propósitos fundamentales: el primero es la creación instantánea de uno o varios archivos de tamaño cero bytes; el segundo es modificar las marcas de tiempo de un fichero existente (forzando a que el sistema operativo registre la hora actual como la última vez que fue accedido o modificado).

Es una herramienta indispensable en el flujo de trabajo diario en la terminal, especialmente al programar scripts de automatización, preparar estructuras de proyectos vacías o verificar dependencias de compilación basadas en marcas temporales (como en archivos Makefile).

Sintaxis

touch [opciones] [nombre_archivo]

Las opciones o modificadores más habituales son:

Opción Descripción
-c o --no-create Evita que se cree un archivo nuevo si este no existe previamente.
-a Actualiza únicamente la marca de tiempo de acceso (access time) del archivo.
-m Actualiza únicamente la marca de tiempo de modificación (modification time) del archivo.
-t [YYYYMMDDhhmm] Permite establecer una fecha y hora específica en lugar de utilizar la hora actual del sistema.

Comandos más utilizados

Comando Descripción
touch archivo.txt Crea un archivo vacío llamado "archivo.txt" (o actualiza su fecha si ya existe).
touch a.txt b.txt c.txt Crea múltiples archivos vacíos de forma simultánea en una sola instrucción.
touch -c archivo.txt Actualiza la hora del archivo solo si este ya existe, sin crearlo por error.

Equivalencia con otros sistemas

Acción Linux (Bash) Windows (CMD) Windows (PowerShell)
Crear archivo vacío touch archivo.txt type nul > archivo.txt New-Item archivo.txt
Crear múltiples archivos touch f1.txt f2.txt (Varios comandos independientes) "f1.txt", "f2.txt" | % { New-Item $_ }

Ejemplos

Crear un único archivo vacío

touch apuntes.txt

Crear varios archivos al mismo tiempo

touch index.html style.css script.js

Actualizar la fecha y hora de un archivo existente

touch existente.txt

Ejemplo de salida

santi@SantiPC ~/Escritorio> touch nuevo_documento.txt
santi@SantiPC ~/Escritorio> ls -l nuevo_documento.txt
-rw-r--r-- 1 santi santi 0 ago  6 12:45 nuevo_documento.txt

¿Cómo interpretar la salida?

    Al ejecutar touch sobre un archivo que no existe, la terminal no devuelve ningún mensaje de texto explícito (lo que indica éxito silencioso). Al listar el archivo con ls -l, se comprueba que se ha generado con un tamaño exacto de 0 bytes y con la fecha y hora actuales del sistema.

Errores habituales

  • Intentar crear un archivo en una ruta o directorio donde no se tienen permisos de escritura, lo que genera un error de acceso denegado (Permission denied).
  • Confundir la creación de carpetas con la creación de ficheros, intentando usar touch para crear directorios (para lo cual se debe emplear el comando mkdir).

Conceptos relacionados

  • Inodo
  • Metadatos de archivos
  • Redirección de salida en Linux
  • Marcas de tiempo (Timestamps)

Comandos relacionados

  • mkdir
  • rm
  • cat
  • ls
  • stat

Curiosidades

Aunque hoy en día lo asociamos automáticamente con la creación rápida de archivos vacíos, su propósito original en los sistemas Unix históricos era puramente el de gestión de tiempos. Los programadores descubrieron rápidamente que invocarlo sobre un fichero inexistente forzaba al sistema operativo a crearlo debido a las reglas internas de apertura de descriptores de archivos, convirtiéndolo en un atajo utilísimo.

Prácticas propuestas

  1. Abre tu terminal y crea un archivo de texto vacío llamado prueba.txt utilizando el comando touch. Verifica su tamaño con ls -l.
  2. Comprueba qué ocurre al ejecutar ls -l antes y después de aplicar touch sobre un archivo ya existente respecto a la columna de la hora de modificación.
  3. Intenta crear múltiples archivos de diferentes extensiones (por ejemplo, test1.py, test2.sh y test3.html) ejecutando una única línea con touch.
  4. Utiliza el comando stat prueba.txt para observar detalladamente cómo han cambiado las marcas de tiempo de acceso (Access) y modificación (Modify) tras usar el comando.
  5. Compara la creación de ficheros mediante touch frente a abrirlos y guardarlos desde un editor de texto plano como nano.

Consejo: Utiliza touch siempre que necesites dejar preparada la estructura de ficheros de un proyecto de programación antes de empezar a escribir código en ellos.

Preguntas de reflexión:

  1. ¿Por qué el comando touch crea un archivo con un tamaño de 0 bytes por defecto?
  2. ¿Qué diferencia hay entre la marca de tiempo de acceso (Access) y la de modificación (Modify) al usar touch?
  3. ¿Qué utilidad tiene la opción -c (--no-create) en entornos de scripts o programación?
  4. ¿Por qué no se puede utilizar touch para crear una carpeta o directorio nuevo?
  5. ¿Qué información adicional muestra el comando stat en comparación con un simple ls -l?
  6. ¿Cómo se comporta la gestión de creación de archivos vacíos en Windows en comparación con Linux?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué el comando touch crea un archivo con un tamaño de 0 bytes por defecto?

Porque la función principal del comando a nivel de sistema es inicializar un inodo vacío o actualizar marcas temporales, no escribir contenido dentro de él. El contenido se añade posteriormente mediante editores de texto o mediante técnicas de redirección de flujo (como > o >>).


2. ¿Qué diferencia hay entre la marca de tiempo de acceso (Access) y la de modificación (Modify) al usar touch?

La marca de acceso registra la última vez que el contenido del archivo fue leído o consultado, mientras que la marca de modificación registra cuándo se alteraron por última vez los datos del fichero. Por defecto, touch actualiza ambas marcas simultáneamente a la hora actual del sistema.


3. ¿Qué utilidad tiene la opción -c (--no-create) en entornos de scripts o programación?

Su utilidad principal es evitar la creación accidental de archivos nuevos si por algún error tipográfico en la ruta o en el nombre de la variable el archivo no se encontraba previamente en el disco. Garantiza que solo se actúe sobre ficheros que ya existen de antemano.


4. ¿Por qué no se puede utilizar touch para crear una carpeta o directorio nuevo?

Porque los directorios en los sistemas de archivos Linux poseen una estructura interna de metadatos de almacenamiento de ficheros completamente distinta a la de los archivos ordinarios. Para la creación de directorios vacíos el sistema cuenta con una herramienta especializada específica llamada mkdir.


5. ¿Qué información adicional muestra el comando stat en comparación con un simple ls -l?

El comando stat profundiza directamente en los metadatos del inodo del archivo, mostrando de forma desglosada y precisa los cambios exactos en los tiempos de acceso (Access), modificación (Modify) y cambio de estado (Change), además del número de inodo exacto, los bloques asignados y los permisos detallados en octal.


6. ¿Cómo se comporta la gestión de creación de archivos vacíos en Windows en comparación con Linux?

Mientras que en Linux disponemos de una herramienta limpia, rápida y nativa como touch integrada por defecto, en Windows (CMD) es necesario recurrir a trucos de redirección de flujo como type nul > archivo.txt o utilizar cmdlets específicos orientados a objetos como New-Item si se emplea la consola moderna de PowerShell.