ตัวเลือกคำสั่ง cp และการเขียนทับทั้งหมดโดยไม่ต้องยืนยัน | 2 วิธี: yes และแบ็กสแลช

สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8บัญชี rootตรวจสอบ 2026-10-05

cp จะถามยืนยันว่าจะเขียนทับแต่ละไฟล์หรือไม่เมื่อคัดลอกหลายไฟล์ งานจึงหยุดชะงัก คำสั่ง cp ย่อมาจาก Copy ใช้คัดลอกไฟล์และไดเรกทอรี บทความนี้สรุปวิธีใช้เบื้องต้น ตัวเลือก และ 2 วิธีเขียนทับทั้งหมดโดยไม่ต้องยืนยัน

คำสั่ง cp จะเขียนทับไฟล์ชื่อเดียวกันที่ปลายทางโดยไม่ถาม เพื่อป้องกันเรื่องนี้จึงมีการตั้ง [alias cp='cp -i'] ไว้ ทำให้ถามยืนยันก่อนเขียนทับ

✅ วิธีใช้พื้นฐาน

วิธีใช้พื้นฐานมีดังนี้

cp -[ตัวเลือก] <ต้นทาง: ไฟล์ หรือ ไดเรกทอรี​> <ปลายทาง: พาธ หรือ ไฟล์ หรือ ไดเรกทอรี (พาธ)​>

เขียนสิ่งที่จะคัดลอกก่อน แล้วจึงเขียนปลายทางหรือชื่อใหม่ต่อท้าย

คำสั่ง cp
# คัดลอกไฟล์ > ไฟล์ 
cp file1 file2
# คัดลอกไฟล์ > ไปไว้ในไดเรกทอรี
cp file1 dir1/
# คัดลอก 2 ไฟล์ > ไปไว้ในไดเรกทอรี
cp file1 file2 dir1/
 testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'

การคัดลอกไดเรกทอรีต้องใช้ตัวเลือก -r หรือ -R หรือ -a

  • -r/-R : คัดลอกไดเรกทอรีและเนื้อหาข้างในแบบเรียกซ้ำ
  • -a : คัดลอกแบบเรียกซ้ำโดยคงคุณสมบัติไว้ (รวม -r อยู่ข้างใน)

✅ 2 วิธีเขียนทับทั้งหมดด้วยคำสั่ง cp

เมื่อรันคำสั่ง cp จะมีคำถาม [overwrite] เพราะ cp มีการตั้งชื่อแทน (alias) [cp -i] ไว้

cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'

ถ้ามีไฟล์แค่หนึ่งสองไฟล์ก็ไม่เป็นไร แต่ถ้าคัดลอกหลายไฟล์ต้องตอบทุกไฟล์จึงยุ่งยาก

กรณีนี้เขียนทับได้โดยไม่ต้องยืนยันด้วย 2 วิธีด้านล่าง

yes | cp -ar /home/ ./

วิธีแรกคือใส่ [yes |] ไว้ข้างหน้า y จะถูกป้อนให้อัตโนมัติทุกครั้งที่ถาม และคัดลอกต่อไปได้เลย วิธีที่สองคือใส่แบ็กสแลช [\] ไว้หน้าคำสั่ง ทำให้รันคำสั่ง cp ตัวจริงโดยไม่ผ่านชื่อแทน

\cp -ar /home/ ./

✅ ตัวเลือกคำสั่ง cp & ซิมูเลเตอร์

