विधि # 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