Làm cách nào để sử dụng 'cp' để ghi đè tệp?


10

Sử dụng tập lệnh shell hoặc Terminal, làm cách nào để ghi đè lên các tệp có thể có hoặc không có. Tôi đã xem trang man cho cp, nó nói sử dụng đối số -f để buộc ghi đè. Nhưng, nó không làm gì cả.

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

Hoặc có một tùy chọn khác để ghi đè lên các tệp bằng cách sử dụng các công cụ dòng lệnh được xây dựng phổ biến trong OS X?


3
Nó làm việc cho tôi. Nó đang làm gì thay vì ghi đè khi bạn thử nó?
Gordon Davisson

2
Nếu bạn không có quyền ghi đè lên tệp đích, điều này sẽ thất bại. Nếu bạn thực sự muốn ghi đè lên một tệp mục tiêu, bạn có thể sử dụng sudoở đầu lệnh. Nhưng sử dụng một cách thận trọng!
Daniel

@Gordon Davisson: Nó đang làm gì vậy? không có gì. Nó sẽ chỉ sao chép các tập tin vào thư mục đích nếu tôi mvhoặc rmhọ.
rogerFernand

@Daniel Lawson: Không sử dụng sudotôi có thể sử dụng mvhoặc rmdi chuyển hoặc xóa tệp trước khi sử dụng cp. Sử dụng sudo cplàm cho không có sự khác biệt.
rogerFernand

Tò mò và tò mò hơn.
Daniel

Câu trả lời:


14

Tôi không biết tại sao cp lại hành xử theo cách này nếu không có bí danh nào liên quan. Tuy nhiên, có một tiện ích nhanh chóng bẩn và nguy hiểm được cung cấp cho tình huống chính xác này : yes. Bạn có thể sử dụng nó để chuyển một dòng xác nhận liên tục vào bất kỳ lệnh nào cung cấp cho bạn lời nhắc xác nhận (bạn có thể sử dụng nó để gửi bất kỳ văn bản nào, nhưng mặc định là "y").

yes | cp foo bar sẽ thực thi lệnh cp và bỏ qua tất cả các lời nhắc xác nhận.


8

Nó có thể được gây ra bởi một bí danh lệnh.

Để gọi cptrực tiếp, bạn có thể sử dụng/bin/cp src dest


1
Không chắc chắn tại sao điều này đã bị hạ cấp. Tôi có ấn tượng rằng việc chỉ định rõ ràng -f sẽ ghi đè -i trong bí danh, nhưng tôi đã kiểm tra và không. Người đăng nên tìm hiểu xem họ có bí danh cp (loại alias cp) không. Họ có thể thay đổi bí danh trong hồ sơ của họ hoặc sử dụng / bin / cp theo đề xuất.
octern

Tôi đang sử dụng mặc định cpnhư Apple cung cấp nó.
rogerFernand

@octern:roger$ alias cp -bash: alias: cp: not found
rogerFernand 10/12/13

Tôi đã phải sử dụng / bin / cp Tôi không biết tại sao.
Beingalex

1
Tôi có thể đi quá muộn nhưng đối với những người đến từ công cụ tìm kiếm, tôi có thể biết liệu lệnh có bí danh nào không type cp. Và nó thực sự đã làm.
hét

2
rm foo/bar/destination && cp source foo/bar/destination

Đầu tiên bạn xóa ( rm) đích, sau đó nếu thành công ( &&) bạn thực hiện sao chép. Khi xóa thư mục, hãy nhớ thêm -rvào rm( rm -r).


1

Tôi cũng có một bí danh gây rối với -f, gọi cp trực tiếp từ / bin và tất cả đều ổn, có một bí danh ngăn chặn việc ghi đè / xóa ngẫu nhiên theo mặc định là khá tốt, vì vậy tốt nhất không nên xóa nó.

. # bí danh

bí danh cp = 'cp -i'

như đã nêu, cờ -i superceedes -f, không cho phép lệnh bên dưới thực hiện như dự định.

. # / bin / cp -fauv src dst

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.