บทความ:
Perl
PHP
HTML
CSS
XML
DTD
XSD
RSS
WSDL
Linux
Site Map
Board
Connect Us: facebooktwitter

การ copy directory ด้วยคำสั่ง cp

นนทชัย ทรัพย์ทวีพงศ์ 2010-03-16 15:14:34  ให้คะแนนบทความนี้(0)  ลดคะแนนบทความ(0)  จำนวน Comment(0)  จำนวนคนอ่าน(389)  

คำสั่ง 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
แหล่งที่มา:

Related Article

Related Download

ไม่มีรายการดาวน์โหลด


Login  Login
ค้นหา  Search