Làm thế nào để chmod và chown các tập tin ẩn trong Linux?


33

Làm thế nào để tôi thực hiện đệ quy chmodhoặc chowncho các tập tin ẩn?

sudo chmod -R 775 * không hoạt động trên các tập tin ẩn.

Điều tương tự cũng diễn ra sudo chown -R user:group.

Câu trả lời:


35

Nếu bạn vẫn ổn trong thư mục hiện tại, hãy làm điều đó và -Rthực hiện các công việc nặng nhọc. -Rkhông bỏ qua các tập tin ẩn.

sudo chmod -R 775 .

14
Đây ( * .*) không phải là cách an toàn nhất để làm điều đó. Đặc biệt, nó sẽ lặp lại vào thư mục mẹ, có nghĩa là nó chmodcũng là anh chị em của thư mục hiện tại. Cách thích hợp sẽ là * ..?* .[^.]*hoặc thậm chí tốt hơn (xem xét các ký tự đại diện có thể không khớp với bất kỳ tệp nào) $(ls -A).
jpalecek

1
@jpalecek: Đầu ra của không thể xem lsđược; cố gắng phân tích nó là yêu cầu rắc rối. Cách tiếp cận phù hợp là sử dụng vỏ quả cầu.
Scott Severance

Mặc dù trong linux bạn có khả năng thay đổi thứ tự args cho chmod, nhưng khi thực hiện các tập lệnh x-plat giữa linux và OS X, đây là thứ tự bạn nên sử dụng, ví dụ, sudo chmod 775 -Rsẽ đi sâu vào câu trả lời .
kayleeFrye_onDeck

35

* không bao gồm các tệp ẩn theo mặc định, nhưng nếu bạn gặp sự cố, bạn có thể thực hiện việc này với:

shopt -s dotglob

Đọc thêm về nó trong builtinhướng dẫn của bash :

Nếu được đặt, Bash bao gồm tên tệp bắt đầu bằng một `. ' trong kết quả mở rộng tên tệp.

Điều này sẽ *bao gồm các tập tin ẩn quá.

chmod -R 775 *

Vô hiệu hóa nó với:

shopt -u dotglob

2
Làm thế nào để làm điều đó trong zsh?
không có gì đặc biệt - ở đây

2
Bạn sử dụng (D)globbing vòng loại, ví dụ nhưchmod -R 775 *(D)
slhck

2

Một lựa chọn khác là sử dụng findtôi thích nó vì bạn có thể kiểm soát chi tiết rất tốt đối với nó.

find <path to start from> -exec chown <options> {} \+

find -path '<path to include>' -exec chown <options> {} \+

Nhược điểm duy nhất là findcó cú pháp khác nhau trên các phiên bản khác nhau.


2

Tất cả các tệp trong thư mục hiện tại, đệ quy, bao gồm các tệp ẩn:

chmod 755 -R ./* ./.[!.]*

Tất cả các tệp trong thư mục hiện tại, không đệ quy, bao gồm các tệp ẩn:

chmod 755 ./* ./.[!.]*

Điều này sẽ không thay đổi tên tệp ngoại lệ bắt đầu bằng 2 dấu chấm, ví dụ: "./..thisonescapesunharmed.txt"

Ngoài ra, hãy cẩn thận không loại bỏ bit "x", nếu không tất cả các thư mục của bạn sẽ không thể truy cập được (người ta cần bit x để cd vào một thư mục).

Hãy nhớ cảnh báo này: không bao giờ sử dụng trần *./*thay vào đó.

Để tránh các vấn đề thiết lập quyền trên thư mục, sử dụng findthay thế.

find . -type f -exec chmod `VALUE` {} \;
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.