touchcrea un nuevo archivo vacío si el archivo no existe porque para eso fue diseñado. La utilidad tiene que contener código para manejar ese caso específicamente. La utilidad apareció en Unix V7 ; su manual lo describe así:
touch - fecha de actualización última modificación de un archivo
touchintenta establecer la fecha de modificación de cada archivo . Esto se hace leyendo un personaje del archivo y volviéndolo a escribir. Si no existe un ** archivo *, se intentará crearlo a menos que -cse especifique la opción.
(No sé qué touchhizo si el archivo estaba vacío. La llamada del sistema subyacente vino después).
No estoy seguro de por qué touchfue diseñado para hacer que el archivo exista, pero sospecho que es por eso make. ¿Por qué querría establecer la hora de modificación de un archivo a la hora actual? Hay casos en los que podría ser útil establecer el tiempo de modificación en un momento en particular, pero esa capacidad llegó más tarde, el original touchsolo pudo establecer el tiempo de modificación en el tiempo actual. Una razón para hacerlo es volver a ejecutar una makeregla que depende del archivo.
Es decir, supongamos que tiene un archivo foo, y un makefile que declara un comando para generar bara partir foo. Cuando escribe make bar, el comando se ejecuta y barse crea. Si barexiste y es más nuevo que foo, make barno hace nada, porque makesupone que barya se ha generado. Sin embargo, si bares más antiguo que foo, haga pensar que barno está actualizado y necesita ser regenerado.
Pero, ¿qué pasa si las reglas para generar barhan cambiado? Entonces tienes dos opciones:
rm bar; make bar
touch foo; make bar
Tendría fooque existir para generar bar, de lo contrario el comando normalmente no funcionaría.
La terminología "táctil" también estaba presente en la makeutilidad: make -t barsolo pretendía ejecutar los comandos, es decir, establecería el tiempo de modificación baren la hora actual sin ejecutar realmente el comando para generar bar(haría esto si pensara que los cambios a foono deberían afectar bar). Por touchlo tanto, la utilidad era una versión independiente de la make -tfunción.
touch /forcefsckpara crear un archivo vacío llamado/forcefsckpara forzar a los sistemas de archivos a verificar si hay errores en el próximo reinicio. El archivo en sí no necesita contener nada, solo necesita existir. Sin estotouch, necesitaría usarvionanoguardar un archivo en blanco. Mucho más rápido de usartouch.