mv
is a mv
requires the user to have write permission for the ''directories'' the file will move between. This is because mv
changes the content of both directories (''i.e.'', the source and the target) involved in the move. When using the mv
command on files located on the same filesystem, the file's timestamp is not updated.
On UNIX implementations derived from AT&T UNIX, cp, ln and mv are implemented as a single program with hard-linked binaries. The behavior is selected from the path name argv /code>. This is a common technique by which closely related commands that have been packaged as a unit allow the user to specify the particular course of the intended action.
History
A command that moves a directory entry to a new directory was first implemented within Multics
Multics ("Multiplexed Information and Computing Service") is an influential early time-sharing operating system based on the concept of a single-level memory.Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of ...
. It can be contracted to . Later, the command appeared in Version 1 Unix and became part of the X/Open Portability Guide issue 2 of 1987.
The version of mv
bundled in GNU coreutils
The GNU Core Utilities or coreutils is a package of GNU software containing implementations for many of the basic tools, such as cat, ls, and rm, which are used on Unix-like operating systems.
In September 2002, the ''GNU coreutils'' were c ...
was written by Mike Parker, David MacKenzie, and Jim Meyering. The command is available as a separate package for Microsoft Windows as part of the UnxUtils collection of native Win32 ports of common GNU Unix-like utilities. The command has also been ported to the IBM i operating system.
Conflicting existing file
When a filename is moved to an existing filename, the existing file is deleted ( clobbered) by default. If the existing file is not writable but is in a directory that is writable, the mv command asks for confirmation (if run from a terminal) before proceeding, unless the -f (force) option is used.
Accidental overwriting can be prevented using the GNU -n
(long format: --no-clobber
) flag. Alternatively, -u
(--update
) only overwrites destination files that are older than source files, -i
(--interactive
) asks for confirmation upon each name conflict, and -b
(--backup
) renames target files out of the way.
A related ambiguity arises when a filename is moved to an existing directory. By default, mv
would handle this as one trying to move a name inside this directory. GNU mv has a switch for disabling this assumption and try to overwrite the directory instead. An inverse makes the move-to-directory operation explicit.
Moving versus copying and removing
Moving files ''within the same file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one lar ...
'' is generally implemented differently than copying the file and then removing the original. On platforms that do not support the rename syscall, a new link is added to the new directory and the original one is deleted. The data of the file is not accessed. All POSIX
The Portable Operating System Interface (POSIX) is a family of standards specified by the IEEE Computer Society for maintaining compatibility between operating systems. POSIX defines both the system- and user-level application programming inte ...
-conformant systems implement the ''rename'' call.
An actual move (effectively a rename) is dramatically faster than the circuitous copy-and-move procedure. The file's i-number (short for "inode
The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attribu ...
number") does not change. No permission is required to read the file being moved insofar as—conceptually speaking—it is only information that is being changed as a result of the "move." Since the source and target directories are being modified, to wit, entries are being created within the target directory and erased from within the source directory, "write" permission in both directories is required to complete the move. Moving files from one file system to another may fail entirely or may be automatically performed as an atomic copy-and-delete action; the actual details are dependent upon the implementation.
Moving a directory from one parent to a different parent directory requires write permission in the directory being moved, in addition to permissions to modify the old and new parents. This is because the i-number for the directory entry ".." (which can be used in any context as an alias for the parent of the current directory) changes as a result of the rename.
Options
Most versions of mv support:
* -i
interactively process, write a prompt to standard error
The standard error (SE) of a statistic (usually an estimate of a parameter) is the standard deviation of its sampling distribution or an estimate of that standard deviation. If the statistic is the sample mean, it is called the standard error ...
before moving a file that would overwrite an existing file. If the response from the standard input begins with the character 'y' or 'Y', the move is attempted. (Overrides previous -f option.)
* -f
force overwriting the destination (overrides previous -i option).
These options are a part of X/Open Portability Guidelines, later the basis of POSIX and SUS
Sus or SUS may refer to:
Places
* Sus, Lachin, a village
* Sus, Pune, India, a neighborhood
*Sus, Pyrénées-Atlantiques, France, a commune
*Susch, Graubünden, Switzerland, a municipality formerly called Süs
People
* Martin Sus (footballer ...
. All POSIX-compliant mv implementations must support these. Single Unix Specification#1980s: Motivation
Examples
Note that, in the above example, ''/mnt'' referred to the directory (the "mount point") over which a given file system is mounted. Naming such directories ''/mnt'' is a popular convention but is by no means necessary. A "file system" can be thought of as an independent tree that is logically regarded as a unit; its root is "mounted" atop a directory of the administrator's choice. Any previous contents of that directory are invisible, but they are "restored" when the new volume is unmounted.
See also
*cp (Unix)
In computing, cp is a command in various Unix and Unix-like operating systems for copying files and directories. The command has three principal modes of operation, expressed by the types of arguments presented to the program for copying a file ...
* ln (Unix)
* rm (Unix)
*List of Unix commands
This is a list of Unix commands as specified by IEEE Std 1003.1-2008, which is part of the Single UNIX Specification (SUS). These commands can be found on Unix operating systems and most Unix-like operating systems.
List
See also
* List of G ...
* move (command)
* ren (command)
References
External links
*
*
{{Core Utilities commands
Unix SUS2008 utilities
Inferno (operating system) commands
IBM i Qshell commands