คำสั่ง cp (ย่อมาจาก copy) เป็นคำสั่งที่ใช้ในการคัดลอกไฟล์หรือ directories ซึ่งคำสั่งนี้ประกอบไปด้วย 40 options แต่ในที่นี้จะกล่าวเพียงเล็กน้อยเท่าที่นำไปใช้งานบ่อยเท่านั้น เช่น
# cp file1 file2
คำสั่งนี้จะทำการสร้าง file2 ขึ้นมา โดยคัดลอกจาก file1 เราลองไปดูตัวอย่างการ copy ไฟล์กันเลยครับ แต่ก่อนที่เราจะทำการคัดลอกไฟล์ได้ เราจะต้องสร้างไฟล์ทดลองขึ้นมาก่อน 3 ไฟล์ดังนี้
# cat > file1 this is file1 # cat > file2 this is file 2 # cat > file3 this is the third file # ls -l file* -rw-rw-r-- 1 root root 14 Nov 13 16:12 file1 -rw-rw-r-- 1 root root 15 Nov 13 16:12 file2 -rw-rw-r-- 1 root root 23 Nov 13 16:12 file3
ต่อไปนี้เราจะทำการคัดลอกไฟล์ไปยังไฟล์อื่น ๆ เมื่อคัดลอกเสร็จแล้วให้ทำการแสดงรายละเอียดไฟล์ต่าง ๆ อีกครั้ง
# cp file1 file2 # ls -l file* -rw-rw-r-- 1 root root 14 Nov 13 16:12 file1 -rw-rw-r-- 1 root root 14 Nov 13 16:14 file2 -rw-rw-r-- 1 root root 23 Nov 13 16:12 file3 # cat file2 this is file1
จะเห็นว่าการคัดลอกจากคำสั่งข้างต้นนั้น มันจะทำการคัดลอกไฟล์จาก file1 ไปยัง file2 แต่ในกรณีนี้มี file2 อยู่แล้ว มันจะทำการลบ file2 เดิมออกไป แล้วสร้างขึ้นมาใหม่แล้วนำเนื้อหาต่าง ๆ ของ file1 มาแทนที่ file2 (ซึ่งหมายความว่า file2 เดิมถูกลบออกไปแล้วนั่นเอง) ดังนั้นในการแก้ไขปัญหานี้ เราสามารถใช้ option -b หรือ -i ซึ่งการทำงานก็เหมือนกับคำสั่ง mv นั่นหมายความว่า ถ้าเราใช้ option -b มันจะทำการ backup file2 ไว้แล้วใส่อักขระ ~ ต่อท้ายชื่อไฟล์ เพื่อเก็บเนื้อหาไฟล์เดิมเอาไว้ ดังนี้
# cp -i file1 file2 cp: overwrite 'file2'? n # cp -bi file1 file2 cp: overwrite 'file2'? y # ls file* file1 file2 file2~ file3
คำสั่ง cp ยังสามารถใช้ในการ copy ไฟล์จำนวนมากในครั้งเดียวได้ ตัวอย่างต่อไปนี้จะแสดงให้เห็นวิธีการคัดลอกไฟล์ทั้งหมดจาก directory tempdir1 ไปยัง directory tempdir2 ดังนี้
# cp tempdir1/* tempdir2 # tree tempdir2 tempdir2 | - - temp1file1 | - - temp1file2 | - - temp1file3 0 directories, 3 files
นอกจากนี้ยังมี option -r (recursive) เหมือนกับคำสั่ง rm ซึ่งเราสามารถใช้ option นี้ในการคัดลอกจาก directory ไปยัง directory อื่น ๆ เช่น คัดลอก directory tempdir1 ไปยัง tempdir2 ให้ใช้คำสั่งดังนี้
# cp -r tempdir1 tempdir2
# tree tempdir2
tempdir2
| - - temp1file1
| - - temp1file2
| - - temp1file3
| - - tempdir1
| - - temp1file1
| - - temp1file2
| - - temp1file3
1 directories, 6 files
option สุดท้ายที่จะกล่าวถึงก็คือ -p ซึ่งการทำงานคล้ายกับคำสั่ง mkdir เราไปดูตัวอย่างในการคัดลอกเฉพาะไฟล์ temp1file1 ไปยัง tempdir3 ดังนี้
# tree tempdir2
tempdir2
| - - temp1file1
| - - temp1file2
| - - temp1file3
' - - tempdir1
| - - temp1file1
| - - temp1file2
' - - temp1file3
1 directory, 6 files
# cp tempdir2/tempdir1/temp1file1 tempdir3
อย่างไรก็ตามในกรณีที่เราต้องการสั่งให้ทำการ copy ตามโครงสร้าง directory ทั้งหมด นั่นก็คือ directory tempdir2, tempdir2/tempdir1, tempdir2/tempdir1/temp1file1 จะถูกคัดลอกไปทั้งหมด โดยใช้ option -p ดังนี้
# cp -P tempdir2/tempdir1/temp1file1 tempdir3
# tree tempdir3
tempdir3
' - - tempdir2
' - - tempdir1
' - - temp1file1
2 directories, 1 file
Login
Search