cp:
可以使用这个命令复制一个文件到一个指定的目的地, 或者复制任意多个文件到一个目的目录.
如果最后一个命令参数为一个已经存在的目录名,cp 会将每一个源文件复制到那个目录下(维持原文件名).
如果所给的参数只有两个文件名,它把前一个文件复制到后一个文件上.(重命名)
如果最后一个参数不是文件名,目录名,和给出多于两个非选项参数,是错误的.
-a:相当于dr --preserve=all的意思 -dpR
-d:若目标文件为连接文件属性(link file),则复制链接文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则删除后再尝试一次;
-i:若目标文件(destination)已经存在时,在覆盖时会先询问操作的进行(常用);
-l:制作硬链接代替非目录拷贝。
-s 复制成为符号连接文件(symbolic link),亦即“快捷方式”,“软链接”
-p, --preserve保持原始文件的所有者,组,许可,和时间表属性
-u:如果存在的目的地有相同的,或者更新的修改时间,不复制非目录(文件).
-r:递归复制,用于目录的复制操作。
注意:
-P(大), --parents
一个斜杠和指定的源文件名构成目的文件。 最后送给 cp 的参数必须是一个已存在的目录的名字。
例如, 下面这个命令:
cp --parents a/b/c existing_dir
复制文件 `a/b/c’ 到 texisting_dir(现有的目录)/a/b/c’,建立任 何缺少的中间目录。
-s:生成符号链接代替非目录拷贝.所有的源文件名必须是绝对的(由`/'开始),除非目的文件是在当前目录.
这选项仅仅在系统不支持符号链接时引起一个错误消息.
-r:递归地复制目录,复制任何非目录和非符号链接(那是,FIFOs和特别文件)他们是常规的文件一样看待.
这意味着尝试读出每个源文件的数据,和把它写到目的地上.
因而,用这个选项,cp’可能彻底地终止,当不确定地读一个FIFO或者/dev/tty时,
(这是一个缺陷.它意味着如果你不知道在这棵树(目录)中有什么要复制的时候, 你不得不避开-r并使用-R打开一个未知的设备文件, 比如说一台扫描仪,会有未知的效果发生在硬件上)
原文件:
# ll
总用量 60
-rw-r--r--. 1 mj mj 231 8月 8 20:06 bashrc
软链接:
# cp -lv bashrc bashrc_hard_link
"bashrc" -> "bashrc_hard_link"
硬链接:
# cp -sv bashrc bashrc_soft_link
"bashrc" -> "bashrc_soft_link"
# ls -lai
2797349 -rw-r--r--. 2 mj mj 231 8月 8 20:06 bashrc
2797349 -rw-r--r--. 2 mj mj 231 8月 8 20:06 bashrc_hard_link
2797363 lrwxrwxrwx. 1 root root 6 1月 17 11:30 bashrc_soft_link -> bashrc
硬链接:链接数加1,硬链接复制后文件inode号一直
软链接:是链接文件
当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。
cp需要考虑的问题:
1、是否需要完整的保留源文件信息?
cp -a 或者 --dpR
-p:保持原始文件的所有者,组,许可,和时间表属性
-d:若目标文件为连接文件属性(link file),则复制链接文件本身
-R:递归复制目录,如果对象不是普通文件或目录那么做相应正 确处理,(因此,一个FIFO或者特殊文件在复制后仍然是一个FIFO型或者相应特殊文件。)
2、源文件是否为符号链接文件:
cp
当用cp命令copy一个软链接时,copy的是软链接所对应的内容,而不是它本身。
-d:复制符号链接作为符号链接而不是复制它指向的文件, 并且保护在副本中原文件之间的硬链接.
-l:制作硬链接代替非目录拷贝。
-s:生成符号链接代替非目录拷贝。
3、源文件是否为特殊文件:
cp
-R:一个FIFO或者特殊文件在复制后仍然是一个FIFO型或者相应特殊文件。
-r:递归复制,用于目录的复制操作。
这是一个缺陷.它意味着如果你不知道在目录有什么要复制的时候, 你不得不避开-r并使用-R打开一个未知的设备文件, 比如说一台扫描仪,会有未知的效果发生在硬件上
以后将会使用-R
4、源文件是否为目录:
-R:递归
-r:递归
rm:
-f:强制删除,忽略不存在文件,不会出现警告信息
-i:交互模式,在删除前询问是否操作
-r:递归删除,最常用于目录删除,危险操作。
-I:在删除三个以上的文件之前或递归删除文件时提示一次;比-i少干扰,同时仍能防止大多数错误。
# rm -i bashrc
rm:是否删除普通文件 "bashrc"?y
# rm -f bashrc1
# rm tes/
rm: 无法删除"tes/": 是一个目录
# rm -r tes/
rm:是否进入目录"tes/"? y
rm:是否删除普通文件 "tes/bashrc11111"?y
rm:是否删除普通文件 "tes/wtmp"?y
rm:是否删除普通文件 "tes/bashrc_hard_link"?y
rm:是否删除符号链接 "tes/bashrc_soft_link"?y
rm:是否删除普通文件 "tes/bashrc_source"?y
rm:是否删除目录 "tes/"?y
mv:
-f:强制复制,如果目标文件存在,不会询问直接覆盖
-i:若文件存在,询问是否覆盖
-u:若目标文件存在,且source文件较新,才会更新。