¿Cuál es el punto del touch
comando? Sé que puedo crear archivos vacíos con él, pero también es el caso con echo -n
.
De lo contrario, ¿por qué alguien necesitaría cambiar las marcas de tiempo de un archivo? A menos que cree la falsa impresión sobre la antigüedad de un archivo, no veo ningún otro uso, y este no es legítimo (desde mi punto de vista).
command
timestamps
touch
Quora Feans
fuente
fuente
echo -n > filename
, puede ejecutar lo siguiente:>filename
Unless to create the false impression about the age of a file
. No es necesaria una falsa impresión. ¿Qué pasa si desea cambiar la hora de modificación? Puede ser útil en scripts. Este script depende en gran medida deltouch
comando y es muy conveniente y simple tenerlo así.tar
(u otros desarchivadores) hacen cuando extraen un archivo. En general, establecen el tiempo de modificación del archivo en el tiempo del archivo, no en el momento en que se extrajo el archivo, y esta es una característica deseable. Dado que es legítimo que un programa en modo de usuario cree marcas de tiempo falsas, no hay mucho argumento por quétouch
(o algún otro programa de línea de comandos) no debería permitirlo basándose en un argumento de línea de comandos. Aprender C no te hace más legítimo que alguien escribiendo unsh
guión ;-)age
de un archivo. Esa sería unacreation
marca de tiempo y no existe tal marca de tiempo para los archivos en Unix.Respuestas:
Una ventaja de esto
touch
es que puede especificar marcas de tiempo arbitrarias, mientrasecho -n
que siempre dará como resultado la hora actual.Un ejemplo de uso legítimo es actualizar una marca de tiempo de un archivo de código fuente para que un programa como
make
este considere el archivo fuente más nuevo que su objeto compilado y lo reconstruya.Otros usos son crear archivos que funcionen únicamente en función de su existencia
/etc/nologin
, por ejemplo , que no permite inicios de sesión si existe. También diría quetouch myfile
es una construcción más simple queecho -n >> myfile
, además de ser más corta de escribir.fuente
echo -n
, veo que dice "no mostrar la nueva línea final". Así que no veo cómo puede crear un archivo vacío. ¿Puedes aclarar por favor?echo -n
generará una cadena vacía, y por sí sola no hace nada. Redirigir su salida a través de>>
hace que la salida vacía se agregue a un archivo. La redirección hará que el archivo se cree si el archivo no existe.echo -n
un comando que no hace nada.echo -n
puede generar la cadena "-n" debajo de algunos shells. Si realmente necesita un comando que no hace nada,:
otrue
es una mejor opción, pero>> myfile
por sí mismo también es una forma perfectamente válida de crear el archivo si no existe. Todo esto, por supuesto, respalda su respuesta de que solo debe usar "touch".La llamada al sistema subyacente (
utime
) es importante para varias utilidades comotar
poder configurar las marcas de tiempo de un archivo recién copiado (sin tarred). Algunas utilidades de respaldo también se pueden optar por restablecer el último acceso de los archivos que han copiado.Un uso legítimo de
touch
es crear un archivo con una marca de tiempo particular. Tal archivo de "referencia" puede ser utilizado por comandos comofind
. Por ejemplo, para buscar todos los archivos modificados más recientemente que el 1 de noviembre de 2013 (es decir, 2013/11/01) "fuente
201311010000
significa Nov1,2013? ¿Hay alguna utilidad que me diga esto? En otras palabras, ¿cómo determino la entrada a tocar?20131101
se puede dividir en2013-11-01
, o el 1 de noviembre de 2013. Luego puede suponer que la0000
parte indica una hora específica del día, en este caso 00 horas, 00 minutos. O simplemente puede mirar la página de manualtouch
, que le dice exactamente cuál es el formato (ver-t
).El
touch
propósito principal del comando es manipular las marcas de tiempo de los archivos y crear archivos.Ejemplos
1. crear archivos
NOTA: La
total 0
salida dels -l
es correcta. Esta implementación dels
muestra el número de bloques que utilizan los archivos cuando se enumeran. Puede asegurarse de este hecho agregando el-s
interruptor als
. Esto enumerará los bloques en uso por cada archivo. Aquí he agregado 2 caracteres a archivo1 y archivo2.Ejemplo
2. información de hora / fecha de un archivo - comando stat
Podemos utilizar
touch
para manipular las diversas marcas de tiempo en un archivo determinado.3. extracto de la página de manual de touch
4. manipulando el tiempo de acceso
5. manipular modificar tiempo
Tal vez se pregunte sobre el tiempo de cambio (ctime). Eso no puede ser manipulado usando
touch
. Eso rastrea el momento en que se tocó cualquiera de los metadatos en el archivo. Consulte estas preguntas y respuestas de U&L para obtener más detalles, titulado: ¿Qué puede hacer en un archivo sin activar la marca de tiempo "Cambiar"? .fuente
ls -l
un directorio donde los archivos tienen tamaño 0, y todavía no existe nada más. Tan pronto como proporcione el tamaño de uno de los archivos, aparecerá el total con la cantidad de bloques en uso por los archivos. Vea mis actualizaciones si no está seguro, he agregado un ejemplo.Además de las otras dos muy buenas respuestas que obtuvo, otro uso es, en sus palabras, para
por ejemplo para usar en esquemas de respaldo . Es posible que no desee actualizar una copia de seguridad con una nueva porque son idénticas o porque los cambios son irrelevantes en comparación con el costo de actualizar una copia de seguridad en, por ejemplo, una línea lenta a un host remoto. Para lograr esto, tiene la opción simple de marcar el archivo de copia de seguridad con una marca de tiempo más nueva, sin falsificar, pero declarando que la marca de tiempo de validez de ese archivo ahora es diferente.
La impresión sobre la antigüedad del archivo ahora es realmente falsa, pero su significado es real y legítimo.
fuente
Uno de los usos más comunes de
touch
es, o al menos solía ser, para desencadenar una reconstrucción de código.Las herramientas de compilación habituales,
make
y sus derivados, intentan ahorrar trabajo al no volver a compilar / reconstruir archivos, a menos que uno de los archivos que los creó haya cambiado, por ejemplo, si un archivo .o es más reciente que el .c fuente, generalmente es seguro suponer que la fuente C no ha cambiado desde que se compiló para producir ese archivo de objeto.Pero hay momentos en los que quieres forzar la reconstrucción de algo. Podría realizar una modificación innecesaria en uno de sus archivos fuente, pero eso corre el riesgo de dañar accidentalmente algo. En cambio, podría simplemente
touch
el archivo, haciéndolo parecer nuevo sin ningún riesgo de alterar su contenido, y eso sería suficiente para convencer demake
que era hora de reconstruir todo lo que depende de ese archivo.Hay otros usos, pero históricamente ese fue el más importante.
fuente
touch
es tan malo como un cambio manual. Para provocar una reconstrucción, sugiero eliminar los archivos.o
de salida de la fuente en cuestión.He trabajado con al menos un marco web (no recuerdo cuál) que en modo de desarrollo observaba los cambios en los archivos de código fuente y volvía a cargar la aplicación cuando eso sucedía.
Por supuesto, a veces querías que se volviera a cargar después de cambiar algo que no estaba viendo, en cuyo caso
touch
su archivo de configuración principal funcionó.Por lo tanto, en el caso general, cada vez que desee iniciar un proceso desencadenado por cambios en un archivo, sin cambiar realmente el archivo.
fuente
Uso legítimo del tacto:
fuente
Un uso es corregir la marca de tiempo de un archivo que se configuró incorrectamente.
Por ejemplo, la mayoría de las formas en que copia un archivo (y de alguna manera que podría mover un archivo) da como resultado que el nuevo archivo tenga una marca de tiempo de la hora actual, en lugar de la marca de tiempo del archivo original.
Por lo general, esto no es lo que se desea. El tacto puede "arreglar" eso.
Otro uso es reflejar una modificación de archivo que se deshizo restaurando la marca de tiempo del archivo a lo que era antes de las operaciones "editar ... deshacer-editar".
fuente
alias cp='cp --preserve=timestamps'
es más adecuado para mí en PCUna diferencia importante frente a me
things
gustaecho
(o incluso mejor> file
como lo mencionaron otros) es que el tacto no destruirá el contenido.> file
vaciará un archivotouch
No lo haré. En lugar de pensar en trucos para evitar dañar el contenido, ¡solo usa el tacto! De todos modos, hará menos trabajo en el núcleo, porque solo funcionará con los atributos del archivo sin perder tiempo preparándose para una apertura y luego realizando un cierre.El tacto probablemente puede alterar la marca de tiempo, incluso si el archivo está actualmente bajo un bloqueo obligatorio o de aviso, o está abierto de forma exclusiva. Hmmm, nunca he probado eso o leído sobre eso ...
fuente
>>
se agregará en lugar de sobrescribirAquí hay uno: utilizo un programa de software llamado SageTV para grabar programas de televisión; a menudo se graban en MPEG-2, que no es un códec muy eficiente, tampoco es compatible con iPad / iPhone. Entonces convierto los archivos a archivos .mp4. Pero al reproducir los archivos, SageTV espera que la marca de tiempo del archivo sea cuando comenzó el programa de TV; si no, arruina la línea de tiempo del programa para que no sea fácil FF o REW. Por lo tanto, utilizo la función táctil para restablecer la marca de tiempo del archivo .mp4 para que sea la misma que el archivo original.
¿Es eso legítimo?
fuente
A menudo puede tener un proceso que cambia de userid, como desde root -> algo más. Touch puede darle la oportunidad de crear un archivo en un lugar que solo root puede tocar antes de que la aplicación comience a iniciar sesión como el otro usuario.
fuente
En el trabajo tenemos un archivo de mapas digitales de más de 15 años. Estos mapas antiguos se guardan en una variedad de formatos como PostScript, EMF, PRN, hpgl2, pdf, etc. que la mayoría de los programas no entienden. O necesita una docena de programas diferentes para verlos a todos.
Para facilitar la búsqueda y exploración fácil de todos estos formatos diferentes, creamos versiones jpeg de los mapas y luego usamos la función táctil para hacer que el archivo jpeg coincida con la marca de tiempo del archivo fuente original, a menudo años después de que se hizo el original.
Ahora podemos usar un solo programa como Picasa para ver toda la biblioteca y localizar trivialmente ciertos rangos de fechas. Sin tocar, tendríamos que agregar metadatos de fecha para cada imagen, probablemente de forma manual, y luego buscar esas cadenas al buscar un rango de fechas específico.
fuente
Todavía no lo he usado para este propósito, pero tengo un script que lee los archivos y sus fechas desde un directorio y los lee para usar en una página web. Si tengo que editar uno, cambiará su fecha. He considerado
touch
invitarlos a restablecer su orden.fuente
Algunos guiones de inicio comparan la marca de tiempo de un archivo de configuración con su propio archivo pid. El resultado decide si volver a cargar el servicio en ejecución o no.
Si hay una situación en la que no desea cambiar la configuración pero desea forzar la recarga, toque aquí lo ayuda.
fuente
Tengo un trabajo cron que obtiene los cambios de una base de datos que se han producido entre la última ejecución del trabajo y la ejecución actual. Produce un archivo XML de los cambios que luego se procesan en una base de datos diferente. Obtiene el último tiempo de ejecución de la marca de tiempo en el archivo de salida XML. *
Si algo sale mal en el procesamiento del archivo XML, es posible que desee repetir la ejecución desde la fecha original, no desde la fecha mencionada en la marca de tiempo del nuevo archivo XML.
La forma más sencilla de hacer esto, en lugar de editar los scripts que se llaman, etc., es tocar el archivo XML y forzar que la marca de tiempo sea la fecha que requiero.
Además, si empiezo de nuevo (sin archivo de salida XML anterior), simplemente puedo simular su existencia mediante el tacto.
[*] Antes de que alguien lo señale, me doy cuenta de la hora en que comienza el trabajo y la escritura del archivo XML deja un intervalo de tiempo de unos pocos minutos donde podrían ocurrir cambios en la base de datos. El trabajo se ejecuta en un momento en que los cambios de DB son extremadamente improbables. Esa es mi excusa y me quedo con ella :-)
fuente