किसी फ़ाइल के लिए chmod संख्यात्मक मान प्राप्त करें


100

फ्रीबीएसडी और लिनक्स में भी, मैं chmodकिसी फ़ाइल का संख्यात्मक मान कैसे प्राप्त कर सकता हूं ? उदाहरण के लिए, के 644बजाय -rw-r--r--? मुझे बैश स्क्रिप्ट के लिए एक स्वचालित तरीका चाहिए।

जवाबों:


159

आप सीधे स्टेट आउटपुट आउटपुट प्रारूप का उपयोग करके मूल्य प्राप्त कर सकते हैं, जैसे बीएसडी / ओएस एक्स:

stat -f "%OLp" <file>

या लिनक्स में

stat --format '%a' <file>

और बिजीबॉक्स में

 stat -c '%a' <file>

धन्यवाद, उत्तर के रूप में चयनित क्योंकि यह पहला था और यह भी सबसे सरल एक प्रतीत होता है :-) @seg_fault: स्टेट -x Your_FILE मुझे केवल मोड मान से अधिक देता है।
stefan.at.wpf

5
में busyboxउपयोगstat -c '%a' <file>
स्टुअर्ट Cardall

1
एकल उद्धरण की जरूरत नहीं है, और --formatसंक्षिप्त किया जा सकता है -c। यह काम करता है:stat -c %a <file>
जॉनी क्यों

मुझे उबंटू पर व्यस्त बॉक्स के जवाब की आवश्यकता थी, अन्यथा 'स्टेट:'% OLp 'के लिए फाइल सिस्टम जानकारी नहीं पढ़ सकता: ऐसी कोई फाइल या निर्देशिका नहीं
टॉफुटिम

7

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
PersianGulf

stat -r YOUR_FILE |awk '{print $3}' आपकी अनुमति देता है।
PersianGulf

मित्रवत दिखाने की आज्ञा? न केवल संख्या 666 या कोड, -rw-wxrw- बल्कि प्रत्येक अनुमति के बारे में स्पष्टीकरण के साथ एक पाठ।
पीटर क्रूस

@PeterKrauss, awkसंख्यात्मक परिणाम को फिर से लिखना बेहतर है ।
फ़ारसीगुल्फ़

धन्यवाद @PersianGulf हम ... कोई प्लग-एंड-प्ले मानक तरीका नहीं है ....
पीटर क्रस


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.