विधि # 1 - प्रतिमा
आप statअनुमति बिट्स प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं । statअधिकांश यूनिक्स (OSX, BSD पर उपलब्ध है, AIX से नहीं जो मुझे मिल सकता है)। यह सबसे अधिक यूनिक्स पर काम करना चाहिए, सिवाय OSX और बीएसडी के जो मुझे मिल सकता है।
$ stat -c "%a" <file>
उदाहरण
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
इस कमांड का उपयोग करें:
$ stat -c "%a" afile.txt
664
और grepयह देखने के लिए कि समूह अनुमतियाँ मोड 6 या 7 है, एक साधारण का उपयोग करें ।
$ stat -c "%a" afile.txt | grep ".[67]."
के लिए OSX और बीएसडी आप के लिए इस प्रपत्र का उपयोग करना होगा stat, stat -f(या शायद stat -x), और उसके अनुसार पार्स। चूंकि विकल्प statअलग हैं आप इस कमांड को कमांड में लपेट सकते हैं lsb_release -aऔर ओएस पर आधारित उपयुक्त संस्करण को कॉल कर सकते हैं। आदर्श नहीं बल्कि काम करने योग्य है। एहसास करें कि lsb_releaseयह केवल लिनक्स डिस्ट्रोस के लिए उपलब्ध है, इसलिए अन्य यूनिक्स ओएस के परीक्षण के लिए एक और विकल्प तैयार करना होगा।
विधि # 2 - खोजें
मुझे लगता है कि यह कमांड आपको बेहतर सेवा दे सकती है। मैं findऔर printfस्विच का उपयोग करता है ।
उदाहरण
$ find a -prune -printf '%m\n'
664
विधि # 3 - पर्ल
पर्ल आपके द्वारा कवर करने की कोशिश कर रहे OSes के आधार पर ऐसा करने के लिए एक अधिक पोर्टेबल तरीका हो सकता है।
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
नोट: उपरोक्त stat()फ़ाइल सिस्टम बिट्स को क्वेरी करने के लिए पर्ल के फ़ंक्शन का उपयोग करता है।
किसी सरणी का उपयोग करके @pv, और stat()सीधे आउटपुट के साथ काम करके आप इसे और अधिक कॉम्पैक्ट बना सकते हैं :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664