linux强制cp
1. linux 使用 cp 命令强制覆盖功能
我们平时在 Linux 中使用 cp 命令时,当把文件从一个目录复制到另一个目录,且目录中具有同名文件时,系统会提示输入 y 来确认是否覆盖同名文件。
如果文件少的谨搏饥话,也无关紧要,但文件多的话,要一个一个确认简直太累了。更要命的是,即使我们加了 -rf 参数,还是会提示。
为什么会这样呢?
原因就是 cp 命令被系统设置了 别名 。
我们可以查看祥返一下:
也就是说,我们平时使用的 cp 命令,实际上是 cp -i 。
那 -i 参数是什么意思呢?
就是在覆盖之前银昌会给一个提示,这应该算是系统的一个保险措施。
那如果希望进行强制复制,不想一个一个输入 y ,有什么办法呢?
使用原生命令:
取消别名:
这样再使用 cp -rf 的时候就不会提示确认了。
但需要注意的是,使用完之后记得把别名恢复。
这里更推荐大家使用办法一,因为命令简单,而且还不会造成忘记恢复别名而带来的风险。
以上就是本文的全部内容,如果觉得还不错的话,欢迎 点赞 , 转发 和 关注 ,感谢支持。
推荐阅读:
2. linux命令:cp复制文件或目录
使用Linux系统的时候经常需要运用cp命令进行文件或者文件夹的复制,那么该如何操作cp命令呢?下面我给大家分享一下。
工具/材料
linux系统终端
- 01
首先登录进linux系统,右键单击选择Open In Terminal选项,如下图所示
- 02
接下来我们在打开的终端命令行,首先用pwd命令查看当前目录,然后运用cp命令进行文件的复制,如下图所示,注意复制后的文件名称被修改了
- 03
回到桌面,我们可以看到已经有2个文件了,并且复制的文件名称也已改变,如下图所示
- 04
最后我们还可以通过cp命令直接复制文件夹到另一个文件夹,如下图所示
3. Linux下cp和scp的详细说明及其他们的区别
一、说明
cp:是在同一个linux系统上,在不同的目录之间复制文件;
scp:是在不同linux系统之间来回复制文件;
二、cp 用法
单个文件复制:
cp 源文件 目标路径 ~~从原路径复制源文件到目标路径下;如果在目标路劲之后加文件名称和格式意思就是复制过去之后将该文件重命名。
多个文件复制:
cp 源文件1 源文件2 源文件3 ... 目标路径 ~~从原路径复制源文件到目标路径下;
三、cp 的参数详解
-a 尽可能将源文件状态、权限等资料都照原装予以复制,并且是递归;
-r 表示递归,若source中含有目录名,则将目录下之档案亦皆依序拷贝至目的地;
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制;
四、scp 的用法
基本语法:scp [参数] 文件 @IP:/目标路径;如下图
五、scp参数详解
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
例:scp -r 文件夹 @IP:目标路径;
4. linux如何复制移动文件
linux如何复制文件夹和移动文件夹
linux下文件的复制、移动与删除命令为:cp,mv,rm
一、文件复制命令cp
命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 ... directory
参数说明:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
二、文件移动命令mv
命令格式:mv [-fiv] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2
三、文件删除命令rm
命令格式:rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
如删除/test目录下的file1文件,可以输入以下命令:
rm -i /test/file1
复制:
CP命令
格式: CP [选项] 源文件或目录 目的文件或目录
选项说明:-b 同名,备分原来的文件
-f 强制覆盖同名文件
-r 按递归方式保留原目录结构复制文件
cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/
移动:
mv ./WorkReport/web.xml ./WorkReport/WEB-INF/注:移动/WorkReport/web.xml文件到/WorkReport/WEB-INF/mv /data/new/data/old/注:移动/data/new到/data/old/文件夹下
注意点:移动文件夹的话就不要再加 / 了
如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /*
mv /data/new/* /data/old/
5. linux的cp怎么覆盖
我们平常在Linux中使用 cp 命令时,会发现将一个目录中文件复制到另一个目录具有相同文件名称时,即使添加了 -rf 参数强制覆盖复制时,系统仍然会提示让你一个个的手工输入 y 确认复制,所添加的rf参数是不起作用的。
原因:
cp命令被系统设置了别名,相当于cp=‘cp -i’。
查询alias命令
[root@localhost sonarqube]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
通过上述输出,可以看出,我们平时使用 cp 命令,虽然没有添加任何参数 ,但系统默认会在我们使用 cp 命令时自动添加 -i 参数
-i, --interactive
prompt before overwrite
1
2
1
2
-i 即交互的缩写方式,也就是在使用 cp 命令作文件覆盖操作之前,系统会要求确认提示.这个本来是系统的一个保险措施.如果有很多文件要复制,觉得一个一个输入y 确认麻烦的话,可以使用如下方法解决:
强制复制
建议大家使用方式一,因为取消别名的话很容易造成风险,万一又忘记恢复别名,以后的复制都不会有提示信息。
有提示信息可以多一层保险嘛,是人都会有犯混的时候,给自己加一个保险,有保障呀.
方式一
使用原生的cp命令
/bin/cp -rf xxxx
1
1
方式二
取消cp命令别名
unalias cp
1
1
去掉 cp 命令的别名,这时你再用 cp -rf 复制文件时,就不会要求确认啦.
复制
6. linuxcp命令报nomath
1、下载资源和代码;
2、编译;
3、将需要打包的文件复制到临时目录打包。
后来由于新需求,修改了一下功能,在复制到临时目录之前还有回去一些资源到临时目录:
2.5、下载三方资源到临时目录。
增加此功能后错误就出现了,复制的临时目录的结构全乱了,比如:
java/bin应复制到temp/bin,结果去错误的复制到了temp/bin/bin。
看到此问题我以为是2.5步骤中下载的资源包目录有问题,将功能运行到2.5步停止查看目录无问题,保留第3步把2.5删除也无问题,唯独这些一起运行就有问题,而且windows系统下没问题,Linux却有问题。
后来一位前辈想到了问题的原因,linux系统下面调用了cp命令来复制文件和文件夹,问题就出在这里。
调用的命令 cp -arf srcdir destdir
-a是要复制链接文件,有些生僻,-r递归-f强制较常见。
从srcdir到destdir有讲究。举例子来说:
cp -arf java/bin temp/bin 有两种情况的复制:
a.复制前 若temp/bin不存在,则将java/bin直接复制到temp,即temp/bin就是java/bin;
b.复制前 若temp/bin存在,则将java/bin复制到temp/bin/中,即temp/bin/bin才是java/bin。
之前没有2.5步temp下的bin不存在所以不会有问题,加入2.5步使得bin目录存在了所以导致复制出错。
解决方式是这样复制
cp -arf java/bin temp/
这样不论怎样都会正确,注意temp后一定要加/。
另外,windows下使用的是x命令,不会有这样的问题。
7. linux命令中的cp和scp命令的区别
一个是本地 , 一个是远程。
8. Linux cp强制覆盖、复制文件夹
\cp -rf * /xxxx/
默认情况下,cp覆盖时,无论加什么参数 -f 之类的 还是提示是否覆盖。
原因是:服务器会默认增加别名 alias cp=’cp -i’,当你执行cp时,其实执行的是cp –i。
[root@ltt01 ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'