Trong FreeBSD và cả Linux, làm cách nào tôi có thể nhận được chmod
giá trị bằng số của một tệp? Ví dụ, 644
thay vì -rw-r--r--
? Tôi cần một cách tự động cho một kịch bản Bash.
Trong FreeBSD và cả Linux, làm cách nào tôi có thể nhận được chmod
giá trị bằng số của một tệp? Ví dụ, 644
thay 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:
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>
busybox
sử dụngstat -c '%a' <file>
--format
có thể được viết tắt -c
. Điều này hoạt động:stat -c %a <file>
sử dụng stat YOUR_FILE
trừ 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 command
trên Linux box
, không phải freebsd
, bởi vì nó điều tra HFS
có thể làm việc với UFS
.
FreeBSD box
, sử dụng stat -x YOUR_FILE
theoFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
cho phép của bạn.
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.
awk
để lấy lại kết quả bằng số.
Một số thông tin bổ sung về stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
dưới mac, nó sẽ trả về 644 hoặc 3 số kỹ thuật số khác.
thử cái này để liệt kê tất cả
stat --format "%a %n" *