cp覆蓋時,無論加什么參數-f之類的還是提示是否覆蓋,當文件比較少的時候還可以按Y確認,當很多文件的時候就不好說了。用下面的方法可以解決覆蓋提示的問題。
例如:把zmc目錄下的文件復制到linuxzmc目錄
[root@linuxzmc ~]# cp zmc/* linuxzmc
cp:是否覆蓋“linuxzmc/1.txt”?
執行上面的命令時,linuxzmc文件夾中存在的每個文件都會提示是否覆蓋;
[root@linuxzmc ~]# cp -rf zmc/* linuxzmc
cp:是否覆蓋“linuxzmc/1.txt”?
加了-f了,依然有此提示。
服務器上查找后發現在默認的系統中是加了別名如下
[root@linuxzmc ~]# alias
alias cp=’cp -i’
可以看到別人 ,也就是當執行cp的時候,其實執行的是cp -i參數
PS: -f 刪除已經存在的目標文件而不提示。
-i 和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認。回答y時目標文件將被覆蓋,是交互式拷貝。
-r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。
解決辦法:
方法一:修改bashrc文件禁用掉cp的alias
[root@linuxzmc~]# vi ~/.bashrc
在alias cp=’cp -i’前加上”#”注釋,重新登錄即可實現復制不提示。
[root@linuxzmc ~]# cp -rf zmc linuxzmc
[root@linuxzmc ~]# cp -r zmc linuxzmc
方法二:直接輸入命令即可實現
[root@linuxzmc~]# cp -rf zmc linuxzmc/
cp:是否覆蓋“linuxzmc/zmc/user_add.sh”?
[root@linuxzmc ~]# \cp -rf mc linuxzmc
PS:\cp則是告訴shell不要去查alias,直接執行原本的cp
