Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

คำสั่ง Linux cp:วิธีคัดลอกไฟล์และไดเรกทอรี

ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้คำสั่ง cp ใน Linux เพื่อคัดลอกไฟล์หรือไดเร็กทอรี ตัวอย่างอยู่ด้านล่าง

Linux เป็นหนึ่งในระบบปฏิบัติการที่ได้รับความนิยมมากที่สุดในโลก และเป็นพื้นฐานสำหรับอุปกรณ์ Android ทั้งหมด เป็น โอเพ่นซอร์ส และมีข้อดีที่ชัดเจนเหนือระบบอื่นๆ เช่น Windows หรือ macOS

ภายใน Linux มีคำสั่งต่างๆ มากมายที่โปรแกรมเมอร์ใช้เป็นประจำ

คำสั่ง cp คืออะไร

สำเนา (cp) คำสั่งเป็นหนึ่งในคำสั่งพื้นฐานและใช้กันมากที่สุดของคำสั่ง Linux ทั้งหมด ช่วยให้ผู้ใช้สามารถคัดลอกไฟล์หรือไดเร็กทอรีจากที่หนึ่งไปยังอีกที่หนึ่ง เมื่อไฟล์ถูกคัดลอก ชื่อไฟล์ต้นฉบับจะยังคงเหมือนเดิม แต่ชื่อไฟล์เป้าหมายสามารถเปลี่ยนแปลงได้หากต้องการ

ไวยากรณ์ทั่วไปสำหรับคำสั่ง cp

รูปแบบไวยากรณ์ทั่วไปสำหรับคำสั่งนี้คือ:

cp [Options] [Source] [Destination]

ตัวเลือกทั่วไปสำหรับคำสั่ง cp

-v Verbose mode (Show Progress)
-n Do not overwrite an existing fie
-d Copy a link file
-r/R Copy directories recursively
-i Prompt before overwrite
-b Make a backup of each existing destination file
-p Preserve the specified attributes

วิธีคัดลอกไฟล์และไดเรกทอรี

ด้านล่างนี้ เราจะพูดถึงวิธีการที่ใช้ในการคัดลอกไฟล์และไดเร็กทอรีโดยใช้ cp คำสั่ง

วิธีการสร้างสำเนาของไฟล์

ในการคัดลอกไฟล์โดยใช้คำสั่ง cp ให้ป้อนชื่อไฟล์ที่คุณต้องการคัดลอกตามด้วยปลายทาง

ในตัวอย่างด้านล่าง ไฟล์ linxscrew.txt จะถูกคัดลอกไปยังไฟล์ใหม่ชื่อ linxscrew_updated.txt คำสั่ง cp ยังสร้างไฟล์ใหม่อีกด้วย

cp linxscrew.txt linxscrew_updated.txt

ผลลัพธ์:

ls
linxscrew.txt linxscrew_updated.txt

วิธีการคัดลอกหลายไฟล์ไปยังตำแหน่งใหม่

ในการคัดลอกไฟล์มากกว่าหนึ่งไฟล์โดยใช้คำสั่ง cp ให้ส่งชื่อไฟล์ตามด้วยไดเร็กทอรีปลายทาง ในตัวอย่างนี้ เราจะคัดลอกไฟล์สามไฟล์ชื่อ “linxscrew1.txt “, “linxscrew2.txt “ และ “linxscrew3.txt “. เราจะคัดลอกจากไดเร็กทอรีชื่อ “/home/docs ” ไปยังไดเร็กทอรีชื่อ “/home/new_docs “. ชื่อไฟล์ทั้งหมดต้องคั่นด้วยช่องว่าง

cp /home/docs linuxscrew1.txt linuxscrew1.txt linuxscrew1.txt /home/new_docs

เพื่อตรวจสอบว่าได้คัดลอกไฟล์ไปยังตำแหน่งใหม่อย่างถูกต้องแล้ว คุณสามารถใช้คำสั่ง Is ดังที่แสดงด้านล่าง:

