首頁 > 軟體

Linux下如何使cp命令不提示覆蓋檔案

2020-06-16 17:57:16

在Linux下,如果希望將檔案file拷貝到目錄dir下,可以執行:cp file dir 但如果dir下已經存在一個名為file的檔案的時候,系統總是會提示是否覆蓋file。 本文進行分析並提供解決之道。

這是一個很好的功能,它能夠防止我們由於疏忽對系統造成的損害,但如果不希望看到這些互動的提示資訊呢?比如我們需要寫一個指令碼,將某些檔案安裝到指定的目錄下,這時我們肯定不希望看到提示。

可以試一下 -f 選項,-f 一般表示強制執行(force)。

cp -f file dir

但好像結果並不像我們希望的那樣,系統依然會有覆蓋提示。為什麼呢?

原因很簡單,系統將cp命令alias為cp -i。

當我們執行cp命令的時候,系統往往執行的是cp -i,-i 選項表示有互動的提示資訊,

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

可以執行alias命令檢視下:

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命令得到),如

/bin/cp -f file dir

2.通過直接執行下面的語句呼叫系統原始的命令:

cp -f file dir

3.在~/.bashrc裡面註釋掉 Alias cp='cp -i'

4.unalias cp ,然後再使用cp,但使用後還原alias cp='cp -i'

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-07/120289.htm


IT145.com E-mail:sddin#qq.com