博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux系统下 CP命令(备注:替换正在运行的进程,用FTP工具是从本地传是不行的,需要用cp -rf ../update/zb_terminal ./zb_terminal)
阅读量:4166 次
发布时间:2019-05-26

本文共 1932 字,大约阅读时间需要 6 分钟。

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

语法

cp(选项)(参数)

选项

-a:此参数的效果和同时指定"-dpR"参数相同;-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;-f:强行复制文件或目录,不论目标文件或目录是否已存在;-i:覆盖既有文件之前先询问用户;-l:对源文件建立硬连接,而非复制文件;-p:保留源文件或目录的属性;-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;-s:对源文件建立符号连接,而非复制文件;-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;-b:覆盖已存在的文件目标前将目标文件备份;-v:详细显示命令执行的操作。

参数

  • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例

如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件复制到目录/usr/men/tmp下,并改名为file1

cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh

cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh

cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,需要按Y来确认并且会略过aaa目录下的子目录。cp -r aaa/* /bbb这次依然需要按Y来确认操作,但是没有忽略子目录。cp -r -a aaa/* /bbb依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。\cp -r -a aaa/* /bbb成功,没有提示按Y、传递了目录属性、没有略过目录。

在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。


一般我们在使用cp命令时加上-f选项,希望不让出现“overwrite”的提示(文件覆盖的提示)。如:

# cp -rf sourcefile targetdir 


#cp -r -f sourcefile targetdir

-r的意思是递归复制,也就是复制文件夹及其下所有文件。

-f的意思是遇到同名的文件时不提示,直接覆盖。


但是为什么加上-f了,还出现“overwrite”的提示呢?


这是因为系统为防止我们误操作,覆盖了不该覆盖的文件,而使用了命令的别名。使用alias命令查看一下:

# alias

alias cp='cp -i'

alias l.='ls -d .* --color=tty'

alias ll='ls -l --color=tty'

alias ls='ls --color=tty'

alias mv='mv -i'

alias rm='rm -i'


从上边我们可以看出,我们输入的cp命令,其实是“cp -i”命令。其他几个命令,如ll,ls mv,rm等也使用了别名。


第一种解决办法:

在cp前加上一个"\"符号就不使用别名运行了,如下:

# \cp -f sourcefile targetdir 

第二种解决办法:

编辑文件,注释掉别名。

# vi ~/.bashrc

在alias cp='cp -i'前加上“#”注释掉这行,wq!保存推出,然后重新登陆就可以了。

转载地址:http://czexi.baihongyu.com/

你可能感兴趣的文章
[Leetcode]最后一个单词的长度
查看>>
merges sort use c++
查看>>
插入排序用递归实现
查看>>
工作流审批平台-审批流程-指定审批部门
查看>>
商务智能-系统概述-数据图形方式
查看>>
软件项目管理系统-项目管理-模块定义-开发内容
查看>>
工作流审批平台-审批功能
查看>>
商务智能-基本方法-特征与角度
查看>>
软件项目管理系统-项目管理-模块定义-开发笔记
查看>>
工作流审批平台-业务申请-申请书一览
查看>>
商务智能-基本方法-数据钻取
查看>>
C++程序员技术需求规划(发展方向)
查看>>
哈希表(Hash Table)-哈希概述
查看>>
Filebench的安装及使用
查看>>
Ubuntu下 E: Could not get lock /var/lib/apt/lists/lock - open (11: Recource temporarily unavailable)
查看>>
Linux-mmap映射物理内存到用户空间
查看>>
Ext4文件系统三种日志模式——journal、ordered、writeback
查看>>
Linux挂载ext4根文件系统为journal模式
查看>>
linux内核引导参数解析及添加
查看>>
长短期记忆人工神经网络(LSTM)及其tensorflow代码应用
查看>>