Làm thế nào để dừng cp: ghi đè './xxx'? lời nhắc


19

Làm thế nào tôi có thể ngăn lệnh cp nhắc nhở ghi đè. Tôi muốn ghi đè lên tất cả các tệp mà không cần phải quay lại thiết bị đầu cuối. Vì đây là những tệp lớn và mất một thời gian để hoàn thành.

Tôi đã thử sử dụng tùy chọn -f. Nó vẫn hỏi tôi có muốn ghi đè không.

   -f, --force
          if an existing destination file cannot be opened, remove it and
          try again (redundant if the -n option is used)

cp -f /media/somedir/somefiles* .  
cp: overwrite `./somefilesxxx'? y

Câu trả lời:


17

Ngoài việc gọi /bin/cp, bạn có thể thực hiện một trong:

\cp -f ...
command cp -f ...

Tuy nhiên, tôi đồng ý rằng bạn không nên quen với việc sử dụng bí danh như cp -ihoặc rm -i- nếu bạn ngồi ở một vỏ khác, bạn sẽ không có mạng lưới an toàn mà bạn đã phụ thuộc.


1
A whereis cpsẽ chỉ ra đâu là lệnh. Vì vậy, bạn sẽ có thể gọi lệnh thực sự thay vì bí danh.
AnthonyB

12

Sau khi thấy giải pháp này. Tôi có thể thấy rằng tính năng bí danh bash đã gây ra vấn đề. http://systembash.com/content/prompt-to-confirm-copy-even-with-cp-f/

which cp  
alias cp='cp -i'
/bin/cp
which cp | grep cp
alias cp='cp -i'
/bin/cp

Ông đề nghị

unalias cp

Tôi vẫn muốn giữ bí danh mà tôi không muốn áp dụng cho trường hợp này. Giải pháp của tôi là sử dụng nhị phân với một đường dẫn đầy đủ, để hàm bash bí danh không chiếm quyền. Điều đó hoạt động khá tốt.

/bin/cp -f /media/somedir/somefiles* .  

4

Thật không may trên Linux, lệnh "cp" sao chép không có tùy chọn tự động trả lời câu hỏi này bằng câu trả lời "y" hoặc "n". Có nhiều hơn một giải pháp cho vấn đề này tùy thuộc vào những gì bạn muốn làm. Một giải pháp là sử dụng lệnh "có" Unix. Lệnh này sẽ xuất ra một chuỗi liên tục cho đến khi bị giết.

Nếu chúng tôi muốn ghi đè tất cả các tệp trong thư mục đích, bạn có thể sử dụng lệnh "có" để trả lời tất cả các câu hỏi bằng "y". "y" là một giá trị mặc định vì vậy nó không phải được chỉ định.

yes | cp source/*.txt destination/.

Nếu chúng tôi muốn tránh ghi đè bất kỳ tệp nào trong thư mục đích, bạn có thể sử dụng lệnh "có" để trả lời tất cả các câu hỏi không có "n".

yes n | cp source/*.txt destination/.

Sử dụng "man yes" để biết thêm thông tin về lệnh "yes".

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.