Làm thế nào để tôi thực hiện đệ quy chmod
hoặc chown
cho 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
.
Làm thế nào để tôi thực hiện đệ quy chmod
hoặc chown
cho 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:
Nếu bạn vẫn ổn trong thư mục hiện tại, hãy làm điều đó và -R
thực hiện các công việc nặng nhọc. -R
không bỏ qua các tập tin ẩn.
sudo chmod -R 775 .
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.
sudo chmod 775 -R
sẽ đi sâu vào câu trả lời .
*
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 builtin
hướ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
zsh
?
(D)
globbing vòng loại, ví dụ nhưchmod -R 775 *(D)
Một lựa chọn khác là sử dụng find
tô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à find
có cú pháp khác nhau trên các phiên bản khác nhau.
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 *
mà ./*
thay vào đó.
Để tránh các vấn đề thiết lập quyền trên thư mục, sử dụng find
thay thế.
find . -type f -exec chmod `VALUE` {} \;
* .*
) 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óchmod
cũ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)
.