224 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH CP 1
 | |
| .SH NAME
 | |
| cp, mv, rm, ln, cpdir, clone \- copy, move, remove, link
 | |
| .SH SYNOPSIS
 | |
| .B cp
 | |
| .RB [ \-pifsmrRvx ]
 | |
| .I file1 file2
 | |
| .br
 | |
| .B cp
 | |
| .RB [ \-pifsrRvx ]
 | |
| .IR file " ... " dir
 | |
| .PP
 | |
| .B mv
 | |
| .RB [ \-ifsmvx ]
 | |
| .I file1 file2
 | |
| .br
 | |
| .B mv
 | |
| .RB [ \-ifsvx ]
 | |
| .IR file " ... " dir
 | |
| .PP
 | |
| .B rm
 | |
| .RB [ \-ifrRvx ]
 | |
| .IR file " ..."
 | |
| .PP
 | |
| .B ln
 | |
| .RB [ \-ifsSmrRvx ]
 | |
| .I file1 file2
 | |
| .br
 | |
| .B ln
 | |
| .RB [ \-ifsSrRvx ]
 | |
| .IR file " ... " dir
 | |
| .PP
 | |
| .B cpdir
 | |
| .RB [ \-ifvx ]
 | |
| .I file1 file2
 | |
| .PP
 | |
| .B clone
 | |
| .RB [ \-ifsSvx ]
 | |
| .I file1 file2
 | |
| .SH DESCRIPTION
 | |
| .de SP
 | |
| .if t .sp 0.4
 | |
| .if n .sp
 | |
| ..
 | |
| The utilities
 | |
| .BR cp ,
 | |
| .BR mv ,
 | |
| .BR rm ,
 | |
| and
 | |
| .B ln
 | |
| do basic file management: copying, renaming or moving, deletion, and
 | |
| creating links.  (The
 | |
| .B cpdir
 | |
| and
 | |
| .B clone
 | |
| utilities are easy to use aliases for copying or linking whole trees.
 | |
| They are the same as
 | |
| .B cp \-psmr
 | |
| and
 | |
| .BR "ln \-fmr" )
 | |
| .PP
 | |
| The first synopsis form of the utilities
 | |
| .BR cp ,
 | |
| .BR mv ,
 | |
| and
 | |
| .B ln
 | |
| is used if only two arguments are given, and the second argument is not a
 | |
| directory.  The source and target file are then the two files given.
 | |
| .PP
 | |
| 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.
 | |
| .PP
 | |
| A file is by default copied by
 | |
| .B 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.
 | |
| .PP
 | |
| The
 | |
| .B mv
 | |
| utility uses the
 | |
| .BR rename (2)
 | |
| call to rename or move files.  If source and target are on different devices
 | |
| however, then
 | |
| .B mv
 | |
| will use
 | |
| .B cp \-pr
 | |
| to copy the files or directory trees.
 | |
| .PP
 | |
| Each utility continues with the next file on errors, except on I/O errors.
 | |
| .SH OPTIONS
 | |
| .TP
 | |
| .B \-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 ownership
 | |
| fails.
 | |
| .TP
 | |
| .B \-i
 | |
| Ask if ok to overwrite, replace or remove.
 | |
| .B Mv
 | |
| and
 | |
| .B rm
 | |
| will ask this automatically if interactive and the target file is writable.
 | |
| .B Cp
 | |
| will fail if the target cannot be written,
 | |
| .B ln
 | |
| will always fail if the target exists.
 | |
| .TP
 | |
| .B \-f
 | |
| Makes
 | |
| .B cp
 | |
| remove a target file before copying if it is not writable,
 | |
| .B mv
 | |
| removes an existing target without asking,
 | |
| .B rm
 | |
| does not report any errors, and
 | |
| .B ln
 | |
| removes an existing target file before linking.  The last of
 | |
| .B \-i
 | |
| and
 | |
| .B \-f
 | |
| wins for
 | |
| .B mv
 | |
| if both flags are set, the other utilities do something sensible, like asking
 | |
| before forcefully removing.
 | |
| .TP
 | |
| .B \-s
 | |
| Make a symlink instead of a normal link.  For utilities other than
 | |
| .B ln
 | |
| this flag means "copy similar".  The modified time is always copied for
 | |
| .B cp \-s
 | |
| and the other attributes are copied if a new file is created.  The normal
 | |
| \s-2POSIX\s+2 required patronizing like applying the file creation mask or
 | |
| clearing setuid bits is not done.
 | |
| .TP
 | |
| .B \-S
 | |
| Make a symlink if a normal link cannot be made because source and target are
 | |
| on different devices.  The symlink is required to really refer back to the
 | |
| source, meaning that a/b must exist in the call
 | |
| .BR "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
 | |
| .B "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."
 | |
| .TP
 | |
| .B \-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.
 | |
| .TP
 | |
| .BR \-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.  Special files are copied as new special files, they are not read
 | |
| or written.  Symlinks are still expanded and the link structure ignored with
 | |
| .BR \-R .
 | |
| The
 | |
| .B \-r
 | |
| flag does copy symlinks as symlinks and keeps the link structure intact.
 | |
| (Note that
 | |
| .B \-R
 | |
| is invented by \s-2POSIX\s+2 as a replacement for the classic
 | |
| .B \-r
 | |
| option of older copy commands that did read special files.  The standard
 | |
| says that
 | |
| .B \-r
 | |
| is implementation defined, so that's why this flag is better than
 | |
| .B \-R
 | |
| in this implementation of
 | |
| .BR cp .)
 | |
| For
 | |
| .B rm
 | |
| and
 | |
| .B ln
 | |
| both flags mean the same.
 | |
| .B Ln
 | |
| will recursively link the files in the trees, except symlinks, they are
 | |
| copied.  If symlinks are created with
 | |
| .B ln \-rs
 | |
| or
 | |
| .B ln \-rS
 | |
| then they are required "to work" as described with the
 | |
| .B \-S
 | |
| flag.
 | |
| .TP
 | |
| .B \-v
 | |
| Verbose.  Show what is done on standard output.
 | |
| .TP
 | |
| .B \-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.
 | |
| .BR "cpdir \-x / /mnt" .
 | |
| .SH "SEE ALSO"
 | |
| .BR cat (1),
 | |
| .BR mkdir (1),
 | |
| .BR rmdir (1),
 | |
| .BR mkdir (2),
 | |
| .BR rmdir (2),
 | |
| .BR link (2),
 | |
| .BR unlink (2),
 | |
| .BR rename (2),
 | |
| .BR open (2),
 | |
| .BR read (2),
 | |
| .BR write (2),
 | |
| .BR opendir (3).
 | |
| .SH NOTES
 | |
| All the utilities described are links to the same program.
 | |
| .SH BUGS
 | |
| .B 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
 | |
| .BR "mv \-m" .
 | |
| .PP
 | |
| .B Rm
 | |
| should be able to remove arbitrarily deep trees.
 | |
| .SH AUTHOR
 | |
| Kees J. Bot (kjb@cs.vu.nl)
 | 
