Cài đặt -c khác với cp như thế nào


20

Sự khác biệt giữa cài đặt -c và cp là gì? Hầu hết các cài đặt có xu hướng sử dụng install -c, nhưng từ trang man, nó không có vẻ gì khác với cp (ngoại trừ có thể đặt quyền). Khi nào tôi nên sử dụng install -c và khi cp?

Câu trả lời:


18

Một sự khác biệt đáng kể là cp cắt ngắn tệp đích và bắt đầu sao chép dữ liệu từ nguồn vào tệp đích.

cài đặt, mặt khác, loại bỏ các tập tin đích đầu tiên.

Điều này rất quan trọng vì nếu tệp đích đã được sử dụng, những điều xấu có thể xảy ra với bất kỳ ai đang sử dụng tệp đó trong trường hợp bạn cpcó tệp mới ở trên tệp. ví dụ ghi đè một tệp thực thi đang chạy có thể thất bại. Cắt bớt một tệp dữ liệu mà một quy trình hiện có đang bận đọc / ghi có thể gây ra hành vi khá kỳ lạ. Nếu bạn chỉ xóa tệp đích trước, như cài đặt, mọi thứ sẽ tiếp tục như bình thường - tệp bị xóa thực sự không bị xóa cho đến khi tất cả các quy trình đóng tệp đó.


3
Câu trả lời tốt. Nhưng cũng thấy cp --remove-destinationtrong lõi GNU.
Peter Eisentraut

7

Về mặt kỹ thuật, sự khác biệt giữa install -ccpinstallđặt quyền của tệp đích rwxr-xr-x. cpduy trì các quyền của tệp nguồn trừ ô. Những hành vi mặc định này rất hữu ích trong các tình huống khác nhau. Rõ ràng, với tất cả các tùy chọn mà cả hai cpinstallcung cấp ngày nay, các chức năng đã hội tụ.

Ngày nay, installthường được sử dụng trong makefiles, cpở mọi nơi khác. Sự khác biệt này đôi khi hữu ích vì một số hệ điều hành hoặc hệ thống cài đặt cho phép bạn nối vào installchương trình để đăng ký các gói đã cài đặt. Các hệ thống quản lý gói hiện đại làm cho loại này trở nên lỗi thời, nhưng một số người vẫn sử dụng nó. Ngoài ra, khả năng thiết lập quyền truy cập tệp mục tiêu trong cùng một lần là rất thuận tiện.


4

Các installtiện ích, tại cơ sở của nó, là một lạ mắt cp. Nhưng như một công cụ đặc biệt cài đặt, nó chứa một vài tính năng cpkhông có. My /usr/bin/installtừ coreutils GNU không chỉ bản, nhưng cũng có thể thay đổi perms / quyền sở hữu như cờ arg (tiết kiệm chgrp, chown, chmodlời gọi) một tùy chọn để thông tin dải debug (tiết kiệm một stripinvocation) và cũng có một số mojo cho bối cảnh SELinux.

Nó chỉ cung cấp các hành động tiện lợi hữu ích cho việc cài đặt phần mềm. Không có gì thay đổi cuộc sống, tất cả đều hữu ích và làm cho tập lệnh của bạn sạch hơn.

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.