touch
crea 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
touch
intenta 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 -c
se especifique la opción.
(No sé qué touch
hizo si el archivo estaba vacío. La llamada del sistema subyacente vino después).
No estoy seguro de por qué touch
fue 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 touch
solo pudo establecer el tiempo de modificación en el tiempo actual. Una razón para hacerlo es volver a ejecutar una make
regla que depende del archivo.
Es decir, supongamos que tiene un archivo foo
, y un makefile que declara un comando para generar bar
a partir foo
. Cuando escribe make bar
, el comando se ejecuta y bar
se crea. Si bar
existe y es más nuevo que foo
, make bar
no hace nada, porque make
supone que bar
ya se ha generado. Sin embargo, si bar
es más antiguo que foo
, haga pensar que bar
no está actualizado y necesita ser regenerado.
Pero, ¿qué pasa si las reglas para generar bar
han cambiado? Entonces tienes dos opciones:
rm bar; make bar
touch foo; make bar
Tendría foo
que existir para generar bar
, de lo contrario el comando normalmente no funcionaría.
La terminología "táctil" también estaba presente en la make
utilidad: make -t bar
solo pretendía ejecutar los comandos, es decir, establecería el tiempo de modificación bar
en la hora actual sin ejecutar realmente el comando para generar bar
(haría esto si pensara que los cambios a foo
no deberían afectar bar
). Por touch
lo tanto, la utilidad era una versión independiente de la make -t
función.
touch /forcefsck
para crear un archivo vacío llamado/forcefsck
para 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 usarvi
onano
guardar un archivo en blanco. Mucho más rápido de usartouch
.