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