cp
功能说明
cp,copy,意为复制,可以直接复制一个文件到指定目录下,也可以直接复制目录。在复制的同时可以修改文件名。当同时复制多个文件时,目标必须是一个已存在的目录下才可以。
语法格式
cp(选项) (参数)
常用选项
-a:此参数包涵"-dpR"参数的所有功能;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:force,强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖已有文件之前先询问用户(shell默认定义了别名cp=cp –i);
-l:对源文件建立硬连接,而非复制文件(等同于ln,一般用ln来建立硬软链接);
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理(一般用来复制目录及目录下的文件);
-s:对源文件建立符号连接,而非复制文件(等同于ln -s 建立软连接);
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
源文件:指定一个或多个源文件,多个源文件的情况下使用空格隔开,当源文件为目录是,使用-r/R进行复制。
目标文件:指定目标文件,存在是会提示是否覆盖,也可以自行制定复制后的名称,当同时复制多个文件时,目标文件必须是一个已存在的目录。
实例
复制一个文件到一个目录下
[[email protected] ~]cp 123 /tmp
cp: overwrite `/tmp/123‘? y
[[email protected] ~]# cd !$
cd /tmp
[[email protected] tmp]# ls
123 oldboy.txt stu4.txt.bak.bak
123~ stu1.txt.bak.bak stu5.txt.bak.bak
beyond.txt stu2.txt.bak.bak yum.log
lixin stu3.txt.bak.bak yum_save_tx-2016-03-04-01-53mXM_EJ.yumtx
一次复制多个文件到一个目录下,并保持属性
[[email protected] ~] ls
10.txt 2.txt 4.txt 6.txt 8.txt install.log.syslog
1.txt 3.txt 5.txt 7.txt 9.txt install.log
[[email protected] ~]# cp -p *.txt /tmp
[[email protected] ~]# ls /tmp
10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
小技巧
由于shell默认定了cp的别名,cp=cp –i,所以覆盖的时候会出现提示,如果不想提示,可以在命令前加\,来屏蔽别名(或者使用命令的绝对路径)。例如\cp 123 /tmp or /bin/cp 123 /tmp ;这样即使/tmp下存在123,也不会提示是否覆盖。