Bagaimana Saya Menggunakan 'cp' untuk Menimpa File?

10

Menggunakan skrip shell atau Terminal, bagaimana cara menimpa file yang mungkin atau mungkin tidak ada. Saya melihat halaman manual untuk cp, katanya gunakan argumen -f untuk memaksa ditimpa. Tapi, itu tidak melakukan apa-apa.

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

Atau ada opsi lain untuk menimpa file menggunakan alat baris perintah built-in yang umum di OS X?

rogerFernand
sumber
3
Ini bekerja untuk saya. Apa yang dilakukannya alih-alih menimpa ketika Anda mencobanya?
Gordon Davisson
2
Jika Anda tidak memiliki izin untuk menimpa file target, ini akan gagal. Jika Anda benar-benar ingin menimpa file target, Anda dapat menggunakannya sudodi awal perintah. Tapi gunakan dengan hati-hati!
Daniel
@ Gordon Davisson: Apa yang dilakukannya? tidak ada. Itu hanya akan menyalin file ke direktori target jika saya mvatau rmmereka.
rogerFernand
@Daniel Lawson: Tanpa menggunakan sudosaya dapat menggunakan mvatau rmuntuk memindahkan atau menghapus file sebelum menggunakan cp. Menggunakan sudo cptidak ada bedanya.
rogerFernand
Ingin tahu dan ingin tahu.
Daniel

Jawaban:

14

Saya bingung mengapa cp berperilaku seperti ini jika tidak ada alias yang terlibat. Namun, ada cepat-kotor-dan-berbahaya utilitas yang disediakan untuk situasi yang tepat ini: yes. Anda dapat menggunakannya untuk menyalurkan aliran afirmatif berkelanjutan ke perintah apa pun yang memberi Anda konfirmasi konfirmasi (Anda dapat menggunakannya untuk mengirim teks apa pun, tetapi defaultnya adalah "y").

yes | cp foo bar akan menjalankan perintah cp dan memotong semua konfirmasi konfirmasi.

octern
sumber
8

Mungkin disebabkan oleh alias perintah.

Untuk menelepon cplangsung bisa Anda gunakan/bin/cp src dest

Aji
sumber
1
Tidak yakin mengapa ini diturunkan. Saya mendapat kesan bahwa secara eksplisit menentukan -f akan menimpa -i di alias, tapi saya memeriksa dan tidak. Poster harus mencari tahu apakah mereka memiliki cp alias (tipe alias cp). Mereka dapat mengubah alias di profil mereka atau menggunakan / bin / cp seperti yang disarankan.
octern
Saya menggunakan default cpkarena Apple menyediakannya.
rogerFernand
@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand
Saya harus menggunakan / bin / cp saya tidak tahu kenapa.
beingalex
1
Saya mungkin terlambat tetapi bagi orang-orang yang datang dari mesin pencari, saya dapat melihat apakah perintah tersebut memiliki alias untuk melakukannya type cp. Dan memang benar.
pekik
2
rm foo/bar/destination && cp source foo/bar/destination

Pertama, Anda menghapus ( rm) tujuan, lalu jika berhasil ( &&) Anda menyalinnya. Saat menghapus folder, harap ingat untuk menambahkan -rke rm( rm -r).

vtoanb
sumber
1

Saya juga punya alias mengacaukan -f, panggil cp langsung dari / bin dan semuanya baik-baik saja, memiliki alias yang mencegah penimpaan / kepindahan yang tidak disengaja secara default cukup bagus, jadi sebaiknya jangan hapus.

. # alias

alias cp = 'cp -i'

seperti yang sudah dinyatakan, flag -i superceedes -f, yang tidak akan mengizinkan perintah di bawah untuk melakukan sebagaimana dimaksud.

. # / bin / cp -fauv src dst

Niklas Göransson
sumber