ฉันจะใช้ 'cp' เพื่อเขียนทับไฟล์ได้อย่างไร


10

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

$ cp -f /path/to/source/file.txt /path/to/target

หรือมีตัวเลือกอื่นในการเขียนทับไฟล์โดยใช้เครื่องมือบรรทัดคำสั่งทั่วไปใน OS X หรือไม่?


3
มันใช้งานได้สำหรับฉัน มันจะทำอะไรแทนการเขียนทับเมื่อคุณลองมัน?
Gordon Davisson

2
หากคุณไม่ได้รับอนุญาตให้เขียนทับไฟล์เป้าหมายสิ่งนี้จะล้มเหลว หากคุณต้องการเขียนทับไฟล์เป้าหมายจริงๆคุณสามารถใช้sudoที่จุดเริ่มต้นของคำสั่ง แต่ใช้ด้วยความระมัดระวัง!
แดเนียล

@Gordon Davisson: มันทำอะไร? ไม่มีอะไร มันจะคัดลอกไฟล์ไปยังไดเรกทอรีเป้าหมายหากฉันmvหรือrmพวกเขา
rogerFernand

@ Daniel ลอว์สัน: โดยไม่ต้องใช้sudoฉันสามารถใช้mvหรือย้ายหรือลบไฟล์ก่อนที่จะใช้rm cpการใช้sudo cpทำให้ไม่มีความแตกต่าง
rogerFernand

อยากรู้อยากเห็นและอยากรู้อยากเห็น
Daniel

คำตอบ:


14

ฉันนิ่งงันว่าทำไม cp จึงทำแบบนี้ถ้าไม่มีนามแฝงเกี่ยวข้อง yesแต่มีประโยชน์อย่างรวดเร็วสกปรกและอันตรายให้สำหรับสถานการณ์ตรงนี้: คุณสามารถใช้มันเพื่อไพพ์กระแสข้อมูลต่อเนื่องในคำสั่งใด ๆ ที่ให้คุณพร้อมท์การยืนยัน (คุณสามารถใช้มันเพื่อส่งข้อความใด ๆ แต่ค่าเริ่มต้นคือ "y")

yes | cp foo bar จะดำเนินการคำสั่ง cp และข้ามการแจ้งเตือนทั้งหมด


8

มันอาจเกิดจากนามแฝงคำสั่ง

หากต้องการโทรcpโดยตรงคุณสามารถใช้/bin/cp src dest


1
ไม่แน่ใจว่าทำไมสิ่งนี้จึงถูกลดระดับลง ฉันอยู่ภายใต้การแสดงผลที่ระบุ -f อย่างชัดเจนว่าจะแทนที่ -i ในนามแฝง แต่ฉันตรวจสอบแล้วและไม่ได้ โปสเตอร์ควรตรวจสอบว่าพวกเขามีนามแฝงของ cp หรือไม่ (ประเภทalias cp) พวกเขาสามารถเปลี่ยนนามแฝงในโปรไฟล์หรือใช้ / bin / cp ตามที่แนะนำ
ตุลาคม

ฉันใช้ค่าเริ่มต้นcpตามที่ Apple จัดหาให้
rogerFernand

@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand

ฉันต้องใช้ / bin / cp ฉันไม่รู้ว่าทำไม
Beingalex

1
ผมอาจจะมีวิธีที่จะสายเกินไป แต่สำหรับคนที่มาจากเครื่องมือค้นหาก็สามารถที่จะดูว่าคำสั่งมีนามแฝงใด ๆ type cpไปโดยการทำ และมันก็ทำอย่างแน่นอน
กรีด

2
rm foo/bar/destination && cp source foo/bar/destination

ก่อนอื่นให้คุณลบ ( rm) ปลายทางแล้วหากประสบความสำเร็จ ( &&) คุณคัดลอก เมื่อลบโฟลเดอร์โปรดอย่าลืมเพิ่มลง-rในrm( rm -r)


1

ฉันยังมีนามแฝง messing up กับ -f, เรียก cp โดยตรงจาก / bin และทั้งหมดเป็นเรื่องปกติการมีนามแฝงที่ป้องกันการเขียนทับ / ลบโดยไม่ตั้งใจโดยค่าเริ่มต้นนั้นค่อนข้างดีดังนั้นอย่าเอามันออก

. # alias

นามแฝง cp = 'cp -i'

ตามที่ระบุไว้แล้วแฟล็ก -i superceedes -f ซึ่งจะไม่อนุญาตให้คำสั่งด้านล่างทำงานตามที่ต้องการ

. # / bin / cp -fauv src dst

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