Tôi đang cố gắng sử dụng cplệnh và buộc ghi đè.
Tôi đã thử cp -rf /foo/* /bar, nhưng tôi vẫn được nhắc xác nhận từng ghi đè.
Tôi đang cố gắng sử dụng cplệnh và buộc ghi đè.
Tôi đã thử cp -rf /foo/* /bar, nhưng tôi vẫn được nhắc xác nhận từng ghi đè.
Câu trả lời:
Bạn có thể làm yes | cp -rf xxx yyy, nhưng gutfeeling của tôi nói rằng nếu bạn làm điều đó như là người chủ - bạn .bashrchay .profilecó một bí danh của cpđể cp -i, hệ thống hiện đại nhất (chủ yếu là RH-phái sinh) làm điều đó vào hồ sơ gốc.
Bạn có thể kiểm tra các bí danh hiện có bằng cách chạy aliastại dấu nhắc lệnh hoặc which cpchỉ kiểm tra các bí danh cp.
Nếu bạn có một bí danh được xác định, việc chạy unalias cpsẽ xóa bỏ điều đó cho phiên hiện tại, nếu không bạn chỉ có thể xóa nó khỏi hồ sơ shell của mình.
Bạn có thể tạm thời bỏ qua một bí danh và sử dụng phiên bản không có bí danh của lệnh bằng cách thêm tiền tố vào \, ví dụ:\cp whatever
¯\_(ツ)_/¯về nó.
(primarily RH-derivatives)nhận xét :)
unalias cpvà sao chép bất cứ thứ gì bạn cần sao chép, bạn có thể đặt bí danh trở lại mặc định bằng cách thực hiện alias cp='cp -i'. Sau đó, chạy alias cpđể bạn có thể xác minh rằng nó trở về bí danh mặc định.
Điều này có thể được gây ra bởi cpđã được đặt bí danh cho một cái gì đó như cp -i. Gọi cptrực tiếp nên làm việc:
/bin/cp -rf /zzz/zzz/* /xxx/xxx
Một cách khác để khắc phục điều này là sử dụng yeslệnh:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yeslệnh. Vui nhộn. Và một ngày nào đó tôi có thể sử dụng nó.
Như một số câu trả lời khác đã nêu, bạn có thể sử dụng một bí danh ở đâu đó cpđể ánh xạ tới cp -ihoặc một cái gì đó tương tự. Bạn có thể chạy một lệnh mà không có bất kỳ bí danh nào bằng cách đặt trước nó bằng dấu gạch chéo ngược. Trong trường hợp của bạn, hãy thử
\cp -r /zzz/zzz/* /xxx/xxx
Dấu gạch chéo ngược sẽ tạm thời vô hiệu hóa bất kỳ bí danh nào bạn đã gọi cp.
cp, \cpsẽ gọi lệnh cp. Điều này dường như là tương đương với chạy command cp.
Bạn có thể có một bí danh ở đâu đó, ánh xạ cptới cp -i; bởi vì với các cài đặt mặc định, cpsẽ không yêu cầu ghi đè. Kiểm tra của bạn .bashrc, của bạn.profile vv
Xem cp manpage : Chỉ khi -itham số được chỉ định sẽ cpthực sự nhắc trước khi ghi đè.
Bạn có thể kiểm tra điều này thông qua aliaslệnh:
$ alias
alias cp='cp -i'
alias diff='diff -u'
....
Để xác định bí danh, sử dụng:
$ unalias cp
Như các câu trả lời khác đã nêu, điều này có thể xảy ra nếu cplà bí danh cp -i.
Bạn có thể nối thêm \trước cplệnh để sử dụng nó mà không có bí danh.
\cp -fR source target
Theo mặc định cpcó aliase đến cp -i. Bạn có thể kiểm tra nó, gõ aliasvà bạn có thể thấy một số như:
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
Để giải quyết vấn đề này, chỉ cần sử dụng /bin/cp /from /tolệnh thay thếcp /from /to
cp thường là bí danh như thế này
alias cp='cp -i' # i.e. ask questions of overwriting
nếu bạn chắc chắn rằng bạn muốn ghi đè thì hãy sử dụng:
/bin/cp <arguments here> src dest
tôi đã tìm thấy cái này
'cp' -rf * /data/danalonso_testing/target/
Nguồn: /superuser/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one3538851
Vì vậy, tôi gặp phải vấn đề này rất nhiều vì tôi giữ bí danh cp cp -ivvà tôi đã tìm thấy một mánh khóe gọn gàng. Nó chỉ ra rằng trong khi -ivà -ncả hai hủy bỏ các chỉ thị ghi đè trước đó, -fthì không. Tuy nhiên, nếu bạn sử dụng -nfnó sẽ thêm khả năng xóa -i. Vì thế:
cp -f /foo/* /bar <-- Prompt
cp -nf /foo/* /bar <-- No Prompt
Khá gọn gàng hả? / hoại tử
Một cách khác để gọi lệnh mà không có bí danh là sử dụng hàm commanddựng sẵn trong bash.
command cp -rf /zzz/zzz/*
-n là "không ghi đè" nhưng câu hỏi của anh ấy hoàn toàn trái ngược với những gì bạn trả lời.
Để tránh xác nhận này, bạn chỉ cần chạy lệnh cp với đường dẫn tuyệt đối, nó sẽ tránh bí danh.
/ bin / cp đích nguồn
Nếu bạn muốn giữ bí danh ở cấp độ toàn cầu và chỉ muốn thay đổi cho tập lệnh của mình.
Chỉ dùng:
bí danh cp = cp
và sau đó viết các lệnh theo dõi của bạn.
Nó không phải là cp -i. Nếu bạn không muốn được yêu cầu xác nhận, đó là cp -n; ví dụ:
cp -n src dest
Hoặc trong trường hợp thư mục / thư mục là:
cp -nr src_dir dest_dir
cp -ihệ thống được liên kết với hệ thống, có nghĩa là họ đang cố gắng khắc phục mặc định và buộc ghi đè. Có vẻ như bạn có thể đã nhầm lẫn rằng vì là cú pháp được đề xuất, nhưng -nsẽ ngăn chặn ghi đè.