NAME

     cp, mv, rm, ln, cpdir, clone - copy, move, remove, link


SYNOPSIS

     cp [-pifsmrRvx] file1 file2
     cp [-pifsrRvx] file ... dir

     mv [-ifsmvx] file1 file2
     mv [-ifsvx] file ... dir

     rm [-ifrRvx] file ...

     ln [-ifsSmrRvx] file1 file2
     ln [-ifsSrRvx] file ... dir

     cpdir [-ifvx] file1 file2

     clone [-ifsSvx] file1 file2


DESCRIPTION

     The utilities cp, mv, rm, and ln do basic  file  management:
     copying,  renaming  or moving, deletion, and creating links.
     (The cpdir and clone utilities are easy to use  aliases  for
     copying  or  linking  whole  trees.  They are the same as cp
     -psmr and ln -fmr)

     The first synopsis form of the utilities cp, mv, and  ln  is
     used  if  only two arguments are given, and the second argu-
     ment is not a directory.  The source  and  target  file  are
     then the two files given.

     If the second synopsis form is used then the  last  argument
     must  be a directory.  Each of the files is copied, moved or
     linked into this directory.

     A file is by default copied by cp  without  looking  at  its
     type,  so  symlinks  are followed and devices are opened and
     read from or written to.  Links between files  are  ignored.
     This behavior can be changed by using the proper options.

     The mv utility uses the rename(2) call  to  rename  or  move
     files.   If  source and target are on different devices how-
     ever, then mv will use cp -pr to copy the files or directory
     trees.

     Each utility continues with the next file on errors,  except
     on I/O errors.


OPTIONS

     -p   Copy the file attributes like mode,  owner,  group  and
          time  of  last modification.  Normally only the mode is
          copied to a  new  file  with  the  file  creation  mask
          applied.  Setuid bits are cleared if setting the owner-
          ship fails.

     -i   Ask if ok to overwrite, replace or remove.  Mv  and  rm
          will ask this automatically if interactive and the tar-
          get file is writable.  Cp will fail if the target  can-
          not  be  written,  ln  will  always  fail if the target
          exists.

     -f   Makes cp remove a target file before copying if  it  is
          not  writable,  mv  removes  an existing target without
          asking, rm does not report any errors, and  ln  removes
          an existing target file before linking.  The last of -i
          and -f wins for mv if both flags  are  set,  the  other
          utilities  do  something  sensible,  like asking before
          forcefully removing.

     -s   Make a symlink instead of a normal link.  For utilities
          other  than  ln  this  flag  means "copy similar".  The
          modified time is always copied for cp -s and the  other
          attributes  are  copied  if a new file is created.  The
          normal POSIX required  patronizing  like  applying  the
          file creation mask or clearing setuid bits is not done.

     -S   Make a symlink if a normal link cannot be made  because
          source  and  target are on different devices.  The sym-
          link is required to really refer back  to  the  source,
          meaning  that a/b must exist in the call ln -S a/b c/d,
          and that the symlink from c/d must lead  back  to  a/b.
          So  the  symlink will be created as if ln -s ../a/b c/d
          was called.  If the target is  a  full  path,  but  the
          source  is  not then an error will be given saying that
          this is "too difficult."

     -m   Merge trees.  The first synopsis form is  assumed,  and
          the  files  from  one  tree  are merged into the other.
          There is no "if it's a directory the put it  into  that
          directory" trickery here.

     -r, -R
          Recursively copy, remove, or link.  If the source is  a
          directory  then  the files in this directory are copied
          to similarly named files in the target directory.  Spe-
          cial  files  are  copied as new special files, they are
          not read or written.  Symlinks are still  expanded  and
          the  link  structure ignored with -R.  The -r flag does
          copy symlinks as symlinks and keeps the link  structure
          intact.   (Note  that  -R  is  invented  by  POSIX as a
          replacement for the classic -r  option  of  older  copy
          commands  that  did  read  special files.  The standard
          says that -r is implementation defined, so  that's  why
          this  flag  is better than -R in this implementation of
          cp.)  For rm and ln both flags mean the same.  Ln  will
          recursively  link  the  files in the trees, except sym-
          links, they are copied.  If symlinks are  created  with
          ln  -rs  or  ln -rS then they are required "to work" as
          described with the -S flag.

     -v   Verbose.  Show what is done on standard output.

     -x   Do not cross mount points.  Empty directories  will  be
          created  if  the source directory is a mount point on a
          copy, move or link.  A mount point will not be  removed
          or traversed recursively.  This flag allows one to copy
          the root device, e.g.  cpdir -x / /mnt.


SEE ALSO

     cat(1), mkdir(1),  rmdir(1),  mkdir(2),  rmdir(2),  link(2),
     unlink(2),  rename(2),  open(2),  read(2),  write(2),  open-
     dir(3).


NOTES

     All the utilities described are links to the same program.


BUGS

     Mv should first copy a tree across devices and  then  remove
     the  source  tree if there was no error.  Instead, each file
     in the tree is copied and immediately removed.  On error you
     may  be left with two half-filled trees, together containing
     all of the files.  You may have to restart the move with  mv
     -m.

     Rm should be able to remove arbitrarily deep trees.


AUTHOR

     Kees J. Bot (kjb@cs.vu.nl)