ls -lh /home/new_docs

วิธีการคัดลอกไดเรกทอรี

คำสั่ง cp ไม่ได้คัดลอกเนื้อหาไดเร็กทอรีตามค่าเริ่มต้น ดังนั้น หากคุณต้องการคัดลอกไดเร็กทอรีแบบเรียกซ้ำจากที่หนึ่งไปยังอีกที่หนึ่ง คุณจะต้องใช้ – r ตัวเลือกร่วมกับคำสั่ง cp ซึ่งจะส่งผลให้ไดเร็กทอรีทั้งหมด รวมทั้งไดเร็กทอรีย่อย ถูกคัดลอกไปยังไดเร็กทอรีเป้าหมายใหม่ ชื่อไดเรกทอรีจะยังคงเหมือนเดิม

คำสั่งต่อไปนี้จะคัดลอกไดเร็กทอรีทั้งหมดที่เรียกว่า linuxscrew รวมถึงไดเรกทอรีย่อยจากตำแหน่ง เอกสาร ไปยังตำแหน่งที่ชื่อ new_docs :

cp -r /home/docs/linuxscrew/ /home/newdocs/

วิธีการคัดลอกหลายไดเร็กทอรี

ซึ่งคล้ายกับการคัดลอกไดเร็กทอรีเดียว และอนุญาตให้คุณคัดลอกหลายไดเร็กทอรีแบบเรียกซ้ำโดยใช้คำสั่งเดียว ในตัวอย่างด้านล่าง เราต้องการคัดลอกไดเร็กทอรีชื่อ linuxscrew_files และ linuxscrew_images ไปยังไดเร็กทอรีชื่อ /home/all_linuxscrew_docs .

cp -r /home/linuxscrew_files/ /home/linuxscrew_images/ /home/all_linuxscrew_docs/

วิธีการคัดลอกไฟล์ในรูปแบบเฉพาะ

หากคุณต้องการคัดลอกเฉพาะไฟล์ที่มีรูปแบบเฉพาะบน Linux คุณสามารถใช้สัญลักษณ์แทน “* ” ด้วยนามสกุลไฟล์ที่เกี่ยวข้อง ในตัวอย่างด้านล่าง เรากำลังคัดลอกไฟล์ทั้งหมดที่ลงท้าย .txt ลงในไดเร็กทอรีเป้าหมาย แต่สามารถใช้เมธอดนี้กับนามสกุลไฟล์ใดก็ได้

cp /home/linuxscrew/*.txt /home/text_files/

วิธีหลีกเลี่ยงการเขียนทับไฟล์ที่มีอยู่

หากคุณไม่ต้องการเขียนทับไฟล์ที่มีอยู่เมื่อคุณคัดลอกไฟล์ใน Linux ให้ใช้ –n ตัวเลือก. การดำเนินการนี้จะตรวจสอบไดเรกทอรีเป้าหมายสำหรับไฟล์ชื่อนั้นและจะดำเนินการตามคำสั่งก็ต่อเมื่อ ไม่ ไฟล์ที่มีชื่อนั้นอยู่แล้ว หากมี คำสั่งจะยังคงทำงานอยู่แต่จะไม่ทำการเปลี่ยนแปลงใดๆ ในตัวอย่างด้านล่างชื่อไฟล์คือ linuxscrew.txt .

cp -n /home/linuxscrew/linuxscrew.txt /home/all_linuxscrew_docs/

วิธีคัดลอกไฟล์ symlink

โดยค่าเริ่มต้น symlink จะถูกยกเว้นเมื่อทำการคัดลอก หากคุณต้องการคัดลอกไฟล์ลิงก์ คุณจะต้องใช้ -d ดังตัวอย่างด้านล่าง:

cp –d /hone/linuxscrew/linuxscrew.txt /home/all_linuxscrew_docs/