前言
前一天學習了 mv,可以將檔案移動到其他位置,或是重新命名檔案。
但是 mv 有一個特性,移動完成後,原本位置的檔案就不會保留。
如果今天想要「複製」一份檔案,同時保留原本的檔案,就可以使用 cp 指令。cp 是 copy 的縮寫,使用方式和 mv 很相似。
今天的 Challenge 要求我將 /flag 複製到 /tmp/hack-the-planet,完成後再使用 /challenge/check 確認結果。
cp 指令cp 的基本語法是 cp SOURCE DESTINATION
其中
例如 cp my-file your-file
執行之後,會得到一份 your-file。
而原本的 my-file 仍然會保留。
cp 的基本使用方式例如目前有 my-file
可以使用 cp my-file backup
這時候會變成 backup my-file 兩個檔案都存在。
也就是說原始檔案不會因為複製而消失。
這也是 cp 很常被拿來建立備份的原因,就像平常複製檔案一樣。
題目:copying files
這次題目要求 Copy /flag to /tmp/hack-the-planet
也就是將 /flag
複製成 /tmp/hack-the-planet
因此可以使用 cp /flag /tmp/hack-the-planet
完成之後,再執行 /challenge/check
讓 Challenge 檢查複製結果。
如果複製的位置和檔案都符合題目的要求,就會通過檢查並取得 Flag。
這次題目有特別提醒一件事情,如果 cp 的目的地是一個已存在的目錄,那麼 cp 會把檔案複製進這個目錄,並沿用原本的檔案名稱。
例如 cp /flag /tmp/
假設 /tmp/ 是目錄,那麼最後會變成 /tmp/flag
而不是 /tmp/hack-the-planet
但這次 Challenge 要求的是 /tmp/hack-the-planet
作為複製出來的檔案名稱本身。
因此這次應該直接指定完整的目的檔案路徑 cp /flag /tmp/hack-the-planet
而不是 cp /flag /tmp/
cp、mv、rm 的比較連續學習了幾天的檔案操作後,可以把這幾個指令放在一起比較:
| 指令 | 英文 | 主要功能 | 原始檔案是否保留 |
|---|---|---|---|
cp |
copy | 複製檔案 | 保留 |
mv |
move | 移動/重新命名 | 原位置不保留 |
rm |
remove | 刪除檔案 | 不保留 |
今天學到的 cp 和昨天的 mv 很容易搞混,但實際操作之後就比較容易理解兩者的差異。mv 是把檔案「搬走」,而 cp 則是「複製一份」,所以使用 cp 後,原本的檔案還會存在。另外,這次 Challenge 特別讓我注意到「目的地是檔案還是目錄」的差別。如果目的地是一個已存在的目錄,cp 會把來源檔案放進該目錄;如果指定的是新的檔案名稱,就會以這個名稱建立複製檔。目前已經連續學習了 touch、rm、mv 和 cp,對 Linux 基本檔案操作也越來越熟悉。