De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

mv es 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 en la nueva ubicación y se elimina el archivo antiguo. El uso de mv requiere que el usuario tenga permiso de escritura para los directorios entre los que se moverá el archivo. Esto se debe a que mv cambia el contenido de ambos directorios ( es decir , el origen y el destino) involucrados en el movimiento. Cuando se usa el comando mv 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 solo programa con binarios vinculados . El comportamiento se selecciona del nombre de la ruta argv[0]. Esta es una técnica común mediante la cual los comandos estrechamente relacionados que se han empaquetado como una unidad permiten al usuario especificar el curso particular de la acción prevista.

Historia [ editar ]

Un movecomando que mueve una entrada de directorio a un nuevo directorio se implementó por primera vez dentro de Multics . Se puede contratar a mv. [1] Más tarde, el mvcomando apareció en la versión 1 de Unix [2] y se convirtió en parte del número 2 de 1987 de X / Open Portability Guide . [3] La versión de GNU coreutilsmv incluida en GNU fue escrita por Mike Parker, David MacKenzie y Jim Meyering. [4] El comando mv también se ha adaptado al sistema operativo IBM i . [5]

Archivo existente en conflicto [ editar ]

Cuando un nombre de archivo se mueve a un nombre de archivo existente, el archivo existente se elimina. Si el archivo existente no se puede escribir, pero se encuentra en un directorio en el que se puede escribir, el comando mv solicita confirmación (si se ejecuta desde una terminal) antes de continuar, a menos que se use la opción -f (forzar).

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

Mover versus copiar y eliminar [ editar ]

Mover archivos dentro del mismo sistema de archivos generalmente se implementa de manera diferente a copiar el archivo y luego eliminar el original. En las plataformas que no admiten el cambio de nombre del syscall, se agrega un nuevo enlace 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 (de hecho, un cambio de nombre) es dramáticamente más rápido que el tortuoso procedimiento 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 en la medida en que, conceptualmente hablando, es solo información de catalogación la que se está modificando como resultado del "movimiento". Dado que los directorios de origen y destino se están modificando, es decir, las entradas se crean dentro del directorio de destino y se borran desde el directorio de origen, se requiere permiso de "escritura" en ambos directorios para completar el movimiento. Mover archivos de un sistema de archivos a otro puede fallar por completo o puede realizarse automáticamente como una acción atómica de copiar y eliminar; los detalles reales dependen de la implementación.

Mover un directorio de un padre a un directorio padre diferente requiere permiso de escritura en el directorio que se está moviendo, además de permisos para modificar los padres antiguos y nuevos. Esto se debe a que el número i para la entrada de directorio ".." (que se puede usar en cualquier contexto como un alias para el padre del directorio actual) cambia como resultado del cambio de nombre.

Opciones [ editar ]

La mayoría de las versiones de mv admiten:

  • -i i nteractively proceso, escribir un mensaje para el error estándar antes de mover un archivo que sobrescribir un archivo existente. Si la respuesta de la entrada estándar comienza con el carácter 'y' o 'Y', se intenta el movimiento. (Anula la opción -f anterior).
  • -f f orce sobreescribir el destino (anula la opción -i anterior).

Estas opciones son parte de X / Open Portability Guidelines, más tarde la base de POSIX y SUS . Todas las implementaciones de MV compatibles con POSIX deben admitirlas. [6]

Ejemplos [ editar ]

Tenga en cuenta que, en el ejemplo anterior, / mnt se refería al directorio (el "punto de montaje") sobre el que se monta un sistema de archivos determinado. Nombrar dichos directorios / mnt es una convención popular, pero de ninguna manera es necesario. Se puede pensar en un "sistema de archivos" como un árbol independiente que lógicamente se considera como una unidad; su raíz está "montada" encima de un directorio elegido por el administrador. Cualquier contenido anterior de ese directorio es invisible, pero se "restaura" cuando se desmonta el nuevo volumen.

Ver también [ editar ]

  • cp (Unix)
  • en (Unix)
  • rm (Unix)
  • Lista de comandos de Unix
  • mover (comando)
  • ren (comando)

Referencias [ editar ]

  1. ^ Comandos de Multics
  2. ^ mv(1)  -  Manual de comandos generales de FreeBSD
  3. ^ mv : mover archivos: referencia de comandos y utilidades, la especificación única de UNIX , número 7 de The Open Group
  4. ^ a b mv(1)  -  Manual de comandos generales de Linux
  5. ^ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . Consultado el 5 de septiembre de 2020 .
  6. ^ Especificación única de Unix # 1980: Motivación

Enlaces externos [ editar ]

  • mv - Referencia de comandos y utilidades, la especificación única de UNIX , número 7 de The Open Group
  • mv(1) -  Manual de comandos generales de Inferno