Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

เรียนรู้คำสั่ง cp ใน Linux: คัดลอกไฟล์ & ไดเรกทอรีอย่างง่ายดาย

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

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

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

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

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

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

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

cp [Options] [Source] [Destination]

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

-v Verbose mode (แสดงความคืบหน้า) -n อย่าทับไฟล์ที่มีอยู่ -d คัดลอกไฟล์ลิงก์ -r/R คัดลอกไดเรกทอรีแบบ recursive -i พรอมป์ตก่อนทับ -b สำรองไฟล์ปลายทางที่มีอยู่แต่ละไฟล์ -p รักษาแอตทริบิวต์ที่ระบุ

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

ด้านล่าง เราจะผ่านวิธีการคัดลอกไฟล์และไดเรกทอรีโดยใช้คำสั่ง 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

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

ls -lh /home/new_docs

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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