在Linux下使用CP命令,常常會提示是否覆蓋,若是是太批量的文件覆蓋,總是這麼提示,會很煩的。那如何解決這個問題呢?bash
咱們先來看一下緣由吧!遞歸
通常咱們使用的命令是cp -rf sourcefile targetdir或cp -r -f sourcefile targetdir,ci
-r的意思是遞歸複製,也就是複製文件夾及其下全部文件get
-f的意思是遇到同名的文件,不提示,直接覆蓋it
但爲何咱們用這兩個參數,系統仍是會提示覆蓋呢?io
這是由於,系統在安裝的時候使用了別名,防止咱們誤操做,覆蓋了不應覆蓋的文件。使用別名命令就能夠看到具體的配置了。function
[test@Server home]# 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'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'test
從上邊咱們能夠看出,咱們輸入的cp命令,實際上是「cp -i」命令,配置
也就是無論咱們怎麼輸入 cp -rf,其實執行的是 cp -i -rf , 也無怪乎老是提問是否覆蓋了。file
從上邊的命令咱們能夠知道,其餘幾個命令,也使用了別名,例如ll,ls mv,rm等。
那麼如何解決這個問題呢?
[test@Server home]# vi ~/.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
只要在相應的命令前加#號,就能夠註釋掉該命令了。保存退出,而後你就能夠用純粹的原命令了。
其實還有一種辦法能夠解決這個問題,就是使用 \cp -f file dir 就能夠了!