Tôi đang cố gắng sử dụng cp
lệ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 cp
lệ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 .bashrc
hay .profile
có 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 alias
tại dấu nhắc lệnh hoặc which cp
chỉ 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 cp
sẽ 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 cp
và 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 cp
trự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 yes
lệnh:
yes | cp -rf /zzz/zzz/* /xxx/xxx
yes
lệ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 -i
hoặ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
, \cp
sẽ 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ạ cp
tới cp -i
; bởi vì với các cài đặt mặc định, cp
sẽ 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 -i
tham số được chỉ định sẽ cp
thực sự nhắc trước khi ghi đè.
Bạn có thể kiểm tra điều này thông qua alias
lệ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 cp
là bí danh cp -i
.
Bạn có thể nối thêm \
trước cp
lệnh để sử dụng nó mà không có bí danh.
\cp -fR source target
Theo mặc định cp
có aliase đến cp -i
. Bạn có thể kiểm tra nó, gõ alias
và 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 /to
lệ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 -iv
và tôi đã tìm thấy một mánh khóe gọn gàng. Nó chỉ ra rằng trong khi -i
và -n
cả hai hủy bỏ các chỉ thị ghi đè trước đó, -f
thì không. Tuy nhiên, nếu bạn sử dụng -nf
nó 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 command
dự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 -i
hệ 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 -n
sẽ ngăn chặn ghi đè.