ในบทช่วยสอนนี้ เราอธิบายวิธีใช้คำสั่ง 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/