Linux下如何使cp命令不提示覆蓋文件

在Linux下,若是但願將文件file拷貝到目錄dir下,能夠執行:cp file dir
但若是dir下已經存在一個名爲file的文件的時候,系統老是會提示是否覆蓋file。

這是一個很好的功能,它可以防止咱們因爲疏忽對系統形成的損害,但若是不但願看到這些交互的提示信息呢?好比咱們須要寫一個腳本,將某些文件安裝到指定的目錄下,這時咱們確定不但願看到提示。

能夠試一下 -f 選項,-f 通常表示強制執行(force)。

php

cp -f file dir


但好像結果並不像咱們但願的那樣,系統依然會有覆蓋提示。爲何呢?

緣由很簡單,系統將cp命令alias爲cp -i
html

當咱們執行cp命令的時候,系統每每執行的是cp -i,-i 選項表示有交互的提示信息,linux

因此執行cp -f的時候,系統實際執行的是cp -i -f,因此仍然會有覆蓋提示。

web

能夠執行alias命令查看下:
shell

alias cp='cp -i'
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也很簡單:
1.在調用cp的時候加入絕對路徑(可經過whereis cp命令獲得),如bash

/bin/cp -f file dir

2.經過直接執行下面的語句調用系統原始的命令:
spa

 \cp -f file dir

3.在~/.bashrc裏面註釋掉 Alias cp='cp -i'
4.unalias cp ,而後再使用cp,但使用後還原alias cp='cp -i'
unix

參考:code

http://www.myexception.cn/linux-unix/446791.htmlhtm

http://www.php100.com/html/webkaifa/Linux/2010/0525/6409.html

相關文章
相關標籤/搜索