फ्रीबीएसडी और लिनक्स में भी, मैं chmod
किसी फ़ाइल का संख्यात्मक मान कैसे प्राप्त कर सकता हूं ? उदाहरण के लिए, के 644
बजाय -rw-r--r--
? मुझे बैश स्क्रिप्ट के लिए एक स्वचालित तरीका चाहिए।
फ्रीबीएसडी और लिनक्स में भी, मैं chmod
किसी फ़ाइल का संख्यात्मक मान कैसे प्राप्त कर सकता हूं ? उदाहरण के लिए, के 644
बजाय -rw-r--r--
? मुझे बैश स्क्रिप्ट के लिए एक स्वचालित तरीका चाहिए।
जवाबों:
आप सीधे स्टेट आउटपुट आउटपुट प्रारूप का उपयोग करके मूल्य प्राप्त कर सकते हैं, जैसे बीएसडी / ओएस एक्स:
stat -f "%OLp" <file>
या लिनक्स में
stat --format '%a' <file>
और बिजीबॉक्स में
stat -c '%a' <file>
busybox
उपयोगstat -c '%a' <file>
--format
संक्षिप्त किया जा सकता है -c
। यह काम करता है:stat -c %a <file>
stat YOUR_FILE
स्क्रिप्ट का उपयोग करें जब तक कि गणना लिखें:
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
वैसे, मैं उपयोग stat command
करता हूं Linux box
, नहीं freebsd
, क्योंकि यह जांच करता है कि HFS
शायद साथ काम करता है UFS
।
FreeBSD box
, उपयोग stat -x YOUR_FILE
के तहतFreeBSD box
stat -r YOUR_FILE |awk '{print $3}'
आपकी अनुमति देता है।
666
या कोड, -rw-wxrw-
बल्कि प्रत्येक अनुमति के बारे में स्पष्टीकरण के साथ एक पाठ।
awk
संख्यात्मक परिणाम को फिर से लिखना बेहतर है ।
कुछ अतिरिक्त जानकारी stat
:
$ stat -c %a file.txt
777
$ stat -c %A file.txt
-rwxrwxrwx
stat -f %A file.txt
मैक के तहत है, यह 644 या कुछ अन्य 3 डिजिटल नंबर लौटाएगा।
सभी को सूचीबद्ध करने के लिए यह प्रयास करें
stat --format "%a %n" *