Unix复制命令示例[cp命令]
如何使用ksh或csh或bash shell提示符在Unix操作系统下复制文件?
您需要使用cp命令在Unix之类的操作系统下复制文件和目录。
以下命令和常用选项应适用:
IBM AIX
苹果OS X
Sun/Oracle Solaris
FreeBSD/OpenBSD/NetBSD
Linux
HP-UX
其他类Unix操作系统。
Unix:cp命令语法
语法为:
cp SOURCE DEST cp SOURCE DIRECTORY cp file1 file2 cp file1 new-file2 cp [options] file1 new-file2
缺省情况下,cp仅复制文件。
Unix cp命令示例
在此示例中,将当前目录中名为data.txt的文件复制到另一个目录/tmp中。
打开一个终端并输入:
cp data.txt /tmp
验证文件已复制到/tmp中,输入:
ls -l /tmp/data.txt ls -l data.txt
请注意,复制到目录/tmp中的文件都将具有与原始文件相同的名称。
您可以将多个文件复制到另一个目录,如下所示:
cp data.txt foo.tbz image.png /tmp ls -l /tmp
如何递归复制?
您需要传递-r或-R选项(即递归选项)。
它允许复制包括其所有内容的目录:
cp -r dir1 dir2
要查看复制进度,将-v选项传递给cp命令:
cp -v file1 file2
输出示例:
`file1' -> `file2'
-v使cp变得冗长,在复制文件时显示文件。
您可以将-v选项与其他选项一起传递:
cp -v -r file1 /tmp cp -v -r dir1 dir2
如何复制所有* .c文件?
复制将所有C源代码文件从/home/Hyman/devel/foo复制到一个名为/projects/backup/foo的目录中,输入:
cp /home/Hyman/devel/foo/*.c /projects/backup/foo/
或者
cp -v /home/Hyman/devel/foo/*.c /projects/backup/foo/
可以使用shell通配符(例如start willdcard或问题通配符)将目录中的所有文件复制到另一个目录:
## copy all perl (*.pl) files to /tmp ## cp *.pl /tmp ## copy all perl (*.pl) files starting with character a to /tmp ## cp a*.pl /tmp ## copy all perl (*.pl) files starting with a,b, and c to /tmp ## cp [abc]*.pl /tmp ## copy all perl (*.pl) files starting with a single file name such as a.pl, b.pl, .., z.pl to /tmp ## cp ?.pl /tmp ## copy all .html files to /var/www/html ## ## The star wildcard represents anything whose name ends with the .html extension ## cp -v /home/Hyman/website/*.html /var/www/html
如何确认文件覆盖?
您需要将-i选项传递给cp。
如果目标目录中已经存在文件,它将提示用户,以便确认后覆盖该文件:
cp -i /etc/resolv.conf /tmp
输出示例:
cp: overwrite `/tmp/resolv.conf'? y
您需要输入字母y(带小写字母或带大写字母的小写字母)来响应提示导致命令继续的提示。
任何其他答案都可以防止命令覆盖名为/tmp/resolv.conf的文件。
某些用户将以下别名放在名为$HOME/.kshrc的ksh启动文件中:
$ vi ~/.kshrc
追加以下别名:
## prvent overwriting by default for cp command alias cp='cp -i'
保存并关闭文件。
输入shell启动文件以使更改立即生效,请输入:
. .kshrc
提示:保留文件权限和其他属性
您需要通过-p
选项来保存权限允许的每个源文件的以下文件属性:
- 文件修改时间
- 档案存取时间
- 文件标志
- 档案模式
- 文件用户标识和组标识
语法为:
cp -p file1 file2
示例:复制不带-p选项的文件
执行以下命令:
ls -l /etc/resolv.conf cp /etc/resolv.conf $HOME ls -l $HOME
示例:复制带有-p选项的文件以保存文件属性
执行以下命令:
ls -l /etc/resolv.conf ## Note: running as root to save attributes ## sudo cp -p -v /etc/resolv.conf $HOME ls -l $HOME
在副本中保留权限所允许的尽可能多的修改时间,访问时间,文件标志,文件模式,用户ID和组ID。