关于 –

今天有个同事问我,shall编程里的 cp -rf -- 中的--的作用是什么,不知道啊,略尴尬,就查查学习学习

-- 主要是为了解决cp特殊字符文件名的情况,例如 文件名是-aaa.txt,进行cp时,cp -aaa.txt会报错。shell 把破折号(-)之后的内容认作参数了,而很明显没有这样的参数,所以报错 这时候使用 cp -- -aaa.txt 即可

  1. 针对-开头的文件需要使用--来告知bash,不要将这里的-解释为参数
  2. 针对其它特殊字符,使用'单引号把文件名括起来
  3. 针对文件名还包含'或者"的情况,就需要交替使用规则

命令格式

1
cp [options] source dest

或者

1
cp [options] source... directory

选项:

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件

实例

使用指令”cp”将当前目录”test/“下的所有文件复制到新目录”newtest”下,输入如下命令:

1
cp –r test/ newtest