คัดลอกไฟล์ที่มีอยู่โดยไม่มีการยืนยัน?


18

ฉันต้องการคัดลอกและเขียนทับไฟล์จำนวนมากฉันใช้คำสั่งต่อไปนี้:

# cp -Rf * ../

แต่เมื่อใดก็ตามที่มีไฟล์ชื่อเดียวกันอยู่ในโฟลเดอร์ปลายทางฉันได้รับคำถามนี้:

cp: overwrite `../ibdata1'? 

ปัญหาคือฉันมีประมาณ 200 ไฟล์ซึ่งกำลังจะเขียนทับและฉันไม่คิดว่าการกดY then Enter200 ครั้งเป็นวิธีที่ถูกต้องในการทำ

แล้วทางที่ถูกต้องคืออะไร?

คำตอบ:


38

คุณสามารถทำได้yes | cp -rf myxxหรือถ้าคุณทำในฐานะรูท - .bashrc หรือ. profile ของคุณมีนามแฝงของ cp ถึง cp -i ระบบที่ทันสมัยส่วนใหญ่ทำเพื่อรูทโปรไฟล์

คุณสามารถข้ามนามแฝงชั่วคราวและใช้เวอร์ชันที่ไม่ใช่นามแฝงของคำสั่งโดยนำหน้าด้วย \, เช่น \ cp อะไรก็ได้


4
+1 สำหรับการชี้ไปที่วิธีการข้ามนามแฝง ล่อใจให้ -1 สำหรับการแก้ปัญหาแรงเดรัจฉาน
Hennes

5
+! สำหรับyesฟังก์ชั่นไปป์ - มีประโยชน์มาก ๆ !
Andrew Newby

14

คุณรู้หรือไม่ว่า RHEL และ CentOS พยายามปกป้องผู้ใช้มือใหม่โดยการตั้งชื่อแทนสำหรับผู้ใช้รูทเพื่อป้องกันการเขียนทับและลบไฟล์โดยไม่ตั้งใจ?

alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

-iสวิทช์คือสิ่งที่ต้องมีการยืนยันเมื่อปรับเปลี่ยนหรือลบไฟล์ที่มีอยู่ เนื่องจากการขยายนามแฝงเกิดขึ้นก่อนการดำเนินการคำสั่งแม้การใช้--force -f สวิตช์จะยังต้องการการยืนยัน

คุณสามารถลบนามแฝงอย่างถาวรโดยแก้ไข/root/.bashrcไฟล์ลบนามแฝงสำหรับช่วงเวลาของเซสชันด้วยunalias cp หรือสำหรับคำสั่งเดียวใช้หนึ่งใน:

  • ใช้เส้นทางแบบเต็ม /bin/cp
  • ใช้เครื่องหมายคำพูด"cp"หรือ'cp'รอบคำสั่ง
  • ใช้คีย์เวิร์ดคำสั่งเช่น command cp
  • หลบหนีคำสั่ง \cp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.