ตัวเลือกคำอธิบาย
-a--archiveคัดลอกโดยคงสิทธิ์ เจ้าของ กลุ่ม ข้อมูลเวลา และอื่นๆ ของไฟล์ต้นฉบับไว้ทั้งหมด[คงสิทธิ์ เจ้าของ กลุ่ม ข้อมูลเวลา และอื่นๆ ไว้ทั้งหมด] + [-d : คัดลอกตัวลิงก์สัญลักษณ์เอง] + [-R : คัดลอกไดเรกทอรีแบบเรียกซ้ำ]
-bถ้ามีไฟล์ปลายทางอยู่แล้ว จะสำรองไฟล์เดิมก่อนแล้วจึงคัดลอก
-dถ้าต้นฉบับเป็นลิงก์สัญลักษณ์ จะคัดลอกตัวลิงก์เอง
-fถ้ามีไฟล์ปลายทางอยู่ จะลบออกแบบบังคับแล้วจึงคัดลอก
-i--interactiveขอให้ผู้ใช้ยืนยันก่อนเขียนทับalias cp='cp -i'
-l(ตัวพิมพ์เล็ก)คัดลอกเป็นฮาร์ดลิงก์
-Pคัดลอกลิงก์สัญลักษณ์ตามเดิมโดยไม่ตามไปยังปลายทางของลิงก์
-pคงเจ้าของ กลุ่ม สิทธิ์ และข้อมูลเวลาของต้นฉบับไว้ตามเดิม
-r, -Rคัดลอกไดเรกทอรีแบบเรียกซ้ำ (รวมไดเรกทอรีย่อยและไฟล์)ตัวเลือก -r ไม่ใช่มาตรฐาน POSIX และอาจมีปัญหากับลิงก์สัญลักษณ์หรือไฟล์อุปกรณ์
-sคัดลอกเป็นลิงก์สัญลักษณ์ (ต้องระบุต้นฉบับเป็นพาธเต็ม)
-uไม่เขียนทับถ้าไฟล์ปลายทางใหม่กว่าหรือเท่ากัน
-vแสดงความคืบหน้าของการคัดลอก (verbose)ตัวเลือกที่แสดงข้อความว่าคัดลอกเสร็จแล้ว
-xไม่คัดลอกถ้าระบบไฟล์ของต้นฉบับกับปลายทางต่างกัน
ซิมูเลเตอร์คำสั่ง cpalias cp='cp -i'
[root@server work]#
ทำงานเฉพาะในเบราว์เซอร์และไม่แตะต้องไฟล์จริง ลองพิมพ์ cp โดยเปลี่ยนตัวเลือกไปเรื่อยๆ แล้วตรวจผลด้วย ls, cat และ diff ปุ่ม ↑↓ บนคีย์บอร์ดเรียกคำสั่งที่พิมพ์ก่อนหน้ากลับมา และพิมพ์ uknew help เพื่อดูคำสั่งที่ใช้ได้

🔲 ตัวเลือก -a: คงคุณสมบัติของไฟล์ต้นฉบับ & คัดลอกไดเรกทอรีย่อย(&ไฟล์)

ถ้าจะคัดลอกถึงไดเรกทอรีย่อยโดยคงคุณสมบัติของไฟล์ต้นฉบับ ตัวเลือก [-a] อย่างเดียวก็พอ แต่บางสคริปต์หรือเครื่องมืออัตโนมัติกำหนดให้ใส่ [-r] อย่างชัดเจน จึงมักใส่ [-r] หรือ [-R] ไปด้วย

 testuser]# cp -a dir1 dir2
 testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun  8 14:11 file1
-rw-r--r-- 1 root root 0 Jun  8 14:15 file2

dir2:
total 0
-rw-r--r-- 1 root root 0 Jun  8 14:11 file1
-rw-r--r-- 1 root root 0 Jun  8 14:15 file2
 testuser]# 

[-d : คัดลอกตัวลิงก์สัญลักษณ์เอง]+[-R : คัดลอกไดเรกทอรีแบบเรียกซ้ำ]+[-⁠-preserve=all]

รายการที่ --preserve=all รวมไว้คำอธิบาย
modeสิทธิ์ของไฟล์ (rwx ฯลฯ)
ownershipเจ้าของ (user) และกลุ่ม (group)
timestampsตราเวลาอย่างเวลาแก้ไขล่าสุด
linksจำนวนฮาร์ดลิงก์ (คงการใช้ inode ร่วมกัน)
contextบริบทความปลอดภัยของ SELinux
xattrคุณสมบัติขยาย (เมทาดาทาที่เก็บเพิ่มไว้กับไฟล์)
allรูปย่อที่รวมทุกรายการข้างต้นไว้ในครั้งเดียว

🔲 ตัวเลือก -u: คัดลอกเฉพาะไฟล์ที่เพิ่มหรือเปลี่ยน

  • คัดลอกเฉพาะเมื่อที่พาธปลายทางไม่มีไฟล์ชื่อเดียวกัน หรือ เมื่อต้นฉบับใหม่กว่า
  • ใช้บ่อยตอนแบ็กอัปหรือซิงก์ข้อมูล
 testuser]# cp -u file1 file2
 testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun  8 14:11 file1
-rw-r--r-- 1 root root 0 Jun  8 14:30 file2
Linux

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน