¿Por qué la opción de cp de no sobrescribir archivos se llama --no-clobber?

¿Por qué la opción de cp de no sobrescribir archivos se llama --no-clobber?

cpes una herramienta de Linux muy popular mantenida por el equipo coreutils de la fundación GNU.

De forma predeterminada, los archivos con el mismo nombre se sobrescribirán; si el usuario desea cambiar este comportamiento, puede agregar --no-clobbera su comando de copia:

   -n, --no-clobber
          do not overwrite an existing file (overrides a previous -i option)

¿Por qué no algo así --no-overwrite?

Respuesta1

Golpear”en el contexto de la manipulación de datos significa destruir datos sobrescribiéndolos. En el contexto de los archivos en un entorno Unix, la palabra se utilizaba al menos desde principios de los años 1980, posiblemente antes.CshTuve set noclobberque configurarlo >para negarse a sobrescribir un archivo existente (más adelante set -o noclobberen ksh93 y otros shells estilo sh). CuandoSe agregaron GNU coreutils --no-clobber(en 2009), usaron el mismo vocabulario que usaban los caparazones.

Respuesta2

Porque este es en realidad un término estándar. Como se explica enWikipedia:

En ingeniería de software, dañar un archivo o la memoria de una computadora es sobrescribir su contenido. El archivo Jargon define la paliza como

Para sobrescribir, generalmente sin querer: "Me salí del final de la matriz y golpeé la pila". Compara mung, garabatea, basura y rompe la pila.

Como se menciona en la misma página, bash y otros shells también usan el término en su set -o noclobberequivalente. Este es sólo el término estándar para este tipo de cosas, por lo que fue una elección natural para los desarrolladores de cp.

Respuesta3

El término "golpe" es bien conocido en la informática en general.

La opción --no-clobber/ para solo fue agregada el 14 de enero de 2009 por Kamil Dudka <-ncp[correo electrónico protegido]> (comprometerse en github).

Específicamente dentro del proyecto GNU, también se usa en GCC.para describir cuándo una instrucción de CPU o una declaración asm en línea destruye el contenido de un registro. Por lo tanto, no es una palabra inglesa elegida al azar, y no es improbable que las personas que trabajan en proyectos GNU escritos en C estén al menos familiarizadas de pasada con el uso del término en los documentos de GCC, o de otros desarrolladores de proyectos GNU que lo usan:

  • (clobber x)enArchivos de descripción de máquina internos de GCCque enseñan a GCC lo que hace cada instrucción en una ISA. (Restricciones similares a inline-asm)
  • Conjunto extendido de GNU CLas declaraciones en línea asm()tienen una sección de "golpe" para indicarle al compilador qué registra los pasos de la plantilla ASM en línea. Como este ejemplo x86 inútil y sin sentido:
    asm("xor %eax,%eax; mfence" ::: "eax", "memory", "cc");. por ejemplo, unPreguntas y respuestaspreguntando sobre una convención de llamada de funciones en esos términos.
  • Documentos del CCGpara-fcall-used-regdescríbalo como decirle al compilador que un registro determinado es "golpeado" por llamadas a funciones (es decir, modifica la convención de llamadas). Opuesto a-fcall-saved-rego-ffixed-reg.
  • CCG-Wclobberedadvertencia: "Advertencia sobre variables que podrían cambiar mediante longjmp o vfork". (IDK si esto existió en 2009, pero demuestra que esta palabra se usa para describir este tipo de cosas en varios contextos, incluidos nombres de opciones en otros programas).

El autor del coreutils commit que agregó --no-clobber, Kamil Dudka, definitivamente está familiarizado con los aspectos internos de GCC: él (¿más tarde?)escribió un complemento GCCpara la verificación formal de programas C.

No sé si los elementos internos de GCC influyeron en su elección de nombre, o si eso provino de opciones de shell existentes como set noclobber, o ambas.

Dato curioso: los autores originales de GNU cpincluyen a Torjorn Granlund, autor principal deel proyecto gmplib(GNU Multi-Precision), y quien ayudó a inventar/implementar la optimización inversa multiplicativa de GCC para la división por una constante de tiempo de compilación (artículo de 1994, Desbordamiento de pilaPreguntas y respuestas).

información relacionada