stringtranslate.com

mv (Unix)

mves un comando de Unix que mueve uno o más archivos o directorios de un lugar a otro. Si ambos nombres de archivo están en el mismo sistema de archivos, esto da como resultado un simple cambio de nombre de archivo; de lo contrario, el contenido del archivo se copia a la nueva ubicación y el archivo anterior se elimina. El uso mvrequiere que el usuario tenga permiso de escritura para los directorios entre los que se moverá el archivo. Esto se debe a que mvcambia el contenido de ambos directorios ( es decir , el de origen y el de destino) involucrados en el movimiento. Cuando se usa el mvcomando en archivos ubicados en el mismo sistema de archivos, la marca de tiempo del archivo no se actualiza.

En las implementaciones de UNIX derivadas de AT&T UNIX , cp , ln y mv se implementan como un único programa con binarios enlazados de forma rígidaargv[0] . El comportamiento se selecciona a partir del nombre de la ruta . Esta es una técnica común mediante la cual comandos estrechamente relacionados que se han empaquetado como una unidad permiten al usuario especificar el curso particular de la acción deseada.

Historia

Un movecomando que mueve una entrada de directorio a un nuevo directorio fue implementado por primera vez dentro de Multics . Puede contraerse a mv. [1] Más tarde, el mvcomando apareció en la Versión 1 de Unix [2] y se convirtió en parte de la Guía de Portabilidad X/Open número 2 de 1987. [3] La versión de mvincluida en GNU coreutils fue escrita por Mike Parker, David MacKenzie y Jim Meyering. [4] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU similares a Unix. [5] El comando mv también ha sido portado al sistema operativo IBM i . [6]

Archivo existente conflictivo

Cuando se mueve un nombre de archivo a un nombre de archivo existente, el archivo existente se elimina ( se elimina ) de forma predeterminada. Si el archivo existente no es escribible pero se encuentra en un directorio en el que sí lo es, el comando mv solicita confirmación (si se ejecuta desde una terminal) antes de continuar, a menos que se utilice la opción -f (forzar).

Se puede evitar la sobrescritura accidental utilizando el indicador GNU -n(long format: --no-clobber). Alternativamente, -u( --update) solo sobrescribe los archivos de destino que son más antiguos que los archivos de origen, -i( --interactive) solicita confirmación ante cada conflicto de nombres y -b( --backup) renombra los archivos de destino sin que interfieran.

Una ambigüedad relacionada surge cuando se mueve un nombre de archivo a un directorio existente. De manera predeterminada, mvse trataría esto como si se intentara mover un nombre dentro de este directorio. GNU mv tiene un -Tinterruptor para desactivar esta suposición e intentar sobrescribir el directorio en su lugar. Una operación inversa -thace explícita la operación de mover a directorio. [4]

Mover versus copiar y eliminar

El traslado de archivos dentro del mismo sistema de archivos generalmente se implementa de manera diferente a la copia del archivo y luego la eliminación del original. En las plataformas que no admiten la llamada al sistema de cambio de nombre , se agrega un nuevo vínculo al nuevo directorio y se elimina el original. No se accede a los datos del archivo. Todos los sistemas compatibles con POSIX implementan la llamada de cambio de nombre .

Un movimiento real (en realidad, un cambio de nombre) es mucho más rápido que el procedimiento indirecto de copiar y mover. El número i del archivo (abreviatura de " número de inodo ") no cambia. No se requiere permiso para leer el archivo que se está moviendo, ya que, conceptualmente hablando, solo se está modificando la información de catalogación como resultado del "movimiento". Dado que se están modificando los directorios de origen y destino, es decir, se están creando entradas dentro del directorio de destino y se están borrando desde dentro del directorio de origen, se requiere permiso de "escritura" en ambos directorios para completar el movimiento. El movimiento de archivos de un sistema de archivos a otro puede fallar por completo o puede realizarse automáticamente como una acción atómica de copia y eliminación; los detalles reales dependen de la implementación.

Para mover un directorio de un directorio principal a otro directorio principal diferente, se requieren permisos de escritura en el directorio que se va a mover, además de permisos para modificar los directorios principales antiguos y nuevos. Esto se debe a que el número i de la entrada de directorio ".." (que se puede utilizar en cualquier contexto como un alias para el directorio principal del directorio actual) cambia como resultado del cambio de nombre.

Opciones

La mayoría de las versiones de mv admiten:

Estas opciones forman parte de las Directrices de portabilidad de X/Open, que más tarde se convirtieron en la base de POSIX y SUS . Todas las implementaciones de mv compatibles con POSIX deben admitirlas. [7]

Ejemplos

Tenga en cuenta que, en el ejemplo anterior, /mnt hacía referencia al directorio (el "punto de montaje") sobre el que se monta un determinado sistema de archivos. Nombrar dichos directorios como /mnt es una convención popular, pero no es en absoluto necesario. Un "sistema de archivos" puede considerarse como un árbol independiente que se considera lógicamente como una unidad; su raíz se "monta" sobre un directorio elegido por el administrador. Todo el contenido anterior de ese directorio es invisible, pero se "restaura" cuando se desmonta el nuevo volumen.

Véase también

Referencias

  1. ^ Comandos Multics
  2. ^ mv(1)  –  Manual de comandos generales de FreeBSD
  3. ^ mv : mover archivos – Referencia de shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
  4. ^ ab mv(1) –  Manual de comandos generales de Linux
  5. ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
  6. ^ IBM . "Programación Qshell para IBM System i versión 7.2" (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
  7. ^ Especificación única de Unix de los años 1980: motivación

Enlaces externos