ฉันพยายามใช้cp
คำสั่งและบังคับให้เขียนทับ
ฉันพยายามcp -rf /foo/* /bar
แล้ว แต่ฉันยังคงได้รับแจ้งให้ยืนยันการเขียนทับแต่ละครั้ง
ฉันพยายามใช้cp
คำสั่งและบังคับให้เขียนทับ
ฉันพยายามcp -rf /foo/* /bar
แล้ว แต่ฉันยังคงได้รับแจ้งให้ยืนยันการเขียนทับแต่ละครั้ง
คำตอบ:
คุณสามารถทำได้yes | cp -rf xxx yyy
แต่ gutfeeling ของฉันบอกว่าถ้าคุณทำมันเป็นราก - คุณ.bashrc
หรือ.profile
มีนามแฝงของcp
การcp -i
ระบบที่ทันสมัยที่สุด (ส่วนใหญ่ RH-อนุพันธ์) ทำแบบนั้นกับโปรไฟล์ราก
คุณสามารถตรวจสอบนามแฝงที่มีอยู่โดยการทำงานalias
ที่พร้อมรับคำสั่งหรือการตรวจสอบนามแฝงเฉพาะสำหรับwhich cp
cp
หากคุณมีนามแฝงที่กำหนดไว้การรัน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 ...
ยังใช้งานได้
อีกวิธีในการเรียกคำสั่งที่ไม่มีนามแฝงคือใช้command
builtin 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
จะป้องกันการเขียนทับ