linux強制cp
1. linux 使用 cp 命令強制覆蓋功能
我們平時在 Linux 中使用 cp 命令時,當把文件從一個目錄復制到另一個目錄,且目錄中具有同名文件時,系統會提示輸入 y 來確認是否覆蓋同名文件。
如果文件少的謹搏飢話,也無關緊要,但文件多的話,要一個一個確認簡直太累了。更要命的是,即使我們加了 -rf 參數,還是會提示。
為什麼會這樣呢?
原因就是 cp 命令被系統設置了 別名 。
我們可以查看祥返一下:
也就是說,我們平時使用的 cp 命令,實際上是 cp -i 。
那 -i 參數是什麼意思呢?
就是在覆蓋之前銀昌會給一個提示,這應該算是系統的一個保險措施。
那如果希望進行強制復制,不想一個一個輸入 y ,有什麼辦法呢?
使用原生命令:
取消別名:
這樣再使用 cp -rf 的時候就不會提示確認了。
但需要注意的是,使用完之後記得把別名恢復。
這里更推薦大家使用辦法一,因為命令簡單,而且還不會造成忘記恢復別名而帶來的風險。
以上就是本文的全部內容,如果覺得還不錯的話,歡迎 點贊 , 轉發 和 關注 ,感謝支持。
推薦閱讀:
2. linux命令:cp復制文件或目錄
使用Linux系統的時候經常需要運用cp命令進行文件或者文件夾的復制,那麼該如何操作cp命令呢?下面我給大家分享一下。
工具/材料
linux系統終端
- 01
首先登錄進linux系統,右鍵單擊選擇Open In Terminal選項,如下圖所示
- 02
接下來我們在打開的終端命令行,首先用pwd命令查看當前目錄,然後運用cp命令進行文件的復制,如下圖所示,注意復制後的文件名稱被修改了
- 03
回到桌面,我們可以看到已經有2個文件了,並且復制的文件名稱也已改變,如下圖所示
- 04
最後我們還可以通過cp命令直接復制文件夾到另一個文件夾,如下圖所示
3. Linux下cp和scp的詳細說明及其他們的區別
一、說明
cp:是在同一個linux系統上,在不同的目錄之間復制文件;
scp:是在不同linux系統之間來回復制文件;
二、cp 用法
單個文件復制:
cp 源文件 目標路徑 ~~從原路徑復制源文件到目標路徑下;如果在目標路勁之後加文件名稱和格式意思就是復制過去之後將該文件重命名。
多個文件復制:
cp 源文件1 源文件2 源文件3 ... 目標路徑 ~~從原路徑復制源文件到目標路徑下;
三、cp 的參數詳解
-a 盡可能將源文件狀態、許可權等資料都照原裝予以復制,並且是遞歸;
-r 表示遞歸,若source中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地;
-f 若目的地已經有相同檔名的檔案存在,則在復制前先予以刪除再行復制;
四、scp 的用法
基本語法:scp [參數] 文件 @IP:/目標路徑;如下圖
五、scp參數詳解
-1 強制scp命令使用協議ssh1
-2 強制scp命令使用協議ssh2
-4 強制scp命令只使用IPv4定址
-6 強制scp命令只使用IPv6定址
-B 使用批處理模式(傳輸過程中不詢問傳輸口令或短語)
-C 允許壓縮。(將-C標志傳遞給ssh,從而打開壓縮功能)
-p 保留原文件的修改時間,訪問時間和訪問許可權。
-q 不顯示傳輸進度條。
-r 遞歸復制整個目錄。
-v 詳細方式顯示輸出。scp和ssh(1)會顯示出整個過程的調試信息。這些信息用於調試連接,驗證和配置問題。
-c cipher 以cipher將數據傳輸進行加密,這個選項將直接傳遞給ssh。
-F ssh_config 指定一個替代的ssh配置文件,此參數直接傳遞給ssh。
-i identity_file 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。
-l limit 限定用戶所能使用的帶寬,以Kbit/s為單位。
-o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞方式,
-P port 注意是大寫的P, port是指定數據傳輸用到的埠號
-S program 指定加密傳輸時所使用的程序。此程序必須能夠理解ssh(1)的選項。
例:scp -r 文件夾 @IP:目標路徑;
4. linux如何復制移動文件
linux如何復制文件夾和移動文件夾
linux下文件的復制、移動與刪除命令為:cp,mv,rm
一、文件復制命令cp
命令格式:cp [-adfilprsu] 源文件(source) 目標文件(destination)
cp [option] source1 source2 source3 ... directory
參數說明:
-a:是指archive的意思,也說是指復制所有的目錄
-d:若源文件為連接文件(link file),則復制連接文件屬性而非文件本身
-f:強制(force),若有重復或其它疑問時,不會詢問用戶,而強制復制
-i:若目標文件(destination)已存在,在覆蓋時會先詢問是否真的操作
-l:建立硬連接(hard link)的連接文件,而非復制文件本身
-p:與文件的屬性一起復制,而非使用默認屬性
-r:遞歸復制,用於目錄的復制操作
-s:復製成符號連接文件(symbolic link),即「快捷方式」文件
-u:若目標文件比源文件舊,更新目標文件
如將/test1目錄下的file1復制到/test3目錄,並將文件名改為file2,可輸入以下命令:
cp /test1/file1 /test3/file2
二、文件移動命令mv
命令格式:mv [-fiv] source destination
參數說明:
-f:force,強制直接移動而不詢問
-i:若目標文件(destination)已經存在,就會詢問是否覆蓋
-u:若目標文件已經存在,且源文件比較新,才會更新
如將/test1目錄下的file1復制到/test3 目錄,並將文件名改為file2,可輸入以下命令:
mv /test1/file1 /test3/file2
三、文件刪除命令rm
命令格式:rm [fir] 文件或目錄
參數說明:
-f:強制刪除
-i:交互模式,在刪除前詢問用戶是否操作
-r:遞歸刪除,常用在目錄的刪除
如刪除/test目錄下的file1文件,可以輸入以下命令:
rm -i /test/file1
復制:
CP命令
格式: CP [選項] 源文件或目錄 目的文件或目錄
選項說明:-b 同名,備分原來的文件
-f 強制覆蓋同名文件
-r 按遞歸方式保留原目錄結構復制文件
cp -Rf /home/user1/* /root/temp/
將 /home/user1目錄下的所有東西拷到/root/temp/下而不拷貝user1目錄本身。
即格式為:cp -Rf 原路徑/ 目的路徑/
移動:
mv ./WorkReport/web.xml ./WorkReport/WEB-INF/註:移動/WorkReport/web.xml文件到/WorkReport/WEB-INF/mv /data/new/data/old/註:移動/data/new到/data/old/文件夾下
注意點:移動文件夾的話就不要再加 / 了
如果是移動文件夾下的所有文件的話就可以文件夾後面跟上 /*
mv /data/new/* /data/old/
5. linux的cp怎麼覆蓋
我們平常在Linux中使用 cp 命令時,會發現將一個目錄中文件復制到另一個目錄具有相同文件名稱時,即使添加了 -rf 參數強制覆蓋復制時,系統仍然會提示讓你一個個的手工輸入 y 確認復制,所添加的rf參數是不起作用的。
原因:
cp命令被系統設置了別名,相當於cp=『cp -i』。
查詢alias命令
[root@localhost sonarqube]# 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'
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
通過上述輸出,可以看出,我們平時使用 cp 命令,雖然沒有添加任何參數 ,但系統默認會在我們使用 cp 命令時自動添加 -i 參數
-i, --interactive
prompt before overwrite
1
2
1
2
-i 即交互的縮寫方式,也就是在使用 cp 命令作文件覆蓋操作之前,系統會要求確認提示.這個本來是系統的一個保險措施.如果有很多文件要復制,覺得一個一個輸入y 確認麻煩的話,可以使用如下方法解決:
強制復制
建議大家使用方式一,因為取消別名的話很容易造成風險,萬一又忘記恢復別名,以後的復制都不會有提示信息。
有提示信息可以多一層保險嘛,是人都會有犯混的時候,給自己加一個保險,有保障呀.
方式一
使用原生的cp命令
/bin/cp -rf xxxx
1
1
方式二
取消cp命令別名
unalias cp
1
1
去掉 cp 命令的別名,這時你再用 cp -rf 復制文件時,就不會要求確認啦.
復制
6. linuxcp命令報nomath
1、下載資源和代碼;
2、編譯;
3、將需要打包的文件復制到臨時目錄打包。
後來由於新需求,修改了一下功能,在復制到臨時目錄之前還有回去一些資源到臨時目錄:
2.5、下載三方資源到臨時目錄。
增加此功能後錯誤就出現了,復制的臨時目錄的結構全亂了,比如:
java/bin應復制到temp/bin,結果去錯誤的復制到了temp/bin/bin。
看到此問題我以為是2.5步驟中下載的資源包目錄有問題,將功能運行到2.5步停止查看目錄無問題,保留第3步把2.5刪除也無問題,唯獨這些一起運行就有問題,而且windows系統下沒問題,Linux卻有問題。
後來一位前輩想到了問題的原因,linux系統下面調用了cp命令來復制文件和文件夾,問題就出在這里。
調用的命令 cp -arf srcdir destdir
-a是要復制鏈接文件,有些生僻,-r遞歸-f強制較常見。
從srcdir到destdir有講究。舉例子來說:
cp -arf java/bin temp/bin 有兩種情況的復制:
a.復制前 若temp/bin不存在,則將java/bin直接復制到temp,即temp/bin就是java/bin;
b.復制前 若temp/bin存在,則將java/bin復制到temp/bin/中,即temp/bin/bin才是java/bin。
之前沒有2.5步temp下的bin不存在所以不會有問題,加入2.5步使得bin目錄存在了所以導致復制出錯。
解決方式是這樣復制
cp -arf java/bin temp/
這樣不論怎樣都會正確,注意temp後一定要加/。
另外,windows下使用的是x命令,不會有這樣的問題。
7. linux命令中的cp和scp命令的區別
一個是本地 , 一個是遠程。
8. Linux cp強制覆蓋、復制文件夾
\cp -rf * /xxxx/
默認情況下,cp覆蓋時,無論加什麼參數 -f 之類的 還是提示是否覆蓋。
原因是:伺服器會默認增加別名 alias cp=』cp -i』,當你執行cp時,其實執行的是cp –i。
[root@ltt01 ~]# 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'