Lấy giá trị số chmod cho một tệp


100

Trong FreeBSD và cả Linux, làm cách nào tôi có thể nhận được chmodgiá trị bằng số của một tệp? Ví dụ, 644thay vì -rw-r--r--? Tôi cần một cách tự động cho một kịch bản Bash.

Câu trả lời:


159

Bạn có thể nhận giá trị trực tiếp bằng định dạng đầu ra stat, ví dụ BSD / OS X:

stat -f "%OLp" <file>

hoặc trong Linux

stat --format '%a' <file>

và trong hộp thư

 stat -c '%a' <file>

cảm ơn, được chọn làm câu trả lời vì đây là câu trả lời đầu tiên và cũng có vẻ là câu trả lời đơn giản nhất :-) @seg_fault: stat -x YOU_FILE mang đến cho tôi nhiều thứ hơn là giá trị chế độ.
stefan.at.wpf

5
đang busyboxsử dụngstat -c '%a' <file>
Stuart Cardall

1
trích dẫn duy nhất là không cần thiết, và --formatcó thể được viết tắt -c. Điều này hoạt động:stat -c %a <file>
johny tại sao

Tôi cần câu trả lời của busybox trên Ubuntu, nếu không thì 'stat: không thể đọc thông tin hệ thống tệp cho'% OLp ': Không có tệp hoặc thư mục như vậy'
tofutim

7

sử dụng stat YOUR_FILEtrừ khi viết tập lệnh tính toán:

rwx rwx rwx ==> ( r = 4 ) if set + ( w = 2) if set + (x = 1) if set , for example:
You have :
-rw-wxrw- => (4+2+0)(0+2+1)(4+2+) = 0636 
First argument before 9 permissions is one of :
- = regular file
d =  directory
b = block device
c = character device
s = socket
p = pipe
f = fifo

Bằng cách này, tôi sử dụng stat commandtrên Linux box, không phải freebsd, bởi vì nó điều tra HFScó thể làm việc với UFS.


Có, tôi đã tìm thấy nó bên dưới FreeBSD box, sử dụng stat -x YOUR_FILEtheoFreeBSD box
tiếng Ba Tư

stat -r YOUR_FILE |awk '{print $3}' cho phép của bạn.
Tiếng Ba Tư

Lệnh tỏ ra thân thiện? không chỉ là một số như 666 hoặc mã -rw-wxrw- mà là một văn bản với lời giải thích về mỗi quyền.
Peter Krauss

@PeterKrauss, tốt hơn hết là viết một awkđể lấy lại kết quả bằng số.
Tiếng Ba Tư

Cảm ơn @PersianGulf. Hum ... Không có cách tiêu chuẩn plug-and-play ....
Peter Krauss

2

Một số thông tin bổ sung về stat:

$ stat -c %a file.txt

777  

$ stat -c %A file.txt

-rwxrwxrwx

nó ở stat -f %A file.txtdưới mac, nó sẽ trả về 644 hoặc 3 số kỹ thuật số khác.
Weijing Jay Lin

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.