Saya mencoba menggunakan cp
perintah dan memaksa menimpa.
Saya sudah mencoba cp -rf /foo/* /bar
, tetapi saya masih diminta untuk mengkonfirmasi setiap overwrite.
Saya mencoba menggunakan cp
perintah 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 .bashrc
atau .profile
memiliki alias cp
untuk cp -i
, sistem yang paling modern (terutama RH-derivatif) melakukan itu untuk profil root.
Anda dapat memeriksa alias yang ada dengan menjalankan alias
pada prompt perintah, atau which cp
untuk memeriksa alias saja cp
.
Jika Anda memiliki alias yang ditentukan, menjalankan unalias cp
akan 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 cp
dan menyalin apa pun yang perlu Anda salin, Anda dapat mengatur alias kembali ke default dengan melakukan alias cp='cp -i'
. Setelah itu, jalankan alias cp
sehingga Anda dapat memverifikasi bahwa itu kembali ke alias default.
Ini mungkin disebabkan oleh cp
karena sudah alias cp -i
. Panggilan cp
langsung harus bekerja:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Cara lain untuk menyiasatinya adalah dengan menggunakan yes
perintah:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yes
perintah. Lucu sekali. Dan suatu hari nanti saya dapat menggunakannya.
Seperti beberapa jawaban lain telah menyatakan, Anda mungkin menggunakan suatu tempat alias yang memetakan cp
ke cp -i
atau 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
, \cp
akan memanggil perintah cp
. Ini tampaknya setara dengan berjalan command cp
.
Anda mungkin memiliki alias di suatu tempat, memetakan cp
ke cp -i
; karena dengan pengaturan default, cp
tidak akan meminta untuk menimpa. Periksa .bashrc
, .profile
dll.
Lihat halaman manual : Hanya ketika -i
parameter ditentukan akan cp
benar - benar meminta sebelum menimpa.
Anda dapat memeriksa ini melalui alias
perintah:
$ 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 cp
alias cp -i
.
Anda dapat menambahkan \
sebelum cp
perintah untuk menggunakannya tanpa alias.
\cp -fR source target
Secara default cp
alias cp -i
. Anda dapat memeriksanya, mengetik alias
dan 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 /to
perintahcp /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 -i
dan -n
keduanya membatalkan arahan menimpa sebelumnya, -f
tidak. Namun, jika Anda menggunakannya -nf
menambah 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 command
builtin 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 -i
oleh sistem, yang berarti mereka mencoba untuk mengatasi default dan memaksa menimpa. Sepertinya Anda mungkin bingung karena menjadi sintaks yang disarankan, tetapi -n
akan mencegah penulisan ulang .