cp -f tidak bisa menimpa cp -i alias


8

Di file /home/user/.bashrc saya, saya memiliki alias untuk mencegah kesalahan:

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

Jika saya benar-benar yakin dengan apa yang saya lakukan, saya bisa menimpa rmdan mvalias menggunakan rm -fatau mv -f, itu tidak akan bertanya apakah saya benar-benar ingin menimpa file.

Masalahnya, itu tidak berfungsi untuk cpperintah, menggunakan cp -fmasih akan bertanya kepada saya.

Apakah ini normal? Apa yang harus saya lakukan untuk memiliki cp -ialias secara default dan dapat menggunakan cp -fperintah juga?

Saya menggunakan Debian Wheezy 64bit.

Jawaban:


9

Sementara itu -fberarti memaksa pada mereka semua, karena cp, itu berarti memaksa dengan mencoba untuk menghapus tujuan pertama jika tujuan tidak dapat diperbarui .

Untuk mvdan rm, -fhanya mengganti -i. Tetapi untuk cp, itu mengubah perilaku utilitas, -fbukan kebalikan dari -ikasus itu, cp -i -fmasuk akal dan berarti, jika target ada, tanyakan pengguna dan jika tidak dapat diganti, hapus dulu .

Bahkan untuk mvdan rm, menambahkan -ftidak sama dengan menghapus -iketika datang ke pesan peringatan dan kesalahan yang dikirim ke pengguna. Misalnya rm non-existent-fileakan melaporkan kesalahan sementara rm -i -f non-existent-filetidak.

Seperti yang telah disebutkan, untuk menghapus efek -i, alih-alih menambahkan -f, Anda harus menonaktifkan alias menggunakan salah satu solusi yang disediakan.


"Untuk mv dan cp, -f hanya menimpa -i." Maksudmu mv dan rm kurasa. Terima kasih telah menjelaskan, sangat jelas bagi saya sekarang!
baptx

11

Dengan memberi cp -f, opsi hanya menambahkan dengan opsi yang ada.

Artinya, jika Anda memiliki alias cp='cp -i', kata cp akan diganti dalam perintah cp -f, jadi Anda dapatkan cp -i -f file1 file2.

Untuk mengganti alias:

\cp -f file1 file2

Garis miring terbalik sebelum perintah akan menonaktifkan alias. Anda dapat menggunakannya command cpsebagai ganti \cpuntuk keterbacaan.


Saya membuat kesalahan dalam posting saya, ketika saya berbicara tentang cp -r, maksud saya cp -f, itu diperbaiki. Solusi Anda dengan backslash berfungsi, terima kasih! Tapi saya masih tidak mengerti mengapa backslash tidak diperlukan untuk perintah mv atau rm, alias dinonaktifkan langsung dengan mv -f dan rm -f!
baptx
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.