我们在使用linux操作系统时,经常需要覆盖升级一些软件,比如phpmyadmin,文件很多,复制时一直提示是否覆盖,按Y按的手的麻了,如何让cp命令复制文件的时候,不提示这些呢?

首先,我们想到的是,使用cp -rf 中的-f参数,顾名思义,-f肯定是强制覆盖不提示了,但奇怪的是,使用-f的参数,还是提示上面的内容。

什么原因呢,很简单,很多linux发行版,例如CentOS,会把部分命令起一个别名,我们看下:

[root@localhost ~]# 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'

可以看到cp命令其实是cp -i的别名,-i参数就是提示用户用的。

知道这个,就好办了,我们打开用户家目录的.bashrc文件,可以看到:

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

把其中的alias rm=’rm -i’前面添加#来注释掉,然后注销用户再登录系统,应该就行了。

如果你住想这么麻烦,可以直接使用\cp -rf file dir来不提示文件覆盖。例如

[root@localhost ~]# \cp -rf * /mnt/sdb/pma/

这句命令就把当前目录的所有文件复制到/mnt/sdb/pma目录中去了,且不会提示覆盖。

Linux如何让复制文件时不提示Y/N

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注