Linux運維基礎之cp命令詳解

Linux運維基礎之cp命令詳解

Linux 中的 cp 命令代表 “複製”。它是一種命令列工具,用於將檔案和目錄從檔案系統中的一個位置複製到另一個位置。通過使用 cp 命令,使用者可以建立檔案或目錄的副本,同時保留原始內容。

cp 命令中的 “source“是指要複製的檔案或目錄,”destination“是指要放置副本的位置。可以新增各種選項來修改複製行為,如保留檔案屬性或提供詳細輸出。在 Linux 中,它是管理檔案和目錄的基本命令,使用廣泛。

在本篇文章中,我們將介紹在 Linux 中使用 cp 命令複製檔案和資料夾的一些常用方法。

語法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp [options] source destination
cp [options] source destination
cp [options] source destination

1. 複製檔案

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp foo.txt bar.txt
cp foo.txt bar.txt
cp foo.txt bar.txt

該命令將把 foo.txt 檔案的內容複製到名為 bar.txt 的檔案中。

示例:

假設您有一個名為 foo.txt 的檔案,內容如下:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Hello, World!
Hello, World!
Hello, World!

如果執行 cp foo.txt bar.txt 命令,就會建立一個名為 bar.txt 的新檔案,其內容與 foo.txt 完全相同:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Hello, World!
Hello, World!
Hello, World!

如果 bar.txt 已經存在,其內容將被 foo.txt 的內容覆蓋。如果 bar.txt 不存在,則會被建立。

2. 複製目錄(及其內容)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -R foo-folder bar-folder
cp -R foo-folder bar-folder
cp -R foo-folder bar-folder

-R 選項代表 “遞迴”,用於複製目錄及其內容,包括子目錄。

下面是 cp -R foo-folder bar-folder 命令的作用:

  • cp: 呼叫複製命令。
  • -R: 告訴命令進行遞迴操作,複製所有目錄和子目錄。
  • foo-folder: 要複製的源目錄。
  • bar-folder: 要複製源目錄的目標目錄。

示例

假設有一個名為 foo-folder 的目錄,其結構如下:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
foo-folder/
├── file1.txt
└── subfolder
└── file2.txt
foo-folder/ ├── file1.txt └── subfolder └── file2.txt
foo-folder/
├── file1.txt
└── subfolder
└── file2.txt

然後,你要將整個目錄複製到另一個名為 bar-folder 的目錄中。

你可以執行命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -R foo-folder bar-folder
cp -R foo-folder bar-folder
cp -R foo-folder bar-folder

執行此命令後, bar-folder 目錄的結構將與 foo-folder 相同:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
bar-folder/
└── foo-folder
├── file1.txt
└── subfolder
└── file2.txt
bar-folder/ └── foo-folder ├── file1.txt └── subfolder └── file2.txt
bar-folder/
└── foo-folder
├── file1.txt
└── subfolder
└── file2.txt

如果 bar-folder 不存在,則將建立它。如果存在,foo-folder 將被複制到其中,並保留 foo-folder 的結構。

注:如果要將 foo-folder 的內容直接複製到 bar-folder 中,而不在 bar-folder 中建立 foo-folder,則需要確保 bar-folder 存在,然後執行:

1 cp -R foo-folder/* bar-folder/

3. 顯示覆制進度

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -v foo.txt bar.txt
cp -v foo.txt bar.txt
cp -v foo.txt bar.txt

-v 選項代表 “verbose”(詳細說明),與 cp 命令一起使用時,可提供有關正在執行的操作的詳細資訊。

示例:

假設當前目錄下有一個名為 foo.txt 的檔案,你想在同一目錄下建立一個名為 bar.txt 的檔案副本。您可以使用以下命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -v foo.txt bar.txt
cp -v foo.txt bar.txt
cp -v foo.txt bar.txt

如果操作成功,命令將輸出如下資訊:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
'foo.txt' -> 'bar.txt'
'foo.txt' -> 'bar.txt'
'foo.txt' -> 'bar.txt'

該資訊確認檔案 foo.txt 已複製到 bar.txt。

4. 確認覆蓋檔案

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -i foo.txt bar.txt
cp -i foo.txt bar.txt
cp -i foo.txt bar.txt

-i 代表 “interactive(互動式)”。使用該選項時,系統會在覆蓋任何檔案前提示你。如果你想避免意外覆蓋現有檔案,這個選項非常有用。

示例:

假設當前目錄下有一個名為 foo.txt 的檔案,你想在同一目錄下建立一個名為 bar.txt 的副本。但是你不確定名為 bar.txt 的檔案是否已經存在,而且你不想在沒有警告的情況下覆蓋它。

您可以使用命令:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp -i foo.txt bar.txt
cp -i foo.txt bar.txt
cp -i foo.txt bar.txt

如果已存在 bar.txt,系統將提示您類似的資訊:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp: overwrite 'bar.txt'?
cp: overwrite 'bar.txt'?
cp: overwrite 'bar.txt'?

然後,你可以輸入 y (是)選擇覆蓋,或輸入 n (否)避免覆蓋。

如果 bar.txt 不存在,命令將直接建立一個名為 bar.txtfoo.txt 副本,而不會有任何提示。

5. 將多個檔案複製到一個目錄

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp foo.txt bar.txt baz
cp foo.txt bar.txt baz
cp foo.txt bar.txt baz

該命令將在 baz 目錄中複製 foo.txtbar.txtbaz 目錄必須存在,命令才會生效。

更多 Linux 命令

下面羅列了最常見的一些 Linux 命令,您可以根據自己的需要查閱對應命令的詳細解析:

目錄操作 rmdir · cd · pwd · exa · ls
檔案操作 cat · cp · dd · less · touch · ln · rename · more · head
檔案系統操作 chown · mkfs · locate
網路 ping · curl · wget · iptables · mtr
搜尋和文字處理 find · grep · sed · whatis · ripgrep · fd · tldr
系統資訊和管理 env · history · top · who · htop · glances · lsof
使用者和會話管理 screen · su · sudo · open

此外,我們還整理 Linux 命令列大全,以幫助大家全面深入地學習 Linux。

評論留言