Câu trả lời:
Dấu chấm ( .
) chỉ là .
thư mục bên trong một thư mục giống với thư mục đó ( ls -la /foo
sẽ hiển thị cho bạn). Vì vậy, nếu bạn sao chép foo/.
ở nơi khác, bạn sao chép một cách hiệu quả tất cả các cây bên dưới foo
mà không sao chép foo
chính nó (bạn đang sao chép nó vào foo2/.
đó giống như foo2
).
/foo/*
được mở rộng bằng vỏ vào danh sách các tập tin không ẩn và thư mục trong /foo
, vì vậy nó sẽ sao chép cấu trúc thư mục tương tự dưới /foo
vào /foo2
là tốt, trừ các dotfiles / dotdirs. Hiệu quả, cp
sẽ nhận được (có khả năng) nhiều đối số. Nếu danh sách quá lớn, nó thậm chí có thể khiến việc thực thi cp
không thành công.
set -x
hoặc echo cp -pr /foo/* /foo2
để xem những gì đang xảy ra. Điều quan trọng là phải nhận ra rằng đó là cái vỏ mở rộng các ký tự đại diện. cp
không thấy ngôi sao.
cp -r /foo/*
, điều tương tự nhưcp /foo/*
?