পদ্ধতি # 1 - স্ট্যাটাস
stat
অনুমতি বিট পেতে আপনি কমান্ডটি ব্যবহার করতে পারেন । stat
বেশিরভাগ ইউনিক্সে উপলব্ধ (ওএসএক্স, বিএসডি, আমি যা খুঁজে পেতে পারি তা থেকে নয়) not ওএসএক্স এবং বিএসডি বাদে বেশিরভাগ ইউনিক্সে এটি কাজ করা উচিত যা আমি খুঁজে পেতে পারি।
$ 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 - পার্ল
পার্ল হ'ল আপনি যে ওএসগুলি কভার করার চেষ্টা করছেন তার উপর নির্ভর করে এটি করার আরও পোর্টেবল উপায়।
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
দ্রষ্টব্য: উপরেরগুলি stat()
ফাইল সিস্টেম বিটগুলি অনুসন্ধান করার জন্য পার্লের ফাংশনটি ব্যবহার করে।
আপনি অ্যারে ব্যবহার না করে @pv
, এবং stat()
সরাসরি আউটপুট নিয়ে কাজ করে আরও জটিল করে তুলতে পারেন :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664