ฉันพยายามใช้cpคำสั่งและบังคับให้เขียนทับ
ฉันพยายามcp -rf /foo/* /barแล้ว แต่ฉันยังคงได้รับแจ้งให้ยืนยันการเขียนทับแต่ละครั้ง
ฉันพยายามใช้cpคำสั่งและบังคับให้เขียนทับ
ฉันพยายามcp -rf /foo/* /barแล้ว แต่ฉันยังคงได้รับแจ้งให้ยืนยันการเขียนทับแต่ละครั้ง
คำตอบ:
คุณสามารถทำได้yes | cp -rf xxx yyyแต่ gutfeeling ของฉันบอกว่าถ้าคุณทำมันเป็นราก - คุณ.bashrcหรือ.profileมีนามแฝงของcpการcp -iระบบที่ทันสมัยที่สุด (ส่วนใหญ่ RH-อนุพันธ์) ทำแบบนั้นกับโปรไฟล์ราก
คุณสามารถตรวจสอบนามแฝงที่มีอยู่โดยการทำงานaliasที่พร้อมรับคำสั่งหรือการตรวจสอบนามแฝงเฉพาะสำหรับwhich cpcp
หากคุณมีนามแฝงที่กำหนดไว้การรันunalias cpจะยกเลิกสิ่งนั้นสำหรับเซสชันปัจจุบันมิฉะนั้นคุณสามารถลบออกจากโปรไฟล์เชลล์ของคุณได้
คุณสามารถข้ามนามแฝงชั่วคราวและใช้เวอร์ชันที่ไม่ใช่นามแฝงของคำสั่งโดยนำหน้าด้วยนามแฝง\เช่น\cp whatever
¯\_(ツ)_/¯เกี่ยวกับมัน
                    (primarily RH-derivatives)คำพูด :)
                    unalias cp alias cp='cp -i'หลังจากนั้นให้เรียกใช้alias cpเพื่อให้คุณสามารถยืนยันได้ว่าเป็นชื่อแทนค่าเริ่มต้น
                    นี่อาจเกิดจากcpการเป็นนามแฝงกับสิ่งที่ชอบcp -iอยู่แล้ว การโทรcpโดยตรงควรทำงาน:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
อีกวิธีในการหลีกเลี่ยงปัญหานี้คือการใช้yesคำสั่ง:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yesคำสั่ง เฮฮา. สักวันหนึ่งฉันอาจใช้มัน
                    เป็นบางส่วนของคำตอบอื่น ๆ ได้กล่าวคุณอาจใช้นามแฝงที่ไหนสักแห่งซึ่งแผนที่cpจะcp -iหรือสิ่งที่คล้ายกัน คุณสามารถเรียกใช้คำสั่งโดยไม่มีนามแฝงใด ๆ โดยนำหน้าด้วยแบ็กสแลช ในกรณีของคุณลอง
\cp -r /zzz/zzz/* /xxx/xxx
เครื่องหมายชั่วคราวจะปิดการใช้นามแฝงใด ๆ cpที่คุณได้เรียกว่า
cp, จะเรียกคำสั่ง\cp ปรากฏขึ้นนี้จะเทียบเท่าของการทำงานcp command cp
                    คุณอาจมีนามแฝงอยู่ที่ไหนสักแห่งทำแผนที่cpเพื่อcp -i; เพราะด้วยการตั้งค่าเริ่มต้นcpจะไม่ขอให้เขียนทับ ตรวจสอบของ.bashrcคุณ.profileฯลฯ
ดูcp manpage : เฉพาะเมื่อ-iมีการระบุพารามิเตอร์เท่านั้นที่จะcpแจ้งให้ทราบก่อนทำการเขียนทับ
คุณสามารถตรวจสอบสิ่งนี้ผ่านaliasคำสั่ง:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
หากต้องการยกเลิกการกำหนดนามแฝงให้ใช้:
$ unalias cp
ตามคำตอบอื่น ๆ ที่ระบุไว้สิ่งนี้อาจเกิดขึ้นได้หากcpเป็นนามแฝงcp -iเป็นนามแฝงของ
คุณสามารถผนวก\ก่อนที่cpคำสั่งที่จะใช้มันโดยไม่ต้องนามแฝง
\cp -fR source target
โดยค่าเริ่มต้นcpมี aliase cp -iไป คุณสามารถตรวจสอบพิมพ์aliasและคุณสามารถเห็นบางอย่างเช่น:
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
เพื่อแก้ปัญหานี้เพียงใช้/bin/cp /from /toคำสั่งแทนcp /from /to
คุณสามารถใช้คำสั่งนี้เช่นกัน:
cp -ru /zzz/zzz/* /xxx/xxx
มันจะอัปเดตไฟล์ที่มีอยู่ของคุณด้วยไฟล์ใหม่กว่า
cp มักจะเป็นนามแฝงเช่นนี้
alias cp='cp -i'   # i.e. ask questions of overwriting
หากคุณแน่ใจว่าต้องการเขียนทับให้ใช้สิ่งนี้:
/bin/cp <arguments here> src dest
ฉันพบสิ่งนี้
'cp' -rf * /data/danalonso_testing/target/
ที่มา: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
ดังนั้นฉันจึงพบเจอสิ่งนี้มากมายเพราะฉันทำซีพีcp -ivแทนและฉันก็พบว่ามีเล่ห์เหลี่ยม ปรากฎว่าในขณะที่-iและ-nทั้งคู่ยกเลิกคำสั่งเขียนทับก่อนหน้านี้-fไม่ได้ แต่ถ้าคุณใช้มันจะเพิ่มความสามารถในการล้าง-nf -iดังนั้น:
cp -f /foo/* /bar  <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
ค่อนข้างเรียบร้อยเหรอ? / necropost
cp -u ...
cp --update ...
ยังใช้งานได้
อีกวิธีในการเรียกคำสั่งที่ไม่มีนามแฝงคือใช้commandbuiltin in bash
command cp -rf /zzz/zzz/*
-n คือ "ไม่เขียนทับ" แต่คำถามของเขาตรงกันข้ามกับสิ่งที่คุณตอบกลับ
เพื่อหลีกเลี่ยงการยืนยันนี้คุณสามารถเรียกใช้คำสั่ง cp โดยใช้พา ธ สัมบูรณ์ซึ่งจะหลีกเลี่ยงนามแฝง
ปลายทาง / bin / cp sourcefile
หากคุณต้องการให้นามแฝงอยู่ในระดับโลกตามที่เป็นอยู่และเพียงต้องการเปลี่ยนสคริปต์ของคุณ
เพียงใช้:
นามแฝง cp = cp
จากนั้นเขียนคำสั่งการติดตามของคุณ
ฉันเพียงแค่ใช้ unalias เพื่อลบนามแฝง "cp -i" จากนั้นทำสำเนาจากนั้นตั้งค่านามแฝงกลับ :
unalias cp  
cp -f foo foo.copy  
alias cp="cp -i"  
ไม่ใช่รหัสที่สวยที่สุด แต่ติดตั้งง่ายและมีประสิทธิภาพ ฉันยังตรวจสอบนามแฝงที่มีอยู่แล้วตั้งกลับด้วยง่าย
alias |grep cp
cp -iมันไม่ได้เป็น หากคุณไม่ต้องการที่จะถามเพื่อยืนยันให้มันเป็นcp -n; ตัวอย่างเช่น:
cp -n src dest
หรือในกรณีของไดเรกทอรี / โฟลเดอร์คือ:
cp -nr src_dir dest_dir
cp -iระบบซึ่งหมายความว่าพวกเขาพยายามที่จะเอาชนะค่าเริ่มต้นและบังคับให้เขียนทับ ดูเหมือนว่าคุณอาจสับสนว่าเป็นไวยากรณ์ที่แนะนำ แต่-nจะป้องกันการเขียนทับ