cp 指令選項與不經確認一次覆寫 | yes 與反斜線 2 種方法
cp 複製多個檔案時會逐一詢問是否覆寫,讓工作停下來。cp 指令是 Copy 的縮寫,用來複製檔案和目錄,本文整理了基本用法、選項,以及不經確認一次覆寫的 2 種方法。
目的地有同名檔案時,cp 指令會不經詢問直接覆寫。為了避免這種情況而設定了 [alias cp='cp -i'],所以覆寫前會先詢問確認。
✅ 基本使用方法
基本用法如下。
cp -[選項] <來源 檔案 或 目錄> <目的地 路徑 或 檔案 或 目錄 路徑>先寫要複製的對象,再在後面寫目的地或新名稱。

# 檔案 > 檔案複製
cp file1 file2
# 檔案 > 複製到目錄內
cp file1 dir1/
# 2 個檔案 > 複製到目錄內
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
複製目錄必須使用 -r 或 -R,或是 -a 選項。
- -r/-R:遞迴複製目錄與其中的內容
- -a:保留屬性並遞迴複製(內含 -r)
✅ cp 指令一次覆寫的 2 種方法
執行 cp 指令時會詢問 [overwrite],是因為 cp 設定了 [cp -i] 別名(alias)。
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'只有一兩個檔案還好,複製多個檔案時每個都要回答,很麻煩。
這時可以用下面兩種方法不經確認直接覆寫。
yes | cp -ar /home/ ./第一種是在前面加上 [yes |],每次確認都會自動輸入 y,直接完成複製。第二種是在指令前面加上反斜線 [\],不經過別名,直接執行原本的 cp 指令。
\cp -ar /home/ ./✅ cp 指令選項 & 模擬器
| 選項 | 說明 | |
|---|---|---|
| -a | --archive保留原始檔案的權限、擁有者、群組、時間資訊等全部屬性進行複製[權限、擁有者、群組、時間資訊等全部保留] + [-d:複製符號連結本身] + [-R:遞迴複製目錄] | |
| -b | 複製目標已存在時,先備份原有檔案再複製 | |
| -d | 來源是符號連結時,複製連結本身 | |
| -f | 有目標檔案時,強制刪除後再複製 | |
| -i | --interactive覆寫前向使用者要求確認alias cp='cp -i' | |
| -l(小寫) | 以硬連結的形式複製 | |
| -P | 不追蹤符號連結,直接複製連結本身 | |
| -p | 照原樣保留原始檔案的擁有者、群組、權限與時間資訊 | |
| -r, -R | 遞迴複製目錄(包含子目錄與檔案)-r 選項不是 POSIX 標準,處理符號連結或裝置檔案時可能出問題。 | |
| -s | 以符號連結的形式複製(來源必須以絕對路徑指定) | |
| -u | 目標檔案較新或相同時不覆寫 | |
| -v | 輸出複製進度(verbose)顯示複製已完成訊息的選項 | |
| -x | 來源與目標的檔案系統不同時不複製。 |
[root@server work]#
只在瀏覽器中運作,不會動到真正的檔案。請試著變換 cp 選項輸入,再用 ls、cat、diff 確認結果。用鍵盤 ↑↓ 可以叫出之前輸入的指令,輸入 uknew help 會列出可用的指令。
🔲 -a 選項:保留原始檔案屬性 & 複製子目錄(&檔案)
要保留原始檔案屬性並一路複製到子目錄,只用 [-a] 選項就夠了。不過有些指令碼或自動化工具會明確要求 [-r],所以有時也會一起加上 [-r] 或 [-R] 選項。
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d :複製符號連結本身]+[-R :遞迴複製目錄]+[--preserve=all]
| --preserve=all 包含的項目 | 說明 |
|---|---|
| mode | 檔案權限(rwx 等) |
| ownership | 擁有者(user)與群組(group) |
| timestamps | 最後修改時間等時間戳記 |
| links | 硬連結數(維持共用同一個 inode) |
| context | SELinux 安全性內容 |
| xattr | 延伸屬性(額外存放在檔案上的中繼資料) |
| all | 一次包含上面所有項目的簡寫 |
🔲 -u 選項:只複製新增與變更的檔案
- 只有在目標路徑沒有同名檔案, 或來源較新時才複製
- 常用於備份或同步
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ 聯盟行銷說明
本站內容包含聯盟行銷連結。訪客透過這些連結購買商品或服務時,本站會從賣家獲得佣金。在這個過程中,購買者支付的金額(遇到活動折扣時金額會降低↓)並不會因此提高。刊登的價格、折扣與庫存資訊以撰寫當時為準,可能與實際情況不同,購買前請向賣家做最後確認。商品的挑選與評價依本站自訂的標準撰寫,是否支付佣金不會影響介紹順序或評價內容。