Tầm quan trọng của dấu chấm trong các lệnh bash là gì và nó khác với dấu hoa thị như thế nào?


11

Tôi đang cố gắng hiểu tầm quan trọng của dấu chấm trong bash và nó khác với dấu hoa thị như thế nào. Ai đó có thể xin vui lòng giải thích? Ví dụ, sự khác biệt giữa cp -ar /foo/. /foo2/cp -pr /foo/* /foo2/

Câu trả lời:


12

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 /foosẽ 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 foomà không sao chép foochí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 /foovào /foo2là tốt, trừ các dotfiles / dotdirs. Hiệu quả, cpsẽ 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 cpkhông thành công.


Xin lỗi nhưng tôi đang bối rối. Vậy theo bản chất, dấu sao làm cho lệnh đệ quy? Nói cách khác cp -r /foo/*, điều tương tự như cp /foo/* ?
Mike B

5
@MikeB, không, trình bao chỉ mở rộng danh sách các tệp trong thư mục / foo. Nó không làm thay đổi hành vi của cp. Sử dụng set -xhoặ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. cpkhông thấy ngôi sao.
Stéphane Chazelas

Cái này thì sao? chmod 755 -R. so với chmod 755 -R *
wayofthefuture
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.