cp -f không thể ghi đè bí danh cp -i


8

Trong tệp /home/user/.bashrc của tôi, tôi có các bí danh đó để ngăn ngừa các lỗi:

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

Nếu tôi thực sự chắc chắn về những gì tôi đang làm, tôi có thể ghi đè rmmvbí danh bằng cách sử dụng rm -fhoặc mv -f, nó sẽ không hỏi tôi có thực sự muốn ghi đè lên các tệp không.

Vấn đề là nó không hoạt động cho cplệnh, sử dụng cp -fvẫn sẽ hỏi tôi một câu hỏi.

Điều này có bình thường không? Tôi nên làm gì để có cp -ibí danh theo mặc định và cũng có thể sử dụng cp -flệnh?

Tôi đang sử dụng Debian Wheezy 64bit.

Câu trả lời:


9

Mặc dù -fcó nghĩa là lực lượng đối với tất cả chúng, nhưng cp, điều đó có nghĩa là lực lượng bằng cách cố gắng xóa đích trước nếu đích không thể được cập nhật .

Cho mvrm, -fchỉ cần ghi đè -i. Nhưng đối với cp, nó thay đổi hành vi của tiện ích, -fkhông trái ngược với -itrường hợp đó, cp -i -fcó ý nghĩa và phương tiện, nếu mục tiêu tồn tại, hãy hỏi người dùng và nếu nó không thể bị ghi đè, hãy xóa nó trước .

Ngay cả đối với mvrm, việc thêm -fkhông giống như xóa -ikhi có thông báo cảnh báo và thông báo lỗi gửi đến người dùng. Ví dụ rm non-existent-filesẽ báo lỗi trong khi rm -i -f non-existent-filekhông.

Như đã đề cập, để loại bỏ ảnh hưởng của -i, thay vì thêm -f, bạn nên vô hiệu hóa bí danh bằng bất kỳ giải pháp nào được cung cấp.


"Đối với mv và cp, -f chỉ ghi đè -i." Bạn có nghĩa là mv và rm tôi nghĩ. Cảm ơn đã giải thích, nó rất rõ ràng với tôi bây giờ!
baptx

11

Bằng cách đưa ra cp -f, tùy chọn chỉ đơn giản là cộng với tùy chọn hiện có.

Đó là, nếu bạn có một alias cp='cp -i', từ cp được thay thế trong lệnh cp -f, vì vậy bạn nhận được cp -i -f file1 file2.

Để ghi đè bí danh:

\cp -f file1 file2

Dấu gạch chéo ngược trước lệnh sẽ vô hiệu hóa bí danh. Bạn có thể sử dụng command cpthay vì \cpđể dễ đọc.


Tôi đã mắc lỗi trong bài viết của mình, khi tôi nói về cp -r, ý tôi là cp -f, nó đã được sửa. Giải pháp của bạn với dấu gạch chéo ngược đang hoạt động, cảm ơn! Nhưng tôi vẫn không hiểu tại sao dấu gạch chéo ngược không cần thiết cho lệnh mv hoặc rm, bí danh bị vô hiệu hóa trực tiếp với mv -f và rm -f!
baptx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.