精华内容
下载资源
问答
  • Linux cp命令

    万次阅读 多人点赞 2017-07-02 16:36:42
    cp 为复制命令,实际中分为文件间的复制,目录间的复制,文件到目录的复制以及链接的复制。文件间的复制cp file1 file2 如果 file2 不存在,就先创建 file2 ,然后把 file1 内容复制到 file2 中 如果 file2 存在,...

    语法

    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    

    这两个语法的效果是一样的,都是把 SOURCE 代表的文件复制到 DIRECTORY 目录中。

    Unix 传统中,文件包括普通文件,目录,符号链接,等等。


    文件复制到目录

    首先来看下如何把文件复制到目录中,使用上面的两种语法

    cp file1 file2 file3 dir1
    cp -t dir1 file1 file2 file3
    

    注意,目录 dir1 必须存在,否则会发生文件复制重命名。

    另外,如果 dir1 目录下存在 file1 ,那么默认将会发生覆盖而不提示用户,这个文章后面将会给出解决办法。


    目录复制到目录

    有时候,我们想把整个目录复制到另外一个目录下,这个时候,我们需要加上 -r 或 -R 或 --recursive 选项

    cp -r dir1/ dir2/
    

    注意,目录 dir2 必须存在,否则会发生目录复制重命令。


    目录项复制到目录

    cp -r dir1 dir2 是把整个 dir1 目录复制到目录 dir2 下,但是有时候我们只想把 dir1 目录下的内容复制到 dir2 目录下,那该怎么办呢?使用通配符来完成这个任务

    cp  dir1/*  dir2
    

    如果 dir1 目录有 hello.txt 以及 world.txt 两个文件,那么 dir1/* 会被 shell 展开为 dir1/hello.txt 以及 dir1/world.txt,那么上面的命令的展开形式如下

    cp  dir1/hello.txt  dir2/world.txt  dir2
    

    这个形式就是文件复制到目录的操作。

    注意,目录 dir2 必须存在,否则会报错。


    文件复制重命名

    有时候,我们想复制一个文件,但是同时又想把副本(复制后的文件)进行重命名,cp 命令可以做到,只要重命名的名子不存在即可

    cp file1 dir1/renamed_file1
    

    这个命名会把当前目录下的 file1 复制到 dir1 目录下,并且重命名为 renamed_file1。

    注意,只有在 renamed_file1 不存在的情况下,才会发生文件复制重命名的操作。如果 renamed_file1 存在,那么将会用 file1 的内容覆盖 renamed_file1 的内容。


    目录复制重命名

    目录复制重命名与文件复制重命名类似,只是复制目录需要加上选项 -r

    cp -r dir1/ dir2/renamed_dir1
    

    注意,如果想目录复制重命名,那么 renamed_dir1 目录必须不存在。如果存在,那么将会发生把一个目录复制到另外一个目录下的操作。


    文件覆盖

    在前面的部分中提到一个问题,文件复制可以导致覆盖操作,例如

    cp  file1 file2 dir1
    

    如果 dir1 目录下存在 file1 文件,那么默认将会发生覆盖,但是不会给我们提示。如果这不是你想要的,那么可以使用下面几个选项

    1. 使用 -n 选项,不会发生覆盖操作。
    2. 使用 -i 选项,可以提示操作者是否执行覆盖操作。
    3. 使用 -b 选项,在覆盖前进行备份,备份文件名是原始文件名加上一个波浪线。
    4. 使用 -u 选项,表示只有文件比较新的时候,才发生覆盖。

    备份文件

    文章最后部分,再介绍一个内容,备份文件。

    刚才说过使用 -b 选项,可以在文件发生覆盖的时候,对文件进行备份,备份文件名是原始文件名加一个波浪线后缀,但是我们可以通过--suffix 重新定义备份文件名后缀。

    cp  --suffix=.bak file1 dir1
    

    注意,如果指定了 --suffix 选项,那么已经包含了 -b 的意思,因此不需要再指定 -b 选项。

    如果 dir1 目录已经存在 file1 文件,那么会生成一个备份文件 file1.bak,然后再发生文件复制。

    其实 cp 命令有几种内置的生成备份文件的方式,通过 --backup 选项指定,有如下几个值

    1. simple/never: 备份后缀名为波浪符(~),这是默认方式。
    2. numbered/t : 备份后缀为数字,例如 ~1~。
    3. existing/nil : 如果已经存在数字备份的文件,那么就使用数字后缀,否则使用波浪符后缀。

    文件的自我备份

    最后介绍一个在 bash shell 中,一个比较有意思的事情,文件自我备份。

    $ cp -b file1 file1
    cp: 'file1' and 'file1' are the same file
    

    这个命令表示在当前目录下,把 file1 复制为 file1,并且 -b 选项表示生成备份文件。但是这个命令无法执行,可以通过 -f 选项强制执行

    $ cp -vfb hello.c hello.c
    'hello.c' -> 'hello.c~'
    

    注意,如果你掌握了 cp 命令,其实也就是掌握了 mv 命令,本方介绍的东西都适用于 mv 命令。

    展开全文
  • Linux cp 命令

    千次阅读 2015-06-27 17:44:11
    Linux cp 命令 拷贝文件和目录 2、命令格式:  cp [OPTION]... [-T] SOURCE DEST  cp [OPTION]... SOURCE... DIRECTORY  cp [OPTION]... -t DIRECTORY SOURCE... 3、常用示例:  cp -a /etc/ ./

    2015-06-27创建

    1、概述:

    Linux cp 命令    拷贝文件和目录,也可以拷贝多个源到一个目录

    2、命令格式:

        cp [OPTION]... [-T] SOURCE DEST

        cp [OPTION]... SOURCE... DIRECTORY

        cp [OPTION]... -t DIRECTORY SOURCE...

    3、常用示例:

      cp -a /etc/ ./    将/etc/ 目录的所有信息,复制到当前目录

      cp aaa /mnt/    将文件aaa复制到 目录 /mnt/下

      cp aaa /mnt/bbb    将文件aaa复制到/mnt/ 下,并命名为 bbb【bbb不存在,或则bbb为一个文件,而不是目录】

    4、常用命令参数:

      -a, --archive    该命令等同于  -dR --preserve=all【或者为 -dRp】,复制文件的全部信息

      -f, --force   如果现有目标文件不能打开,则删除它,然后再试一次【强行复制文件或目录, 不论目的文件或目录是否已经存在

      -i, --interactive    覆盖前先提醒用户

      -l, --link    对源文件建立硬链接,而不是复制

    [root@mode-6 ~]# cp -l ./test test0
    [root@mode-6 ~]# ll -i
    total 76
    155745 drwxr-xr-x. 12 root   root  4096 Oct  9 21:46 day04
        15 -rw-r--r--.  1 root   root 39693 Dec 11  2012 install.log
     27583 -rw-r--r--   2 oldboy root    49 Oct  9 22:10 test
     27583 -rw-r--r--   2 oldboy root    49 Oct  9 22:10 test0          # 硬链接【inode 一样】
     26906 lrwxrwxrwx   1 root   root     4 Oct 10 00:04 test1 -> test  # 软链接  

      -L, --dereference   如果复制的是链接文件,那么会复制链接文件所指向的源文件。而不是链接文件本身

      -n, --no-clobber    不覆盖已经存在的文件

      -p, --preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间

      -R, -r, --recursive    递归复制目录

      -s, --symbolic-link    对源文件建立符号链接,而非复制文件

    [root@mode-6 ~]# cp -s test ./test1
    [root@mode-6 ~]# ll
    total 72
    -rw-------.  1 root   root  1266 Oct  2 04:06 anaconda-ks.cfg
    drwxr-xr-x. 12 root   root  4096 Oct  9 21:46 day04
    -rw-r--r--.  1 root   root 39693 Dec 11  2012 install.log
    -rw-r--r--   1 oldboy root    49 Oct  9 22:10 test
    lrwxrwxrwx   1 root   root     4 Oct 10 00:04 test1 -> test   # 建立软连接

      -u, --update    只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件

      -x,  --one-file-system   复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件

    5、当前命令所在位置和类型 :

    [oldboy@moban ~]$ which cp
    /bin/cp
    [oldboy@moban ~]$ type cp
    cp is hashed (/bin/cp)

    6、参考文章

        每天一个linux命令(8):cp 命令

        Linux 的cp命令


    展开全文
  • linux cp命令

    千次阅读 2018-08-22 08:16:36
    1、命令简介 cp(Copy file):将源文件复制至目标文件,或将多个源文件复制至目标目录。 2、用法 cp [选项]... [-T] 源文件 目标文件  或:cp [选项]... 源文件... 目录  或:cp [选项]... -t 目录 源文件.....

    1、命令简介

    cp(Copy file):将源文件复制至目标文件,或将多个源文件复制至目标目录。

    2、用法

         cp [选项]... [-T] 源文件 目标文件
     或:cp [选项]... 源文件... 目录
     或:cp [选项]... -t 目录 源文件...

    3、选项

     

      -a, --archive       等于-dR --preserve=all,与同时指定 -dpR 这三个选项效果一样,用于复制整个目录,包括目录中的子目录等都递归的复制,而且还要保持文件的访问模式,所有者,时间戳等属性与原文件一样。
          --backup[=CONTROL        为每个已存在的目标文件创建备份
      -b                类似--backup 但不接受参数
          --copy-contents        在递归处理是复制特殊文件内容
      -d                等于--no-dereference --preserve=links
      -f, --force            如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
      -i, --interactive        覆盖前询问(使前面的 -n 选项失效),默认cp命令覆盖目标文件时是不会提示的,很多Linux发行版里的cp都被设置别名`cp -i`,其实作用就是给用户一个提醒。如果你不想被提示,那么请这样输入:\cp source target,或者使用cp命令的绝对路径/bin/cp
      -H                跟随源文件中的命令行符号链接
      -l, --link            对源文件建立硬链接,而非复制文件
      -L, --dereference        总是跟随符号链接
      -n, --no-clobber        不要覆盖已存在的文件(使前面的 -i 选项失效)
      -P, --no-dereference        不跟随源文件中的符号链接
      -p                等于--preserve=模式,所有权,时间戳
          --preserve[=属性列表    保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等
      -c                           same as --preserve=context
          --sno-preserve=属性列表    不保留指定的文件属性
          --parents            复制前在目标目录创建来源文件路径中的所有目录
      -R, -r, --recursive        递归复制目录及其子目录内的所有内容
          --reflink[=WHEN]        控制克隆/CoW 副本。请查看下面的内如。
          --remove-destination    尝试打开目标文件前先删除已存在的目的地文件 (相对于 --force 选项)
          --sparse=WHEN        控制创建稀疏文件的方式
          --strip-trailing-slashes    删除参数中所有源文件/目录末端的斜杠
      -s, --symbolic-link        只创建符号链接而不复制文件
      -S, --suffix=后缀        自行指定备份文件的后缀
      -t,  --target-directory=目录    将所有参数指定的源文件/目录 复制至目标目录
      -T, --no-target-directory    将目标目录视作普通文件
      -u, --update                 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件; -v, --verbose                详细显示命令执行的操作。
      -x, --one-file-system        复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件
      -Z, --context=CONTEXT        set security context of copy to CONTEXT

     

    4、实例

    实例1:将文件a.txt复制成文件b.txt

    [root@cent6 directory]# cp a.txt  b.txt

    实例2:将文件a.txt复制成文件b.txt,显示详细信息 

    [root@cent6 directory]# cp -v a.txt  b.txt
    `a.txt' -> `b.txt'

    实例3:复制文件,只有源文件较目的文件的修改时间新时,才复制文件

     

    [root@cent6 directory]# cp -uv  a.txt  c.txt

     

    实例4:采用交互方式将文件a.txt复制成文件d.txt

    [root@cent6 directory]# cp -iv a.txt  d.txt
    cp: overwrite `d.txt'? y
    `a.txt' -> `d.txt'

    实例5:将文件a.txt复制成d.txt,因为目的文件已经存在,所以指定使用强制复制的模式

     

    [root@cent6 directory]# cp -fv a.txt  d.txt
    `a.txt' -> `d.txt'

     

    实例6:递归将目录dir1复制到目录dir2下面(此时dir2不存在

     

    [root@cent6 directory]# cp -rv dir1 dir2
    `dir1' -> `dir2'
    `dir1/c.txt' -> `dir2/c.txt'
    `dir1/a.txt' -> `dir2/a.txt'
    `dir1/b.txt' -> `dir2/b.txt'
    `dir1/d.txt' -> `dir2/d.txt'

     

    实例7:递归将目录dir1复制到目录dir2下面(此时dir2已经存在

    [root@cent6 directory]# cp -rv  dir1  dir2
    `dir1/c.txt' -> `dir2/dir1/c.txt'
    `dir1/a.txt' -> `dir2/dir1/a.txt'
    `dir1/b.txt' -> `dir2/dir1/b.txt'
    `dir1/d.txt' -> `dir2/dir1/d.txt'

    实例8:复制时保留文件属性

     

     

    [root@cent6 directory]# ll
    total 0
    -rwxrwxrwx 1 root root 0 Apr 16 16:54 a.txt
    [root@cent6 directory]# cp a.txt  /tmp/a1.txt
    [root@cent6 directory]# cp -p a.txt  /tmp/a2.txt
    [root@cent6 directory]# ll /tmp
    total 12
    -rwxr-xr-x  1 root  root     0 Apr 16 16:56 a1.txt
    -rwxrwxrwx  1 root  root     0 Apr 16 16:54 a2.txt

     

     

    实例9:复制时产生备份文件

     

    [root@cent6 directory]# cp -bv a.txt  /tmp/
    `a.txt' -> `/tmp/a.txt'
    [root@cent6 directory]# cp -bv a.txt  /tmp/
    `a.txt' -> `/tmp/a.txt' (backup: `/tmp/a.txt~')
    [root@cent6 directory]# ll /tmp
    total 0
    -rwxr-xr-x 1 root root 0 Apr 16 17:02 a.txt
    -rwxr-xr-x 1 root root 0 Apr 16 17:02 a.txt~

     

    实例10:创建文件的硬链接(有同样的inode),而不是拷贝它们

     

    [root@oracledb dir1]# cp -l a.txt  b.txt
    [root@oracledb dir1]# cp a.txt  c.txt
    [root@oracledb dir1]# ls -li
    总用量 0
    4718769 -rw-r--r-- 2 root root 0 4月  16 17:18 a.txt
    4718769 -rw-r--r-- 2 root root 0 4月  16 17:18 b.txt
    4718772 -rw-r--r-- 1 root root 0 4月  16 17:28 c.txt

     

    实例11:复制的 a.txt 建立一个连结档 a_link.txt

     

    [root@cent6 directory]# cp -sv a.txt  a_link.txt
    `a.txt' -> `a_link.txt'
    [root@cent6 directory]# ll
    total 0
    lrwxrwxrwx 1 root root 5 Apr 16 17:06 a_link.txt -> a.txt
    -rwxrwxrwx 1 root root 0 Apr 16 16:54 a.txt

     

    12:不随符号链接拷贝原文件

     

    [root@oracledb dir1]# ll
    总用量 0
    lrwxrwxrwx 1 root root 5 4月  16 17:30 a_link.txt -> a.txt
    -rw-r--r-- 1 root root 0 4月  16 17:18 a.txt
    [root@oracledb dir1]# cp -P a_link.txt  c.txt
    [root@oracledb dir1]# ll
    总用量 0
    lrwxrwxrwx 1 root root 5 4月  16 17:30 a_link.txt -> a.txt
    -rw-r--r-- 1 root root 0 4月  16 17:18 a.txt
    lrwxrwxrwx 1 root root 5 4月  16 17:31 c.txt -> a.txt

     

    实例13:指定备份文件尾标 

    [root@oracledb dir1]# cp -v -S _bak a.txt   /tmp/
    "a.txt" -> "/tmp/a.txt"
    [root@oracledb dir1]# cp -v -S _bak a.txt   /tmp/
    cp:是否覆盖"/tmp/a.txt"? y
    "a.txt" -> "/tmp/a.txt" (备份:"/tmp/a.txt_bak")
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,398
精华内容 5,759
关键字:

linuxcp命令

linux 订阅