Saya mencoba menggunakan cpperintah dan memaksa menimpa.
Saya sudah mencoba cp -rf /foo/* /bar, tetapi saya masih diminta untuk mengkonfirmasi setiap overwrite.
Saya mencoba menggunakan cpperintah dan memaksa menimpa.
Saya sudah mencoba cp -rf /foo/* /bar, tetapi saya masih diminta untuk mengkonfirmasi setiap overwrite.
Jawaban:
Anda dapat melakukan yes | cp -rf xxx yyy, tapi gutfeeling saya mengatakan bahwa jika Anda melakukannya sebagai root - Anda .bashrcatau .profilememiliki alias cpuntuk cp -i, sistem yang paling modern (terutama RH-derivatif) melakukan itu untuk profil root.
Anda dapat memeriksa alias yang ada dengan menjalankan aliaspada prompt perintah, atau which cpuntuk memeriksa alias saja cp.
Jika Anda memiliki alias yang ditentukan, menjalankan unalias cpakan menghapusnya untuk sesi saat ini, jika tidak Anda bisa menghapusnya dari profil shell Anda.
Anda dapat mem-bypass alias untuk sementara dan menggunakan versi non-alias dari sebuah perintah dengan mengawalinya dengan \, misalnya\cp whatever
¯\_(ツ)_/¯tentang itu.
(primarily RH-derivatives)komentar :)
unalias cpdan menyalin apa pun yang perlu Anda salin, Anda dapat mengatur alias kembali ke default dengan melakukan alias cp='cp -i'. Setelah itu, jalankan alias cpsehingga Anda dapat memverifikasi bahwa itu kembali ke alias default.
Ini mungkin disebabkan oleh cpkarena sudah alias cp -i. Panggilan cplangsung harus bekerja:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Cara lain untuk menyiasatinya adalah dengan menggunakan yesperintah:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yesperintah. Lucu sekali. Dan suatu hari nanti saya dapat menggunakannya.
Seperti beberapa jawaban lain telah menyatakan, Anda mungkin menggunakan suatu tempat alias yang memetakan cpke cp -iatau sesuatu yang serupa. Anda dapat menjalankan perintah tanpa alias dengan mendahuluinya dengan garis miring terbalik. Dalam kasus Anda, cobalah
\cp -r /zzz/zzz/* /xxx/xxx
Backslash akan menonaktifkan sementara alias apa pun yang Anda panggil cp.
cp, \cpakan memanggil perintah cp. Ini tampaknya setara dengan berjalan command cp.
Anda mungkin memiliki alias di suatu tempat, memetakan cpke cp -i; karena dengan pengaturan default, cptidak akan meminta untuk menimpa. Periksa .bashrc, .profiledll.
Lihat halaman manual : Hanya ketika -iparameter ditentukan akan cpbenar - benar meminta sebelum menimpa.
Anda dapat memeriksa ini melalui aliasperintah:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Untuk membatalkan definisi alias, gunakan:
$ unalias cp
Seperti jawaban lain telah menyatakan, ini bisa terjadi jika cpalias cp -i.
Anda dapat menambahkan \sebelum cpperintah untuk menggunakannya tanpa alias.
\cp -fR source target
Secara default cpalias cp -i. Anda dapat memeriksanya, mengetik aliasdan Anda dapat melihat beberapa seperti:
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'
Untuk mengatasi masalah ini, gunakan saja /bin/cp /from /toperintahcp /from /to
cp biasanya alias seperti ini
alias cp='cp -i' # i.e. ask questions of overwriting
jika Anda yakin ingin melakukan overwrite maka gunakan ini:
/bin/cp <arguments here> src dest
aku menemukan ini
'cp' -rf * /data/danalonso_testing/target/
Sumber: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851
Jadi saya sering mengalami ini karena saya terus cp alias cp -iv, dan saya menemukan trik yang rapi. Ternyata sementara -idan -nkeduanya membatalkan arahan menimpa sebelumnya, -ftidak. Namun, jika Anda menggunakannya -nfmenambah kemampuan untuk menghapus -i. Begitu:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Cukup rapi ya? / necropost
cp -u ...
cp --update ...
juga berfungsi.
Cara lain untuk memanggil perintah tanpa alias adalah dengan menggunakan commandbuiltin di bash.
command cp -rf /zzz/zzz/*
-n adalah "tidak menimpa" tetapi pertanyaannya benar-benar berlawanan dengan apa yang Anda jawab.
Untuk menghindari konfirmasi ini, Anda cukup menjalankan perintah cp dengan path absolut, itu akan menghindari alias.
/ bin / cp sourcefile tujuan
Jika Anda ingin menjaga alias di tingkat global apa adanya dan hanya ingin mengubah untuk skrip Anda.
Cukup gunakan:
alias cp = cp
dan kemudian tulis perintah tindak lanjut Anda.
Saya hanya menggunakan unalias untuk menghapus alias "cp -i", lalu menyalin, lalu mengatur kembali alias. :
unalias cp
cp -f foo foo.copy
alias cp="cp -i"
Bukan kode yang paling indah, tetapi mudah diatur dan efisien. Saya juga periksa alias sudah diatur kembali dengan sederhana
alias |grep cp
Bukan itu cp -i. Jika Anda tidak ingin dimintai konfirmasi, itu adalah cp -n; sebagai contoh:
cp -n src dest
Atau dalam hal direktori / folder adalah:
cp -nr src_dir dest_dir
cp -ioleh sistem, yang berarti mereka mencoba untuk mengatasi default dan memaksa menimpa. Sepertinya Anda mungkin bingung karena menjadi sintaks yang disarankan, tetapi -nakan mencegah penulisan ulang .